{W.length===0?_([]):W.length===1&&_(W[0].items)},[W]);const $=(Q,wt)=>{wt.setRowSelection(()=>{const ht={};return ht[Q.index]=!0,ht});const ft=Q.original.items;_(ft),g&&ft.length>0&&g(ft[0])},et=Q=>{if(Q==="book"||Q==="chapter"||Q==="verse")d(Q);else throw new Error(`Invalid scope value: ${Q}`)},dt=Q=>{if(Q==="all"||Q==="approved"||Q==="unapproved"||Q==="unknown")D(Q);else throw new Error(`Invalid status filter value: ${Q}`)},ct=s.useMemo(()=>{if(P.length===0||A.length===0)return[];const Q=P.filter(wt=>B.deepEqual(O?wt.items:[wt.items[0]],A));if(Q.length>1)throw new Error("Selected item is not unique");return Q.length===0?[]:Q[0].occurrences},[A,O,P]);return e.jsx("div",{id:w,className:"pr-twp tw:h-full tw:overflow-auto",children:e.jsxs("div",{className:"tw:flex tw:h-full tw:w-full tw:min-w-min tw:flex-col",children:[e.jsxs("div",{className:"tw:flex tw:items-stretch",style:{contain:"inline-size"},children:[e.jsxs(Te,{onValueChange:Q=>dt(Q),defaultValue:E,children:[e.jsx(Re,{className:"tw:m-1 tw:w-auto tw:flex-1",children:e.jsx(Se,{placeholder:"Select filter"})}),e.jsxs(Me,{children:[e.jsx(ae,{value:"all",children:m}),e.jsx(ae,{value:"approved",children:x}),e.jsx(ae,{value:"unapproved",children:y}),e.jsx(ae,{value:"unknown",children:f})]})]}),e.jsxs(Te,{onValueChange:Q=>et(Q),defaultValue:c,children:[e.jsx(Re,{className:"tw:m-1 tw:w-auto tw:flex-1",children:e.jsx(Se,{placeholder:"Select scope"})}),e.jsxs(Me,{children:[e.jsx(ae,{value:"book",children:N}),e.jsx(ae,{value:"chapter",children:k}),e.jsx(ae,{value:"verse",children:C})]})]}),e.jsx(o.Input,{className:"tw:m-1 tw:flex-1 tw:rounded-md tw:border",placeholder:j,value:Y,onChange:Q=>{X(Q.target.value)}}),n&&e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"tw:m-1 tw:flex tw:w-fit tw:min-w-[26px] tw:items-center tw:rounded-md tw:border",children:[e.jsx(ha,{className:"tw:m-1 tw:shrink-0",checked:O,onCheckedChange:Q=>{M(Q)}}),e.jsx(o.Label,{className:"tw:m-1 tw:truncate",children:(n==null?void 0:n.checkboxText)??L})]})}),e.jsx(o.TooltipContent,{children:(n==null?void 0:n.checkboxText)??L})]})})]}),e.jsx("div",{className:"tw:m-1 tw:flex-1 tw:overflow-auto tw:rounded-md tw:border",children:e.jsx($o,{columns:q,data:W,onRowClickHandler:$,stickyHeader:!0,isLoading:p,noResultsMessage:S})}),ct.length>0&&e.jsx("div",{className:"tw:m-1 tw:flex-1 tw:overflow-auto tw:rounded-md tw:border",children:e.jsx(uc,{classNameForText:h,occurrenceData:ct,setScriptureReference:r,localizedStrings:a})})]})})}const Cc="16rem",Nc="3rem",Jo=s.createContext(void 0);function tr(){const t=s.useContext(Jo);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function Qo({defaultOpen:t=!0,open:r,onOpenChange:a,className:n,style:i,children:l,side:c="primary",...d}){const[u,w]=s.useState(t),p=r??u,h=s.useCallback(C=>{const j=typeof C=="function"?C(p):C;a?a(j):w(j)},[a,p]),g=s.useCallback(()=>h(C=>!C),[h]),m=p?"expanded":"collapsed",f=o.readDirection()==="ltr"?c:c==="primary"?"secondary":"primary",N=s.useMemo(()=>({state:m,open:p,setOpen:h,toggleSidebar:g,side:f}),[m,p,h,g,f]),k={"--sidebar-width":Cc,"--sidebar-width-icon":Nc,...i};return e.jsx(Jo.Provider,{value:N,children:e.jsx("div",{"data-slot":"sidebar-wrapper",style:k,className:o.cn("pr-twp tw:group/sidebar-wrapper tw:flex tw:w-full tw:has-data-[variant=inset]:bg-sidebar",n),...d,children:l})})}function tn({variant:t="sidebar",collapsible:r="offcanvas",className:a,children:n,...i}){const l=tr();return r==="none"?e.jsx("div",{"data-slot":"sidebar",className:o.cn("tw:flex tw:h-full tw:w-(--sidebar-width) tw:flex-col tw:bg-sidebar tw:text-sidebar-foreground",a),...i,children:n}):e.jsxs("div",{className:"tw:group tw:peer tw:hidden tw:text-sidebar-foreground tw:md:block","data-state":l.state,"data-collapsible":l.state==="collapsed"?r:"","data-variant":t,"data-side":l.side,"data-slot":"sidebar",children:[e.jsx("div",{"data-slot":"sidebar-gap",className:o.cn("tw:relative tw:w-(--sidebar-width) tw:bg-transparent tw:transition-[width] tw:duration-200 tw:ease-linear","tw:group-data-[collapsible=offcanvas]:w-0","tw:group-data-[side=secondary]:rotate-180",t==="floating"||t==="inset"?"tw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"tw:group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),e.jsx("div",{"data-slot":"sidebar-container","data-side":l.side,className:o.cn("tw:absolute tw:inset-y-0 tw:z-10 tw:hidden tw:h-svh tw:w-(--sidebar-width) tw:transition-[left,right,width] tw:duration-200 tw:ease-linear tw:md:flex",l.side==="primary"?"tw:left-0 tw:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"tw:right-0 tw:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"tw:p-2 tw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"tw:group-data-[collapsible=icon]:w-(--sidebar-width-icon) tw:group-data-[side=primary]:border-e tw:group-data-[side=secondary]:border-s",a),...i,children:e.jsx("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"tw:flex tw:size-full tw:flex-col tw:bg-sidebar tw:group-data-[variant=floating]:rounded-lg tw:group-data-[variant=floating]:shadow-sm tw:group-data-[variant=floating]:ring-1 tw:group-data-[variant=floating]:ring-sidebar-border",children:n})})]})}function Ec({className:t,onClick:r,...a}){const{toggleSidebar:n,side:i}=tr();return e.jsxs(o.Button,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:o.cn(t),onClick:l=>{r==null||r(l),n()},...a,children:[i==="primary"?e.jsx(Dt.IconLayoutSidebar,{}):e.jsx(Dt.IconLayoutSidebarRight,{}),e.jsx("span",{className:"tw:sr-only",children:"Toggle Sidebar"})]})}function Tc({className:t,...r}){const{toggleSidebar:a}=tr();return e.jsx("button",{type:"button","data-sidebar":"rail","data-slot":"sidebar-rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:a,title:"Toggle Sidebar",className:o.cn("tw:absolute tw:inset-y-0 tw:z-20 tw:hidden tw:w-4 tw:transition-all tw:ease-linear tw:group-data-[side=primary]:-right-4 tw:group-data-[side=secondary]:left-0 tw:after:absolute tw:after:inset-y-0 tw:after:start-1/2 tw:after:w-[2px] tw:hover:after:bg-sidebar-border tw:sm:flex tw:ltr:-translate-x-1/2 tw:rtl:translate-x-1/2","tw:in-data-[side=primary]:cursor-w-resize tw:rtl:in-data-[side=primary]:cursor-e-resize tw:in-data-[side=secondary]:cursor-e-resize tw:rtl:in-data-[side=secondary]:cursor-w-resize","tw:[[data-side=primary][data-state=collapsed]_&]:cursor-e-resize tw:rtl:[[data-side=primary][data-state=collapsed]_&]:cursor-w-resize tw:[[data-side=secondary][data-state=collapsed]_&]:cursor-w-resize tw:rtl:[[data-side=secondary][data-state=collapsed]_&]:cursor-e-resize","tw:group-data-[collapsible=offcanvas]:translate-x-0 tw:group-data-[collapsible=offcanvas]:after:start-full tw:hover:group-data-[collapsible=offcanvas]:bg-sidebar","tw:[[data-side=primary][data-collapsible=offcanvas]_&]:-end-2","tw:[[data-side=secondary][data-collapsible=offcanvas]_&]:-start-2",t),...r})}function en({className:t,...r}){return e.jsx("main",{"data-slot":"sidebar-inset",className:o.cn("tw:relative tw:flex tw:w-full tw:flex-1 tw:flex-col tw:bg-background tw:md:peer-data-[variant=inset]:m-2 tw:md:peer-data-[variant=inset]:ms-0 tw:md:peer-data-[variant=inset]:rounded-xl tw:md:peer-data-[variant=inset]:shadow-sm tw:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2",t),...r})}function Sc({className:t,...r}){return e.jsx(o.Input,{"data-slot":"sidebar-input","data-sidebar":"input",className:o.cn("tw:h-8 tw:w-full tw:bg-background tw:shadow-none",t),...r})}function Rc({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:o.cn("tw:flex tw:flex-col tw:gap-2 tw:p-2",t),...r})}function Mc({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:o.cn("tw:flex tw:flex-col tw:gap-2 tw:p-2",t),...r})}function Dc({className:t,...r}){return e.jsx(o.Separator,{"data-slot":"sidebar-separator","data-sidebar":"separator",className:o.cn("tw:mx-2 tw:w-auto tw:bg-sidebar-border",t),...r})}function rn({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:o.cn("tw:no-scrollbar tw:flex tw:min-h-0 tw:flex-1 tw:flex-col tw:gap-0 tw:overflow-auto tw:group-data-[collapsible=icon]:overflow-hidden",t),...r})}function Jr({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:o.cn("tw:relative tw:flex tw:w-full tw:min-w-0 tw:flex-col tw:p-2",t),...r})}function Qr({className:t,asChild:r=!1,...a}){const n=r?G.Slot.Root:"div";return e.jsx(n,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:o.cn("tw:flex tw:h-8 tw:shrink-0 tw:items-center tw:rounded-md tw:px-2 tw:text-xs tw:font-medium tw:text-sidebar-foreground/70 tw:ring-sidebar-ring tw:outline-hidden tw:transition-[margin,opacity] tw:duration-200 tw:ease-linear tw:group-data-[collapsible=icon]:-mt-8 tw:group-data-[collapsible=icon]:opacity-0 tw:focus-visible:ring-2 tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",t),...a})}function Ic({className:t,asChild:r=!1,...a}){const n=r?G.Slot.Root:"button";return e.jsx(n,{"data-slot":"sidebar-group-action","data-sidebar":"group-action",className:o.cn("tw:absolute tw:top-3.5 tw:end-3 tw:flex tw:aspect-square tw:w-5 tw:items-center tw:justify-center tw:rounded-md tw:p-0 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:transition-transform tw:group-data-[collapsible=icon]:hidden tw:after:absolute tw:after:-inset-2 tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:md:after:hidden tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",t),...a})}function ta({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:o.cn("tw:w-full tw:text-sm",t),...r})}function an({className:t,...r}){return e.jsx("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:o.cn("tw:flex tw:w-full tw:min-w-0 tw:flex-col tw:gap-0",t),...r})}function on({className:t,...r}){return e.jsx("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:o.cn("tw:group/menu-item tw:relative",t),...r})}const Oc=Ya.cva("tw:peer/menu-button tw:group/menu-button tw:flex tw:w-full tw:items-center tw:gap-2 tw:overflow-hidden tw:rounded-md tw:p-2 tw:text-start tw:text-sm tw:ring-sidebar-ring tw:outline-hidden tw:transition-[width,height,padding] tw:group-has-data-[sidebar=menu-action]/menu-item:pe-8 tw:group-data-[collapsible=icon]:size-8! tw:group-data-[collapsible=icon]:p-2! tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:active:bg-sidebar-accent tw:active:text-sidebar-accent-foreground tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:aria-disabled:pointer-events-none tw:aria-disabled:opacity-50 tw:data-open:hover:bg-sidebar-accent tw:data-open:hover:text-sidebar-accent-foreground tw:data-active:bg-sidebar-accent tw:data-active:font-medium tw:data-active:text-sidebar-accent-foreground tw:[&_svg]:size-4 tw:[&_svg]:shrink-0 tw:[&>span:last-child]:truncate",{variants:{variant:{default:"tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground",outline:"tw:bg-background tw:shadow-[0_0_0_1px_var(--sidebar-border)] tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"tw:h-8 tw:text-sm",sm:"tw:h-7 tw:text-xs",lg:"tw:h-12 tw:text-sm tw:group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function nn({asChild:t=!1,isActive:r=!1,variant:a="default",size:n="default",tooltip:i,className:l,...c}){const d=t?G.Slot.Root:"button",{state:u}=tr(),w=e.jsx(d,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":n,"data-active":r,className:o.cn(Oc({variant:a,size:n}),l),...c});if(!i)return w;const p=typeof i=="string"?{children:i}:i;return e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:w}),e.jsx(o.TooltipContent,{side:"right",align:"center",hidden:u!=="collapsed",...p})]})}function Pc({className:t,asChild:r=!1,showOnHover:a=!1,...n}){const i=r?G.Slot.Root:"button";return e.jsx(i,{"data-slot":"sidebar-menu-action","data-sidebar":"menu-action",className:o.cn("tw:absolute tw:top-1.5 tw:end-1 tw:flex tw:aspect-square tw:w-5 tw:items-center tw:justify-center tw:rounded-md tw:p-0 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:transition-transform tw:group-data-[collapsible=icon]:hidden tw:peer-hover/menu-button:text-sidebar-accent-foreground tw:peer-data-[size=default]/menu-button:top-1.5 tw:peer-data-[size=lg]/menu-button:top-2.5 tw:peer-data-[size=sm]/menu-button:top-1 tw:after:absolute tw:after:-inset-2 tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:md:after:hidden tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",a&&"tw:group-focus-within/menu-item:opacity-100 tw:group-hover/menu-item:opacity-100 tw:peer-data-active/menu-button:text-sidebar-accent-foreground tw:aria-expanded:opacity-100 tw:md:opacity-0",t),...n})}function Lc({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-menu-badge","data-sidebar":"menu-badge",className:o.cn("tw:pointer-events-none tw:absolute tw:end-1 tw:flex tw:h-5 tw:min-w-5 tw:items-center tw:justify-center tw:rounded-md tw:px-1 tw:text-xs tw:font-medium tw:text-sidebar-foreground tw:tabular-nums tw:select-none tw:group-data-[collapsible=icon]:hidden tw:peer-hover/menu-button:text-sidebar-accent-foreground tw:peer-data-[size=default]/menu-button:top-1.5 tw:peer-data-[size=lg]/menu-button:top-2.5 tw:peer-data-[size=sm]/menu-button:top-1 tw:peer-data-active/menu-button:text-sidebar-accent-foreground",t),...r})}function Ac({className:t,showIcon:r=!1,...a}){const[n]=s.useState(()=>`${Math.floor(Math.random()*40)+50}%`),i={"--skeleton-width":n};return e.jsxs("div",{"data-slot":"sidebar-menu-skeleton","data-sidebar":"menu-skeleton",className:o.cn("tw:flex tw:h-8 tw:items-center tw:gap-2 tw:rounded-md tw:px-2",t),...a,children:[r&&e.jsx(o.Skeleton,{className:"tw:size-4 tw:rounded-md","data-sidebar":"menu-skeleton-icon"}),e.jsx(o.Skeleton,{className:"tw:h-4 tw:max-w-(--skeleton-width) tw:flex-1","data-sidebar":"menu-skeleton-text",style:i})]})}function Bc({className:t,...r}){return e.jsx("ul",{"data-slot":"sidebar-menu-sub","data-sidebar":"menu-sub",className:o.cn("tw:mx-3.5 tw:flex tw:min-w-0 tw:translate-x-px tw:rtl:-translate-x-px tw:flex-col tw:gap-1 tw:border-s tw:border-sidebar-border tw:px-2.5 tw:py-0.5 tw:group-data-[collapsible=icon]:hidden",t),...r})}function zc({className:t,...r}){return e.jsx("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:o.cn("tw:group/menu-sub-item tw:relative",t),...r})}function $c({asChild:t=!1,size:r="md",isActive:a=!1,className:n,...i}){const l=t?G.Slot.Root:"a";return e.jsx(l,{"data-slot":"sidebar-menu-sub-button","data-sidebar":"menu-sub-button","data-size":r,"data-active":a,className:o.cn("tw:flex tw:h-7 tw:min-w-0 tw:-translate-x-px tw:rtl:translate-x-px tw:items-center tw:gap-2 tw:overflow-hidden tw:rounded-md tw:px-2 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:group-data-[collapsible=icon]:hidden tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:active:bg-sidebar-accent tw:active:text-sidebar-accent-foreground tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:aria-disabled:pointer-events-none tw:aria-disabled:opacity-50 tw:data-[size=md]:text-sm tw:data-[size=sm]:text-xs tw:data-active:bg-sidebar-accent tw:data-active:text-sidebar-accent-foreground tw:[&>span:last-child]:truncate tw:[&>svg]:size-4 tw:[&>svg]:shrink-0 tw:[&>svg]:text-sidebar-accent-foreground",n),...i})}function sn({id:t,extensionLabels:r,projectInfo:a,handleSelectSidebarItem:n,selectedSidebarItem:i,extensionsSidebarGroupLabel:l,projectsSidebarGroupLabel:c,buttonPlaceholderText:d,searchPlaceholderText:u,noResultsText:w,className:p}){const h=s.useCallback((f,N)=>{n(f,N)},[n]),g=s.useCallback(f=>{const N=a.find(k=>k.projectId===f);return N?N.projectName:f},[a]),m=s.useMemo(()=>a.map(f=>({id:f.projectId,shortName:f.projectName,fullName:f.projectName})),[a]),x=s.useMemo(()=>{const f={buttonPlaceholder:d,ariaLabel:c};return u&&(f.searchPlaceholder=u),w&&(f.commandEmptyMessage=w),f},[d,c,u,w]),y=s.useCallback(f=>!i.projectId&&f===i.label,[i]);return e.jsx(tn,{id:t,collapsible:"none",variant:"inset",className:o.cn("tw:w-96 tw:gap-2 tw:overflow-y-auto",p),children:e.jsxs(rn,{children:[e.jsxs(Jr,{children:[e.jsx(Qr,{className:"tw:text-sm",children:l}),e.jsx(ta,{children:e.jsx(an,{children:Object.entries(r).map(([f,N])=>e.jsx(on,{children:e.jsx(nn,{onClick:()=>h(f),isActive:y(f),children:e.jsx("span",{className:"tw:pl-3",children:N})})},f))})})]}),e.jsxs(Jr,{children:[e.jsx(Qr,{className:"tw:text-sm",children:c}),e.jsx(ta,{className:"tw:pl-3",children:e.jsxs("div",{className:o.cn("tw:flex tw:w-full tw:items-center tw:gap-2 tw:rounded-md tw:px-2 tw:py-1",{"tw:bg-sidebar-accent tw:text-sidebar-accent-foreground":i==null?void 0:i.projectId}),children:[e.jsx(z.ScrollText,{className:"tw:h-4 tw:w-4 tw:shrink-0"}),e.jsx(o.ProjectSelector,{mode:"project",projects:m,openTabs:[],selection:{projectId:(i==null?void 0:i.projectId)??""},onChangeSelection:({projectId:f})=>{if(!f)return;const N=g(f);h(N,f)},buttonVariant:"ghost",buttonClassName:"tw:h-8 tw:w-full tw:flex-1 tw:justify-start tw:font-normal",localizedStrings:x})]})})]})]})})}function Vc({id:t,children:r,searchValue:a,onSearch:n,className:i,...l}){return e.jsxs("div",{className:"tw:box-border tw:flex tw:h-full tw:flex-col",children:[e.jsx("div",{className:"tw:box-border tw:flex tw:items-center tw:justify-center tw:py-4",children:e.jsx(o.SearchBar,{className:"tw:w-9/12",value:a,onSearch:n,placeholder:"Search app settings, extension settings, and project settings"})}),e.jsxs(Qo,{id:t,className:"tw:h-full tw:flex-1 tw:gap-4 tw:overflow-auto tw:border-t",children:[e.jsx(sn,{className:o.cn("tw:w-1/2 tw:min-w-[140px] tw:max-w-[220px] tw:border-e",i),...l}),e.jsx(en,{className:"tw:min-w-[215px]",children:r})]})]})}const ke="scrBook",Fc="scrRef",Ee="source",Gc="details",Kc="Scripture Reference",Uc="Scripture Book",cn="Type",Hc="Details";function qc(t,r){const a=r??!1;return[{accessorFn:n=>`${n.start.book} ${n.start.chapterNum}:${n.start.verseNum}`,id:ke,header:(t==null?void 0:t.scriptureReferenceColumnName)??Kc,cell:n=>{const i=n.row.original;return n.row.getIsGrouped()?Lt.Canon.bookIdToEnglishName(i.start.book):n.row.groupingColumnId===ke?B.formatScrRef(i.start):void 0},getGroupingValue:n=>Lt.Canon.bookIdToNumber(n.start.book),sortingFn:(n,i)=>B.compareScrRefs(n.original.start,i.original.start),enableGrouping:!0},{accessorFn:n=>B.formatScrRef(n.start),id:Fc,header:void 0,cell:n=>{const i=n.row.original;return n.row.getIsGrouped()?void 0:B.formatScrRef(i.start)},sortingFn:(n,i)=>B.compareScrRefs(n.original.start,i.original.start),enableGrouping:!1},{accessorFn:n=>n.source.displayName,id:Ee,header:a?(t==null?void 0:t.typeColumnName)??cn:void 0,cell:n=>a||n.row.getIsGrouped()?n.getValue():void 0,getGroupingValue:n=>n.source.id,sortingFn:(n,i)=>n.original.source.displayName.localeCompare(i.original.source.displayName),enableGrouping:!0},{accessorFn:n=>n.detail,id:Gc,header:(t==null?void 0:t.detailsColumnName)??Hc,cell:n=>n.getValue(),enableGrouping:!1}]}const Yc=t=>{if(!("offset"in t.start))throw new Error("No offset available in range start");if(t.end&&!("offset"in t.end))throw new Error("No offset available in range end");const{offset:r}=t.start;let a=0;return t.end&&({offset:a}=t.end),!t.end||B.compareScrRefs(t.start,t.end)===0?`${B.scrRefToBBBCCCVVV(t.start)}+${r}`:`${B.scrRefToBBBCCCVVV(t.start)}+${r}-${B.scrRefToBBBCCCVVV(t.end)}+${a}`},Ka=t=>`${Yc({start:t.start,end:t.end})} ${t.source.displayName} ${t.detail}`;function Xc({sources:t,showColumnHeaders:r=!1,showSourceColumn:a=!1,scriptureReferenceColumnName:n,scriptureBookGroupName:i,typeColumnName:l,detailsColumnName:c,onRowSelected:d,id:u}){const[w,p]=s.useState([]),[h,g]=s.useState([{id:ke,desc:!1}]),[m,x]=s.useState({}),y=s.useMemo(()=>t.flatMap(E=>E.data.map(D=>({...D,source:E.source}))),[t]),f=s.useMemo(()=>qc({scriptureReferenceColumnName:n,typeColumnName:l,detailsColumnName:c},a),[n,l,c,a]);s.useEffect(()=>{w.includes(Ee)?g([{id:Ee,desc:!1},{id:ke,desc:!1}]):g([{id:ke,desc:!1}])},[w]);const N=qt.useReactTable({data:y,columns:f,state:{grouping:w,sorting:h,rowSelection:m},onGroupingChange:p,onSortingChange:g,onRowSelectionChange:x,getExpandedRowModel:qt.getExpandedRowModel(),getGroupedRowModel:qt.getGroupedRowModel(),getCoreRowModel:qt.getCoreRowModel(),getSortedRowModel:qt.getSortedRowModel(),getRowId:Ka,autoResetExpanded:!1,enableMultiRowSelection:!1,enableSubRowSelection:!1});s.useEffect(()=>{if(d){const E=N.getSelectedRowModel().rowsById,D=Object.keys(E);if(D.length===1){const Y=y.find(X=>Ka(X)===D[0])||void 0;Y&&d(Y)}}},[m,y,d,N]);const k=i??Uc,C=l??cn,j=[{label:"No Grouping",value:[]},{label:`Group by ${k}`,value:[ke]},{label:`Group by ${C}`,value:[Ee]},{label:`Group by ${k} and ${C}`,value:[ke,Ee]},{label:`Group by ${C} and ${k}`,value:[Ee,ke]}],L=E=>{p(JSON.parse(E))},S=(E,D)=>{!E.getIsGrouped()&&!E.getIsSelected()&&E.getToggleSelectedHandler()(D)},O=(E,D)=>E.getIsGrouped()?"":o.cn("banded-row",D%2===0?"even":"odd"),M=(E,D,Y)=>{if(!((E==null?void 0:E.length)===0||D.depth{L(E)},children:[e.jsx(Re,{className:"tw:mb-1 tw:mt-2",children:e.jsx(Se,{})}),e.jsx(Me,{position:"item-aligned",children:e.jsx(Ao,{children:j.map(E=>e.jsx(ae,{value:JSON.stringify(E.value),children:E.label},E.label))})})]}),e.jsxs(o.Table,{className:"tw:relative tw:flex tw:flex-col tw:overflow-y-auto tw:p-0",children:[r&&e.jsx(o.TableHeader,{children:N.getHeaderGroups().map(E=>e.jsx(o.TableRow,{children:E.headers.filter(D=>D.column.columnDef.header).map(D=>e.jsx(o.TableHead,{colSpan:D.colSpan,className:"tw:sticky top-0",children:D.isPlaceholder?void 0:e.jsxs("div",{children:[D.column.getCanGroup()?e.jsx(o.Button,{variant:"ghost",title:`Toggle grouping by ${D.column.columnDef.header}`,onClick:D.column.getToggleGroupingHandler(),type:"button",children:D.column.getIsGrouped()?"🛑":"👊 "}):void 0," ",qt.flexRender(D.column.columnDef.header,D.getContext())]})},D.id))},E.id))}),e.jsx(o.TableBody,{children:N.getRowModel().rows.map((E,D)=>{const Y=o.readDirection();return e.jsx(o.TableRow,{"data-state":E.getIsSelected()?"selected":"",className:o.cn(O(E,D)),onClick:X=>S(E,X),children:E.getVisibleCells().map(X=>{if(!(X.getIsPlaceholder()||X.column.columnDef.enableGrouping&&!X.getIsGrouped()&&(X.column.columnDef.id!==Ee||!a)))return e.jsx(o.TableCell,{className:o.cn(X.column.columnDef.id,"tw:p-[1px]",M(w,E,X)),children:X.getIsGrouped()?e.jsxs(o.Button,{variant:"link",onClick:E.getToggleExpandedHandler(),type:"button",children:[E.getIsExpanded()&&e.jsx(z.ChevronDown,{}),!E.getIsExpanded()&&(Y==="ltr"?e.jsx(z.ChevronRight,{}):e.jsx(z.ChevronLeft,{}))," ",qt.flexRender(X.column.columnDef.cell,X.getContext())," (",E.subRows.length,")"]}):qt.flexRender(X.column.columnDef.cell,X.getContext())},X.id)})},E.id)})})]})]})}function ln({availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}){const c=n["%webView_book_selector_books_selected%"],d=n["%webView_book_selector_select_books%"],u=n["%webView_book_selector_search_books%"],w=n["%webView_book_selector_select_all%"],p=n["%webView_book_selector_clear_all%"],h=n["%webView_book_selector_no_book_found%"],{otLong:g,ntLong:m,dcLong:x,extraLong:y}={otLong:n==null?void 0:n["%scripture_section_ot_long%"],ntLong:n==null?void 0:n["%scripture_section_nt_long%"],dcLong:n==null?void 0:n["%scripture_section_dc_long%"],extraLong:n==null?void 0:n["%scripture_section_extra_long%"]},[f,N]=s.useState(!1),[k,C]=s.useState(""),j=s.useRef(void 0),L=s.useRef(!1),S=s.useMemo(()=>o.getAvailableBookIds(t),[t]),O=s.useMemo(()=>{if(!k.trim()){const P={[B.Section.OT]:[],[B.Section.NT]:[],[B.Section.DC]:[],[B.Section.Extra]:[]};return S.forEach(W=>{const q=B.getSectionForBook(W);P[q].push(W)}),P}const _=S.filter(P=>o.doesBookMatchQuery(P,k,i)),rt={[B.Section.OT]:[],[B.Section.NT]:[],[B.Section.DC]:[],[B.Section.Extra]:[]};return _.forEach(P=>{const W=B.getSectionForBook(P);rt[W].push(P)}),rt},[S,k,i]),M=s.useCallback((_,rt=!1)=>{if(!rt||!j.current){a(r.includes(_)?r.filter(dt=>dt!==_):[...r,_]),j.current=_;return}const P=S.findIndex(dt=>dt===j.current),W=S.findIndex(dt=>dt===_);if(P===-1||W===-1)return;const[q,$]=[Math.min(P,W),Math.max(P,W)],et=S.slice(q,$+1).map(dt=>dt);a(r.includes(_)?r.filter(dt=>!et.includes(dt)):[...new Set([...r,...et])])},[r,a,S]),E=_=>{M(_,L.current),L.current=!1},D=(_,rt)=>{_.preventDefault(),M(rt,_.shiftKey)},Y=()=>{a(S.map(_=>_))},X=()=>{a([])},A=s.useMemo(()=>Object.values(B.Section).filter(_=>(l==null?void 0:l[_])!==void 0&&o.getBooksForSection(S,_).length===0).map(_=>({section:_,explanation:l==null?void 0:l[_]})),[l,S]);return e.jsxs(o.Popover,{open:f,onOpenChange:_=>{N(_),_||C("")},children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:"outline",role:"combobox","aria-expanded":f,className:"tw:max-w-64 tw:justify-between",children:[r.length>0?`${c}: ${r.length}`:d,e.jsx(z.ChevronsUpDown,{className:"tw:ml-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.PopoverContent,{className:"tw:max-h-(--radix-popover-content-available-height) tw:w-[500px] tw:max-w-[calc(100vw-2rem)] tw:p-0",align:"start",collisionPadding:8,children:e.jsxs(o.Command,{className:"tw:min-h-0",shouldFilter:!1,onKeyDown:_=>{_.key==="Enter"&&(L.current=_.shiftKey)},children:[e.jsx(o.CommandInput,{className:"tw:shrink-0",placeholder:u,value:k,onValueChange:C,spaceSelectsHighlightedItem:!0}),e.jsxs("div",{className:"tw:flex tw:shrink-0 tw:justify-between tw:border-b tw:p-2",children:[e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:Y,disabled:S.length===0,children:w}),e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:X,children:p})]}),e.jsxs(o.CommandList,{className:"tw:max-h-72 tw:min-h-0 tw:flex-1",children:[e.jsx(o.CommandEmpty,{children:h}),Object.values(B.Section).filter(_=>O[_].length>0).map((_,rt)=>{const P=O[_];return e.jsxs(s.Fragment,{children:[rt>0&&e.jsx(o.CommandSeparator,{alwaysRender:!0}),e.jsx(o.CommandGroup,{heading:o.getSectionLongName(_,g,m,x,y),children:P.map(W=>e.jsx(Wa,{bookId:W,isSelected:r.includes(W),onSelect:()=>E(W),onMouseDown:q=>D(q,W),section:B.getSectionForBook(W),showCheck:!0,localizedBookNames:i,commandValue:Kr(W,i),className:"tw:flex tw:items-center"},W))})]},_)})]}),A.length>0&&e.jsx("div",{className:"tw:shrink-0 tw:border-t tw:p-2",children:A.map(({section:_,explanation:rt})=>e.jsx("p",{className:"tw:text-xs tw:text-muted-foreground",children:rt},_))})]})})]})}function dn({disabled:t,tooltipText:r,children:a,className:n}){return e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ge,{className:n,isDisabled:t,disabledExplanation:r,children:a})}),t&&e.jsx(o.TooltipContent,{children:e.jsx("p",{className:"tw:max-w-xs tw:whitespace-pre-line",children:r})})]})})}function Wc({section:t,availableBookIds:r,selectedBookIds:a,onToggle:n,localizedStrings:i,disabledExplanation:l}){const c=o.getBooksForSection(r,t).length===0,d=i["%scripture_section_ot_short%"],u=i["%scripture_section_nt_short%"],w=i["%scripture_section_dc_short%"],p=i["%scripture_section_extra_short%"],h=e.jsx(o.Button,{variant:"outline",size:"sm",onClick:()=>n(t),className:o.cn(o.isSectionFullySelected(r,t,a)&&!c&&"tw:bg-primary tw:text-primary-foreground tw:hover:bg-primary/70 tw:hover:text-primary-foreground"),disabled:c,children:o.getSectionShortName(t,d,u,w,p)});return l?e.jsx(dn,{className:"tw:flex",disabled:c,tooltipText:l,children:h}):h}const Ua=5,Fr=6;function wn({availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}){const c=n["%webView_book_selector_more%"],d=s.useMemo(()=>o.getAvailableBookIds(t),[t]),u=s.useCallback(w=>{const p=o.getBooksForSection(d,w).map(h=>h);a(o.isSectionFullySelected(d,w,r)?r.filter(h=>!p.includes(h)):[...new Set([...r,...p])])},[r,a,d]);return e.jsxs("div",{className:"tw:space-y-2",children:[e.jsx("div",{className:"tw:flex tw:flex-wrap tw:gap-2",children:Object.values(B.Section).map(w=>e.jsx(Wc,{section:w,availableBookIds:d,selectedBookIds:r,onToggle:u,localizedStrings:n,disabledExplanation:l==null?void 0:l[w]},w))}),e.jsx(ln,{availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}),r.length>0&&e.jsxs("div",{className:"tw:mt-2 tw:flex tw:flex-wrap tw:gap-1",children:[r.slice(0,r.length===Fr?Fr:Ua).map(w=>e.jsx(o.Badge,{className:"tw:hover:bg-secondary",variant:"secondary",children:o.getLocalizedBookName(w,i)},w)),r.length>Fr&&e.jsx(o.Badge,{className:"tw:hover:bg-secondary",variant:"secondary",children:`+${r.length-Ua} ${c}`})]})]})}const un=Object.freeze(["%webView_book_selector_books_selected%","%webView_book_selector_select_books%","%webView_book_selector_search_books%","%webView_book_selector_select_all%","%webView_book_selector_clear_all%","%webView_book_selector_no_book_found%","%webView_book_selector_more%","%scripture_section_ot_long%","%scripture_section_ot_short%","%scripture_section_nt_long%","%scripture_section_nt_short%","%scripture_section_dc_long%","%scripture_section_dc_short%","%scripture_section_extra_long%","%scripture_section_extra_short%"]),Zc=Object.freeze(["%webView_scope_selector_selected_text%","%webView_scope_selector_verse%","%webView_scope_selector_chapter%","%webView_scope_selector_book%","%webView_scope_selector_current_verse%","%webView_scope_selector_current_chapter%","%webView_scope_selector_current_book%","%webView_scope_selector_choose_books%","%webView_scope_selector_scope%","%webView_scope_selector_select_books%","%webView_scope_selector_range%","%webView_scope_selector_select_range%","%webView_scope_selector_range_start%","%webView_scope_selector_range_end%","%webView_scope_selector_ok%","%webView_scope_selector_cancel%","%webView_scope_selector_navigate%",...un]),Pt=(t,r)=>t[r]??r,Jc=Object.freeze([" ","-"]);function Qc({scope:t,availableScopes:r,onScopeChange:a,availableBookInfo:n,selectedBookIds:i,onSelectedBookIdsChange:l,localizedStrings:c,localizedBookNames:d,disabledSectionExplanations:u,disabledScopeExplanations:w,id:p,variant:h="radio",rangeStart:g,rangeEnd:m,onRangeStartChange:x,onRangeEndChange:y,currentScrRef:f,onCurrentScrRefChange:N,bookChapterControlLocalizedStrings:k,getEndVerse:C,hideLabel:j=!1,buttonClassName:L}){const S=Pt(c,"%webView_scope_selector_selected_text%"),O=Pt(c,"%webView_scope_selector_verse%"),M=Pt(c,"%webView_scope_selector_chapter%"),E=Pt(c,"%webView_scope_selector_book%"),D=Pt(c,"%webView_scope_selector_current_verse%"),Y=Pt(c,"%webView_scope_selector_current_chapter%"),X=Pt(c,"%webView_scope_selector_current_book%"),A=Pt(c,"%webView_scope_selector_choose_books%"),_=Pt(c,"%webView_scope_selector_scope%"),rt=Pt(c,"%webView_scope_selector_select_books%"),P=Pt(c,"%webView_scope_selector_range%"),W=Pt(c,"%webView_scope_selector_select_range%"),q=Pt(c,"%webView_scope_selector_range_start%"),$=Pt(c,"%webView_scope_selector_range_end%"),et=Pt(c,"%webView_scope_selector_ok%"),dt=Pt(c,"%webView_scope_selector_cancel%"),ct=Pt(c,"%webView_scope_selector_navigate%"),Q=F=>{if(!f)return;const tt=f.book.toUpperCase();switch(F){case"verse":return B.formatScrRef(f,"id");case"chapter":return`${tt} ${f.chapterNum}`;case"book":return tt;default:return}},wt=[{value:"selectedText",label:S,id:"scope-selected-text"},{value:"verse",label:O,dropdownLabel:D,scrRefSuffix:Q("verse"),id:"scope-verse"},{value:"chapter",label:M,dropdownLabel:Y,scrRefSuffix:Q("chapter"),id:"scope-chapter"},{value:"book",label:E,dropdownLabel:X,scrRefSuffix:Q("book"),id:"scope-book"},{value:"selectedBooks",label:A,id:"scope-selected"},{value:"range",label:P,id:"scope-range"}],ft=(F,tt,Rt=!1)=>e.jsxs(e.Fragment,{children:[F,tt&&!Rt&&e.jsxs("span",{className:"tw:text-muted-foreground",children:[": ",tt]})]}),ht=r?wt.filter(F=>r.includes(F.value)):wt,_t=f??B.defaultScrRef,It=g??_t,St=m??_t,oe=()=>{},te=s.useRef(null),mt=s.useRef(null),vt=s.useRef(!1),xt=s.useRef(null),Yt=s.useRef(!1),[ne,jt]=s.useState(void 0),Ct=s.useRef(!1),Xt=s.useRef(!1),le=s.useRef(null),ie=s.useCallback(F=>{if(F){jt("start"),Ct.current=!1;return}jt(tt=>tt==="start"?void 0:tt),Ct.current&&(Ct.current=!1,requestAnimationFrame(()=>{var Rt;const tt=(Rt=te.current)==null?void 0:Rt.querySelector("button");tt==null||tt.click()}))},[]),ge=s.useCallback(F=>{if(F){jt("end"),Xt.current=!1;return}jt(tt=>tt==="end"?void 0:tt)},[]),Zt=s.useCallback(F=>{x==null||x(F),y==null||y(F),Ct.current=!0},[x,y]),$t=s.useCallback(F=>{y==null||y(F),Xt.current=!0},[y]),Vt=s.useCallback(F=>{a(F),F==="selectedBooks"&&i.length===0&&(f!=null&&f.book)&&l([f.book])},[a,i,f,l]),Ft=ht.find(F=>F.value===t),fe=()=>t==="selectedBooks"&&i.length>0?i.map(F=>F.toUpperCase()).join(", "):t==="range"?B.formatScrRefRange(It,St,{optionOrLocalizedBookName:"id",endRefOptionOrLocalizedBookName:"id",repeatBookName:!0}):Ft?ft(Ft.label,Ft.scrRefSuffix):t,I=ht.filter(F=>F.value!=="selectedBooks"&&F.value!=="range"),Nt=ht.find(F=>F.value==="selectedBooks"),At=ht.find(F=>F.value==="range"),[Et,R]=s.useState(!1),[K,Z]=s.useState(void 0),[U,J]=s.useState(void 0),[V,at]=s.useState(void 0),[nt,ot]=s.useState(void 0),[gt,bt]=s.useState([]),yt=h==="dropdown"&&K==="selectedBooks",Bt=e.jsx(wn,{availableBookInfo:n,selectedBookIds:yt?gt:i,onChangeSelectedBookIds:yt?bt:l,localizedStrings:c,localizedBookNames:d,disabledSectionExplanations:u}),Ce=ne==="end",xe=ne==="start",me="tw:text-muted-foreground",de=h==="dropdown"&&K==="range",De=de?at:Zt,Ie=de?ot:y?$t:oe,T=e.jsxs("div",{className:"tw:flex tw:flex-wrap tw:items-end tw:gap-4",children:[e.jsxs("div",{className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{htmlFor:"scope-range-start",className:o.cn(Ce&&me),children:q}),e.jsx(gr,{id:"scope-range-start",scrRef:de?V??It:It,handleSubmit:De,localizedBookNames:d,localizedStrings:k,getEndVerse:C,submitKeys:Jc,onOpenChange:ie,className:o.cn(Ce&&me),modal:!0})]}),e.jsxs("div",{ref:te,className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{htmlFor:"scope-range-end",className:o.cn(xe&&me),children:$}),e.jsx(gr,{id:"scope-range-end",scrRef:de?nt??St:St,handleSubmit:Ie,localizedBookNames:d,localizedStrings:k,getEndVerse:C,disableReferencesUpTo:de?V??It:It,onOpenChange:ge,onCloseAutoFocus:F=>{var tt;Xt.current&&(Xt.current=!1,F.preventDefault(),(tt=le.current)==null||tt.focus())},className:o.cn(xe&&me),modal:!0,align:"start"})]})]}),it=s.useRef({}),lt=s.useCallback(F=>tt=>{it.current[F]=tt},[]),Tt=s.useRef(null);s.useEffect(()=>{if(!Et)return;let F=0;const tt=requestAnimationFrame(()=>{F=requestAnimationFrame(()=>{var Rt;(Rt=it.current[t])==null||Rt.focus()})});return()=>{cancelAnimationFrame(tt),F&&cancelAnimationFrame(F)}},[Et,t]);const[ye,Tr]=s.useState(null),[ve,Oe]=s.useState(null),[Pe,Sr]=s.useState(null),rr=200,[Rr,ar]=s.useState(!1);s.useEffect(()=>{if(!Pe||typeof ResizeObserver>"u")return;const F=new ResizeObserver(([tt])=>{ar(tt.contentRect.width F.disconnect()},[Pe]);const or=s.useCallback(F=>{J(F),at(It),ot(St),bt(i),R(!1),Z(F)},[It,St,i]),nr=s.useCallback(()=>{U!==void 0&&(U==="range"?(V&&(x==null||x(V)),nt&&(y==null||y(nt))):U==="selectedBooks"&&l(gt),Vt(U),Z(void 0),J(void 0))},[U,V,nt,gt,x,y,l,Vt]),Le=s.useCallback(F=>{F||(Z(void 0),J(void 0))},[]),ir=s.useCallback(F=>{var tt;F.preventDefault(),(tt=Tt.current)==null||tt.focus()},[]),sr=F=>t===F?e.jsx("span",{className:"tw:absolute tw:flex tw:h-3.5 tw:w-3.5 tw:items-center tw:justify-center tw:ltr:left-2 tw:rtl:right-2",children:e.jsx(z.Check,{className:"tw:h-4 tw:w-4"})}):void 0;return e.jsxs("div",{id:p,className:"tw:grid tw:gap-4",children:[e.jsxs("div",{className:"tw:grid tw:gap-2",children:[!j&&e.jsx(o.Label,{children:_}),h==="dropdown"?e.jsxs(o.DropdownMenu,{open:Et,onOpenChange:R,children:[e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(o.Button,{ref:Tt,variant:"outline",role:"combobox",className:o.cn("tw:w-full tw:justify-between tw:overflow-hidden tw:font-normal",L),children:[e.jsx("span",{className:"tw:min-w-0 tw:flex-1 tw:truncate tw:text-start",children:fe()}),e.jsx(z.ChevronDown,{className:"tw:ms-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.DropdownMenuContent,{ref:Sr,className:"tw:w-[var(--radix-dropdown-menu-trigger-width)] tw:min-w-[12rem]",align:"start",children:e.jsxs(o.PopoverPortalContainerProvider,{container:Pe,children:[I.map(({value:F,label:tt,dropdownLabel:Rt,scrRefSuffix:ee,id:se})=>{const b=w==null?void 0:w[F];return e.jsxs(o.DropdownMenuItem,{ref:lt(F),disabled:!!b,className:"tw:relative tw:ps-8 data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground",onSelect:()=>Vt(F),"data-selected":t===F?"true":void 0,children:[t===F&&e.jsx("span",{className:"tw:absolute tw:flex tw:h-3.5 tw:w-3.5 tw:items-center tw:justify-center tw:ltr:left-2 tw:rtl:right-2",children:e.jsx(z.Check,{className:"tw:h-4 tw:w-4"})}),e.jsxs("span",{className:"tw:flex tw:min-w-0 tw:flex-col tw:gap-0.5",children:[e.jsx("span",{className:"tw:flex tw:items-center tw:gap-1.5",children:ft(Rt??tt,ee,Rr)}),b&&e.jsx("span",{className:"tw:text-xs tw:whitespace-normal tw:text-foreground",children:b})]})]},se)}),(Nt||At)&&e.jsx(o.DropdownMenuSeparator,{}),Nt&&e.jsxs(o.DropdownMenuItem,{ref:lt("selectedBooks"),className:o.cn("tw:relative tw:ps-8","data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground"),onSelect:()=>or("selectedBooks"),"data-selected":t==="selectedBooks"?"true":void 0,children:[sr("selectedBooks"),`${Nt.label}…`]}),At&&e.jsxs(o.DropdownMenuItem,{ref:lt("range"),className:o.cn("tw:relative tw:ps-8","data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground"),onSelect:()=>or("range"),"data-selected":t==="range"?"true":void 0,children:[sr("range"),`${At.label}…`]}),N&&e.jsxs(e.Fragment,{children:[e.jsx(o.DropdownMenuSeparator,{}),e.jsx(o.DropdownMenuLabel,{className:"tw:px-2 tw:py-1.5 tw:text-xs tw:font-medium tw:text-muted-foreground",children:ct}),e.jsx(o.DropdownMenuItem,{ref:xt,className:"tw:p-0",onSelect:F=>{var tt,Rt;if(F.preventDefault(),vt.current){vt.current=!1;return}Yt.current||(Rt=(tt=mt.current)==null?void 0:tt.querySelector("button"))==null||Rt.click()},children:e.jsx("div",{ref:mt,className:"tw:w-full tw:px-1 tw:pb-1",onPointerDownCapture:F=>{const tt=F.target instanceof HTMLElement?F.target:void 0;tt!=null&&tt.closest("button")&&(vt.current=!0,requestAnimationFrame(()=>{vt.current=!1}))},children:e.jsx(gr,{id:"scope-navigate",scrRef:f??B.defaultScrRef,handleSubmit:N,localizedBookNames:d,localizedStrings:k,getEndVerse:C,triggerVariant:"ghost",onOpenChange:F=>{Yt.current=F},onCloseAutoFocus:F=>{var tt;F.preventDefault(),(tt=xt.current)==null||tt.focus()},modal:!0,className:"tw:w-full tw:min-w-0 tw:max-w-none tw:justify-between tw:px-2 tw:font-normal",triggerContent:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"tw:min-w-0 tw:flex-1 tw:truncate tw:text-start",children:B.formatScrRef(f??B.defaultScrRef,"id")}),e.jsx(z.ChevronDown,{className:"tw:ms-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})})})})]})]})})]}):e.jsx(o.RadioGroup,{value:t,onValueChange:Vt,className:"tw:flex tw:flex-col tw:space-y-1",children:ht.map(({value:F,label:tt,scrRefSuffix:Rt,id:ee})=>{const se=w==null?void 0:w[F];return e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-0.5",children:[e.jsxs("div",{className:"tw:flex tw:items-center",children:[e.jsx(o.RadioGroupItem,{className:"tw:me-2",value:F,id:ee,disabled:!!se,"aria-describedby":se?`${ee}-explanation`:void 0}),e.jsx(o.Label,{htmlFor:ee,children:ft(tt,Rt)})]}),se&&e.jsx("span",{id:`${ee}-explanation`,className:"tw:ms-6 tw:text-xs tw:whitespace-normal tw:text-muted-foreground",children:se})]},ee)})})]}),h==="radio"&&t==="selectedBooks"&&e.jsxs("div",{className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{children:rt}),Bt]}),h==="radio"&&t==="range"&&T,h==="dropdown"&&Nt&&e.jsx(o.Dialog,{open:K==="selectedBooks",onOpenChange:Le,children:e.jsx(o.DialogContent,{ref:Oe,onCloseAutoFocus:ir,onEscapeKeyDown:F=>{ve!=null&&ve.querySelector('[data-state="open"]')&&F.preventDefault()},children:e.jsxs(o.PopoverPortalContainerProvider,{container:ve,children:[e.jsx(o.DialogHeader,{className:"tw:pe-8",children:e.jsx(o.DialogTitle,{children:A})}),Bt,e.jsxs(o.DialogFooter,{children:[e.jsx(o.Button,{variant:"outline",onClick:()=>Le(!1),children:dt}),e.jsx(o.Button,{onClick:nr,children:et})]})]})})}),h==="dropdown"&&At&&e.jsx(o.Dialog,{open:K==="range",onOpenChange:Le,children:e.jsx(o.DialogContent,{ref:Tr,onCloseAutoFocus:ir,onEscapeKeyDown:F=>{ye!=null&&ye.querySelector('[data-state="open"]')&&F.preventDefault()},children:e.jsxs(o.PopoverPortalContainerProvider,{container:ye,children:[e.jsx(o.DialogHeader,{className:"tw:pe-8",children:e.jsx(o.DialogTitle,{children:W})}),T,e.jsxs(o.DialogFooter,{children:[e.jsx(o.Button,{variant:"outline",onClick:()=>Le(!1),children:dt}),e.jsx(o.Button,{ref:le,onClick:nr,children:et})]})]})})})]})}function tl({availableScrollGroupIds:t,scrollGroupId:r,onChangeScrollGroupId:a,localizedStrings:n={},size:i="sm",className:l,id:c,disabled:d}){const u={...o.dt,...Object.fromEntries(Object.entries(n).map(([p,h])=>[p,p===h&&p in o.dt?o.dt[p]:h]))},w=o.readDirection();return e.jsxs(Te,{value:`${r}`,onValueChange:p=>a(p==="undefined"?void 0:parseInt(p,10)),disabled:d,children:[e.jsx(Re,{size:i,className:o.cn("pr-twp tw:w-auto",l),children:e.jsx(Se,{placeholder:u[B.getLocalizeKeyForScrollGroupId(r)]??r})}),e.jsx(Me,{id:c,align:w==="rtl"?"end":"start",style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:t.map(p=>e.jsx(ae,{value:`${p}`,children:u[B.getLocalizeKeyForScrollGroupId(p)]},`${p}`))})]})}function el({children:t}){return e.jsx("div",{className:"pr-twp tw:grid",children:t})}function rl({primary:t,secondary:r,children:a,isLoading:n=!1,loadingMessage:i}){return e.jsxs("div",{className:"tw:flex tw:items-center tw:justify-between tw:space-x-4 tw:py-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"tw:text-sm tw:font-medium tw:leading-none",children:t}),e.jsx("p",{className:"tw:whitespace-normal tw:break-words tw:text-sm tw:text-muted-foreground",children:r})]}),n?e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:i}):e.jsx("div",{children:a})]})}function al({primary:t,secondary:r,includeSeparator:a=!1}){return e.jsxs("div",{className:"tw:space-y-4 tw:py-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tw:text-lg tw:font-medium",children:t}),e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:r})]}),a?e.jsx(o.Separator,{}):""]})}function pn(t,r){var a;return(a=Object.entries(t).find(([,n])=>"menuItem"in n&&n.menuItem===r))==null?void 0:a[0]}function hn(t){return Object.entries(t).flatMap(([r,a])=>typeof a=="object"?[{columnKey:r,column:a}]:[]).sort((r,a)=>r.column.order-a.column.order)}function gn(t,r,a){return"column"in r&&r.column===a||t===a}function ol(t){const r=new Set(t.items.map(n=>n.group)),a=Object.entries(t.groups).filter(([n])=>r.has(n));return hn(t.columns).filter(({columnKey:n})=>a.some(([i,l])=>gn(i,l,n))).map(({columnKey:n,column:i})=>({columnKey:n,label:i.label}))}function Cr({icon:t,menuLabel:r,leading:a}){return t?e.jsx("img",{className:o.cn("tw:max-h-5 tw:max-w-5",a?"tw:me-2":"tw:ms-2"),src:t,alt:`${a?"Leading":"Trailing"} icon for ${r}`}):void 0}const fn=(t,r,a,n)=>a?Object.entries(t).filter(([l,c])=>gn(l,c,a)).sort(([,l],[,c])=>l.order-c.order).flatMap(([l])=>r.filter(d=>d.group===l).sort((d,u)=>d.order-u.order).map(d=>e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:"command"in d?e.jsxs(o.DropdownMenuItem,{onClick:()=>{n(d)},children:[d.iconPathBefore&&e.jsx(Cr,{icon:d.iconPathBefore,menuLabel:d.label,leading:!0}),d.label,d.iconPathAfter&&e.jsx(Cr,{icon:d.iconPathAfter,menuLabel:d.label}),d.shortcut&&e.jsx(o.DropdownMenuShortcut,{children:d.shortcut})]},`dropdown-menu-item-${d.label}-${d.command}`):e.jsxs(o.DropdownMenuSub,{children:[e.jsx(o.DropdownMenuSubTrigger,{children:d.label}),e.jsx(o.DropdownMenuPortal,{children:e.jsx(o.DropdownMenuSubContent,{children:fn(t,r,pn(t,d.id),n)})})]},`dropdown-menu-sub-${d.label}-${d.id}`)}),d.tooltip&&e.jsx(o.TooltipContent,{children:d.tooltip})]},`tooltip-${d.label}-${"command"in d?d.command:d.id}`))):void 0;function Nr({onSelectMenuItem:t,menuData:r,tabLabel:a,icon:n,className:i,showSectionHeadings:l=!1,variant:c,buttonVariant:d="ghost",id:u}){const w=s.useId(),p=ol(r),h=l&&p.length>1;Ja();const g=s.useRef(null),m=()=>o.showFocusRing(g.current??void 0);return e.jsxs(o.DropdownMenu,{variant:c,children:[e.jsx(o.DropdownMenuTrigger,{"aria-label":a,className:i,asChild:!0,id:u,children:e.jsx(o.Button,{ref:g,variant:d,size:"icon",className:o.QUIET_FOCUS_RING_SUPPRESSION,onKeyDown:m,onBlur:m,children:n??e.jsx(z.MenuIcon,{})})}),e.jsx(o.DropdownMenuContent,{align:"start",style:{zIndex:o.Z_INDEX_ABOVE_DOCK},onCloseAutoFocus:()=>{o.getLastInteractionModality()==="pointer"&&o.hideFocusRing(g.current??void 0)},children:p.map(({columnKey:x,label:y},f)=>{const N=`${w}-${x}`;return e.jsxs(s.Fragment,{children:[e.jsxs(o.DropdownMenuGroup,{"aria-labelledby":h?N:void 0,children:[h&&e.jsx(o.DropdownMenuLabel,{id:N,children:y}),e.jsx(o.TooltipProvider,{children:fn(r.groups,r.items,x,t)})]}),f t>=c),i=n===-1?r.length:n;if(a===void 0||i>=a)return i;const l=r.findIndex(c=>t>=c+nl);return l===-1?a:Math.min(a,l)}function ga(t,r){const[a,n]=s.useState(0),i=s.useRef(void 0);return s.useLayoutEffect(()=>{if(!t||typeof ResizeObserver>"u")return;const l=()=>{const{width:d}=t.getBoundingClientRect(),u=i.current;i.current=d;const w=u===void 0||u===0;n(p=>il(d,r,w?void 0:p))};l();const c=new ResizeObserver(l);return c.observe(t),()=>c.disconnect()},[t,r]),a}const sl=Object.freeze([520,420,340]),mn=s.forwardRef(({id:t,className:r,children:a},n)=>{const[i,l]=s.useState(void 0),c=s.useRef(n);c.current=n;const d=s.useCallback(h=>{l(h??void 0);const g=c.current;typeof g=="function"?g(h):g&&(g.current=h)},[]),u=ga(i,sl),w=ra()??u,p=w>=ze.MINIMUM;return e.jsx(Je.Provider,{value:w,children:e.jsx("div",{ref:d,className:o.cn("tw:sticky tw:top-0 tw:box-border tw:h-14 tw:items-center tw:justify-between tw:overflow-clip tw:py-2 tw:text-foreground tw:@container/toolbar",p?"tw:gap-1 tw:px-2":"tw:gap-2 tw:px-4",r,"tw:flex tw:flex-row"),id:t,children:a})})});function cl({onSelectProjectMenuItem:t,onSelectViewInfoMenuItem:r,projectMenuData:a,tabViewMenuData:n,id:i,className:l,startAreaChildren:c,centerAreaChildren:d,endAreaChildren:u,menuButtonIcon:w}){return e.jsxs(mn,{className:`tw:w-full tw:border-b ${l}`,id:i,children:[a&&e.jsx(Nr,{onSelectMenuItem:t,menuData:a,tabLabel:"Project",icon:w??e.jsx(z.Menu,{}),buttonVariant:"ghost",showSectionHeadings:!0}),c&&e.jsx("div",{className:"tw:flex tw:min-w-0 tw:shrink tw:grow-[10] tw:flex-row tw:flex-nowrap tw:items-start tw:gap-x-1 tw:gap-y-2 tw:overflow-clip",children:c}),d&&e.jsx("div",{className:"tw:flex tw:shrink tw:grow-[1] tw:basis-0 tw:flex-row tw:flex-nowrap tw:items-start tw:justify-center tw:gap-x-1 tw:gap-y-2 tw:overflow-clip tw:@sm:basis-auto",children:d}),e.jsxs("div",{className:"tw:flex tw:shrink-0 tw:grow-[1] tw:flex-row-reverse tw:flex-nowrap tw:items-start tw:gap-x-1 tw:gap-y-2 tw:overflow-clip",children:[n&&e.jsx(Nr,{onSelectMenuItem:r,menuData:n,tabLabel:"View Info",icon:e.jsx(z.EllipsisVertical,{}),className:"tw:h-full",showSectionHeadings:!0}),u]})]})}function ll({onSelectProjectMenuItem:t,projectMenuData:r,id:a,className:n,menuButtonIcon:i}){return e.jsx(mn,{className:"tw:pointer-events-none",id:a,children:r&&e.jsx(Nr,{onSelectMenuItem:t,menuData:r,tabLabel:"Project",icon:i,className:`tw:pointer-events-auto tw:shadow-lg ${n}`,buttonVariant:"outline",showSectionHeadings:!0})})}const fa=s.forwardRef(({className:t,...r},a)=>{const n=o.readDirection();return e.jsx(G.Tabs.Root,{orientation:"vertical",ref:a,className:o.cn("tw:flex tw:gap-1 tw:rounded-md tw:text-muted-foreground",t),...r,dir:n})});fa.displayName=G.Tabs.List.displayName;const ma=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.List,{ref:a,className:o.cn("tw:flex tw:items-center tw:w-[124px] tw:justify-center tw:rounded-md tw:bg-muted tw:p-1 tw:text-muted-foreground",t),...r}));ma.displayName=G.Tabs.List.displayName;const vn=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.Trigger,{ref:a,...r,className:o.cn("tw:inline-flex tw:w-[116px] tw:cursor-pointer tw:items-center tw:justify-center tw:break-words tw:rounded-sm tw:border-0 tw:bg-muted tw:px-3 tw:py-1.5 tw:text-sm tw:font-medium tw:text-inherit tw:ring-offset-background tw:transition-all tw:hover:text-foreground tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:data-[state=active]:bg-background tw:data-[state=active]:text-foreground tw:data-[state=active]:shadow-sm tw:overflow-clip",t)})),va=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.Content,{ref:a,className:o.cn("tw:ms-5 tw:flex-grow tw:text-foreground tw:ring-offset-background tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-2",t),...r}));va.displayName=G.Tabs.Content.displayName;function dl({tabList:t,searchValue:r,onSearch:a,searchPlaceholder:n,headerTitle:i,searchClassName:l,id:c}){return e.jsxs("div",{id:c,className:"pr-twp",children:[e.jsxs("div",{className:"tw:sticky tw:top-0 tw:space-y-2 tw:pb-2",children:[i?e.jsx("h1",{children:i}):"",e.jsx(o.SearchBar,{className:l,value:r,onSearch:a,placeholder:n})]}),e.jsxs(fa,{children:[e.jsx(ma,{children:t.map(d=>e.jsx(vn,{value:d.value,children:d.value},d.key))}),t.map(d=>e.jsx(va,{value:d.value,children:d.content},d.key))]})]})}function wl({className:t,variant:r="default",...a}){const n=s.useMemo(()=>({variant:r}),[r]);return e.jsx(o.MenuContext.Provider,{value:n,children:e.jsx(G.Menubar.Root,{"data-slot":"menubar",className:o.cn("tw:flex tw:h-8 tw:items-center tw:gap-0.5 tw:rounded-lg tw:border tw:p-[3px]",t),...a})})}function ul({...t}){return e.jsx(G.Menubar.Menu,{"data-slot":"menubar-menu",...t})}function pl({...t}){return e.jsx(G.Menubar.Portal,{"data-slot":"menubar-portal",...t})}function hl({className:t,...r}){const a=o.useMenuContext();return e.jsx(G.Menubar.Trigger,{"data-slot":"menubar-trigger",className:o.cn("tw:flex tw:items-center tw:rounded-sm tw:px-1.5 tw:py-[2px] tw:text-sm tw:font-medium tw:outline-hidden tw:select-none tw:hover:bg-muted tw:aria-expanded:bg-muted","pr-twp",o.menuVariants({variant:a.variant,className:t})),...r})}function gl({className:t,align:r="start",alignOffset:a=-4,sideOffset:n=8,style:i,...l}){return e.jsx(pl,{children:e.jsx(G.Menubar.Content,{"data-slot":"menubar-content",align:r,alignOffset:a,sideOffset:n,className:o.cn("tw:min-w-36 tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-md tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative","pr-twp",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...i},...l})})}function fl({className:t,inset:r,variant:a="default",...n}){const i=o.useMenuContext();return e.jsx(G.Menubar.Item,{"data-slot":"menubar-item","data-inset":r,"data-variant":a,className:o.cn("tw:group/menubar-item tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:not-data-[variant=destructive]:focus:**:text-accent-foreground tw:data-inset:ps-7 tw:data-[variant=destructive]:text-destructive tw:data-[variant=destructive]:focus:bg-destructive/10 tw:data-[variant=destructive]:focus:text-destructive tw:dark:data-[variant=destructive]:focus:bg-destructive/20 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4 tw:data-[variant=destructive]:*:[svg]:text-destructive!",o.menuVariants({variant:i.variant,className:t})),...n})}function ml({className:t,...r}){return e.jsx(G.Menubar.Separator,{"data-slot":"menubar-separator",className:o.cn("tw:-mx-1 tw:my-1 tw:h-px tw:bg-border",t),...r})}function vl({className:t,...r}){return e.jsx("span",{"data-slot":"menubar-shortcut",className:o.cn("tw:[unicode-bidi:plaintext] tw:ms-auto tw:text-xs tw:tracking-widest tw:text-muted-foreground tw:group-focus/menubar-item:text-accent-foreground",t),...r})}function bl({...t}){return e.jsx(G.Menubar.Sub,{"data-slot":"menubar-sub",...t})}function xl({className:t,inset:r,children:a,...n}){const i=o.useMenuContext();return e.jsxs(G.Menubar.SubTrigger,{"data-slot":"menubar-sub-trigger","data-inset":r,className:o.cn("tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-none tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-open:bg-accent tw:data-open:text-accent-foreground tw:[&_svg:not([class*=size-])]:size-4",o.menuVariants({variant:i.variant,className:t})),...n,children:[a,e.jsx(Dt.IconChevronRight,{className:"tw:ms-auto tw:size-4"})]})}function yl({className:t,style:r,...a}){return e.jsx(G.Menubar.SubContent,{"data-slot":"menubar-sub-content",className:o.cn("tw:min-w-32 tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-lg tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})}const qe=(t,r)=>{setTimeout(()=>{r.forEach(a=>{var n;(n=t.current)==null||n.dispatchEvent(new KeyboardEvent("keydown",a))})},0)},bn=(t,r,a,n)=>{if(!a)return;const i=Object.entries(t).filter(([l,c])=>"column"in c&&c.column===a||l===a).sort(([,l],[,c])=>l.order-c.order);return i.flatMap(([l],c)=>{const d=r.filter(w=>w.group===l).sort((w,p)=>w.order-p.order).map(w=>e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:"command"in w?e.jsxs(fl,{onClick:()=>{n(w)},children:[w.iconPathBefore&&e.jsx(Cr,{icon:w.iconPathBefore,menuLabel:w.label,leading:!0}),w.label,w.iconPathAfter&&e.jsx(Cr,{icon:w.iconPathAfter,menuLabel:w.label}),w.shortcut&&e.jsx(vl,{children:w.shortcut})]},`menubar-item-${w.label}-${w.command}`):e.jsxs(bl,{children:[e.jsx(xl,{children:w.label}),e.jsx(yl,{children:bn(t,r,pn(t,w.id),n)})]},`menubar-sub-${w.label}-${w.id}`)}),w.tooltip&&e.jsx(o.TooltipContent,{children:w.tooltip})]},`tooltip-${w.label}-${"command"in w?w.command:w.id}`)),u=[...d];return d.length>0&&c {switch(p){case"platform.app":return l;case"platform.window":return c;case"platform.layout":return d;case"platform.help":return u;default:return}};if(Mn.useHotkeys(["alt","alt+p","alt+l","alt+n","alt+h"],(p,h)=>{var x,y,f,N;p.preventDefault();const g={key:"Escape",code:"Escape",keyCode:27,bubbles:!0},m={key:" ",code:"Space",keyCode:32,bubbles:!0};switch(h.hotkey){case"alt":qe(l,[g]);break;case"alt+p":(x=l.current)==null||x.focus(),qe(l,[g,m]);break;case"alt+l":(y=c.current)==null||y.focus(),qe(c,[g,m]);break;case"alt+n":(f=d.current)==null||f.focus(),qe(d,[g,m]);break;case"alt+h":(N=u.current)==null||N.focus(),qe(u,[g,m]);break}}),s.useEffect(()=>{if(!a||!i.current)return;const p=new MutationObserver(m=>{m.forEach(x=>{if(x.attributeName==="data-state"&&x.target instanceof HTMLElement){const y=x.target.getAttribute("data-state");a(y==="open")}})});return i.current.querySelectorAll("[data-state]").forEach(m=>{p.observe(m,{attributes:!0})}),()=>p.disconnect()},[a]),!!t)return e.jsx(wl,{ref:i,className:"pr-twp tw:border-0 tw:bg-transparent",variant:n,children:hn(t.columns).map(({columnKey:p,column:h})=>e.jsxs(ul,{children:[e.jsx(hl,{ref:w(p),children:h.label}),e.jsx(gl,{style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:e.jsx(o.TooltipProvider,{children:bn(t.groups,t.items,p,r)})})]},p))})}const _l=Object.freeze([950,800,700]);function jl(t){switch(t){case void 0:return;case"darwin":return"tw:ps-[85px]";default:return"tw:pe-[calc(138px+1rem)]"}}function Cl({menuData:t,onOpenChange:r,onSelectMenuItem:a,className:n,id:i,children:l,appMenuAreaChildren:c,configAreaChildren:d,shouldUseAsAppDragArea:u,menubarVariant:w="default"}){const[p,h]=s.useState(void 0),g=s.useCallback(y=>h(y??void 0),[]),m=ga(p,_l),x=ra()??m;return e.jsx(Je.Provider,{value:x,children:e.jsx("div",{className:o.cn("tw:border tw:px-4 tw:text-foreground",n),style:{position:"relative"},id:i,children:e.jsxs("div",{"data-testid":"toolbar-content-row",className:"tw:flex tw:h-full tw:w-full tw:justify-between tw:overflow-hidden",ref:g,style:u?{WebkitAppRegion:"drag"}:void 0,children:[e.jsx("div",{className:"tw:flex tw:shrink-0 tw:grow tw:basis-0",children:e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-2",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:[c,t&&e.jsx(kl,{menuData:t,onOpenChange:r,onSelectMenuItem:a,variant:w})]})}),e.jsx("div",{"data-testid":"toolbar-content-area",className:"tw:flex tw:min-w-0 tw:shrink tw:items-center tw:gap-2 tw:overflow-clip tw:px-2",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:l}),e.jsx("div",{className:"tw:flex tw:min-w-0 tw:grow tw:basis-0 tw:justify-end",children:e.jsx("div",{className:"tw:flex tw:min-w-0 tw:items-center tw:gap-2 tw:pe-1",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:d})})]})})})}const Nl=(t,r)=>t[r]??r;function El({knownUiLanguages:t,primaryLanguage:r="en",fallbackLanguages:a=[],onLanguagesChange:n,onPrimaryLanguageChange:i,onFallbackLanguagesChange:l,localizedStrings:c,className:d,id:u}){const w=Nl(c,"%settings_uiLanguageSelector_fallbackLanguages%"),[p,h]=s.useState(!1),g=x=>{i&&i(x),n&&n([x,...a.filter(y=>y!==x)]),l&&a.find(y=>y===x)&&l([...a.filter(y=>y!==x)]),h(!1)},m=(x,y)=>{var N,k,C,j,L,S;const f=y!==x?((k=(N=t[x])==null?void 0:N.uiNames)==null?void 0:k[y])??((j=(C=t[x])==null?void 0:C.uiNames)==null?void 0:j.en):void 0;return f?`${(L=t[x])==null?void 0:L.autonym} (${f})`:(S=t[x])==null?void 0:S.autonym};return e.jsxs("div",{id:u,className:o.cn("pr-twp tw:max-w-sm",d),children:[e.jsxs(Te,{name:"uiLanguage",value:r,onValueChange:g,open:p,onOpenChange:x=>h(x),children:[e.jsx(Re,{children:e.jsx(Se,{})}),e.jsx(Me,{style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:Object.keys(t).map(x=>e.jsx(ae,{value:x,children:m(x,r)},x))})]}),r!=="en"&&e.jsx("div",{className:"tw:pt-3",children:e.jsx(o.Label,{className:"tw:font-normal tw:text-muted-foreground",children:B.formatReplacementString(w,{fallbackLanguages:(a==null?void 0:a.length)>0?a.map(x=>m(x,r)).join(", "):t.en.autonym})})})]})}const Tl=Object.freeze(["%firstRun_language_search_placeholder%","%firstRun_language_noResults%","%firstRun_language_selected%"]);function xn(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase()}function Sl(t,r){if(!r)return t;const a=xn(r);return t.filter(({keywords:n})=>n.some(i=>i.includes(a)))}function Rl(t){return[...t].sort(([r,a],[n,i])=>r==="en"&&n!=="en"?-1:n==="en"&&r!=="en"?1:a.autonym.localeCompare(i.autonym))}function Ml({languages:t,value:r,onChange:a,localizedStrings:n,className:i,id:l}){const[c,d]=s.useState(""),[u,w]=s.useState(),p=s.useRef(null),h=s.useRef(null),g=s.useRef(new Map),[m,x]=s.useState(),y=s.useMemo(()=>Rl(Object.entries(t)).map(([S,O])=>({tag:S,info:O,keywords:[O.autonym,...Object.values(O.uiNames??{}),...O.otherNames??[]].map(xn)})),[t]),f=s.useMemo(()=>Sl(y,c),[y,c]),N=s.useMemo(()=>{var O;const S=M=>!!M&&f.some(E=>E.tag===M);return S(u)?u:S(r)?r:((O=f[0])==null?void 0:O.tag)??""},[u,r,f]),k=y.length>1;s.useLayoutEffect(()=>{var S;x((S=h.current)==null?void 0:S.id)},[]),s.useLayoutEffect(()=>{const S=g.current.get(N),O=k?p.current:void 0;O&&(S?O.setAttribute("aria-activedescendant",S.id):O.removeAttribute("aria-activedescendant")),S&&N!==u&&S.scrollIntoView({block:"nearest"})},[N,u,k]);const C=n["%firstRun_language_search_placeholder%"]??"",j=n["%firstRun_language_noResults%"]??"",L=n["%firstRun_language_selected%"]??"";return e.jsxs(o.Command,{id:l,className:o.cn("pr-twp",i),shouldFilter:!1,value:N,onValueChange:w,children:[k&&e.jsx("div",{"data-slot":"command-input-wrapper",className:"tw:p-1 tw:pb-0",children:e.jsxs(o.InputGroup,{className:"tw:h-8! tw:rounded-lg! tw:border-input/30 tw:bg-input/30 tw:shadow-none! tw:*:data-[slot=input-group-addon]:ps-2!",children:[e.jsx("input",{ref:p,"data-slot":"command-input",type:"text",role:"combobox","aria-expanded":!0,"aria-controls":m,"aria-autocomplete":"list",placeholder:C,"aria-label":C,value:c,onChange:S=>{d(S.currentTarget.value),w(void 0)},className:"tw:w-full tw:text-sm tw:outline-hidden tw:disabled:cursor-not-allowed tw:disabled:opacity-50"}),e.jsx(o.InputGroupAddon,{children:e.jsx(Dt.IconSearch,{className:"tw:size-4 tw:shrink-0 tw:opacity-50"})})]})}),e.jsxs(o.CommandList,{ref:h,children:[e.jsx(o.CommandEmpty,{children:j}),f.map(({tag:S,info:O})=>{const M=S===r;return e.jsxs(o.CommandItem,{ref:E=>{E?g.current.set(S,E):g.current.delete(S)},value:S,"aria-current":M?"true":void 0,"data-checked":M?"true":void 0,onSelect:()=>a(S),children:[e.jsx("span",{dir:"auto",children:O.autonym}),M&&e.jsx("span",{className:"tw:sr-only",children:L})]},S)})]})]})}function Dl({item:t,createLabel:r,createComplexLabel:a}){return r?e.jsx(o.Label,{children:r(t)}):a?e.jsx(o.Label,{children:a(t)}):e.jsx(o.Label,{children:t})}function yn({id:t,className:r,listItems:a,selectedListItems:n,handleSelectListItem:i,createLabel:l,createComplexLabel:c}){return e.jsx("div",{id:t,className:r,children:a.map(d=>e.jsxs("div",{className:"tw:m-2 tw:flex tw:items-center",children:[e.jsx(ha,{className:"tw:me-2 tw:align-middle",checked:n.includes(d),onCheckedChange:u=>i(d,u)}),e.jsx(Dl,{item:d,createLabel:l,createComplexLabel:c})]},d))})}const Il=yn;function Ol(t,r){const[a,n]=s.useState(t),[i,l]=s.useState(r);return t!==a&&(n(t),t&&l(r)),t?r:i}function Pl({open:t,anchorRect:r,message:a,confirmingKeyLabel:n,side:i="bottom",align:l="start",showArrow:c=!0}){const d=t?B.formatReplacementStringToArray(a,{key:n}).join(""):"",{anchorRect:u,message:w,confirmingKeyLabel:p,showArrow:h}=Ol(t,{anchorRect:r,message:a,confirmingKeyLabel:n,showArrow:c});return e.jsxs(o.TooltipProvider,{children:[e.jsx("span",{role:"status",className:"tw:sr-only",children:d}),e.jsxs(o.Tooltip,{open:t,onOpenChange:()=>{},children:[e.jsx(o.TooltipTrigger,{"aria-hidden":"true",tabIndex:-1,className:o.cn("tw:absolute tw:opacity-0 tw:pointer-events-none","tw:p-0 tw:border-0 tw:bg-transparent tw:cursor-default tw:min-w-0 tw:min-h-0"),style:{top:u.top,left:u.left,width:u.width,height:u.height}}),e.jsx(o.TooltipContent,{side:i,align:l,showArrow:h,arrowPadding:8,className:o.cn("tw:p-0 tw:has-data-[slot=kbd]:pe-0 tw:bg-background tw:text-destructive tw:border tw:border-destructive"),arrowClassName:"tw:bg-[color-mix(in_oklab,var(--destructive)_10%,var(--background))] tw:fill-[color-mix(in_oklab,var(--destructive)_10%,var(--background))] tw:border tw:border-destructive",children:e.jsx("div",{className:"tw:w-full tw:h-full tw:rounded-md tw:bg-destructive/10 tw:px-3 tw:py-1.5",children:B.formatReplacementStringToArray(w,{key:e.jsx(o.Kbd,{className:o.cn("tw:border tw:border-destructive tw:in-data-[slot=tooltip-content]:text-destructive","tw:align-middle"),children:p})}).map((g,m)=>e.jsx(s.Fragment,{children:g},`key-${m}`))})})]})]})}function Ll({cardKey:t,isSelected:r,onSelect:a,isDenied:n,isHidden:i=!1,className:l,children:c,selectedButtons:d,hoverButtons:u,dropdownContent:w,additionalContent:p,accentColor:h,showDropdownOnHover:g=!1}){const m=f=>{if(f.key==="Enter"||f.key===" "){if(f.target!==f.currentTarget)return;f.preventDefault(),a()}},[x,y]=s.useState(!1);return e.jsxs("div",{hidden:i,onClick:a,onKeyDown:m,onMouseEnter:()=>y(!0),onFocus:()=>y(!0),role:"button",tabIndex:0,"aria-pressed":r,className:o.cn("tw:group tw:relative tw:min-w-36 tw:rounded-xl tw:border tw:shadow-none tw:hover:bg-muted/50",{"tw:opacity-50 tw:hover:opacity-100":n&&!r},{"tw:bg-accent":r},{"tw:bg-transparent":!r},l),children:[e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-2 tw:p-4",children:[e.jsxs("div",{className:"tw:flex tw:justify-between tw:overflow-hidden",children:[e.jsx("div",{className:"tw:min-w-0 tw:flex-1",children:c}),r&&d,!r&&u&&e.jsx("div",{className:"tw:invisible tw:group-hover:visible",children:u}),w&&(r||g&&x)&&e.jsx("div",{className:o.cn(!r&&g&&"tw:invisible tw:group-hover:visible"),children:e.jsxs(o.DropdownMenu,{children:[e.jsx(o.DropdownMenuTrigger,{className:o.cn(h&&"tw:me-1"),asChild:!0,children:e.jsx(o.Button,{className:"tw:m-1 tw:h-6 tw:w-6",variant:"ghost",size:"icon",onClick:f=>f.stopPropagation(),onFocus:f=>f.stopPropagation(),children:e.jsx(z.MoreVertical,{})})}),e.jsx(o.DropdownMenuContent,{align:"end",children:w})]})})]}),p&&e.jsx("div",{className:"tw:w-fit tw:min-w-0 tw:max-w-full tw:overflow-hidden",children:p})]}),h&&e.jsx("div",{className:`tw:absolute tw:right-0 tw:top-0 tw:h-full tw:w-2 tw:rounded-r-xl ${h}`})]},t)}function Al({id:t,isDisabled:r=!1,hasError:a=!1,isFullWidth:n=!1,helperText:i,label:l,placeholder:c,isRequired:d=!1,className:u,defaultValue:w,value:p,onChange:h,onFocus:g,onBlur:m}){return e.jsxs("div",{className:o.cn("tw:inline-grid tw:items-center tw:gap-1.5",{"tw:w-full":n}),children:[e.jsx(o.Label,{htmlFor:t,className:o.cn({"tw:text-red-600":a,"tw:hidden":!l}),children:`${l}${d?"*":""}`}),e.jsx(o.Input,{id:t,disabled:r,placeholder:c,required:d,className:o.cn(u,{"tw:border-red-600":a}),defaultValue:w,value:p,onChange:h,onFocus:g,onBlur:m}),e.jsx("p",{className:o.cn({"tw:hidden":!i}),children:i})]})}function Bl({currentStep:t,totalSteps:r,locale:a}){const n=a||"en",i=s.useMemo(()=>{const d=new B.NumberFormat(n);return u=>d.format(u)},[n]),l=Math.min(Math.max(t,1),r),c=Array.from({length:r},(d,u)=>u+1);return e.jsx("div",{className:"tw:flex tw:items-center","aria-hidden":"true",children:c.map(d=>{let u="upcoming";return d===l?u="active":d 1&&e.jsx("div",{className:"tw:h-px tw:flex-1 tw:bg-border"}),e.jsx("div",{"data-state":u,className:o.cn("tw:flex tw:h-8 tw:w-8 tw:shrink-0 tw:items-center tw:justify-center tw:rounded-full tw:text-sm tw:font-medium",u==="active"&&"tw:bg-primary tw:text-primary-foreground",u==="complete"&&"tw:bg-muted tw:text-muted-foreground",u==="upcoming"&&"tw:border tw:border-input tw:text-muted-foreground"),children:u==="complete"?e.jsx(z.Check,{className:"tw:h-4 tw:w-4"}):i(d)})]},d)})})}function zl({...t}){return e.jsx(G.ContextMenu.Root,{"data-slot":"context-menu",...t})}function $l({className:t,...r}){return e.jsx(G.ContextMenu.Trigger,{"data-slot":"context-menu-trigger",className:o.cn("tw:select-none",t),...r})}function Vl({...t}){return e.jsx(G.ContextMenu.Group,{"data-slot":"context-menu-group",...t})}function Fl({...t}){return e.jsx(G.ContextMenu.Portal,{"data-slot":"context-menu-portal",...t})}function Gl({...t}){return e.jsx(G.ContextMenu.Sub,{"data-slot":"context-menu-sub",...t})}function Kl({...t}){return e.jsx(G.ContextMenu.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function Ul({className:t,style:r,...a}){return e.jsx(G.ContextMenu.Portal,{children:e.jsx(G.ContextMenu.Content,{"data-slot":"context-menu-content",className:o.cn("pr-twp tw:max-h-(--radix-context-menu-content-available-height) tw:min-w-36 tw:origin-(--radix-context-menu-content-transform-origin) tw:overflow-x-hidden tw:overflow-y-auto tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-md tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})})}function Hl({className:t,inset:r,variant:a="default",...n}){return e.jsx(G.ContextMenu.Item,{"data-slot":"context-menu-item","data-inset":r,"data-variant":a,className:o.cn("pr-twp tw:group/context-menu-item tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-[variant=destructive]:text-destructive tw:data-[variant=destructive]:focus:bg-destructive/10 tw:data-[variant=destructive]:focus:text-destructive tw:dark:data-[variant=destructive]:focus:bg-destructive/20 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4 tw:focus:*:[svg]:text-accent-foreground tw:data-[variant=destructive]:*:[svg]:text-destructive",t),...n})}function ql({className:t,inset:r,children:a,...n}){return e.jsxs(G.ContextMenu.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":r,className:o.cn("pr-twp tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-open:bg-accent tw:data-open:text-accent-foreground tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),...n,children:[a,e.jsx(Dt.IconChevronRight,{className:"tw:ms-auto"})]})}function Yl({className:t,style:r,...a}){return e.jsx(G.ContextMenu.SubContent,{"data-slot":"context-menu-sub-content",className:o.cn("pr-twp tw:min-w-32 tw:origin-(--radix-context-menu-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-lg tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})}function Xl({className:t,children:r,checked:a,inset:n,...i}){return e.jsxs(G.ContextMenu.CheckboxItem,{"data-slot":"context-menu-checkbox-item","data-inset":n,className:o.cn("pr-twp tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:py-1 tw:pe-8 tw:ps-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),checked:a,...i,children:[e.jsx("span",{className:"tw:pointer-events-none tw:absolute tw:end-2",children:e.jsx(G.ContextMenu.ItemIndicator,{children:e.jsx(Dt.IconCheck,{})})}),r]})}function Wl({className:t,children:r,inset:a,...n}){return e.jsxs(G.ContextMenu.RadioItem,{"data-slot":"context-menu-radio-item","data-inset":a,className:o.cn("pr-twp tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:py-1 tw:pe-8 tw:ps-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),...n,children:[e.jsx("span",{className:"tw:pointer-events-none tw:absolute tw:end-2",children:e.jsx(G.ContextMenu.ItemIndicator,{children:e.jsx(Dt.IconCheck,{})})}),r]})}function Zl({className:t,inset:r,...a}){return e.jsx(G.ContextMenu.Label,{"data-slot":"context-menu-label","data-inset":r,className:o.cn("pr-twp tw:px-1.5 tw:py-1 tw:text-xs tw:font-medium tw:text-muted-foreground tw:data-inset:ps-7",t),...a})}function Jl({className:t,...r}){return e.jsx(G.ContextMenu.Separator,{"data-slot":"context-menu-separator",className:o.cn("pr-twp tw:-mx-1 tw:my-1 tw:h-px tw:bg-border",t),...r})}function Ql({className:t,...r}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:o.cn("pr-twp tw:[unicode-bidi:plaintext] tw:ms-auto tw:text-xs tw:tracking-widest tw:text-muted-foreground tw:group-focus/context-menu-item:text-accent-foreground",t),...r})}function td({...t}){return e.jsx(je.Drawer.Root,{"data-slot":"drawer",...t})}function ed({...t}){return e.jsx(je.Drawer.Trigger,{"data-slot":"drawer-trigger",...t})}function kn({...t}){return e.jsx(je.Drawer.Portal,{"data-slot":"drawer-portal",...t})}function rd({...t}){return e.jsx(je.Drawer.Close,{"data-slot":"drawer-close",...t})}function _n({className:t,...r}){return e.jsx(je.Drawer.Overlay,{"data-slot":"drawer-overlay",className:o.cn("pr-twp tw:fixed tw:inset-0 tw:z-50 tw:bg-black/10 tw:supports-backdrop-filter:backdrop-blur-xs tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-closed:animate-out tw:data-closed:fade-out-0",t),...r})}function ad({className:t,children:r,hideDrawerHandle:a=!1,...n}){const i=o.readDirection();return e.jsxs(kn,{"data-slot":"drawer-portal",children:[e.jsx(_n,{}),e.jsxs(je.Drawer.Content,{"data-slot":"drawer-content",className:o.cn("pr-twp tw:group/drawer-content tw:fixed tw:z-50 tw:flex tw:h-auto tw:flex-col tw:bg-popover tw:text-sm tw:text-popover-foreground tw:data-[vaul-drawer-direction=bottom]:inset-x-0 tw:data-[vaul-drawer-direction=bottom]:bottom-0 tw:data-[vaul-drawer-direction=bottom]:mt-24 tw:data-[vaul-drawer-direction=bottom]:max-h-[80vh] tw:data-[vaul-drawer-direction=bottom]:rounded-t-xl tw:data-[vaul-drawer-direction=bottom]:border-t tw:data-[vaul-drawer-direction=left]:inset-y-0 tw:data-[vaul-drawer-direction=left]:left-0 tw:data-[vaul-drawer-direction=left]:w-3/4 tw:data-[vaul-drawer-direction=left]:rounded-r-xl tw:data-[vaul-drawer-direction=left]:border-r tw:data-[vaul-drawer-direction=left]:flex-row tw:data-[vaul-drawer-direction=right]:inset-y-0 tw:data-[vaul-drawer-direction=right]:right-0 tw:data-[vaul-drawer-direction=right]:w-3/4 tw:data-[vaul-drawer-direction=right]:rounded-l-xl tw:data-[vaul-drawer-direction=right]:border-l tw:data-[vaul-drawer-direction=right]:flex-row tw:data-[vaul-drawer-direction=top]:inset-x-0 tw:data-[vaul-drawer-direction=top]:top-0 tw:data-[vaul-drawer-direction=top]:mb-24 tw:data-[vaul-drawer-direction=top]:max-h-[80vh] tw:data-[vaul-drawer-direction=top]:rounded-b-xl tw:data-[vaul-drawer-direction=top]:border-b tw:data-[vaul-drawer-direction=left]:sm:max-w-sm tw:data-[vaul-drawer-direction=right]:sm:max-w-sm",t),dir:"ltr",...n,children:[!a&&e.jsx("div",{className:"tw:hidden tw:shrink-0 tw:rounded-full tw:bg-muted tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:mx-auto tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:mt-4 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:h-1.5 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:w-[100px] tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:block tw:group-data-[vaul-drawer-direction=right]/drawer-content:my-auto tw:group-data-[vaul-drawer-direction=right]/drawer-content:ms-4 tw:group-data-[vaul-drawer-direction=right]/drawer-content:h-[100px] tw:group-data-[vaul-drawer-direction=right]/drawer-content:w-1.5 tw:group-data-[vaul-drawer-direction=right]/drawer-content:block"}),e.jsx("div",{className:"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col",dir:i,children:r}),!a&&e.jsx("div",{className:"tw:hidden tw:shrink-0 tw:rounded-full tw:bg-muted tw:group-data-[vaul-drawer-direction=top]/drawer-content:mx-auto tw:group-data-[vaul-drawer-direction=top]/drawer-content:mb-4 tw:group-data-[vaul-drawer-direction=top]/drawer-content:h-1.5 tw:group-data-[vaul-drawer-direction=top]/drawer-content:w-[100px] tw:group-data-[vaul-drawer-direction=top]/drawer-content:block tw:group-data-[vaul-drawer-direction=left]/drawer-content:my-auto tw:group-data-[vaul-drawer-direction=left]/drawer-content:me-4 tw:group-data-[vaul-drawer-direction=left]/drawer-content:h-[100px] tw:group-data-[vaul-drawer-direction=left]/drawer-content:w-1.5 tw:group-data-[vaul-drawer-direction=left]/drawer-content:block"})]})]})}function od({className:t,...r}){return e.jsx("div",{"data-slot":"drawer-header",className:o.cn("pr-twp tw:flex tw:flex-col tw:gap-0.5 tw:p-4 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center tw:group-data-[vaul-drawer-direction=top]/drawer-content:text-center tw:md:gap-0.5 tw:md:text-start",t),...r})}function nd({className:t,...r}){return e.jsx("div",{"data-slot":"drawer-footer",className:o.cn("pr-twp tw:mt-auto tw:flex tw:flex-col tw:gap-2 tw:p-4",t),...r})}function id({className:t,...r}){return e.jsx(je.Drawer.Title,{"data-slot":"drawer-title",className:o.cn("pr-twp tw:font-heading tw:text-base tw:font-medium tw:text-foreground",t),...r})}function sd({className:t,...r}){return e.jsx(je.Drawer.Description,{"data-slot":"drawer-description",className:o.cn("pr-twp tw:text-sm tw:text-muted-foreground",t),...r})}function cd({className:t,value:r,...a}){return e.jsx(G.Progress.Root,{"data-slot":"progress",className:o.cn("pr-twp tw:relative tw:flex tw:h-1 tw:w-full tw:items-center tw:overflow-x-hidden tw:rounded-full tw:bg-muted",t),...a,children:e.jsx(G.Progress.Indicator,{"data-slot":"progress-indicator",className:"tw:size-full tw:flex-1 tw:bg-primary tw:transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})})}function ld({...t}){const{theme:r="system"}=Dn.useTheme(),a=r==="light"||r==="dark"||r==="system"?r:"system",n={"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"};return e.jsx(Xa.Toaster,{theme:a,className:"tw:toaster tw:group",icons:{success:e.jsx(Dt.IconCircleCheck,{className:"tw:size-4"}),info:e.jsx(Dt.IconInfoCircle,{className:"tw:size-4"}),warning:e.jsx(Dt.IconAlertTriangle,{className:"tw:size-4"}),error:e.jsx(Dt.IconAlertOctagon,{className:"tw:size-4"}),loading:e.jsx(Dt.IconLoader,{className:"tw:size-4 tw:animate-spin"})},style:n,toastOptions:{classNames:{toast:"cn-toast"}},...t})}function dd({className:t,defaultValue:r,value:a,min:n=0,max:i=100,...l}){const c=o.readDirection(),d=s.useMemo(()=>Array.isArray(a)?a:Array.isArray(r)?r:[n,i],[a,r,n,i]);return e.jsxs(G.Slider.Root,{"data-slot":"slider",defaultValue:r,value:a,min:n,max:i,className:o.cn("pr-twp tw:relative tw:flex tw:w-full tw:touch-none tw:items-center tw:select-none tw:data-disabled:opacity-50 tw:data-vertical:h-full tw:data-vertical:min-h-40 tw:data-vertical:w-auto tw:data-vertical:flex-col",t),dir:c,...l,children:[e.jsx(G.Slider.Track,{"data-slot":"slider-track",className:"tw:relative tw:grow tw:overflow-hidden tw:rounded-full tw:bg-muted tw:data-horizontal:h-1 tw:data-horizontal:w-full tw:data-vertical:h-full tw:data-vertical:w-1",children:e.jsx(G.Slider.Range,{"data-slot":"slider-range",className:"tw:absolute tw:bg-primary tw:select-none tw:data-horizontal:h-full tw:data-vertical:w-full"})}),Array.from({length:d.length},(u,w)=>e.jsx(G.Slider.Thumb,{"data-slot":"slider-thumb",className:"tw:relative tw:block tw:size-3 tw:shrink-0 tw:rounded-full tw:border tw:border-ring tw:bg-white tw:ring-ring/50 tw:transition-[color,box-shadow] tw:select-none tw:after:absolute tw:after:-inset-2 tw:hover:ring-3 tw:focus-visible:ring-3 tw:focus-visible:outline-hidden tw:active:ring-3 tw:disabled:pointer-events-none tw:disabled:opacity-50"},w))]})}function wd({className:t,size:r="default",...a}){return e.jsx(G.Switch.Root,{"data-slot":"switch","data-size":r,className:o.cn("tw:peer pr-twp tw:group/switch tw:relative tw:inline-flex tw:shrink-0 tw:items-center tw:rounded-full tw:border tw:border-transparent tw:transition-all tw:outline-none tw:after:absolute tw:after:-inset-x-3 tw:after:-inset-y-2 tw:focus-visible:border-ring tw:focus-visible:ring-3 tw:focus-visible:ring-ring/50 tw:aria-invalid:border-destructive tw:aria-invalid:ring-3 tw:aria-invalid:ring-destructive/20 tw:data-[size=default]:h-[18.4px] tw:data-[size=default]:w-[32px] tw:data-[size=sm]:h-[14px] tw:data-[size=sm]:w-[24px] tw:dark:aria-invalid:border-destructive/50 tw:dark:aria-invalid:ring-destructive/40 tw:data-checked:bg-primary tw:data-unchecked:bg-input tw:dark:data-unchecked:bg-input/80 tw:data-disabled:cursor-not-allowed tw:data-disabled:opacity-50",t),...a,children:e.jsx(G.Switch.Thumb,{"data-slot":"switch-thumb",className:"tw:pointer-events-none tw:block tw:rounded-full tw:bg-background tw:ring-0 tw:transition-transform tw:group-data-[size=default]/switch:size-4 tw:group-data-[size=sm]/switch:size-3 tw:group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] tw:rtl:group-data-[size=default]/switch:data-checked:-translate-x-[calc(100%-2px)] tw:group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] tw:rtl:group-data-[size=sm]/switch:data-checked:-translate-x-[calc(100%-2px)] tw:dark:data-checked:bg-primary-foreground tw:group-data-[size=default]/switch:data-unchecked:translate-x-0 tw:rtl:group-data-[size=default]/switch:data-unchecked:-translate-x-0 tw:group-data-[size=sm]/switch:data-unchecked:translate-x-0 tw:rtl:group-data-[size=sm]/switch:data-unchecked:-translate-x-0 tw:dark:data-unchecked:bg-foreground"})})}function ud({className:t,orientation:r="horizontal",...a}){return e.jsx(G.Tabs.Root,{"data-slot":"tabs","data-orientation":r,className:o.cn("tw:group/tabs tw:flex tw:gap-2 tw:data-horizontal:flex-col",t),...a})}const pd=Ya.cva("tw:group/tabs-list tw:inline-flex tw:w-fit tw:items-center tw:justify-center tw:rounded-lg tw:p-[3px] tw:text-muted-foreground tw:group-data-horizontal/tabs:h-8 tw:group-data-vertical/tabs:h-fit tw:group-data-vertical/tabs:flex-col tw:data-[variant=line]:rounded-none",{variants:{variant:{default:"tw:bg-muted",line:"tw:gap-1 tw:bg-transparent"}},defaultVariants:{variant:"default"}});function hd({className:t,variant:r="default",...a}){const n=o.readDirection();return e.jsx(G.Tabs.List,{"data-slot":"tabs-list","data-variant":r,className:o.cn("pr-twp",pd({variant:r}),t),dir:n,...a})}function gd({className:t,...r}){return e.jsx(G.Tabs.Trigger,{"data-slot":"tabs-trigger",className:o.cn("pr-twp tw:relative tw:inline-flex tw:h-[calc(100%-1px)] tw:flex-1 tw:items-center tw:justify-center tw:gap-1.5 tw:rounded-md tw:border tw:border-transparent tw:px-1.5 tw:py-0.5 tw:text-sm tw:font-medium tw:whitespace-nowrap tw:text-foreground/60 tw:transition-all tw:group-data-vertical/tabs:w-full tw:group-data-vertical/tabs:justify-start tw:hover:text-foreground tw:focus-visible:border-ring tw:focus-visible:ring-[3px] tw:focus-visible:ring-ring/50 tw:focus-visible:outline-1 tw:focus-visible:outline-ring tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:has-data-[icon=inline-end]:pe-1 tw:has-data-[icon=inline-start]:ps-1 tw:dark:text-muted-foreground tw:dark:hover:text-foreground tw:group-data-[variant=default]/tabs-list:data-active:shadow-sm tw:group-data-[variant=line]/tabs-list:data-active:shadow-none tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4","tw:group-data-[variant=line]/tabs-list:bg-transparent tw:group-data-[variant=line]/tabs-list:data-active:bg-transparent tw:dark:group-data-[variant=line]/tabs-list:data-active:border-transparent tw:dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","tw:data-active:bg-background tw:data-active:text-foreground tw:dark:data-active:border-input tw:dark:data-active:bg-input/30 tw:dark:data-active:text-foreground","tw:after:absolute tw:after:bg-foreground tw:after:opacity-0 tw:after:transition-opacity tw:group-data-horizontal/tabs:after:inset-x-0 tw:group-data-horizontal/tabs:after:bottom-[-5px] tw:group-data-horizontal/tabs:after:h-0.5 tw:group-data-vertical/tabs:after:inset-y-0 tw:group-data-vertical/tabs:after:-end-1 tw:group-data-vertical/tabs:after:w-0.5 tw:group-data-[variant=line]/tabs-list:data-active:after:opacity-100",t),...r})}function fd({className:t,...r}){return e.jsx(G.Tabs.Content,{"data-slot":"tabs-content",className:o.cn("pr-twp tw:flex-1 tw:text-sm tw:outline-none",t),...r})}const md=(t,r)=>{s.useEffect(()=>{if(!t)return;let a=!1;const i=t(l=>{a||r(l)});return()=>{a=!0;try{i()}catch(l){console.error("useEvent: error while unsubscribing from event",l)}}},[t,r])},vd=(t,r)=>{s.useEffect(()=>{if(!t)return;let a=!1,n,i=!1;const l=d=>{a||r(d)},c=()=>{if(i||!n)return;i=!0;const d=n;(async()=>{try{await d()}catch(u){console.error("useEventAsync: error while unsubscribing from event",u)}})()};return(async()=>{try{n=await Promise.resolve(t(l)),a&&c()}catch(d){console.error("useEventAsync: error while subscribing to event",d)}})(),()=>{a=!0,c()}},[t,r])};function bd(t){return{preserveValue:!0,...t}}const jn=(t,r,a={})=>{const n=s.useRef(r);n.current=r;const i=s.useRef(a);i.current=bd(i.current);const[l,c]=s.useState(()=>n.current),[d,u]=s.useState(!0);return s.useEffect(()=>{let w=!0;return u(!!t),(async()=>{if(t)try{const p=await t();w&&(c(()=>p),u(!1))}catch(p){w&&u(!1),console.error("usePromise: the promise factory rejected, so there is no new value",p)}})(),()=>{w=!1,i.current.preserveValue||c(()=>n.current)}},[t]),[l,d]},xd=t=>{const[r,a]=s.useState(!1),[n,i]=s.useState(!1),[l,c]=s.useState(0),d=s.useRef(void 0),u=s.useMemo(()=>{if(!t)return;const g=async()=>{try{const m=await t();return d.current===g&&(a(!1),i(!0)),m}catch(m){throw d.current===g&&(a(!0),i(!0)),m}};return g},[t,l]);s.useEffect(()=>{d.current=u,a(!1),i(!u)},[u]);const[w,p]=jn(u,void 0),h=s.useCallback(()=>{d.current&&(a(!1),i(!1),c(g=>g+1))},[]);return s.useMemo(()=>({data:w,isLoading:p,hasError:r,hasSettled:n,refetch:h}),[w,p,r,n,h])};function yd(t){s.useEffect(()=>{let r;return t&&(r=document.createElement("style"),r.appendChild(document.createTextNode(t)),document.head.appendChild(r)),()=>{r&&document.head.removeChild(r)}},[t])}function kd(t){const r=s.useMemo(()=>B.collectUsjMarkers(t).slice().sort().join(" "),[t]);return s.useMemo(()=>r?r.split(" "):[],[r])}const Cn=()=>{const[t,r]=s.useState(()=>document.body.getBoundingClientRect().height>0);return s.useEffect(()=>{const a=new IntersectionObserver(n=>{const i=n[n.length-1];i&&r(i.isIntersecting)});return a.observe(document.body),()=>{a.disconnect()}},[]),t};function _d(t,r){const[a,n]=s.useState(!1),i=s.useRef(r);i.current=r;const l=s.useRef(t);l.current=t;const c=s.useCallback(()=>{l.current?i.current():n(!0)},[]);return s.useEffect(()=>{!t||!a||(n(!1),i.current())},[t,a]),c}function Nn(t,r,a){return t?a.dark:r===void 0?a.lightDefault:a.lightUnselected}function jd(t,r){const a=Cn();return Nn(t,a,r)}function Cd({value:t,children:r}){return e.jsx(ea.Provider,{value:t,children:e.jsx(Je.Provider,{value:t,children:r})})}const Nd=300;exports.Alert=o.Alert;exports.AlertDescription=o.AlertDescription;exports.AlertTitle=o.AlertTitle;exports.Badge=o.Badge;exports.Button=o.Button;exports.ButtonGroup=o.ButtonGroup;exports.ButtonGroupSeparator=o.ButtonGroupSeparator;exports.ButtonGroupText=o.ButtonGroupText;exports.Command=o.Command;exports.CommandEmpty=o.CommandEmpty;exports.CommandGroup=o.CommandGroup;exports.CommandInput=o.CommandInput;exports.CommandItem=o.CommandItem;exports.CommandList=o.CommandList;exports.Dialog=o.Dialog;exports.DialogClose=o.DialogClose;exports.DialogContent=o.DialogContent;exports.DialogDescription=o.DialogDescription;exports.DialogFooter=o.DialogFooter;exports.DialogHeader=o.DialogHeader;exports.DialogOverlay=o.DialogOverlay;exports.DialogPortal=o.DialogPortal;exports.DialogTitle=o.DialogTitle;exports.DialogTrigger=o.DialogTrigger;exports.DropdownMenu=o.DropdownMenu;exports.DropdownMenuCheckboxItem=o.DropdownMenuCheckboxItem;exports.DropdownMenuContent=o.DropdownMenuContent;exports.DropdownMenuGroup=o.DropdownMenuGroup;exports.DropdownMenuItem=o.DropdownMenuItem;exports.DropdownMenuLabel=o.DropdownMenuLabel;exports.DropdownMenuPortal=o.DropdownMenuPortal;exports.DropdownMenuRadioGroup=o.DropdownMenuRadioGroup;exports.DropdownMenuRadioItem=o.DropdownMenuRadioItem;exports.DropdownMenuSeparator=o.DropdownMenuSeparator;exports.DropdownMenuShortcut=o.DropdownMenuShortcut;exports.DropdownMenuSub=o.DropdownMenuSub;exports.DropdownMenuSubContent=o.DropdownMenuSubContent;exports.DropdownMenuSubTrigger=o.DropdownMenuSubTrigger;exports.DropdownMenuTrigger=o.DropdownMenuTrigger;exports.Empty=o.Empty;exports.EmptyContent=o.EmptyContent;exports.EmptyDescription=o.EmptyDescription;exports.EmptyHeader=o.EmptyHeader;exports.EmptyMedia=o.EmptyMedia;exports.EmptyState=o.EmptyState;exports.EmptyTitle=o.EmptyTitle;exports.Input=o.Input;exports.Kbd=o.Kbd;exports.KbdGroup=o.KbdGroup;exports.Label=o.Label;exports.MultiSelectComboBox=o.MultiSelectComboBox;exports.Popover=o.Popover;exports.PopoverAnchor=o.PopoverAnchor;exports.PopoverContent=o.PopoverContent;exports.PopoverDescription=o.PopoverDescription;exports.PopoverHeader=o.PopoverHeader;exports.PopoverPortalContainerProvider=o.PopoverPortalContainerProvider;exports.PopoverTitle=o.PopoverTitle;exports.PopoverTrigger=o.PopoverTrigger;exports.RadioGroup=o.RadioGroup;exports.RadioGroupItem=o.RadioGroupItem;exports.ResizableHandle=o.ResizableHandle;exports.ResizablePanel=o.ResizablePanel;exports.ResizablePanelGroup=o.ResizablePanelGroup;exports.RetryableErrorView=o.RetryableErrorView;exports.SearchBar=o.SearchBar;exports.Separator=o.Separator;exports.Skeleton=o.Skeleton;exports.Spinner=o.Spinner;exports.Table=o.Table;exports.TableBody=o.TableBody;exports.TableCaption=o.TableCaption;exports.TableCell=o.TableCell;exports.TableFooter=o.TableFooter;exports.TableHead=o.TableHead;exports.TableHeader=o.TableHeader;exports.TableRow=o.TableRow;exports.ToggleGroup=o.ToggleGroup;exports.ToggleGroupItem=o.ToggleGroupItem;exports.Tooltip=o.Tooltip;exports.TooltipContent=o.TooltipContent;exports.TooltipProvider=o.TooltipProvider;exports.TooltipTrigger=o.TooltipTrigger;exports.Z_INDEX_ABOVE_DOCK=o.Z_INDEX_ABOVE_DOCK;exports.Z_INDEX_ABOVE_POPOVER=o.Z_INDEX_ABOVE_POPOVER;exports.Z_INDEX_CONNECTION_LOST=o.Z_INDEX_CONNECTION_LOST;exports.Z_INDEX_FIRST_RUN=o.Z_INDEX_FIRST_RUN;exports.Z_INDEX_MODAL=o.Z_INDEX_MODAL;exports.Z_INDEX_MODAL_BACKDROP=o.Z_INDEX_MODAL_BACKDROP;exports.Z_INDEX_NESTED_MODAL=o.Z_INDEX_NESTED_MODAL;exports.Z_INDEX_NESTED_MODAL_BACKDROP=o.Z_INDEX_NESTED_MODAL_BACKDROP;exports.Z_INDEX_ONBOARDING_TOUR=o.Z_INDEX_ONBOARDING_TOUR;exports.Z_INDEX_OVERLAY=o.Z_INDEX_OVERLAY;exports.badgeVariants=o.badgeVariants;exports.buttonGroupVariants=o.buttonGroupVariants;exports.buttonVariants=o.buttonVariants;exports.cn=o.cn;exports.isMacOs=o.isMacOs;exports.isWindows=o.isWindows;exports.useListbox=o.useListbox;exports.useTruncationTooltip=o.useTruncationTooltip;Object.defineProperty(exports,"sonner",{enumerable:!0,get:()=>Xa.toast});exports.Avatar=Mo;exports.AvatarFallback=Do;exports.AvatarImage=Ns;exports.BOOK_CHAPTER_CONTROL_STRING_KEYS=Wn;exports.BOOK_SELECTOR_STRING_KEYS=Jn;exports.BookChapterControl=gr;exports.BookSelector=Qn;exports.CANCEL_ACCEPT_BUTTONS_STRING_KEYS=da;exports.COMMENT_EDITOR_STRING_KEYS=bs;exports.COMMENT_LIST_ELEMENT_ID=To;exports.COMMENT_LIST_STRING_KEYS=xs;exports.CONFLICT_NOTE_STRING_KEYS=gs;exports.CONTENT_ZOOM_ROOT_ATTRIBUTE=Ls;exports.CancelAcceptButtons=wa;exports.Card=So;exports.CardContent=Ro;exports.CardDescription=js;exports.CardFooter=Cs;exports.CardHeader=ks;exports.CardTitle=_s;exports.ChapterRangeSelector=ro;exports.Checkbox=ha;exports.CheckboxGroup=Il;exports.Checklist=yn;exports.ComboBox=qr;exports.CommentEditor=vs;exports.CommentList=Ps;exports.ConflictNoteCard=Po;exports.ContentZoomRoot=Lo;exports.ContextMenu=zl;exports.ContextMenuCheckboxItem=Xl;exports.ContextMenuContent=Ul;exports.ContextMenuGroup=Vl;exports.ContextMenuItem=Hl;exports.ContextMenuLabel=Zl;exports.ContextMenuPortal=Fl;exports.ContextMenuRadioGroup=Kl;exports.ContextMenuRadioItem=Wl;exports.ContextMenuSeparator=Jl;exports.ContextMenuShortcut=Ql;exports.ContextMenuSub=Gl;exports.ContextMenuSubContent=Yl;exports.ContextMenuSubTrigger=ql;exports.ContextMenuTrigger=$l;exports.DataTable=$o;exports.DestructiveKeyConfirmation=Pl;exports.DisabledActionTooltip=dn;exports.DisabledTooltipWrapper=Ge;exports.Drawer=td;exports.DrawerClose=rd;exports.DrawerContent=ad;exports.DrawerDescription=sd;exports.DrawerFooter=nd;exports.DrawerHeader=od;exports.DrawerOverlay=_n;exports.DrawerPortal=kn;exports.DrawerTitle=id;exports.DrawerTrigger=ed;exports.DropdownMenuItemType=Go;exports.ERROR_DUMP_STRING_KEYS=Vo;exports.ERROR_POPOVER_STRING_KEYS=Fs;exports.EditorKeyboardShortcuts=Ho;exports.ErrorDump=Fo;exports.ErrorPopover=Gs;exports.FOOTNOTE_EDITOR_STRING_KEYS=sc;exports.Filter=Ys;exports.FilterDropdown=Ks;exports.Footer=qs;exports.FootnoteEditor=ic;exports.FootnoteItem=Wo;exports.FootnoteList=dc;exports.INTERFACE_LANGUAGE_PICKER_STRING_KEYS=Tl;exports.INVENTORY_STRING_KEYS=yc;exports.InterfaceLanguagePicker=Ml;exports.Inventory=jc;exports.MARKER_MENU_STRING_KEYS=qo;exports.MarkdownRenderer=Vs;exports.MarkerMenu=Yo;exports.MoreInfo=Us;exports.NavigationContentSearch=dl;exports.Progress=cd;exports.RecentSearches=to;exports.ResultsCard=Ll;exports.SCOPE_SELECTOR_STRING_KEYS=Zc;exports.SELECT_BOOKS_STRING_KEYS=un;exports.SHRINK_STEP=ze;exports.ScopeSelector=Qc;exports.ScriptureResultsViewer=Xc;exports.ScrollGroupSelector=tl;exports.Select=Te;exports.SelectBooks=wn;exports.SelectBooksPicker=ln;exports.SelectContent=Me;exports.SelectGroup=Ao;exports.SelectItem=ae;exports.SelectLabel=Bs;exports.SelectScrollDownButton=zo;exports.SelectScrollUpButton=Bo;exports.SelectSeparator=zs;exports.SelectTrigger=Re;exports.SelectValue=Se;exports.SettingsList=el;exports.SettingsListHeader=al;exports.SettingsListItem=rl;exports.SettingsSidebar=sn;exports.SettingsSidebarContentSearch=Vc;exports.ShrinkStepContext=Je;exports.ShrinkStepOverride=Cd;exports.ShrinkStepOverrideContext=ea;exports.Sidebar=tn;exports.SidebarContent=rn;exports.SidebarFooter=Mc;exports.SidebarGroup=Jr;exports.SidebarGroupAction=Ic;exports.SidebarGroupContent=ta;exports.SidebarGroupLabel=Qr;exports.SidebarHeader=Rc;exports.SidebarInput=Sc;exports.SidebarInset=en;exports.SidebarMenu=an;exports.SidebarMenuAction=Pc;exports.SidebarMenuBadge=Lc;exports.SidebarMenuButton=nn;exports.SidebarMenuItem=on;exports.SidebarMenuSkeleton=Ac;exports.SidebarMenuSub=Bc;exports.SidebarMenuSubButton=$c;exports.SidebarMenuSubItem=zc;exports.SidebarProvider=Qo;exports.SidebarRail=Tc;exports.SidebarSeparator=Dc;exports.SidebarTrigger=Ec;exports.Slider=dd;exports.Sonner=ld;exports.Switch=wd;exports.TOOLTIP_DELAY_MS=Nd;exports.TabDropdownMenu=Nr;exports.TabFloatingMenu=ll;exports.TabToolbar=cl;exports.Tabs=ud;exports.TabsContent=fd;exports.TabsList=hd;exports.TabsTrigger=gd;exports.TextField=Al;exports.Textarea=In;exports.Toolbar=Cl;exports.ToolbarCompoundLabel=Qa;exports.UNDO_REDO_BUTTONS_STRING_KEYS=Ko;exports.UiLanguageSelector=El;exports.UndoRedoButtons=Uo;exports.VerticalTabs=fa;exports.VerticalTabsContent=va;exports.VerticalTabsList=ma;exports.VerticalTabsTrigger=vn;exports.WizardStepper=Bl;exports.getBookIdFromUSFM=xc;exports.getCommentThreadElementId=ys;exports.getInventoryHeader=Qe;exports.getLinesFromUSFM=vc;exports.getNumberFromUSFM=bc;exports.getStatusForItem=Zo;exports.getToolbarOSReservedSpaceClassName=jl;exports.inventoryCountColumn=fc;exports.inventoryItemColumn=hc;exports.inventoryStatusColumn=mc;exports.isCommentDraftEmpty=Zr;exports.localizeOrFallback=Qt;exports.markerMenuItemToPaletteItem=Xo;exports.pickTabIconUrl=Nn;exports.useEvent=md;exports.useEventAsync=vd;exports.useExtraValidMarkers=kd;exports.usePromise=jn;exports.useRecentSearches=zn;exports.useRetryablePromise=xd;exports.useRunWhenVisible=_d;exports.useShrinkStep=ga;exports.useShrinkStepOverride=ra;exports.useShrinkStepValue=Za;exports.useSidebar=tr;exports.useStylesheet=yd;exports.useTabIconSelection=jd;exports.useViewVisibility=Cn;function Ed(t,r="top"){if(!t||typeof document>"u")return;const a=document.head||document.querySelector("head"),n=a.querySelector(":first-child"),i=document.createElement("style");i.appendChild(document.createTextNode(t)),r==="top"&&n?a.insertBefore(i,n):a.appendChild(i)}Ed(`/* By default the editor is too tall for the footnote editor, even while empty, so this makes it +"use strict";var Rn=Object.defineProperty;var Mn=(t,r,a)=>r in t?Rn(t,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):t[r]=a;var $t=(t,r,a)=>Mn(t,typeof r!="symbol"?r+"":r,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./resizable-iOJw6YSC.cjs"),e=require("react/jsx-runtime"),Ot=require("@sillsdev/scripture"),$=require("lucide-react"),B=require("platform-bible-utils"),s=require("react"),Rt=require("@tabler/icons-react"),v=require("lexical"),Ur=require("@lexical/rich-text"),_a=require("react-dom"),Dn=require("@lexical/table"),Ha=require("@lexical/headless"),qa=require("@lexical/html"),G=require("radix-ui"),Gt=require("@tanstack/react-table"),In=require("markdown-to-jsx"),Ft=require("@eten-tech-foundation/platform-editor"),Ya=require("class-variance-authority"),On=require("react-hotkeys-hook"),_e=require("vaul"),Pn=require("next-themes"),Za=require("sonner");function An({className:t,...r}){return e.jsx("textarea",{"data-slot":"textarea",className:o.cn("pr-twp tw:flex tw:field-sizing-content tw:min-h-16 tw:w-full tw:rounded-lg tw:border tw:border-input tw:bg-transparent tw:px-2.5 tw:py-2 tw:text-base tw:transition-colors tw:outline-none tw:placeholder:text-muted-foreground tw:focus-visible:border-ring tw:focus-visible:ring-3 tw:focus-visible:ring-ring/50 tw:disabled:cursor-not-allowed tw:disabled:bg-input/50 tw:disabled:opacity-50 tw:aria-invalid:border-destructive tw:aria-invalid:ring-3 tw:aria-invalid:ring-destructive/20 tw:md:text-sm tw:dark:bg-input/30 tw:dark:disabled:bg-input/80 tw:dark:aria-invalid:border-destructive/50 tw:dark:aria-invalid:ring-destructive/40",t),...r})}function Xa({ref:t,bookId:r,isSelected:a,onSelect:n,onMouseDown:i,section:l,className:c,showCheck:d=!1,localizedBookNames:u,commandValue:w,suppressKeyboardHighlight:p=!1,disabled:h=!1,dimmedReason:g,dimmedDescription:m}){const x=s.useRef(!1),y=()=>{h||(x.current||n==null||n(r),setTimeout(()=>{x.current=!1},100))},f=O=>{if(h){O.preventDefault();return}x.current=!0,i?i(O):n==null||n(r)},E=s.useMemo(()=>o.getLocalizedBookName(r,u),[r,u]),k=s.useMemo(()=>o.getLocalizedBookId(r,u),[r,u]),N=!!g&&!h,C=`${E} (${k})`,A=N?m||`${C}, ${g}`:C,R=e.jsxs(o.CommandItem,{ref:t,value:w||`${r} ${Ot.Canon.bookIdToEnglishName(r)}`,onSelect:y,onMouseDown:f,role:"option","aria-selected":a,"aria-disabled":h||void 0,"aria-label":A,disabled:h,className:o.cn(!p&&o.LIST_ITEM_KEYBOARD_FOCUS_RING,"tw:data-selected:bg-transparent tw:data-selected:text-inherit","tw:hover:bg-muted","tw:[&>svg:last-child]:hidden",c,h&&"tw:cursor-not-allowed tw:opacity-50",N&&"tw:bg-muted/50 tw:text-muted-foreground/50 tw:data-selected:bg-muted/50 tw:data-selected:text-muted-foreground/50"),children:[d&&e.jsx($.Check,{className:o.cn("tw:me-2 tw:h-4 tw:w-4 tw:shrink-0",a?"tw:opacity-100":"tw:opacity-0")}),e.jsx("span",{className:"tw:min-w-0 tw:flex-1",children:E}),N&&e.jsx("span",{className:"tw:ms-2 tw:shrink-0 tw:text-xs tw:italic",children:g}),e.jsx("span",{className:o.cn("tw:ms-2 tw:shrink-0 tw:text-xs",!N&&"tw:text-muted-foreground"),children:k})]});return e.jsx("div",{className:o.cn("tw:mx-1 tw:my-1 tw:border-b-0 tw:border-e-0 tw:border-s-2 tw:border-t-0 tw:border-solid",{"tw:border-s-red-200":l===B.Section.OT,"tw:border-s-purple-200":l===B.Section.NT,"tw:border-s-indigo-200":l===B.Section.DC,"tw:border-s-amber-200":l===B.Section.Extra}),children:R})}const Ln=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"];function Bn(t){return Ln.some(r=>r===t)}function ja(t){const r=new RegExp("^\\p{L}$","u").test(t),a=/^[0-9]$/.test(t);return{isLetter:r,isDigit:a}}const ze=Object.freeze({WIDE:0,TIGHT:1,TIGHTER:2,MINIMUM:3}),Je=s.createContext(ze.WIDE);function Wa(){return s.useContext(Je)}const ea=s.createContext(void 0);function ra(){return s.useContext(ea)}function Ja(){s.useEffect(()=>{o.trackInteractionModality()},[])}function Qa({primary:t,secondary:r,separator:a=" ",secondaryFirst:n=!1,showSecondary:i=!0,isPartial:l,fullText:c,className:d}){const{ref:u,open:w,onPointerEnter:p,onPointerLeave:h}=o.useTruncationTooltip(),{ref:g,open:m,onPointerEnter:x,onPointerLeave:y}=o.useTruncationTooltip(),[f,E]=s.useState(!1),[k,N]=s.useState(!1),C=s.useRef(null),A=i&&r!==void 0,R=l??(r!==void 0&&!i);Ja(),s.useEffect(()=>{var K;const L=(K=C.current)==null?void 0:K.closest('button, [role="combobox"], [tabindex]');if(!L)return;const j=W=>!!W&&W.scrollWidth>W.clientWidth,et=()=>{o.getLastInteractionModality()!=="pointer"&&(R||j(g.current)||j(u.current))&&N(!0)},P=()=>N(!1);return L.addEventListener("focus",et),L.addEventListener("blur",P),()=>{L.removeEventListener("focus",et),L.removeEventListener("blur",P)}},[R,g,u]);const O=s.useCallback(()=>{R&&E(!0),x(),A&&p()},[R,A,x,p]),I=s.useCallback(()=>{E(!1),N(!1),y(),h()},[y,h]);s.useEffect(()=>{R||E(!1)},[R]);const S=e.jsx("span",{ref:g,className:"tw:min-w-0 tw:shrink tw:truncate",children:t},"primary"),D=A?e.jsx("span",{ref:u,className:"tw:min-w-0 tw:shrink-[9999] tw:truncate",children:r},"secondary"):void 0,[Y,Z]=n?[D,S]:[S,D];return e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{open:m||w||f||k,onOpenChange:L=>{L||I()},children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsxs("span",{ref:C,onPointerEnter:O,onPointerLeave:I,onPointerDown:I,className:o.cn("tw:flex tw:min-w-0 tw:items-center",d),children:[Y,Y&&Z&&e.jsx("span",{className:"tw:shrink-0 tw:whitespace-pre",children:a},"separator"),Z]})}),e.jsx(o.TooltipContent,{children:c})]})})}function Gr(t,r){return`${t} ${o.ALL_ENGLISH_BOOK_NAMES[t]}${r?` ${o.getLocalizedBookId(t,r)} ${o.getLocalizedBookName(t,r)}`:""}`}function Ve(t,r){return`${t} ${o.ALL_ENGLISH_BOOK_NAMES[t]||""} ${r}`}function pr(t,r,a){return`${Ve(t,r)}:${a}`}function Ye(t){if(t.includes(":"))return;const r=/(\d+)$/.exec(t);if(!r)return;const a=parseInt(r[1],10),n=t.indexOf(" ");if(n<0)return;const i=t.slice(0,n);return t===Ve(i,a)?a:void 0}function cr(t){const r=/:(\d+)$/.exec(t);if(!r)return;const a=t.slice(0,t.length-r[0].length);if(Ye(a)!==void 0)return parseInt(r[1],10)}const zn="top-match",Vn="Show recent searches",$n="Recent";function to({recentSearches:t,onSearchItemSelect:r,renderItem:a=g=>String(g),getItemKey:n=g=>String(g),ariaLabel:i,groupHeading:l,id:c,classNameForItems:d,buttonClassName:u="tw:absolute tw:end-0 tw:top-0 tw:h-full tw:px-3 tw:py-2",buttonVariant:w="ghost",open:p,onOpenChange:h}){const[g,m]=s.useState(!1),[x,y]=s.useState(!1),f=s.useId(),E=s.useRef(!1),k=p!==void 0,N=k?p:g,C=i===""?"":o.resolveLocalizedString(i,Vn),A=o.resolveLocalizedString(l,$n),R=D=>{D||(E.current=!0,y(!1)),k||m(D),h==null||h(D)},O=D=>{if(D&&E.current){E.current=!1;return}y(D)};if(t.length===0)return;const I=D=>{r(D)},S=e.jsx(o.Button,{variant:w,size:"icon",className:u,"aria-label":C,onPointerEnter:()=>{E.current=!1},children:e.jsx($.Clock,{className:"tw:h-4 tw:w-4"})});return e.jsxs(o.DropdownMenu,{open:N,onOpenChange:R,modal:!1,children:[e.jsx(o.TooltipProvider,{children:C?e.jsxs(o.Tooltip,{open:x,onOpenChange:O,children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:S})}),e.jsx(o.TooltipContent,{children:C})]}):e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:S})}),e.jsxs(o.DropdownMenuContent,{id:c,"aria-labelledby":f,className:"tw:w-[300px]",align:"start",onKeyDown:D=>D.stopPropagation(),children:[e.jsx(o.DropdownMenuLabel,{id:f,children:A}),t.map(D=>e.jsxs(o.DropdownMenuItem,{onSelect:()=>I(D),className:o.cn("tw:flex tw:items-center",d),children:[e.jsx($.Clock,{className:"tw:me-2 tw:h-4 tw:w-4 tw:opacity-50"}),e.jsx("span",{children:a(D)})]},n(D)))]})]})}function Fn(t,r,a=(i,l)=>i===l,n=15){return i=>{const l=t.filter(d=>!a(d,i)),c=[i,...l.slice(0,n-1)];r(c)}}function lr(t,r){return!r||B.compareScrRefs(t,r)===0}function Un(t,r,a,n,i){const l=s.useMemo(()=>o.x(t,r),[t,r]),c=s.useMemo(()=>o.a(t,r),[t,r]),d=s.useMemo(()=>o.B(t,r),[t,r]),u=s.useMemo(()=>o.I(t,r),[t,r]),w=s.useCallback(p=>{p&&n(p)},[n]);return s.useMemo(()=>[{onClick:()=>w(l),disabled:lr(t,l),title:o.resolveLocalizedString(i==null?void 0:i["%webView_bookChapterControl_previousChapter%"],"Previous chapter"),icon:a==="ltr"?$.ChevronsLeft:$.ChevronsRight,group:"chapter"},{onClick:()=>w(c),disabled:lr(t,c),title:o.resolveLocalizedString(i==null?void 0:i["%webView_bookChapterControl_nextChapter%"],"Next chapter"),icon:a==="ltr"?$.ChevronsRight:$.ChevronsLeft,group:"chapter"},{onClick:()=>w(d),disabled:lr(t,d),title:o.resolveLocalizedString(i==null?void 0:i["%webView_bookChapterControl_previousVerse%"],"Previous verse"),icon:$.ChevronUp,group:"verse"},{onClick:()=>w(u),disabled:lr(t,u),title:o.resolveLocalizedString(i==null?void 0:i["%webView_bookChapterControl_nextVerse%"],"Next verse"),icon:$.ChevronDown,group:"verse"}],[t,a,w,l,d,u,c,i])}const hr={BOOK_ONLY:/^([^:\s]+(?:\s+[^:\s]+)*)$/i,BOOK_CHAPTER:/^([^:\s]+(?:\s+[^:\s]+)*)\s+(\d+)$/i,BOOK_CHAPTER_VERSE:/^([^:\s]+(?:\s+[^:\s]+)*)\s+(\d+):(\d*)$/i},Gn=[hr.BOOK_ONLY,hr.BOOK_CHAPTER,hr.BOOK_CHAPTER_VERSE];function Kn(t){return hr.BOOK_CHAPTER_VERSE.test(t.trim())}function Ca(t,r){return Ot.Canon.bookIdToNumber(t) 0?!1:r 0?!1:r n.chapterNum?!1:a {if(i)return i;const c=l.exec(t.trim());if(c){const[d,u=void 0,w=void 0]=c.slice(1);let p;const h=r.filter(g=>o.doesBookMatchQuery(g,d,a));if(h.length===1&&([p]=h),!p&&u){if(Ot.Canon.isBookIdValid(d)){const g=d.toUpperCase();r.includes(g)&&(p=g)}if(!p&&a){const g=Array.from(a.entries()).find(([,m])=>m.localizedId.toLowerCase()===d.toLowerCase());g&&r.includes(g[0])&&([p]=g)}}if(!p&&u){const m=(x=>Object.keys(o.ALL_ENGLISH_BOOK_NAMES).find(y=>o.ALL_ENGLISH_BOOK_NAMES[y].toLowerCase()===x.toLowerCase()))(d);if(m&&r.includes(m)&&(p=m),!p&&a){const x=Array.from(a.entries()).find(([,y])=>y.localizedName.toLowerCase()===d.toLowerCase());x&&r.includes(x[0])&&([p]=x)}}if(p){let g=u?parseInt(u,10):void 0;g&&g>ke(p)&&(g=Math.max(ke(p),1));const m=w?parseInt(w,10):void 0;return{book:p,chapterNum:g,verseNum:m}}}},void 0);if(n)return n}function Kr(t){return{[B.Section.OT]:t.filter(r=>Ot.Canon.isBookOT(r)),[B.Section.NT]:t.filter(r=>Ot.Canon.isBookNT(r)),[B.Section.DC]:t.filter(r=>Ot.Canon.isBookDC(r)),[B.Section.Extra]:t.filter(r=>Ot.Canon.extraBooks().includes(r))}}function Yn(t,r){const a=new Set(t),n=r.filter(w=>!a.has(w)),i=new Set(n),l=i.size===0?t:Ot.Canon.allBookIds.filter(w=>a.has(w)||i.has(w)),c=Kr(l),d=Object.values(c).flat(),u=Kr(t);return{projectBooksBySection:u,reachableBooksBySection:c,reachableBooks:d,projectBooks:Object.values(u).flat(),booksOutsideProject:new Set(d.filter(w=>!a.has(w)))}}const Hr=6;function Zn(t){return t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Xn({current:t,key:r,max:a,direction:n="ltr"}){if(a<=0)return t;if(t<1||t>a)return 1;switch(n==="rtl"?Zn(r):r){case"ArrowLeft":return t>1?t-1:a;case"ArrowRight":return tp+1).map(w=>{const p=(i==null?void 0:i(w))??!1;return e.jsx(o.CommandItem,{value:r(w),onSelect:()=>{p||a(w)},ref:n(w),disabled:p,"aria-disabled":p||void 0,className:o.cn("tw:h-8 tw:w-8 tw:cursor-pointer tw:justify-center tw:rounded-md tw:text-center tw:text-sm","tw:[&>svg]:hidden tw:hover:bg-muted",!d&&o.LIST_ITEM_KEYBOARD_FOCUS_RING,"tw:data-selected:bg-transparent tw:data-selected:text-inherit",{"tw:bg-primary tw:text-primary-foreground tw:hover:bg-primary/90 tw:data-selected:bg-primary tw:data-selected:text-primary-foreground tw:data-selected:ring-primary-foreground/70":(c==null?void 0:c(w))??!1},{"tw:bg-muted/50 tw:text-muted-foreground/50 tw:data-selected:bg-muted/50 tw:data-selected:text-muted-foreground/50":((l==null?void 0:l(w))??!1)&&!p},p&&"tw:cursor-not-allowed tw:opacity-40"),children:w},w)})})})}function Na({bookId:t,scrRef:r,onChapterSelect:a,setChapterRef:n,isChapterDimmed:i,isChapterDisabled:l,suppressKeyboardHighlight:c,className:d}){if(t)return e.jsx(eo,{count:ke(t),valueBuilder:u=>Ve(t,u),onSelect:a,itemRef:n,isDisabled:l,isDimmed:i,isSelected:u=>t===r.book&&u===r.chapterNum,suppressKeyboardHighlight:c,className:d})}function Ea({bookId:t,chapterNum:r,endVerse:a,scrRef:n,onVerseSelect:i,setVerseRef:l,isVerseDimmed:c,isVerseDisabled:d,suppressKeyboardHighlight:u,className:w}){if(!(!t||a<=0))return e.jsx(eo,{count:a,valueBuilder:p=>pr(t,r,p),onSelect:i,itemRef:l,isDisabled:d,isDimmed:c,isSelected:p=>t===n.book&&r===n.chapterNum&&p===n.verseNum,suppressKeyboardHighlight:u,className:w})}const Wn="a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]";function Jn(t){return Array.from(t.querySelectorAll(Wn)).filter(r=>r.tabIndex>=0)}function gr({scrRef:t,handleSubmit:r,className:a,getActiveBookIds:n,getAdditionalBookIds:i,localizedBookNames:l,localizedStrings:c,recentSearches:d,onAddRecentSearch:u,id:w,getEndVerse:p,disableReferencesUpTo:h,submitKeys:g,triggerContent:m,triggerVariant:x="outline",showTriggerChevron:y=!1,onOpenChange:f,onCloseAutoFocus:E,modal:k=!1,align:N="center",ref:C,disabled:A}){const R=o.readDirection(),O=Wa(),[I,S]=s.useState(!1),[D,Y]=s.useState(""),[Z,L]=s.useState(""),[j,et]=s.useState("books"),[P,K]=s.useState(void 0),[W,F]=s.useState(void 0),[tt,lt]=s.useState(void 0),[it,J]=s.useState(!1),[dt,gt]=s.useState(!1),[wt,mt]=s.useState(!1),[vt,Mt]=s.useState(!1),Xt=s.useRef(null),Wt=s.useRef(!1),Nt=s.useRef(void 0),bt=s.useRef(void 0),Lt=s.useRef(void 0),oe=s.useRef(void 0),se=s.useRef({}),Et=s.useRef({}),kt=s.useCallback(b=>{r(b),u&&u(b)},[r,u]),qt=s.useMemo(()=>n?n():o.lt,[n]),Jt=s.useMemo(()=>n&&i?i():[],[n,i]),{projectBooksBySection:Qt,reachableBooksBySection:te,reachableBooks:Kt,projectBooks:Pt,booksOutsideProject:Bt}=s.useMemo(()=>Yn(qt,Jt),[qt,Jt]),M=Bt.has(t.book),q=s.useMemo(()=>Z.trim()?Kr(Kt.filter(b=>o.doesBookMatchQuery(b,Z,l))):dt?te:Qt,[Qt,te,Kt,dt,Z,l]),_=s.useMemo(()=>qn(Z,Kt,l),[Z,Kt,l]),z=s.useMemo(()=>{if(!_)return;const b=D.startsWith(`${_.book} `)?D:"",H=cr(b),ot=Ye(b);return{book:_.book,chapterNum:ot??_.chapterNum??1,verseNum:H??_.verseNum??1}},[_,D]),X=s.useRef(!1);s.useEffect(()=>{if(!X.current){X.current=!0;return}f==null||f(I)},[I,f]);const V=s.useCallback(()=>{z&&(h&&Dr(z.book,z.chapterNum,z.verseNum,h)||(kt(z),S(!1),L(""),Y("")))},[kt,z,h]),rt=s.useCallback(b=>{const H=W??(_==null?void 0:_.book),ot=tt??(_==null?void 0:_.chapterNum);!H||!ot||(kt({book:H,chapterNum:ot,verseNum:b}),S(!1))},[kt,W,tt,_]),st=s.useCallback(b=>{if(h&&Ca(b,h))return;if(ke(b)<=1){kt({book:b,chapterNum:1,verseNum:1}),S(!1),L("");return}K(b),et("chapters")},[kt,h]),nt=s.useCallback(b=>{const H=j==="chapters"?P:_==null?void 0:_.book;if(H){if(p&&p(H,b)>1){F(H),lt(b),et("verses"),Y("");return}kt({book:H,chapterNum:b,verseNum:1}),S(!1)}},[kt,j,P,_,p]),ft=s.useCallback(b=>{kt(b),S(!1),L("")},[kt]),xt=Un(t,dt?Kt:Pt,R,r,c),ht=s.useCallback(b=>{L(b),Mt(!1)},[]),_t=s.useCallback(()=>{et("books"),K(void 0),F(void 0),lt(void 0),Mt(!1),setTimeout(()=>{var b;(b=bt.current)==null||b.focus()},0)},[]),zt=s.useCallback(()=>{const b=W;F(void 0),lt(void 0),b?(K(b),et("chapters"),Y("")):_t()},[W,_t]),jt=s.useCallback(b=>{S(b),b&&(et("books"),K(void 0),F(void 0),lt(void 0),L(""),Mt(!1),mt(!1),gt(M))},[M]);s.useEffect(()=>{A&&jt(!1)},[A,jt]);const[ce,ge]=s.useState(0);s.useEffect(()=>{var b;ce!==0&&((b=bt.current)==null||b.focus())},[ce]),s.useImperativeHandle(C,()=>({open:()=>{A||(jt(!0),ge(b=>b+1))}}),[jt,A]);const{otLong:le,ntLong:je,dcLong:Ce,extraLong:be}={otLong:c==null?void 0:c["%scripture_section_ot_long%"],ntLong:c==null?void 0:c["%scripture_section_nt_long%"],dcLong:c==null?void 0:c["%scripture_section_dc_long%"],extraLong:c==null?void 0:c["%scripture_section_extra_long%"]},fe=s.useCallback(b=>o.getSectionLongName(b,le,je,Ce,be),[le,je,Ce,be]),de=s.useCallback(b=>_?!!_.chapterNum&&!b.toString().includes(_.chapterNum.toString()):!1,[_]),De=s.useMemo(()=>B.formatScrRef(t,l?o.getLocalizedBookName(t.book,l):"English"),[t,l]),er=s.useMemo(()=>O>=ze.TIGHT?o.getLocalizedBookId(t.book,l):o.getLocalizedBookName(t.book,l),[t.book,l,O]),Ie=`${t.chapterNum}:${t.verseNum}`,T=s.useCallback(b=>H=>{se.current[b]=H},[]),at=s.useCallback(b=>H=>{Et.current[b]=H},[]),ct=s.useMemo(()=>Kn(Z),[Z]),Ct=s.useMemo(()=>!p||!_||!_.chapterNum||!ct?!1:p(_.book,_.chapterNum)>0,[p,_,ct]),xe=j==="books"&&!it&&!Z.trim()&&Bt.size>0,Tr=s.useCallback(b=>h?Ca(b,h):!1,[h]),me=s.useCallback(b=>H=>h?Hn(b,H,h):!1,[h]),Oe=s.useCallback((b,H)=>ot=>h?Dr(b,H,ot,h):!1,[h]),Pe=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_selectChapter%"],"Select chapter"),Sr=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_selectVerse%"],"Select verse"),rr=j==="verses"?o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_backToChapters%"],"Back to chapters"):o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_backToBooks%"],"Back to books"),Rr=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_bookNotInProject%"],"Not in project"),ar=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_bookNotInProjectDescription%"],"{book} is not in this project"),or=s.useCallback(b=>B.formatReplacementString(ar,{book:`${o.getLocalizedBookName(b,l)} (${o.getLocalizedBookId(b,l)})`}),[ar,l]),nr=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_showMoreBooks%"],"Show more books"),Ae=o.resolveLocalizedString(c==null?void 0:c["%webView_bookChapterControl_showProjectBooksOnly%"],"Show project books only"),ir=s.useCallback(b=>{(b.key==="Home"||b.key==="End")&&b.stopPropagation(),g&&g.includes(b.key)&&_&&_.chapterNum!==void 0&&_.verseNum!==void 0&&(b.preventDefault(),b.stopPropagation(),V())},[g,_,V]),sr=s.useCallback(b=>{var xa,ya;if(b.ctrlKey)return;const H=b.target instanceof HTMLElement?b.target:void 0;if(!(!!H&&!!((xa=Nt.current)!=null&&xa.contains(H)))&&(H!=null&&H.closest('[role="menu"], [role="menuitem"]')))return;if(b.key==="Tab"){const St=Nt.current?Jn(Nt.current):[];if(St.length===0){b.preventDefault(),b.stopPropagation();return}const re=St[St.length-1],Vt=b.shiftKey?St[0]:re;document.activeElement===Vt&&(b.preventDefault(),b.stopPropagation(),(b.shiftKey?re:St[0]).focus());return}const{isLetter:Dt,isDigit:At}=ja(b.key);if((j==="chapters"||j==="verses")&&(b.key===" "||b.key==="Enter")){if(!!(H!=null&&H.closest('button, a, input, select, textarea, [role="button"]'))){b.stopPropagation();return}const re=(()=>{if(j==="verses"){const Ke=W,ka=tt,Mr=cr(D);return!Ke||!ka||Mr===void 0?void 0:{isDisabled:Oe(Ke,ka)(Mr),activate:()=>rt(Mr)}}const Vt=P,ie=Ye(D);if(!(!Vt||ie===void 0))return{isDisabled:me(Vt)(ie),activate:()=>nt(ie)}})();if(re){b.preventDefault(),b.stopPropagation(),re.isDisabled||re.activate();return}}if(j==="books"&&_&&!it&&b.key==="Enter"&&!(H!==bt.current&&!!(H!=null&&H.closest('button, a, input, select, textarea, [role="button"]')))){b.preventDefault(),b.stopPropagation(),V();return}if((j==="chapters"||j==="verses")&&(Dt||At)){b.preventDefault(),b.stopPropagation();return}if(b.key==="Backspace"&&(j==="chapters"||j==="verses")){b.preventDefault(),b.stopPropagation(),j==="verses"?zt():_t();return}if(!Bn(b.key)||it)return;if(j==="books"&&!vt&&(b.key==="ArrowLeft"||b.key==="ArrowRight")){const St=H===bt.current?bt.current:void 0,re=(St==null?void 0:St.selectionStart)??0,Vt=(St==null?void 0:St.selectionEnd)??0,ie=R==="rtl"?b.key==="ArrowRight":b.key==="ArrowLeft";if(!!St&&(re!==Vt||(ie?re>0:Vt {const St=j==="books"&&_&&Ct&&_.chapterNum?{bookId:_.book,chapterNum:_.chapterNum}:void 0,re=j==="verses"?{bookId:W,chapterNum:tt}:St;if(re){const{bookId:Vt,chapterNum:ie}=re;return!Vt||!ie||!p?void 0:{max:p(Vt,ie),current:cr(D)??0,buildValue:Ke=>pr(Vt,ie,Ke),refs:Et,takeFocus:j==="verses"}}if(j==="chapters"||j==="books"&&_&&ke(_.book)>1){const Vt=j==="chapters"?P:_==null?void 0:_.book;return Vt?{max:ke(Vt),current:Ye(D)??0,buildValue:ie=>Ve(Vt,ie),refs:se,takeFocus:j==="chapters"}:void 0}})();if(!yt||yt.max<=0)return;j==="books"&&Mt(!0),yt.takeFocus&&((ya=Nt.current)==null||ya.focus());const Ht=Xn({current:yt.current,key:b.key,max:yt.max,direction:R});if(b.preventDefault(),b.stopPropagation(),Ht===yt.current)return;Y(yt.buildValue(Ht));const ba=yt.refs.current[Ht];ba&&ba.scrollIntoView({block:"nearest",behavior:"smooth"})},[j,_,Ct,it,vt,R,_t,zt,nt,V,rt,me,Oe,P,W,tt,p,D]),U=s.useCallback(b=>{var Dt,At;if(b.shiftKey||b.key==="Tab"||b.key===" ")return;if(b.key==="Enter"){b.stopPropagation();return}if(b.key==="ArrowUp"||b.key==="ArrowDown"){(Dt=bt.current)==null||Dt.focus();return}const{isLetter:H,isDigit:ot}=ja(b.key);(H||ot)&&(b.preventDefault(),L(yt=>yt+b.key),(At=bt.current)==null||At.focus(),J(!1))},[]);s.useLayoutEffect(()=>{const b=setTimeout(()=>{if(I&&j==="books"&&Lt.current&&oe.current){const H=Lt.current,ot=oe.current,Dt=ot.offsetTop,At=H.clientHeight,yt=ot.clientHeight,Ht=Dt-At/2+yt/2;H.scrollTo({top:Math.max(0,Ht),behavior:"smooth"}),Y(Gr(t.book))}},0);return()=>{clearTimeout(b)}},[I,j,Z,_,t.book]),s.useLayoutEffect(()=>{if(j==="chapters"&&P){const b=P===t.book,H=b?t.chapterNum:1;Y(Ve(P,H)),setTimeout(()=>{if(Lt.current)if(b){const ot=se.current[t.chapterNum];ot&&ot.scrollIntoView({block:"center",behavior:"smooth"})}else Lt.current.scrollTo({top:0});Nt.current&&Nt.current.focus()},0)}},[j,P,_,t.book,t.chapterNum]),s.useLayoutEffect(()=>{if(j==="verses"&&W&&tt!==void 0){const b=W===t.book&&tt===t.chapterNum,H=b?t.verseNum:1;Y(pr(W,tt,H)),setTimeout(()=>{if(Lt.current)if(b){const ot=Et.current[t.verseNum];ot&&ot.scrollIntoView({block:"center",behavior:"smooth"})}else Lt.current.scrollTo({top:0});Nt.current&&Nt.current.focus()},0)}},[j,W,tt,t.book,t.chapterNum,t.verseNum]);const Q=_?`${_.book} ${_.chapterNum??""} ${_.verseNum??""} ${Ct}`:"",Tt=s.useRef(""),ee=s.useRef(""),ne=s.useMemo(()=>{if(j!=="books"||!_||it)return;const{book:b,chapterNum:H,verseNum:ot}=_;if(Ct&&H&&p)return{max:p(b,H),initial:ot??(b===t.book&&H===t.chapterNum?t.verseNum:1),parse:cr,buildValue:At=>pr(b,H,At)};const Dt=ke(b);if(!(Dt<=1))return{max:Dt,initial:H??(b===t.book?t.chapterNum:1),parse:Ye,buildValue:At=>Ve(b,At)}},[j,_,it,Ct,p,t.book,t.chapterNum,t.verseNum]);return s.useLayoutEffect(()=>{if(j!=="books"||!_||!ne||ne.max<=0){Tt.current="";return}const{max:b,initial:H,parse:ot,buildValue:Dt}=ne,At=yt=>{const Ht=ot(yt);return Ht!==void 0&&Ht>=1&&Ht<=b&&yt===Dt(Ht)?Ht:void 0};if(Tt.current!==Q){Tt.current=Q;const yt=Dt(Math.min(Math.max(H,1),b));ee.current=yt,Y(yt);return}if(At(D)!==void 0){ee.current=D;return}Y(At(ee.current)!==void 0?ee.current:Dt(Math.min(Math.max(H,1),b)))},[j,_,ne,Q,D]),e.jsxs(o.Popover,{open:I,onOpenChange:jt,modal:k,children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsxs(o.Button,{ref:Xt,"aria-label":"book-chapter-trigger",variant:x,role:"combobox","aria-expanded":I,disabled:A,className:o.cn("tw:h-8 tw:w-full tw:min-w-16 tw:max-w-48 tw:shrink tw:overflow-hidden tw:px-1",a),onClick:b=>{Wt.current&&(Wt.current=!1,b.preventDefault())},children:[m??e.jsx(Qa,{primary:er,secondary:Ie,showSecondary:O =ze.TIGHT,fullText:De}),y&&e.jsx(Rt.IconSelector,{"data-testid":"book-chapter-control-chevron",className:"tw:ms-2 tw:size-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.PopoverContent,{id:w,forceMount:!0,className:"tw:w-[280px] tw:p-0",align:N,onKeyDownCapture:sr,onKeyDown:b=>b.stopPropagation(),onPointerDownOutside:b=>{const{target:H}=b;I&&Xt.current&&H instanceof Node&&Xt.current.contains(H)&&(Wt.current=!0,jt(!1))},onCloseAutoFocus:E,children:e.jsx(o.TooltipProvider,{children:e.jsxs(o.Command,{ref:Nt,loop:!0,value:D,onValueChange:Y,disablePointerSelection:!0,shouldFilter:!1,children:[j==="books"?e.jsxs("div",{className:o.cn("tw:flex tw:items-end",it&&"tw:pb-1"),onFocus:b=>{mt(b.target!==bt.current)},onBlur:b=>{b.currentTarget.contains(b.relatedTarget)||mt(!1)},children:[e.jsxs("div",{className:"tw:relative tw:flex-1",children:[e.jsx(o.CommandInput,{ref:bt,value:Z,onValueChange:ht,onKeyDown:ir,onFocus:()=>J(!1),className:d&&d.length>0?"tw:pe-8!":"",spaceSelectsHighlightedItem:!0}),d&&d.length>0&&e.jsx(to,{recentSearches:d,onSearchItemSelect:ft,renderItem:b=>B.formatScrRef(b,"English"),getItemKey:b=>`${b.book}-${b.chapterNum}-${b.verseNum}`,ariaLabel:c==null?void 0:c["%history_recentSearches_ariaLabel%"],groupHeading:c==null?void 0:c["%history_recent%"],buttonClassName:"tw:absolute tw:end-1 tw:top-1"})]}),e.jsx(o.ButtonGroup,{className:"tw:translate-y-px tw:gap-1 tw:pe-2",children:xt.map(({onClick:b,disabled:H,title:ot,icon:Dt,group:At},yt)=>{const Ht=e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:()=>{J(!0),b()},disabled:H,className:"tw:h-8.5 tw:w-6 tw:rounded-lg! tw:p-0","aria-label":ot,onKeyDown:U,children:e.jsx(Dt,{})});return e.jsxs(s.Fragment,{children:[yt>0&&At!==xt[yt-1].group&&e.jsx(o.ButtonGroupSeparator,{}),H?e.jsx("span",{title:ot,className:"tw:inline-flex",children:Ht}):e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:Ht}),e.jsx(o.TooltipContent,{children:ot})]})]},`${At}-${yt}`)})})]}):e.jsxs("div",{className:"tw:flex tw:items-center tw:border-b tw:px-3 tw:py-1",children:[e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:j==="verses"?zt:_t,className:"tw:me-2 tw:h-6 tw:w-6 tw:p-0",tabIndex:-1,"aria-label":rr,children:R==="ltr"?e.jsx($.ArrowLeft,{className:"tw:h-4 tw:w-4"}):e.jsx($.ArrowRight,{className:"tw:h-4 tw:w-4"})})}),e.jsx(o.TooltipContent,{children:rr})]}),j==="chapters"&&P&&e.jsx("span",{tabIndex:-1,className:"tw:text-sm tw:font-medium",children:o.getLocalizedBookName(P,l)}),j==="verses"&&W&&tt!==void 0&&e.jsx("span",{tabIndex:-1,className:"tw:text-sm tw:font-medium",children:`${o.getLocalizedBookName(W,l)} ${tt}`}),e.jsx("span",{tabIndex:-1,className:"tw:ms-auto tw:text-sm tw:font-medium tw:text-muted-foreground",children:j==="verses"?Sr:Pe})]}),!it&&e.jsxs(o.CommandList,{ref:Lt,children:[j==="books"&&e.jsxs(e.Fragment,{children:[!_&&Object.entries(q).map(([b,H])=>{if(H.length!==0)return e.jsx(o.CommandGroup,{heading:fe(b),children:H.map(ot=>e.jsx(Xa,{bookId:ot,onSelect:Dt=>st(Dt),section:B.getSectionForBook(ot),commandValue:Gr(ot),suppressKeyboardHighlight:wt,ref:ot===t.book?oe:void 0,localizedBookNames:l,disabled:Tr(ot),dimmedReason:Bt.has(ot)?Rr:void 0,dimmedDescription:Bt.has(ot)?or(ot):void 0},ot))},b)}),_&&z&&e.jsx(o.CommandGroup,{children:e.jsxs(o.CommandItem,{value:zn,onSelect:V,disabled:!!h&&Dr(z.book,z.chapterNum,z.verseNum,h),className:"tw:font-semibold tw:text-primary tw:hover:bg-muted tw:[&>svg:last-child]:hidden",children:[e.jsx("span",{className:"tw:min-w-0 tw:flex-1",children:B.formatScrRef(z,o.getLocalizedBookName(_.book,l))}),e.jsx("span",{className:"tw:ms-2 tw:shrink-0 tw:text-xs tw:text-muted-foreground",children:o.getLocalizedBookId(_.book,l)})]},"top-match")}),_&&Ct&&_.chapterNum&&p&&e.jsx(Ea,{bookId:_.book,chapterNum:_.chapterNum,endVerse:p(_.book,_.chapterNum),scrRef:t,onVerseSelect:rt,setVerseRef:at,isVerseDisabled:Oe(_.book,_.chapterNum),suppressKeyboardHighlight:wt,className:"tw:px-4 tw:pb-4"}),_&&!Ct&&ke(_.book)>1&&e.jsx(Na,{bookId:_.book,scrRef:t,onChapterSelect:nt,setChapterRef:T,isChapterDimmed:de,isChapterDisabled:me(_.book),suppressKeyboardHighlight:wt,className:"tw:px-4 tw:pb-4"})]}),j==="chapters"&&P&&e.jsx(Na,{bookId:P,scrRef:t,onChapterSelect:nt,setChapterRef:T,isChapterDisabled:me(P),className:"tw:p-4"}),j==="verses"&&W&&tt!==void 0&&p&&e.jsx(Ea,{bookId:W,chapterNum:tt,endVerse:p(W,tt),scrRef:t,onVerseSelect:rt,setVerseRef:at,isVerseDisabled:Oe(W,tt),className:"tw:p-4"})]}),xe&&e.jsx("div",{className:"tw:border-t tw:p-1",children:e.jsx(o.Button,{variant:"ghost",size:"sm",className:"tw:w-full tw:justify-start tw:font-normal",onClick:()=>gt(b=>!b),children:dt?Ae:nr})})]})})})]})}const Qn=Object.freeze(["%scripture_section_ot_long%","%scripture_section_nt_long%","%scripture_section_dc_long%","%scripture_section_extra_long%","%history_recent%","%history_recentSearches_ariaLabel%","%webView_bookChapterControl_bookNotInProject%","%webView_bookChapterControl_bookNotInProjectDescription%","%webView_bookChapterControl_selectChapter%","%webView_bookChapterControl_selectVerse%","%webView_bookChapterControl_showMoreBooks%","%webView_bookChapterControl_showProjectBooksOnly%","%webView_bookChapterControl_previousChapter%","%webView_bookChapterControl_nextChapter%","%webView_bookChapterControl_previousVerse%","%webView_bookChapterControl_nextVerse%","%webView_bookChapterControl_backToBooks%","%webView_bookChapterControl_backToChapters%"]);function ti(t){return typeof t=="string"?t:typeof t=="number"?t.toString():t.label}function qr({id:t,options:r=[],className:a,buttonClassName:n,popoverContentClassName:i,popoverContentStyle:l,value:c,onChange:d=()=>{},getOptionLabel:u=ti,getButtonLabel:w,icon:p=void 0,buttonPlaceholder:h="",textPlaceholder:g="",commandEmptyMessage:m="No option found",buttonVariant:x="outline",alignDropDown:y="start",isDisabled:f=!1,ariaLabel:E,...k}){const[N,C]=s.useState(!1),A=w??u,R=I=>I.length>0&&typeof I[0]=="object"&&"options"in I[0],O=(I,S)=>{const D=u(I),Y=typeof I=="object"&&"secondaryLabel"in I?I.secondaryLabel:void 0,Z=`${S??""}${D}${Y??""}`;return e.jsxs(o.CommandItem,{value:D,onSelect:()=>{d(I),C(!1)},className:"tw:gap-1.5!",children:[e.jsx($.Check,{className:o.cn("tw:h-4 tw:w-4 tw:shrink-0",{"tw:opacity-0":!c||u(c)!==D})}),e.jsxs("span",{className:"tw:flex-1 tw:overflow-hidden tw:text-ellipsis tw:whitespace-nowrap",children:[D,Y&&e.jsxs("span",{className:"tw:text-muted-foreground",children:[" · ",Y]})]})]},Z)};return e.jsxs(o.Popover,{open:N,onOpenChange:C,...k,children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:x,role:"combobox","aria-expanded":N,"aria-label":E,id:t,className:o.cn("tw:flex tw:w-[200px] tw:items-center tw:justify-between tw:overflow-hidden",n??a),disabled:f,children:[e.jsxs("div",{className:"tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:overflow-hidden",children:[p&&e.jsx("div",{className:"tw:shrink-0 tw:pe-2",children:p}),e.jsx("span",{className:o.cn("tw:min-w-0 tw:overflow-hidden tw:text-ellipsis tw:whitespace-nowrap tw:text-start"),children:c?A(c):h})]}),e.jsx($.ChevronDown,{className:"tw:ms-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.PopoverContent,{align:y,className:o.cn("tw:w-[200px] tw:p-0",i),style:l,children:e.jsxs(o.Command,{children:[e.jsx(o.CommandInput,{placeholder:g,className:"tw:text-inherit",spaceSelectsHighlightedItem:!0}),e.jsx(o.CommandEmpty,{children:m}),e.jsx(o.CommandList,{children:R(r)?r.map(I=>e.jsx(o.CommandGroup,{heading:I.groupHeading,children:I.options.map(S=>O(S,I.groupHeading))},I.groupHeading)):e.jsx(o.CommandGroup,{children:r.map(I=>O(I))})})]})})]})}function ro({startChapter:t,endChapter:r,handleSelectStartChapter:a,handleSelectEndChapter:n,isDisabled:i=!1,chapterCount:l}){const c=s.useMemo(()=>Array.from({length:l},(w,p)=>p+1),[l]),d=w=>{a(w),w>r&&n(w)},u=w=>{n(w),w w.toString(),value:t},"start chapter"),e.jsx(o.Label,{htmlFor:"end-chapters-combobox",children:"to"}),e.jsx(qr,{isDisabled:i,onChange:u,buttonClassName:"tw:ms-2 tw:w-20",options:c,getOptionLabel:w=>w.toString(),value:r},"end chapter")]})}exports.BookSelectionMode=(t=>(t.CurrentBook="current book",t.ChooseBooks="choose books",t))(exports.BookSelectionMode||{});(t=>{t.CURRENT_BOOK="current book",t.CHOOSE_BOOKS="choose books"})(exports.BookSelectionMode||(exports.BookSelectionMode={}));const ei=Object.freeze(["%webView_bookSelector_currentBook%","%webView_bookSelector_choose%","%webView_bookSelector_chooseBooks%"]),Ir=(t,r)=>t[r]??r;function ri({handleBookSelectionModeChange:t,currentBookName:r,onSelectBooks:a,selectedBookIds:n,chapterCount:i,endChapter:l,handleSelectEndChapter:c,startChapter:d,handleSelectStartChapter:u,localizedStrings:w}){const p=Ir(w,"%webView_bookSelector_currentBook%"),h=Ir(w,"%webView_bookSelector_choose%"),g=Ir(w,"%webView_bookSelector_chooseBooks%"),[m,x]=s.useState("current book"),y=f=>{x(f),t(f)};return e.jsx(o.RadioGroup,{className:"pr-twp tw:flex",value:m,onValueChange:f=>y(f),children:e.jsxs("div",{className:"tw:flex tw:w-full tw:flex-col tw:gap-4",children:[e.jsxs("div",{className:"tw:grid tw:grid-cols-[25%_25%_50%]",children:[e.jsxs("div",{className:"tw:flex tw:items-center",children:[e.jsx(o.RadioGroupItem,{value:"current book"}),e.jsx(o.Label,{className:"tw:ms-1",children:p})]}),e.jsx(o.Label,{className:"tw:flex tw:items-center",children:r}),e.jsx("div",{className:"tw:flex tw:items-center tw:justify-end",children:e.jsx(ro,{isDisabled:m==="choose books",handleSelectStartChapter:u,handleSelectEndChapter:c,chapterCount:i,startChapter:d,endChapter:l})})]}),e.jsxs("div",{className:"tw:grid tw:grid-cols-[25%_50%_25%]",children:[e.jsxs("div",{className:"tw:flex tw:items-center",children:[e.jsx(o.RadioGroupItem,{value:"choose books"}),e.jsx(o.Label,{className:"tw:ms-1",children:g})]}),e.jsx(o.Label,{className:"tw:flex tw:items-center",children:n.map(f=>Ot.Canon.bookIdToEnglishName(f)).join(", ")}),e.jsx(o.Button,{disabled:m==="current book",onClick:()=>a(),children:h})]})]})})}const ao=s.createContext(null);function ai(t,r){return{getTheme:function(){return r??null}}}function he(){const t=s.useContext(ao);return t==null&&function(r,...a){const n=new URL("https://lexical.dev/docs/error"),i=new URLSearchParams;i.append("code",r);for(const l of a)i.append("v",l);throw n.search=i.toString(),Error(`Minified Lexical error #${r}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(8),t}const oo=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0,oi=oo?s.useLayoutEffect:s.useEffect,dr={tag:v.HISTORY_MERGE_TAG};function ni({initialConfig:t,children:r}){const a=s.useMemo(()=>{const{theme:n,namespace:i,nodes:l,onError:c,editorState:d,html:u}=t,w=ai(null,n),p=v.createEditor({editable:t.editable,html:u,namespace:i,nodes:l,onError:h=>c(h,p),theme:n});return function(h,g){if(g!==null){if(g===void 0)h.update(()=>{const m=v.$getRoot();if(m.isEmpty()){const x=v.$createParagraphNode();m.append(x);const y=oo?document.activeElement:null;(v.$getSelection()!==null||y!==null&&y===h.getRootElement())&&x.select()}},dr);else if(g!==null)switch(typeof g){case"string":{const m=h.parseEditorState(g);h.setEditorState(m,dr);break}case"object":h.setEditorState(g,dr);break;case"function":h.update(()=>{v.$getRoot().isEmpty()&&g(h)},dr)}}}(p,d),[p,w]},[]);return oi(()=>{const n=t.editable,[i]=a;i.setEditable(n===void 0||n)},[]),e.jsx(ao.Provider,{value:a,children:r})}const ii=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0?s.useLayoutEffect:s.useEffect;function si({ignoreHistoryMergeTagChange:t=!0,ignoreSelectionChange:r=!1,onChange:a}){const[n]=he();return ii(()=>{if(a)return n.registerUpdateListener(({editorState:i,dirtyElements:l,dirtyLeaves:c,prevEditorState:d,tags:u})=>{r&&l.size===0&&c.size===0||t&&u.has(v.HISTORY_MERGE_TAG)||d.isEmpty()||a(i,n,u)})},[n,t,r,a]),null}const aa={ltr:"tw:text-left",rtl:"tw:text-right",heading:{h1:"tw:scroll-m-20 tw:text-4xl tw:font-extrabold tw:tracking-tight tw:lg:text-5xl",h2:"tw:scroll-m-20 tw:border-b tw:pb-2 tw:text-3xl tw:font-semibold tw:tracking-tight tw:first:mt-0",h3:"tw:scroll-m-20 tw:text-2xl tw:font-semibold tw:tracking-tight",h4:"tw:scroll-m-20 tw:text-xl tw:font-semibold tw:tracking-tight",h5:"tw:scroll-m-20 tw:text-lg tw:font-semibold tw:tracking-tight",h6:"tw:scroll-m-20 tw:text-base tw:font-semibold tw:tracking-tight"},paragraph:"tw:outline-hidden",quote:"tw:mt-6 tw:border-l-2 tw:pl-6 tw:italic",link:"tw:text-blue-600 tw:hover:underline tw:hover:cursor-pointer",list:{checklist:"tw:relative",listitem:"tw:mx-8",listitemChecked:'tw:relative tw:mx-2 tw:px-6 tw:list-none tw:outline-hidden tw:line-through tw:before:content-[""] tw:before:w-4 tw:before:h-4 tw:before:top-0.5 tw:before:left-0 tw:before:cursor-pointer tw:before:block tw:before:bg-cover tw:before:absolute tw:before:border tw:before:border-primary tw:before:rounded tw:before:bg-primary tw:before:bg-no-repeat tw:after:content-[""] tw:after:cursor-pointer tw:after:border-white tw:after:border-solid tw:after:absolute tw:after:block tw:after:top-[6px] tw:after:w-[3px] tw:after:left-[7px] tw:after:right-[7px] tw:after:h-[6px] tw:after:rotate-45 tw:after:border-r-2 tw:after:border-b-2 tw:after:border-l-0 tw:after:border-t-0',listitemUnchecked:'tw:relative tw:mx-2 tw:px-6 tw:list-none tw:outline-hidden tw:before:content-[""] tw:before:w-4 tw:before:h-4 tw:before:top-0.5 tw:before:left-0 tw:before:cursor-pointer tw:before:block tw:before:bg-cover tw:before:absolute tw:before:border tw:before:border-primary tw:before:rounded',nested:{listitem:"tw:list-none tw:before:hidden tw:after:hidden"},ol:"tw:m-0 tw:p-0 tw:list-decimal tw:[&>li]:mt-2",olDepth:["tw:list-outside tw:!list-decimal","tw:list-outside tw:!list-[upper-roman]","tw:list-outside tw:!list-[lower-roman]","tw:list-outside tw:!list-[upper-alpha]","tw:list-outside tw:!list-[lower-alpha]"],ul:"tw:m-0 tw:p-0 tw:list-outside tw:[&>li]:mt-2",ulDepth:["tw:list-outside tw:!list-disc","tw:list-outside tw:!list-disc","tw:list-outside tw:!list-disc","tw:list-outside tw:!list-disc","tw:list-outside tw:!list-disc"]},hashtag:"tw:text-blue-600 tw:bg-blue-100 tw:rounded-md tw:px-1",text:{bold:"tw:font-bold",code:"tw:bg-gray-100 tw:p-1 tw:rounded-md",italic:"tw:italic",strikethrough:"tw:line-through",subscript:"tw:sub",superscript:"tw:sup",underline:"tw:underline",underlineStrikethrough:"tw:underline tw:line-through"},image:"tw:relative tw:inline-block tw:user-select-none tw:cursor-default editor-image",inlineImage:"tw:relative tw:inline-block tw:user-select-none tw:cursor-default inline-editor-image",keyword:"tw:text-purple-900 tw:font-bold",code:"EditorTheme__code",codeHighlight:{atrule:"EditorTheme__tokenAttr",attr:"EditorTheme__tokenAttr",boolean:"EditorTheme__tokenProperty",builtin:"EditorTheme__tokenSelector",cdata:"EditorTheme__tokenComment",char:"EditorTheme__tokenSelector",class:"EditorTheme__tokenFunction","class-name":"EditorTheme__tokenFunction",comment:"EditorTheme__tokenComment",constant:"EditorTheme__tokenProperty",deleted:"EditorTheme__tokenProperty",doctype:"EditorTheme__tokenComment",entity:"EditorTheme__tokenOperator",function:"EditorTheme__tokenFunction",important:"EditorTheme__tokenVariable",inserted:"EditorTheme__tokenSelector",keyword:"EditorTheme__tokenAttr",namespace:"EditorTheme__tokenVariable",number:"EditorTheme__tokenProperty",operator:"EditorTheme__tokenOperator",prolog:"EditorTheme__tokenComment",property:"EditorTheme__tokenProperty",punctuation:"EditorTheme__tokenPunctuation",regex:"EditorTheme__tokenVariable",selector:"EditorTheme__tokenSelector",string:"EditorTheme__tokenSelector",symbol:"EditorTheme__tokenProperty",tag:"EditorTheme__tokenProperty",url:"EditorTheme__tokenOperator",variable:"EditorTheme__tokenVariable"},characterLimit:"tw:!bg-destructive/50",table:"EditorTheme__table tw:w-fit tw:overflow-scroll tw:border-collapse",tableCell:"EditorTheme__tableCell tw:w-24 tw:relative tw:border tw:px-4 tw:py-2 tw:text-left tw:[&[align=center]]:text-center tw:[&[align=right]]:text-right",tableCellActionButton:"EditorTheme__tableCellActionButton tw:bg-background tw:block tw:border-0 tw:rounded-2xl tw:w-5 tw:h-5 tw:text-foreground tw:cursor-pointer",tableCellActionButtonContainer:"EditorTheme__tableCellActionButtonContainer tw:block tw:right-1 tw:top-1.5 tw:absolute tw:z-10 tw:w-5 tw:h-5",tableCellEditing:"EditorTheme__tableCellEditing tw:rounded-sm tw:shadow-sm",tableCellHeader:"EditorTheme__tableCellHeader tw:bg-muted tw:border tw:px-4 tw:py-2 tw:text-left tw:font-bold tw:[&[align=center]]:text-center tw:[&[align=right]]:text-right",tableCellPrimarySelected:"EditorTheme__tableCellPrimarySelected tw:border tw:border-primary tw:border-solid tw:block tw:h-[calc(100%-2px)] tw:w-[calc(100%-2px)] tw:absolute tw:-left-[1px] tw:-top-[1px] tw:z-10 ",tableCellResizer:"EditorTheme__tableCellResizer tw:absolute tw:-right-1 tw:h-full tw:w-2 tw:cursor-ew-resize tw:z-10 tw:top-0",tableCellSelected:"EditorTheme__tableCellSelected tw:bg-muted",tableCellSortedIndicator:"EditorTheme__tableCellSortedIndicator tw:block tw:opacity-50 tw:absolute tw:bottom-0 tw:left-0 tw:w-full tw:h-1 tw:bg-muted",tableResizeRuler:"EditorTheme__tableCellResizeRuler tw:block tw:absolute tw:w-[1px] tw:h-full tw:bg-primary tw:top-0",tableRowStriping:"EditorTheme__tableRowStriping tw:m-0 tw:border-t tw:p-0 tw:even:bg-muted",tableSelected:"EditorTheme__tableSelected tw:ring-2 tw:ring-primary tw:ring-offset-2",tableSelection:"EditorTheme__tableSelection tw:bg-transparent",layoutItem:"tw:border tw:border-dashed tw:px-4 tw:py-2",layoutContainer:"tw:grid tw:gap-2.5 tw:my-2.5 tw:mx-0",autocomplete:"tw:text-muted-foreground",blockCursor:"",embedBlock:{base:"tw:user-select-none",focus:"tw:ring-2 tw:ring-primary tw:ring-offset-2"},hr:'tw:p-0.5 tw:border-none tw:my-1 tw:mx-0 tw:cursor-pointer tw:after:content-[""] tw:after:block tw:after:h-0.5 tw:after:bg-muted tw:selected:ring-2 tw:selected:ring-primary tw:selected:ring-offset-2 tw:selected:user-select-none',indent:"[--lexical-indent-base-value:40px]",mark:"",markOverlap:""},oa=[Ur.HeadingNode,v.ParagraphNode,v.TextNode,Ur.QuoteNode],ci=s.createContext(null),Or={didCatch:!1,error:null};class li extends s.Component{constructor(r){super(r),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=Or}static getDerivedStateFromError(r){return{didCatch:!0,error:r}}resetErrorBoundary(){const{error:r}=this.state;if(r!==null){for(var a,n,i=arguments.length,l=new Array(i),c=0;c0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return t.length!==r.length||t.some((a,n)=>!Object.is(a,r[n]))}function wi({children:t,onError:r}){return e.jsx(li,{fallback:e.jsx("div",{style:{border:"1px solid #f00",color:"#f00",padding:"8px"},children:"An error was thrown."}),onError:r,children:t})}const ui=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0?s.useLayoutEffect:s.useEffect;function pi(t){return{initialValueFn:()=>t.isEditable(),subscribe:r=>t.registerEditableListener(r)}}function hi(){return function(t){const[r]=he(),a=s.useMemo(()=>t(r),[r,t]),[n,i]=s.useState(()=>a.initialValueFn()),l=s.useRef(n);return ui(()=>{const{initialValueFn:c,subscribe:d}=a,u=c();return l.current!==u&&(l.current=u,i(u)),d(w=>{l.current=w,i(w)})},[a,t]),n}(pi)}function gi(t,r){const a=t.getRootElement();if(a===null)return[];const n=a.getBoundingClientRect(),i=getComputedStyle(a),l=parseFloat(i.paddingLeft)+parseFloat(i.paddingRight),c=Array.from(r.getClientRects());let d,u=c.length;c.sort((w,p)=>{const h=w.top-p.top;return Math.abs(h)<=3?w.left-p.left:h});for(let w=0;wp.top&&d.left+d.width>p.left,g=p.width+l===n.width;h||g?(c.splice(w--,1),u--):d=p}return c}function xr(t,...r){const a=new URL("https://lexical.dev/docs/error"),n=new URLSearchParams;n.append("code",t);for(const i of r)n.append("v",i);throw a.search=n.toString(),Error(`Minified Lexical error #${t}; visit ${a.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const no=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0,fi=no&&"documentMode"in document?document.documentMode:null;!(!no||!("InputEvent"in window)||fi)&&"getTargetRanges"in new window.InputEvent("input");function ue(t){return`${t}px`}const mi={attributes:!0,characterData:!0,childList:!0,subtree:!0};function vi(t,r,a){let n=null,i=null,l=null,c=[];const d=document.createElement("div");function u(){n===null&&xr(182),i===null&&xr(183);const{left:h,top:g}=i.getBoundingClientRect(),m=gi(t,r);var x,y;d.isConnected||(y=d,(x=i).insertBefore(y,x.firstChild));let f=!1;for(let E=0;E m.length;)c.pop();f&&a(c)}function w(){i=null,n=null,l!==null&&l.disconnect(),l=null,d.remove();for(const h of c)h.remove();c=[]}d.style.position="relative";const p=t.registerRootListener(function h(){const g=t.getRootElement();if(g===null)return w();const m=g.parentElement;if(!v.isHTMLElement(m))return w();w(),n=g,i=m,l=new MutationObserver(x=>{const y=t.getRootElement(),f=y&&y.parentElement;if(y!==n||f!==i)return h();for(const E of x)if(!d.contains(E.target))return u()}),l.observe(m,mi),u()});return()=>{p(),w()}}function Ta(t,r,a){if(t.type!=="text"&&v.$isElementNode(r)){const n=r.getDOMSlot(a);return[n.element,n.getFirstChildOffset()+t.offset]}return[v.getDOMTextNode(a)||a,t.offset]}function bi(t){for(const r of t){const a=r.style;a.background!=="Highlight"&&(a.background="Highlight"),a.color!=="HighlightText"&&(a.color="HighlightText"),a.marginTop!==ue(-1.5)&&(a.marginTop=ue(-1.5)),a.paddingTop!==ue(4)&&(a.paddingTop=ue(4)),a.paddingBottom!==ue(0)&&(a.paddingBottom=ue(0))}}function xi(t,r=bi){let a=null,n=null,i=null,l=null,c=null,d=null,u=()=>{};function w(p){p.read(()=>{const h=v.$getSelection();if(!v.$isRangeSelection(h))return a=null,i=null,l=null,d=null,u(),void(u=()=>{});const[g,m]=function(I){const S=I.getStartEndPoints();return I.isBackward()?[S[1],S[0]]:S}(h),x=g.getNode(),y=x.getKey(),f=g.offset,E=m.getNode(),k=E.getKey(),N=m.offset,C=t.getElementByKey(y),A=t.getElementByKey(k),R=a===null||C!==n||f!==i||y!==a.getKey(),O=l===null||A!==c||N!==d||k!==l.getKey();if((R||O)&&C!==null&&A!==null){const I=function(S,D,Y,Z,L,j,et){const P=(S._window?S._window.document:document).createRange();return P.setStart(...Ta(D,Y,Z)),P.setEnd(...Ta(L,j,et)),P}(t,g,x,C,m,E,A);u(),u=vi(t,I,r)}a=x,n=C,i=f,l=E,c=A,d=N})}return w(t.getEditorState()),v.mergeRegister(t.registerUpdateListener(({editorState:p})=>w(p)),()=>{u()})}function yi(t,r){let a=null;const n=()=>{const i=getSelection(),l=i&&i.anchorNode,c=t.getRootElement();l!==null&&c!==null&&c.contains(l)?a!==null&&(a(),a=null):a===null&&(a=xi(t,r))};return t.registerRootListener(i=>{if(i){const l=i.ownerDocument;return l.addEventListener("selectionchange",n),n(),()=>{a!==null&&a(),l.removeEventListener("selectionchange",n)}}})}function ki(t){const r=v.$findMatchingParent(t,a=>v.$isElementNode(a)&&!a.isInline());return v.$isElementNode(r)||xr(4,t.__key),r}function _i(t){const r=v.$getSelection()||v.$getPreviousSelection();let a;if(v.$isRangeSelection(r))a=v.$caretFromPoint(r.focus,"next");else{if(r!=null){const c=r.getNodes(),d=c[c.length-1];d&&(a=v.$getSiblingCaret(d,"next"))}a=a||v.$getChildCaret(v.$getRoot(),"previous").getFlipped().insert(v.$createParagraphNode())}const n=ji(t,a),i=v.$getAdjacentChildCaret(n),l=v.$isChildCaret(i)?v.$normalizeCaret(i):n;return v.$setSelectionFromCaretRange(v.$getCollapsedCaretRange(l)),t.getLatest()}function ji(t,r,a){let n=v.$getCaretInDirection(r,"next");for(let i=n;i;i=v.$splitAtPointCaretNext(i,a))n=i;return v.$isTextPointCaret(n)&&xr(283),n.insert(t.isInline()?v.$createParagraphNode().append(t):t),v.$getCaretInDirection(v.$getSiblingCaret(t.getLatest(),"next"),r.direction)}function Ci(t){const r=v.$getSelection();if(!v.$isRangeSelection(r))return!1;const a=new Set,n=r.getNodes();for(let i=0;i v.$isElementNode(w)&&!w.isInline());if(d===null)continue;const u=d.getKey();d.canIndent()&&!a.has(u)&&(a.add(u),t(d))}return a.size>0}const Ni=Symbol.for("preact-signals");function Er(){if(ve>1)return void ve--;let t,r=!1;for(!function(){let a=yr;for(yr=void 0;a!==void 0;)a.S.v===a.v&&(a.S.i=a.i),a=a.o}();Xe!==void 0;){let a=Xe;for(Xe=void 0,kr++;a!==void 0;){const n=a.u;if(a.u=void 0,a.f&=-3,!(8&a.f)&&io(a))try{a.c()}catch(i){r||(t=i,r=!0)}a=n}}if(kr=0,ve--,r)throw t}function Ei(t){if(ve>0)return t();Yr=++Ti,ve++;try{return t()}finally{Er()}}let ut,Xe;function Sa(t){const r=ut;ut=void 0;try{return t()}finally{ut=r}}let yr,ve=0,kr=0,Ti=0,Yr=0,fr=0;function Ra(t){if(ut===void 0)return;let r=t.n;return r===void 0||r.t!==ut?(r={i:0,S:t,p:ut.s,n:void 0,t:ut,e:void 0,x:void 0,r},ut.s!==void 0&&(ut.s.n=r),ut.s=r,t.n=r,32&ut.f&&t.S(r),r):r.i===-1?(r.i=0,r.n!==void 0&&(r.n.p=r.p,r.p!==void 0&&(r.p.n=r.n),r.p=ut.s,r.n=void 0,ut.s.n=r,ut.s=r),r):void 0}function Ut(t,r){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=r==null?void 0:r.watched,this.Z=r==null?void 0:r.unwatched,this.name=r==null?void 0:r.name}function We(t,r){return new Ut(t,r)}function io(t){for(let r=t.s;r!==void 0;r=r.n)if(r.S.i!==r.i||!r.S.h()||r.S.i!==r.i)return!0;return!1}function Ma(t){for(let r=t.s;r!==void 0;r=r.n){const a=r.S.n;if(a!==void 0&&(r.r=a),r.S.n=r,r.i=-1,r.n===void 0){t.s=r;break}}}function so(t){let r,a=t.s;for(;a!==void 0;){const n=a.p;a.i===-1?(a.S.U(a),n!==void 0&&(n.n=a.n),a.n!==void 0&&(a.n.p=n)):r=a,a.S.n=a.r,a.r!==void 0&&(a.r=void 0),a=n}t.s=r}function Ne(t,r){Ut.call(this,void 0),this.x=t,this.s=void 0,this.g=fr-1,this.f=4,this.W=r==null?void 0:r.watched,this.Z=r==null?void 0:r.unwatched,this.name=r==null?void 0:r.name}function Si(t,r){return new Ne(t,r)}function co(t){const r=t.m;if(t.m=void 0,typeof r=="function"){ve++;const a=ut;ut=void 0;try{r()}catch(n){throw t.f&=-2,t.f|=8,na(t),n}finally{ut=a,Er()}}}function na(t){for(let r=t.s;r!==void 0;r=r.n)r.S.U(r);t.x=void 0,t.s=void 0,co(t)}function Ri(t){if(ut!==this)throw new Error("Out-of-order effect");so(this),ut=t,this.f&=-2,8&this.f&&na(this),Er()}function Be(t,r){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=r==null?void 0:r.name}function pe(t,r){const a=new Be(t,r);try{a.c()}catch(i){throw a.d(),i}const n=a.d.bind(a);return n[Symbol.dispose]=n,n}function Ge(t,r={}){const a={};for(const n in t){const i=r[n],l=We(i===void 0?t[n]:i);a[n]=l}return a}Ut.prototype.brand=Ni,Ut.prototype.h=function(){return!0},Ut.prototype.S=function(t){const r=this.t;r!==t&&t.e===void 0&&(t.x=r,this.t=t,r!==void 0?r.e=t:Sa(()=>{var a;(a=this.W)==null||a.call(this)}))},Ut.prototype.U=function(t){if(this.t!==void 0){const r=t.e,a=t.x;r!==void 0&&(r.x=a,t.e=void 0),a!==void 0&&(a.e=r,t.x=void 0),t===this.t&&(this.t=a,a===void 0&&Sa(()=>{var n;(n=this.Z)==null||n.call(this)}))}},Ut.prototype.subscribe=function(t){return pe(()=>{const r=this.value,a=ut;ut=void 0;try{t(r)}finally{ut=a}},{name:"sub"})},Ut.prototype.valueOf=function(){return this.value},Ut.prototype.toString=function(){return this.value+""},Ut.prototype.toJSON=function(){return this.value},Ut.prototype.peek=function(){const t=ut;ut=void 0;try{return this.value}finally{ut=t}},Object.defineProperty(Ut.prototype,"value",{get(){const t=Ra(this);return t!==void 0&&(t.i=this.i),this.v},set(t){if(t!==this.v){if(kr>100)throw new Error("Cycle detected");(function(r){ve!==0&&kr===0&&r.l!==Yr&&(r.l=Yr,yr={S:r,v:r.v,i:r.i,o:yr})})(this),this.v=t,this.i++,fr++,ve++;try{for(let r=this.t;r!==void 0;r=r.x)r.t.N()}finally{Er()}}}}),Ne.prototype=new Ut,Ne.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===fr))return!0;if(this.g=fr,this.f|=1,this.i>0&&!io(this))return this.f&=-2,!0;const t=ut;try{Ma(this),ut=this;const r=this.x();(16&this.f||this.v!==r||this.i===0)&&(this.v=r,this.f&=-17,this.i++)}catch(r){this.v=r,this.f|=16,this.i++}return ut=t,so(this),this.f&=-2,!0},Ne.prototype.S=function(t){if(this.t===void 0){this.f|=36;for(let r=this.s;r!==void 0;r=r.n)r.S.S(r)}Ut.prototype.S.call(this,t)},Ne.prototype.U=function(t){if(this.t!==void 0&&(Ut.prototype.U.call(this,t),this.t===void 0)){this.f&=-33;for(let r=this.s;r!==void 0;r=r.n)r.S.U(r)}},Ne.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let t=this.t;t!==void 0;t=t.x)t.t.N()}},Object.defineProperty(Ne.prototype,"value",{get(){if(1&this.f)throw new Error("Cycle detected");const t=Ra(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),Be.prototype.c=function(){const t=this.S();try{if(8&this.f||this.x===void 0)return;const r=this.x();typeof r=="function"&&(this.m=r)}finally{t()}},Be.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,co(this),Ma(this),ve++;const t=ut;return ut=this,Ri.bind(this,t)},Be.prototype.N=function(){2&this.f||(this.f|=2,this.u=Xe,Xe=this)},Be.prototype.d=function(){this.f|=8,1&this.f||na(this)},Be.prototype.dispose=function(){this.d()};v.defineExtension({build:(t,r,a)=>Ge(r),config:v.safeCast({defaultSelection:"rootEnd",disabled:!1}),name:"@lexical/extension/AutoFocus",register(t,r,a){const n=a.getOutput();return pe(()=>n.disabled.value?void 0:t.registerRootListener(i=>{t.focus(()=>{const l=document.activeElement;i===null||l!==null&&i.contains(l)||i.focus({preventScroll:!0})},{defaultSelection:n.defaultSelection.peek()})}))}});function lo(){const t=v.$getRoot(),r=v.$getSelection(),a=v.$createParagraphNode();t.clear(),t.append(a),r!==null&&a.select(),v.$isRangeSelection(r)&&(r.format=0)}function wo(t,r=lo){return t.registerCommand(v.CLEAR_EDITOR_COMMAND,a=>(t.update(r),!0),v.COMMAND_PRIORITY_EDITOR)}v.defineExtension({build:(t,r,a)=>Ge(r),config:v.safeCast({$onClear:lo}),name:"@lexical/extension/ClearEditor",register(t,r,a){const{$onClear:n}=a.getOutput();return pe(()=>wo(t,n.value))}});function Mi(t){return(typeof t.nodes=="function"?t.nodes():t.nodes)||[]}const Pr=v.createState("format",{parse:t=>typeof t=="number"?t:0});class uo extends v.DecoratorNode{$config(){return this.config("decorator-text",{extends:v.DecoratorNode,stateConfigs:[{flat:!0,stateConfig:Pr}]})}getFormat(){return v.$getState(this,Pr)}getFormatFlags(r,a){return v.toggleTextFormatType(this.getFormat(),r,a)}hasFormat(r){const a=v.TEXT_TYPE_TO_FORMAT[r];return(this.getFormat()&a)!==0}setFormat(r){return v.$setState(this,Pr,r)}toggleFormat(r){const a=this.getFormat(),n=v.toggleTextFormatType(a,r,null);return this.setFormat(n)}isInline(){return!0}createDOM(){return document.createElement("span")}updateDOM(){return!1}}function Di(t){return t instanceof uo}v.defineExtension({name:"@lexical/extension/DecoratorText",nodes:()=>[uo],register:(t,r,a)=>t.registerCommand(v.FORMAT_TEXT_COMMAND,n=>{const i=v.$getSelection();if(v.$isNodeSelection(i)||v.$isRangeSelection(i))for(const l of i.getNodes())Di(l)&&l.toggleFormat(n);return!1},v.COMMAND_PRIORITY_LOW)});function po(t,r){let a;return We(t(),{unwatched(){a&&(a(),a=void 0)},watched(){this.value=t(),a=r(this)}})}const Zr=v.defineExtension({build:t=>po(()=>t.getEditorState(),r=>t.registerUpdateListener(a=>{r.value=a.editorState})),name:"@lexical/extension/EditorState"});function pt(t,...r){const a=new URL("https://lexical.dev/docs/error"),n=new URLSearchParams;n.append("code",t);for(const i of r)n.append("v",i);throw a.search=n.toString(),Error(`Minified Lexical error #${t}; visit ${a.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function ho(t,r){if(t&&r&&!Array.isArray(r)&&typeof t=="object"&&typeof r=="object"){const a=t,n=r;for(const i in n)a[i]=ho(a[i],n[i]);return t}return r}const ia=0,Xr=1,go=2,Ar=3,wr=4,Le=5,Lr=6,He=7;function Br(t){return t.id===ia}function fo(t){return t.id===go}function Ii(t){return function(r){return r.id===Xr}(t)||pt(305,String(t.id),String(Xr)),Object.assign(t,{id:go})}const Oi=new Set;class Pi{constructor(r,a){$t(this,"builder");$t(this,"configs");$t(this,"_dependency");$t(this,"_peerNameSet");$t(this,"extension");$t(this,"state");$t(this,"_signal");this.builder=r,this.extension=a,this.configs=new Set,this.state={id:ia}}mergeConfigs(){let r=this.extension.config||{};const a=this.extension.mergeConfig?this.extension.mergeConfig.bind(this.extension):v.shallowMergeConfig;for(const n of this.configs)r=a(r,n);return r}init(r){const a=this.state;fo(a)||pt(306,String(a.id));const n={getDependency:this.getInitDependency.bind(this),getDirectDependentNames:this.getDirectDependentNames.bind(this),getPeer:this.getInitPeer.bind(this),getPeerNameSet:this.getPeerNameSet.bind(this)},i={...n,getDependency:this.getDependency.bind(this),getInitResult:this.getInitResult.bind(this),getPeer:this.getPeer.bind(this)},l=function(d,u,w){return Object.assign(d,{config:u,id:Ar,registerState:w})}(a,this.mergeConfigs(),n);let c;this.state=l,this.extension.init&&(c=this.extension.init(r,l.config,n)),this.state=function(d,u,w){return Object.assign(d,{id:wr,initResult:u,registerState:w})}(l,c,i)}build(r){const a=this.state;let n;a.id!==wr&&pt(307,String(a.id),String(Le)),this.extension.build&&(n=this.extension.build(r,a.config,a.registerState));const i={...a.registerState,getOutput:()=>n,getSignal:this.getSignal.bind(this)};this.state=function(l,c,d){return Object.assign(l,{id:Le,output:c,registerState:d})}(a,n,i)}register(r,a){this._signal=a;const n=this.state;n.id!==Le&&pt(308,String(n.id),String(Le));const i=this.extension.register&&this.extension.register(r,n.config,n.registerState);return this.state=function(l){return Object.assign(l,{id:Lr})}(n),()=>{const l=this.state;l.id!==He&&pt(309,String(n.id),String(He)),this.state=function(c){return Object.assign(c,{id:Le})}(l),i&&i()}}afterRegistration(r){const a=this.state;let n;return a.id!==Lr&&pt(310,String(a.id),String(Lr)),this.extension.afterRegistration&&(n=this.extension.afterRegistration(r,a.config,a.registerState)),this.state=function(i){return Object.assign(i,{id:He})}(a),n}getSignal(){return this._signal===void 0&&pt(311),this._signal}getInitResult(){this.extension.init===void 0&&pt(312,this.extension.name);const r=this.state;return function(a){return a.id>=wr}(r)||pt(313,String(r.id),String(wr)),r.initResult}getInitPeer(r){const a=this.builder.extensionNameMap.get(r);return a?a.getExtensionInitDependency():void 0}getExtensionInitDependency(){const r=this.state;return function(a){return a.id>=Ar}(r)||pt(314,String(r.id),String(Ar)),{config:r.config}}getPeer(r){const a=this.builder.extensionNameMap.get(r);return a?a.getExtensionDependency():void 0}getInitDependency(r){const a=this.builder.getExtensionRep(r);return a===void 0&&pt(315,this.extension.name,r.name),a.getExtensionInitDependency()}getDependency(r){const a=this.builder.getExtensionRep(r);return a===void 0&&pt(315,this.extension.name,r.name),a.getExtensionDependency()}getState(){const r=this.state;return function(a){return a.id>=He}(r)||pt(316,String(r.id),String(He)),r}getDirectDependentNames(){return this.builder.incomingEdges.get(this.extension.name)||Oi}getPeerNameSet(){let r=this._peerNameSet;return r||(r=new Set((this.extension.peerDependencies||[]).map(([a])=>a)),this._peerNameSet=r),r}getExtensionDependency(){if(!this._dependency){const r=this.state;(function(a){return a.id>=Le})(r)||pt(317,this.extension.name),this._dependency={config:r.config,init:r.initResult,output:r.output}}return this._dependency}}const Da={tag:v.HISTORY_MERGE_TAG};function Ai(){const t=v.$getRoot();t.isEmpty()&&t.append(v.$createParagraphNode())}const Li=v.defineExtension({config:v.safeCast({setOptions:Da,updateOptions:Da}),init:({$initialEditorState:t=Ai})=>({$initialEditorState:t,initialized:!1}),afterRegistration(t,{updateOptions:r,setOptions:a},n){const i=n.getInitResult();if(!i.initialized){i.initialized=!0;const{$initialEditorState:l}=i;if(v.$isEditorState(l))t.setEditorState(l,a);else if(typeof l=="function")t.update(()=>{l(t)},r);else if(l&&(typeof l=="string"||typeof l=="object")){const c=t.parseEditorState(l);t.setEditorState(c,a)}}return()=>{}},name:"@lexical/extension/InitialState",nodes:[v.RootNode,v.TextNode,v.LineBreakNode,v.TabNode,v.ParagraphNode]}),Ia=Symbol.for("@lexical/extension/LexicalBuilder");function Oa(){}function Bi(t){throw t}function ur(t){return Array.isArray(t)?t:[t]}const zr="0.43.0+prod.esm";class $e{constructor(r){$t(this,"roots");$t(this,"extensionNameMap");$t(this,"outgoingConfigEdges");$t(this,"incomingEdges");$t(this,"conflicts");$t(this,"_sortedExtensionReps");$t(this,"PACKAGE_VERSION");this.outgoingConfigEdges=new Map,this.incomingEdges=new Map,this.extensionNameMap=new Map,this.conflicts=new Map,this.PACKAGE_VERSION=zr,this.roots=r;for(const a of r)this.addExtension(a)}static fromExtensions(r){const a=[ur(Li)];for(const n of r)a.push(ur(n));return new $e(a)}static maybeFromEditor(r){const a=r[Ia];return a&&(a.PACKAGE_VERSION!==zr&&pt(292,a.PACKAGE_VERSION,zr),a instanceof $e||pt(293)),a}static fromEditor(r){const a=$e.maybeFromEditor(r);return a===void 0&&pt(294),a}constructEditor(){const{$initialEditorState:r,onError:a,...n}=this.buildCreateEditorArgs(),i=Object.assign(v.createEditor({...n,...a?{onError:l=>{a(l,i)}}:{}}),{[Ia]:this});for(const l of this.sortedExtensionReps())l.build(i);return i}buildEditor(){let r=Oa;function a(){try{r()}finally{r=Oa}}const n=Object.assign(this.constructEditor(),{dispose:a,[Symbol.dispose]:a});return r=v.mergeRegister(this.registerEditor(n),()=>n.setRootElement(null)),n}hasExtensionByName(r){return this.extensionNameMap.has(r)}getExtensionRep(r){const a=this.extensionNameMap.get(r.name);if(a)return a.extension!==r&&pt(295,r.name),a}addEdge(r,a,n){const i=this.outgoingConfigEdges.get(r);i?i.set(a,n):this.outgoingConfigEdges.set(r,new Map([[a,n]]));const l=this.incomingEdges.get(a);l?l.add(r):this.incomingEdges.set(a,new Set([r]))}addExtension(r){this._sortedExtensionReps!==void 0&&pt(296);const a=ur(r),[n]=a;typeof n.name!="string"&&pt(297,typeof n.name);let i=this.extensionNameMap.get(n.name);if(i!==void 0&&i.extension!==n&&pt(298,n.name),!i){i=new Pi(this,n),this.extensionNameMap.set(n.name,i);const l=this.conflicts.get(n.name);typeof l=="string"&&pt(299,n.name,l);for(const c of n.conflictsWith||[])this.extensionNameMap.has(c)&&pt(299,n.name,c),this.conflicts.set(c,n.name);for(const c of n.dependencies||[]){const d=ur(c);this.addEdge(n.name,d[0].name,d.slice(1)),this.addExtension(d)}for(const[c,d]of n.peerDependencies||[])this.addEdge(n.name,c,d?[d]:[])}}sortedExtensionReps(){if(this._sortedExtensionReps)return this._sortedExtensionReps;const r=[],a=(n,i)=>{let l=n.state;if(fo(l))return;const c=n.extension.name;var d;Br(l)||pt(300,c,i||"[unknown]"),Br(d=l)||pt(304,String(d.id),String(ia)),l=Object.assign(d,{id:Xr}),n.state=l;const u=this.outgoingConfigEdges.get(c);if(u)for(const w of u.keys()){const p=this.extensionNameMap.get(w);p&&a(p,c)}l=Ii(l),n.state=l,r.push(n)};for(const n of this.extensionNameMap.values())Br(n.state)&&a(n);for(const n of r)for(const[i,l]of this.outgoingConfigEdges.get(n.extension.name)||[])if(l.length>0){const c=this.extensionNameMap.get(i);if(c)for(const d of l)c.configs.add(d)}for(const[n,...i]of this.roots)if(i.length>0){const l=this.extensionNameMap.get(n.name);l===void 0&&pt(301,n.name);for(const c of i)l.configs.add(c)}return this._sortedExtensionReps=r,this._sortedExtensionReps}registerEditor(r){const a=this.sortedExtensionReps(),n=new AbortController,i=[()=>n.abort()],l=n.signal;for(const c of a){const d=c.register(r,l);d&&i.push(d)}for(const c of a){const d=c.afterRegistration(r);d&&i.push(d)}return v.mergeRegister(...i)}buildCreateEditorArgs(){const r={},a=new Set,n=new Map,i=new Map,l={},c={},d=this.sortedExtensionReps();for(const p of d){const{extension:h}=p;if(h.onError!==void 0&&(r.onError=h.onError),h.disableEvents!==void 0&&(r.disableEvents=h.disableEvents),h.parentEditor!==void 0&&(r.parentEditor=h.parentEditor),h.editable!==void 0&&(r.editable=h.editable),h.namespace!==void 0&&(r.namespace=h.namespace),h.$initialEditorState!==void 0&&(r.$initialEditorState=h.$initialEditorState),h.nodes)for(const g of Mi(h)){if(typeof g!="function"){const m=n.get(g.replace);m&&pt(302,h.name,g.replace.name,m.extension.name),n.set(g.replace,p)}a.add(g)}if(h.html){if(h.html.export)for(const[g,m]of h.html.export.entries())i.set(g,m);h.html.import&&Object.assign(l,h.html.import)}h.theme&&ho(c,h.theme)}Object.keys(c).length>0&&(r.theme=c),a.size&&(r.nodes=[...a]);const u=Object.keys(l).length>0,w=i.size>0;(u||w)&&(r.html={},u&&(r.html.import=l),w&&(r.html.export=i));for(const p of d)p.init(r);return r.onError||(r.onError=Bi),r}}const zi=new Set,Pa=v.defineExtension({build(t,r,a){const n=a.getDependency(Zr).output,i=We({watchedNodeKeys:new Map}),l=po(()=>{},()=>pe(()=>{const c=l.peek(),{watchedNodeKeys:d}=i.value;let u,w=!1;n.value.read(()=>{if(v.$getSelection())for(const[p,h]of d.entries()){if(h.size===0){d.delete(p);continue}const g=v.$getNodeByKey(p),m=g&&g.isSelected()||!1;w=w||m!==(!!c&&c.has(p)),m&&(u=u||new Set,u.add(p))}}),!w&&u&&c&&u.size===c.size||(l.value=u)}));return{watchNodeKey:function(c){const d=Si(()=>(l.value||zi).has(c)),{watchedNodeKeys:u}=i.peek();let w=u.get(c);const p=w!==void 0;return w=w||new Set,w.add(d),p||(u.set(c,w),i.value={watchedNodeKeys:u}),d}}},dependencies:[Zr],name:"@lexical/extension/NodeSelection"}),Vi=v.createCommand("INSERT_HORIZONTAL_RULE_COMMAND");class Fe extends v.DecoratorNode{static getType(){return"horizontalrule"}static clone(r){return new Fe(r.__key)}static importJSON(r){return sa().updateFromJSON(r)}static importDOM(){return{hr:()=>({conversion:$i,priority:0})}}exportDOM(){return{element:document.createElement("hr")}}createDOM(r){const a=document.createElement("hr");return v.addClassNamesToElement(a,r.theme.hr),a}getTextContent(){return` +`}isInline(){return!1}updateDOM(){return!1}}function $i(){return{node:sa()}}function sa(){return v.$create(Fe)}function Fi(t){return t instanceof Fe}v.defineExtension({dependencies:[Zr,Pa],name:"@lexical/extension/HorizontalRule",nodes:()=>[Fe],register(t,r,a){const{watchNodeKey:n}=a.getDependency(Pa).output,i=We({nodeSelections:new Map}),l=t._config.theme.hrSelected??"selected";return v.mergeRegister(t.registerCommand(Vi,c=>{const d=v.$getSelection();if(!v.$isRangeSelection(d))return!1;if(d.focus.getNode()!==null){const u=sa();_i(u)}return!0},v.COMMAND_PRIORITY_EDITOR),t.registerCommand(v.CLICK_COMMAND,c=>{if(v.isDOMNode(c.target)){const d=v.$getNodeFromDOMNode(c.target);if(Fi(d))return function(u,w=!1){const p=v.$getSelection(),h=u.isSelected(),g=u.getKey();let m;w&&v.$isNodeSelection(p)?m=p:(m=v.$createNodeSelection(),v.$setSelection(m)),h?m.delete(g):m.add(g)}(d,c.shiftKey),!0}return!1},v.COMMAND_PRIORITY_LOW),t.registerMutationListener(Fe,(c,d)=>{Ei(()=>{let u=!1;const{nodeSelections:w}=i.peek();for(const[p,h]of c.entries())if(h==="destroyed")w.delete(p),u=!0;else{const g=w.get(p),m=t.getElementByKey(p);g?g.domNode.value=m:(u=!0,w.set(p,{domNode:We(m),selectedSignal:n(p)}))}u&&(i.value={nodeSelections:w})})}),pe(()=>{const c=[];for(const{domNode:d,selectedSignal:u}of i.value.nodeSelections.values())c.push(pe(()=>{const w=d.value;w&&(u.value?v.addClassNamesToElement(w,l):v.removeClassNamesFromElement(w,l))}));return v.mergeRegister(...c)}))}});v.defineExtension({build:(t,r)=>Ge({inheritEditableFromParent:r.inheritEditableFromParent}),config:v.safeCast({$getParentEditor:function(){const t=v.$getEditor();return $e.fromEditor(t),t},inheritEditableFromParent:!1}),init:(t,r,a)=>{const n=r.$getParentEditor();t.parentEditor=n,t.theme=t.theme||n._config.theme},name:"@lexical/extension/NestedEditor",register:(t,r,a)=>pe(()=>{const n=t._parentEditor;if(n&&a.getOutput().inheritEditableFromParent.value)return t.setEditable(n.isEditable()),n.registerEditableListener(t.setEditable.bind(t))})});v.defineExtension({build:(t,r,a)=>Ge(r),config:v.safeCast({disabled:!1,onReposition:void 0}),name:"@lexical/utils/SelectionAlwaysOnDisplay",register:(t,r,a)=>{const n=a.getOutput();return pe(()=>{if(!n.disabled.value)return yi(t,n.onReposition.value)})}});function mo(t){return t.canBeEmpty()}function Ui(t,r,a=mo){return v.mergeRegister(t.registerCommand(v.KEY_TAB_COMMAND,n=>{const i=v.$getSelection();if(!v.$isRangeSelection(i))return!1;n.preventDefault();const l=function(c){if(c.getNodes().filter(g=>v.$isBlockElementNode(g)&&g.canIndent()).length>0)return!0;const d=c.anchor,u=c.focus,w=u.isBefore(d)?u:d,p=w.getNode(),h=ki(p);if(h.canIndent()){const g=h.getKey();let m=v.$createRangeSelection();if(m.anchor.set(g,0,"element"),m.focus.set(g,0,"element"),m=v.$normalizeSelection__EXPERIMENTAL(m),m.anchor.is(w))return!0}return!1}(i)?n.shiftKey?v.OUTDENT_CONTENT_COMMAND:v.INDENT_CONTENT_COMMAND:v.INSERT_TAB_COMMAND;return t.dispatchCommand(l,void 0)},v.COMMAND_PRIORITY_EDITOR),t.registerCommand(v.INDENT_CONTENT_COMMAND,()=>{const n=typeof r=="number"?r:r?r.peek():null,i=v.$getSelection();if(!v.$isRangeSelection(i))return!1;const l=typeof a=="function"?a:a.peek();return Ci(c=>{if(l(c)){const d=c.getIndent()+1;(!n||d Ge(r),config:v.safeCast({$canIndent:mo,disabled:!1,maxIndent:null}),name:"@lexical/extension/TabIndentation",register(t,r,a){const{disabled:n,maxIndent:i,$canIndent:l}=a.getOutput();return pe(()=>{if(!n.value)return Ui(t,i,l)})}});const Gi=v.defineExtension({name:"@lexical/react/ReactProvider"});function Ki(){return v.$getRoot().getTextContent()}function Hi(t,r=!0){if(t)return!1;let a=Ki();return r&&(a=a.trim()),a===""}function qi(t){if(!Hi(t,!1))return!1;const r=v.$getRoot().getChildren(),a=r.length;if(a>1)return!1;for(let n=0;nqi(t)}function bo(t){const r=window.location.origin,a=n=>{if(n.origin!==r)return;const i=t.getRootElement();if(document.activeElement!==i)return;const l=n.data;if(typeof l=="string"){let c;try{c=JSON.parse(l)}catch{return}if(c&&c.protocol==="nuanria_messaging"&&c.type==="request"){const d=c.payload;if(d&&d.functionId==="makeChanges"){const u=d.args;if(u){const[w,p,h,g,m]=u;t.update(()=>{const x=v.$getSelection();if(v.$isRangeSelection(x)){const y=x.anchor;let f=y.getNode(),E=0,k=0;if(v.$isTextNode(f)&&w>=0&&p>=0&&(E=w,k=w+p,x.setTextNodeRange(f,E,f,k)),E===k&&h===""||(x.insertRawText(h),f=y.getNode()),v.$isTextNode(f)){E=g,k=g+m;const N=f.getTextContentSize();E=E>N?N:E,k=k>N?N:k,x.setTextNodeRange(f,E,f,k)}n.stopImmediatePropagation()}})}}}}};return window.addEventListener("message",a,!0),()=>{window.removeEventListener("message",a,!0)}}v.defineExtension({build:(t,r,a)=>Ge(r),config:v.safeCast({disabled:typeof window>"u"}),name:"@lexical/dragon",register:(t,r,a)=>pe(()=>a.getOutput().disabled.value?void 0:bo(t))});function Yi(t,...r){const a=new URL("https://lexical.dev/docs/error"),n=new URLSearchParams;n.append("code",t);for(const i of r)n.append("v",i);throw a.search=n.toString(),Error(`Minified Lexical error #${t}; visit ${a.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const ca=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0?s.useLayoutEffect:s.useEffect;function Zi({editor:t,ErrorBoundary:r}){return function(a,n){const[i,l]=s.useState(()=>a.getDecorators());return ca(()=>a.registerDecoratorListener(c=>{_a.flushSync(()=>{l(c)})}),[a]),s.useEffect(()=>{l(a.getDecorators())},[a]),s.useMemo(()=>{const c=[],d=Object.keys(i);for(let u=0;u a._onError(g),children:e.jsx(s.Suspense,{fallback:null,children:i[w]})}),h=a.getElementByKey(w);h!==null&&c.push(_a.createPortal(p,h,w))}return c},[n,i,a])}(t,r)}function Xi({editor:t,ErrorBoundary:r}){return function(a){const n=$e.maybeFromEditor(a);if(n&&n.hasExtensionByName(Gi.name)){for(const i of["@lexical/plain-text","@lexical/rich-text"])n.hasExtensionByName(i)&&Yi(320,i);return!0}return!1}(t)?null:e.jsx(Zi,{editor:t,ErrorBoundary:r})}function Aa(t){return t.getEditorState().read(vo(t.isComposing()))}function Wi({contentEditable:t,placeholder:r=null,ErrorBoundary:a}){const[n]=he();return function(i){ca(()=>v.mergeRegister(Ur.registerRichText(i),bo(i)),[i])}(n),e.jsxs(e.Fragment,{children:[t,e.jsx(Ji,{content:r}),e.jsx(Xi,{editor:n,ErrorBoundary:a})]})}function Ji({content:t}){const[r]=he(),a=function(i){const[l,c]=s.useState(()=>Aa(i));return ca(()=>{function d(){const u=Aa(i);c(u)}return d(),v.mergeRegister(i.registerUpdateListener(()=>{d()}),i.registerEditableListener(()=>{d()}))},[i]),l}(r),n=hi();return a?typeof t=="function"?t(n):t:null}function Qi({defaultSelection:t}){const[r]=he();return s.useEffect(()=>{r.focus(()=>{const a=document.activeElement,n=r.getRootElement();n===null||a!==null&&n.contains(a)||n.focus({preventScroll:!0})},{defaultSelection:t})},[t,r]),null}const ts=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0?s.useLayoutEffect:s.useEffect;function es({onClear:t}){const[r]=he();return ts(()=>wo(r,t),[r,t]),null}const xo=typeof window<"u"&&window.document!==void 0&&window.document.createElement!==void 0?s.useLayoutEffect:s.useEffect;function rs({editor:t,ariaActiveDescendant:r,ariaAutoComplete:a,ariaControls:n,ariaDescribedBy:i,ariaErrorMessage:l,ariaExpanded:c,ariaInvalid:d,ariaLabel:u,ariaLabelledBy:w,ariaMultiline:p,ariaOwns:h,ariaRequired:g,autoCapitalize:m,className:x,id:y,role:f="textbox",spellCheck:E=!0,style:k,tabIndex:N,"data-testid":C,...A},R){const[O,I]=s.useState(t.isEditable()),S=s.useCallback(Y=>{Y&&Y.ownerDocument&&Y.ownerDocument.defaultView?t.setRootElement(Y):t.setRootElement(null)},[t]),D=s.useMemo(()=>function(...Y){return Z=>{for(const L of Y)typeof L=="function"?L(Z):L!=null&&(L.current=Z)}}(R,S),[S,R]);return xo(()=>(I(t.isEditable()),t.registerEditableListener(Y=>{I(Y)})),[t]),e.jsx("div",{"aria-activedescendant":O?r:void 0,"aria-autocomplete":O?a:"none","aria-controls":O?n:void 0,"aria-describedby":i,...l!=null?{"aria-errormessage":l}:{},"aria-expanded":O&&f==="combobox"?!!c:void 0,...d!=null?{"aria-invalid":d}:{},"aria-label":u,"aria-labelledby":w,"aria-multiline":p,"aria-owns":O?h:void 0,"aria-readonly":!O||void 0,"aria-required":g,autoCapitalize:m,className:x,contentEditable:O,"data-testid":C,id:y,ref:D,role:f,spellCheck:E,style:k,tabIndex:N,...A})}const as=s.forwardRef(rs);function La(t){return t.getEditorState().read(vo(t.isComposing()))}const os=s.forwardRef(ns);function ns(t,r){const{placeholder:a,...n}=t,[i]=he();return e.jsxs(e.Fragment,{children:[e.jsx(as,{editor:i,...n,ref:r}),a!=null&&e.jsx(is,{editor:i,content:a})]})}function is({content:t,editor:r}){const a=function(c){const[d,u]=s.useState(()=>La(c));return xo(()=>{function w(){const p=La(c);u(p)}return w(),v.mergeRegister(c.registerUpdateListener(()=>{w()}),c.registerEditableListener(()=>{w()}))},[c]),d}(r),[n,i]=s.useState(r.isEditable());if(s.useLayoutEffect(()=>(i(r.isEditable()),r.registerEditableListener(c=>{i(c)})),[r]),!a)return null;let l=null;return typeof t=="function"?l=t(n):t!==null&&(l=t),l===null?null:e.jsx("div",{"aria-hidden":!0,children:l})}function ss({placeholder:t,className:r,placeholderClassName:a}){return e.jsx(os,{className:r??"ContentEditable__root tw:relative tw:block tw:min-h-11 tw:overflow-auto tw:px-3 tw:py-3 tw:text-sm tw:outline-hidden","aria-placeholder":t,placeholder:e.jsx("div",{className:a??"tw:pointer-events-none tw:absolute tw:top-0 tw:select-none tw:overflow-hidden tw:text-ellipsis tw:px-3 tw:py-3 tw:text-sm tw:text-muted-foreground",children:t})})}const yo=s.createContext(void 0);function cs({activeEditor:t,$updateToolbar:r,blockType:a,setBlockType:n,showModal:i,children:l}){const c=s.useMemo(()=>({activeEditor:t,$updateToolbar:r,blockType:a,setBlockType:n,showModal:i}),[t,r,a,n,i]);return e.jsx(yo.Provider,{value:c,children:l})}function ko(){const t=s.useContext(yo);if(!t)throw new Error("useToolbarContext must be used within a ToolbarContext provider");return t}function ls(){const[t,r]=s.useState(void 0),a=s.useCallback(()=>{r(void 0)},[]),n=s.useMemo(()=>{if(t===void 0)return;const{title:l,content:c}=t;return e.jsx(o.Dialog,{open:!0,onOpenChange:a,children:e.jsxs(o.DialogContent,{children:[e.jsx(o.DialogHeader,{children:e.jsx(o.DialogTitle,{children:l})}),c]})})},[t,a]),i=s.useCallback((l,c,d=!1)=>{r({closeOnClickOutside:d,content:c(a),title:l})},[a]);return[n,i]}function ds({children:t}){const[r]=he(),[a,n]=s.useState(r),[i,l]=s.useState("paragraph"),[c,d]=ls(),u=()=>{};return s.useEffect(()=>a.registerCommand(v.SELECTION_CHANGE_COMMAND,(w,p)=>(n(p),!1),v.COMMAND_PRIORITY_CRITICAL),[a]),e.jsxs(cs,{activeEditor:a,$updateToolbar:u,blockType:i,setBlockType:l,showModal:d,children:[c,t({blockType:i})]})}function ws(t){const[r]=he(),{activeEditor:a}=ko();s.useEffect(()=>a.registerCommand(v.SELECTION_CHANGE_COMMAND,()=>{const n=v.$getSelection();return n&&t(n),!1},v.COMMAND_PRIORITY_CRITICAL),[r,t]),s.useEffect(()=>{a.getEditorState().read(()=>{const n=v.$getSelection();n&&t(n)})},[a,t])}const Ba=[{format:"bold",icon:$.BoldIcon,label:"Bold"},{format:"italic",icon:$.ItalicIcon,label:"Italic"}];function us(){const{activeEditor:t}=ko(),[r,a]=s.useState([]),n=s.useCallback(i=>{if(v.$isRangeSelection(i)||Dn.$isTableSelection(i)){const l=[];Ba.forEach(({format:c})=>{i.hasFormat(c)&&l.push(c)}),a(c=>c.length!==l.length||!l.every(d=>c.includes(d))?l:c)}},[]);return ws(n),e.jsx(o.ToggleGroup,{type:"multiple",value:r,onValueChange:a,variant:"outline",size:"sm",children:Ba.map(({format:i,icon:l,label:c})=>e.jsx(o.ToggleGroupItem,{value:i,"aria-label":c,onClick:()=>{t.dispatchCommand(v.FORMAT_TEXT_COMMAND,i)},children:e.jsx(l,{className:"tw:h-4 tw:w-4"})},i))})}function ps({onClear:t}){const[r]=he();s.useEffect(()=>{t&&t(()=>{r.dispatchCommand(v.CLEAR_EDITOR_COMMAND,void 0)})},[r,t])}function hs({placeholder:t="Start typing ...",autoFocus:r=!1,onClear:a,actions:n}){const[,i]=s.useState(void 0),l=c=>{c!==void 0&&i(c)};return e.jsxs("div",{className:"tw:relative",children:[e.jsx(ds,{children:()=>e.jsx("div",{"data-testid":"editor-format-toolbar",className:"tw:sticky tw:top-0 tw:flex tw:gap-2 tw:overflow-auto tw:border-b tw:p-1",children:e.jsx(us,{})})}),e.jsxs("div",{className:"tw:relative",children:[e.jsx(Wi,{contentEditable:e.jsx("div",{ref:l,children:e.jsx(ss,{placeholder:t})}),ErrorBoundary:wi}),r&&e.jsx(Qi,{defaultSelection:"rootEnd"}),e.jsx(ps,{onClear:a}),e.jsx(es,{})]}),n&&e.jsx("div",{"data-slot":"editor-actions",className:"tw:flex tw:flex-row tw:items-center tw:gap-2 tw:border-t tw:px-2 tw:py-1.5",children:n})]})}const gs={namespace:"commentEditor",theme:aa,nodes:oa,onError:t=>{console.error(t)}};function _r({editorState:t,editorSerializedState:r,onChange:a,onSerializedChange:n,placeholder:i="Start typing…",autoFocus:l=!1,onClear:c,className:d,actions:u}){const[w]=s.useState(()=>({...gs,...t?{editorState:t}:{},...r?{editorState:JSON.stringify(r)}:{}})),p=s.useCallback(h=>{a==null||a(h),n==null||n(h.toJSON())},[a,n]);return e.jsx("div",{className:o.cn("pr-twp tw:overflow-hidden tw:rounded-lg tw:border tw:bg-background tw:shadow",d),children:e.jsx(ni,{initialConfig:w,children:e.jsxs(o.TooltipProvider,{children:[e.jsx(hs,{placeholder:i,autoFocus:l,onClear:c,actions:u}),e.jsx(si,{ignoreSelectionChange:!0,onChange:p})]})})})}function _o(t){const r=t.querySelector('[contenteditable="true"]');if(!r)return!1;r.focus();const a=window.getSelection(),n=document.createRange();return n.selectNodeContents(r),n.collapse(!1),a==null||a.removeAllRanges(),a==null||a.addRange(n),!0}function jo(t){return t?t.some(r=>r&&"text"in r&&r.text.trim().length>0?!0:!r||!("children"in r)?!1:jo(r.children)):!1}function Yt(t){var r;return(r=t==null?void 0:t.root)!=null&&r.children?jo(t.root.children):!1}function fs(t){if(!t||t.trim()==="")throw new Error("Input HTML is empty");const r=Ha.createHeadlessEditor({namespace:"EditorUtils",theme:aa,nodes:oa,onError:n=>{console.error(n)}});let a;if(r.update(()=>{const i=new DOMParser().parseFromString(t,"text/html"),l=qa.$generateNodesFromDOM(r,i);v.$getRoot().clear(),v.$insertNodes(l)},{discrete:!0}),r.getEditorState().read(()=>{a=r.getEditorState().toJSON()}),!a)throw new Error("Failed to convert HTML to editor state");return a}function jr(t){const r=Ha.createHeadlessEditor({namespace:"EditorUtils",theme:aa,nodes:oa,onError:i=>{console.error(i)}}),a=r.parseEditorState(JSON.stringify(t));r.setEditorState(a);let n="";return r.getEditorState().read(()=>{n=qa.$generateHtmlFromNodes(r)}),n=n.replace(/\s+style="[^"]*"/g,"").replace(/\s+class="[^"]*"/g,"").replace(/(.*?)<\/span>/g,"$1").replace(/]*>(.*?)<\/strong><\/b>/g,"$1").replace(/]*>(.*?)<\/b><\/strong>/g,"$1").replace(/]*>(.*?)<\/em><\/i>/g,"$1").replace(/]*>(.*?)<\/i><\/em>/g,"$1").replace(/]*>(.*?)<\/span><\/u>/g,"$1").replace(/ ]*>(.*?)<\/span><\/s>/g,"$1").replace(/
/gi,"
"),n}function la(t){return["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Home","End"].includes(t.key)?(t.stopPropagation(),!0):!1}const da=Object.freeze(["%cancelButton_tooltip%","%acceptButton_tooltip%"]),za=(t,r)=>t[r]??r;function wa({onCancelClick:t,onAcceptClick:r,canAccept:a=!0,localizedStrings:n={},className:i="tw:h-6 tw:w-6",acceptLabel:l}){const c=za(n,"%cancelButton_tooltip%"),d=l??za(n,"%acceptButton_tooltip%");return e.jsxs(o.ButtonGroup,{children:[e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{"aria-label":c,className:i,size:"icon",onClick:t,variant:"secondary",children:e.jsx($.X,{})})}),e.jsx(o.TooltipContent,{children:e.jsx("p",{children:c})})]})}),e.jsx(o.ButtonGroupSeparator,{}),e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{"aria-label":d,className:i,size:"icon",onClick:r,disabled:!a,children:e.jsx($.Check,{})})}),e.jsx(o.TooltipContent,{children:e.jsx("p",{children:d})})]})})]})}const ms="verseText",vs=Object.freeze(["%conflict_note_description_verseText%","%conflict_note_choose_aria_label%","%conflict_note_stale_notice%","%conflict_note_resolve_failed%","%conflict_note_choose_prompt%","%conflict_note_option_keep_current%","%conflict_note_option_use_other%","%conflict_note_option_combine%","%conflict_note_save_and_resolve%","%conflict_note_save_disabled_tooltip%","%conflict_note_save_warning%","%conflict_note_no_result%","%conflict_note_outcome_used_other%","%conflict_note_outcome_combined%","%conflict_note_summary_unresolved%","%conflict_note_summary_resolved_kept_current%","%conflict_note_summary_resolved_used_other%","%conflict_note_summary_resolved_combined%"]);function Ze(t){return t!==void 0&&Object.keys(t).length>0}function Wr(t){return t.editorState===void 0&&t.assignedUser===void 0&&!Ze(t.commentEdits)}const Co=["tw:prose tw:max-w-none tw:break-words tw:text-sm tw:font-normal tw:text-foreground","tw:[&>blockquote]:border-s-0 tw:[&>blockquote]:p-0 tw:[&>blockquote]:ps-0 tw:[&>blockquote]:font-normal tw:[&>blockquote]:not-italic tw:[&>blockquote]:text-foreground","tw:prose-quoteless"].join(" ");function No(t){return(t==null?void 0:t.conflictType)===ms}function Eo(t){return t==="replaced"?"reject":t==="merged"?"merged":"accept"}function mr(t,r){return t===""?r["%comment_assign_unassigned%"]??"Unassigned":t==="Team"?r["%comment_assign_team%"]??"Team":t}function ua(t){const r=o.isMacOs();return t.key==="Enter"&&(r&&t.metaKey||!r&&t.ctrlKey)}function Zt(t,r,a){const n=r[t];return n===void 0||n===t?a:n}const bs={root:{children:[{children:[],direction:"ltr",format:"",indent:0,type:"paragraph",version:1,textFormat:0,textStyle:""}],direction:"ltr",format:"",indent:0,type:"root",version:1}},xs={root:{children:[{children:[{detail:0,format:0,mode:"normal",style:"",text:"",type:"text",version:1}],direction:"ltr",format:"",indent:0,type:"paragraph",version:1,textFormat:0,textStyle:""}],direction:"ltr",format:"",indent:0,type:"root",version:1}};function Vr(t,r){return t===""?r["%commentEditor_unassigned%"]??"Unassigned":t==="Team"?r["%commentEditor_team%"]??"Team":t}function ys({assignableUsers:t,onSave:r,onClose:a,localizedStrings:n,initialAssignedUser:i}){const[l,c]=s.useState(xs),[d,u]=s.useState(i),[w,p]=s.useState(!1),h=s.useRef(void 0),g=s.useRef(null);s.useEffect(()=>{let f=!0;const E=g.current;if(!E)return;const k=setTimeout(()=>{f&&_o(E)},300);return()=>{f=!1,clearTimeout(k)}},[]);const m=s.useCallback(()=>{if(!Yt(l))return;const f=jr(l);r(f,d)},[l,r,d]),x=n["%commentEditor_placeholder%"]??"Type your comment here...",y=n["%commentEditor_assignTo_label%"]??"Assign to";return e.jsxs("div",{className:"pr-twp tw:grid tw:gap-3",children:[e.jsxs("div",{className:"tw:flex tw:items-center tw:justify-between",children:[e.jsx("span",{className:"tw:text-sm tw:font-medium",children:y}),e.jsx(wa,{onCancelClick:a,onAcceptClick:m,canAccept:Yt(l),localizedStrings:n,acceptLabel:n["%commentEditor_saveButton_tooltip%"]})]}),e.jsx("div",{className:"tw:flex tw:items-center tw:gap-2",children:e.jsxs(o.Popover,{open:w,onOpenChange:p,children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:"outline",className:"tw:flex tw:w-full tw:items-center tw:justify-start tw:gap-2",disabled:t.length===0,children:[e.jsx($.AtSign,{className:"tw:h-4 tw:w-4"}),e.jsx("span",{children:Vr(d!==void 0?d:"",n)})]})}),e.jsx(o.PopoverContent,{className:"tw:w-auto tw:p-0",align:"start",onKeyDown:f=>{f.key==="Escape"&&(f.stopPropagation(),p(!1))},children:e.jsx(o.Command,{children:e.jsx(o.CommandList,{children:t.map(f=>e.jsx(o.CommandItem,{onSelect:()=>{u(f||void 0),p(!1)},className:"tw:flex tw:items-center",children:e.jsx("span",{children:Vr(f,n)})},f||"unassigned"))})})})]})}),e.jsx("div",{ref:g,role:"textbox",tabIndex:-1,className:"tw:outline-hidden",onKeyDownCapture:f=>{f.key==="Escape"?(f.preventDefault(),f.stopPropagation(),a()):ua(f)&&(f.preventDefault(),f.stopPropagation(),Yt(l)&&m())},onKeyDown:f=>{la(f),(f.key==="Enter"||f.key===" ")&&f.stopPropagation()},children:e.jsx(_r,{editorSerializedState:l,onSerializedChange:f=>c(f),placeholder:x,onClear:f=>{h.current=f}})})]})}const ks=Object.freeze(["%commentEditor_placeholder%","%commentEditor_assignTo_label%","%commentEditor_saveButton_tooltip%","%commentEditor_unassigned%","%commentEditor_team%",...da]),_s=Object.freeze(["%comment_assign_team%","%comment_assign_unassigned%","%comment_assigned_to%","%comment_assigning_to%","%comment_dateAtTime%","%comment_date_today%","%comment_date_yesterday%","%comment_deleteComment%","%comment_editComment%","%comment_replyOrAssign%","%comment_reopenResolved%","%comment_status_resolved%","%comment_status_todo%","%comment_thread_multiple_replies%","%comment_thread_single_reply%","%comment_aria_assign_user%","%comment_aria_submit_comment%","%comment_aria_mark_as_read%","%comment_aria_mark_as_unread%","%comment_aria_resolve_thread%","%comment_aria_cancel_edit%","%comment_aria_save_edit%"]),To="comment-list";function js(t){return t}function So({className:t,size:r="default",...a}){return e.jsx("div",{"data-slot":"card","data-size":r,className:o.cn("pr-twp tw:group/card tw:flex tw:flex-col tw:gap-4 tw:overflow-hidden tw:rounded-xl tw:bg-card tw:py-4 tw:text-sm tw:text-card-foreground tw:ring-1 tw:ring-foreground/10 tw:has-data-[slot=card-footer]:pb-0 tw:has-[>img:first-child]:pt-0 tw:data-[size=sm]:gap-3 tw:data-[size=sm]:py-3 tw:data-[size=sm]:has-data-[slot=card-footer]:pb-0 tw:*:[img:first-child]:rounded-t-xl tw:*:[img:last-child]:rounded-b-xl",t),...a})}function Cs({className:t,...r}){return e.jsx("div",{"data-slot":"card-header",className:o.cn("pr-twp tw:group/card-header tw:@container/card-header tw:grid tw:auto-rows-min tw:items-start tw:gap-1 tw:rounded-t-xl tw:px-4 tw:group-data-[size=sm]/card:px-3 tw:has-data-[slot=card-action]:grid-cols-[1fr_auto] tw:has-data-[slot=card-description]:grid-rows-[auto_auto] tw:[.border-b]:pb-4 tw:group-data-[size=sm]/card:[.border-b]:pb-3",t),...r})}function Ns({className:t,...r}){return e.jsx("div",{"data-slot":"card-title",className:o.cn("pr-twp tw:font-heading tw:text-base tw:leading-snug tw:font-medium tw:group-data-[size=sm]/card:text-sm",t),...r})}function Es({className:t,...r}){return e.jsx("div",{"data-slot":"card-description",className:o.cn("pr-twp tw:text-sm tw:text-muted-foreground",t),...r})}function Ro({className:t,...r}){return e.jsx("div",{"data-slot":"card-content",className:o.cn("pr-twp tw:px-4 tw:group-data-[size=sm]/card:px-3",t),...r})}function Ts({className:t,...r}){return e.jsx("div",{"data-slot":"card-footer",className:o.cn("pr-twp tw:flex tw:items-center tw:rounded-b-xl tw:border-t tw:bg-muted/50 tw:p-4 tw:group-data-[size=sm]/card:p-3",t),...r})}function Ue({children:t,isDisabled:r,disabledExplanation:a,...n}){return e.jsx("div",{...n,role:r?"group":void 0,tabIndex:r?0:void 0,"aria-label":r?a:void 0,children:t})}function Mo({className:t,size:r="default",...a}){return e.jsx(G.Avatar.Root,{"data-slot":"avatar","data-size":r,className:o.cn("pr-twp tw:group/avatar tw:relative tw:flex tw:size-8 tw:shrink-0 tw:rounded-full tw:select-none tw:after:absolute tw:after:inset-0 tw:after:rounded-full tw:after:border tw:after:border-border tw:after:mix-blend-darken tw:data-[size=lg]:size-10 tw:data-[size=sm]:size-6 tw:dark:after:mix-blend-lighten",t),...a})}function Ss({className:t,...r}){return e.jsx(G.Avatar.Image,{"data-slot":"avatar-image",className:o.cn("pr-twp tw:aspect-square tw:size-full tw:rounded-full tw:object-cover",t),...r})}function Do({className:t,...r}){return e.jsx(G.Avatar.Fallback,{"data-slot":"avatar-fallback",className:o.cn("pr-twp tw:flex tw:size-full tw:items-center tw:justify-center tw:rounded-full tw:bg-muted tw:text-sm tw:text-muted-foreground tw:group-data-[size=sm]/avatar:text-xs",t),...r})}function Va({comment:t,isReply:r=!1,localizedStrings:a,isThreadExpanded:n=!1,handleUpdateComment:i,handleDeleteComment:l,onEditingChange:c,canEditOrDelete:d=!1,draftEditorState:u,onDraftEditorStateChange:w}){const[p,h]=s.useState(),g=u??p,x=g!==void 0&&n,y=w!==void 0,f=s.useCallback(L=>{y||h(L),w==null||w(L)},[y,w]),E=s.useRef(null),k=s.useRef(!1);s.useEffect(()=>{if(!x||!k.current)return;k.current=!1;let L=!0;const j=E.current;if(!j)return;const et=setTimeout(()=>{L&&_o(j)},300);return()=>{L=!1,clearTimeout(et)}},[x]);const N=s.useCallback(L=>{L&&L.stopPropagation(),f(void 0),c==null||c(!1)},[c,f]),C=s.useCallback(async L=>{if(L&&L.stopPropagation(),!g||!i)return;await i(t.id,jr(g))&&(f(void 0),c==null||c(!1))},[g,i,t.id,c,f]),A=s.useMemo(()=>{const L=new Date(t.date),j=B.formatRelativeDate(L,a["%comment_date_today%"],a["%comment_date_yesterday%"]),et=L.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"});return B.formatReplacementString(a["%comment_dateAtTime%"],{date:j,time:et})},[t.date,a]),R=s.useMemo(()=>t.user,[t.user]),O=s.useMemo(()=>t.user.split(" ").map(L=>L[0]).join("").toUpperCase().slice(0,2),[t.user]),I=s.useMemo(()=>B.sanitizeHtml(t.contents),[t.contents]),S=s.useMemo(()=>t.contents.replace(/<[^>]*>/g,"").trim().length>0,[t.contents]),D=!!t.conflictResolutionAction&&!S,Y=s.useMemo(()=>{if(n&&d)return e.jsxs(e.Fragment,{children:[e.jsxs(o.DropdownMenuItem,{onClick:L=>{L.stopPropagation(),k.current=!0;const j=t.contents.trim()!=="";f(j?fs(t.contents):bs),c==null||c(!0)},children:[e.jsx($.Pencil,{className:"tw:me-2 tw:h-4 tw:w-4"}),a["%comment_editComment%"]]}),e.jsxs(o.DropdownMenuItem,{onClick:async L=>{L.stopPropagation(),l&&await l(t.id)},children:[e.jsx($.Trash2,{className:"tw:me-2 tw:h-4 tw:w-4"}),a["%comment_deleteComment%"]]})]})},[d,n,a,t.contents,t.id,l,c,f]),Z=!Yt(g);return e.jsxs("div",{className:o.cn("tw:flex tw:w-full tw:flex-row tw:items-baseline tw:gap-2",{"tw:text-sm":r}),children:[e.jsx(Mo,{className:"tw:h-8 tw:w-8",children:e.jsx(Do,{className:"tw:text-xs tw:font-medium",children:O})}),e.jsxs("div",{className:"tw:flex tw:flex-1 tw:flex-col tw:gap-1",children:[e.jsxs("div",{className:"tw:flex tw:w-full tw:flex-row tw:flex-wrap tw:items-baseline tw:gap-x-2",children:[e.jsx("p",{className:"tw:text-sm tw:font-medium",children:R}),e.jsx("p",{className:"tw:text-xs tw:font-normal tw:text-muted-foreground",children:A}),e.jsx("div",{className:"tw:flex-1"}),r&&t.assignedUser!==void 0&&e.jsxs(o.Badge,{variant:"secondary",className:"tw:text-xs tw:font-normal",children:["→ ",mr(t.assignedUser,a)]})]}),x&&e.jsx("div",{role:"textbox",tabIndex:-1,className:"tw:flex tw:flex-col tw:gap-2",ref:E,onKeyDownCapture:L=>{L.key==="Escape"?(L.preventDefault(),L.stopPropagation(),N()):ua(L)&&(L.preventDefault(),L.stopPropagation(),Yt(g)&&C())},onKeyDown:L=>{la(L),(L.key==="Enter"||L.key===" ")&&L.stopPropagation()},onClick:L=>{L.stopPropagation()},children:e.jsx(_r,{className:o.cn('tw:[&_[data-lexical-editor="true"]>blockquote]:mt-0 tw:[&_[data-lexical-editor="true"]>blockquote]:border-s-0 tw:[&_[data-lexical-editor="true"]>blockquote]:ps-0 tw:[&_[data-lexical-editor="true"]>blockquote]:font-normal tw:[&_[data-lexical-editor="true"]>blockquote]:not-italic tw:[&_[data-lexical-editor="true"]>blockquote]:text-foreground'),editorSerializedState:g,onSerializedChange:L=>f(L),actions:e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tw:flex-1"}),e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{size:"icon-sm",onClick:N,variant:"outline",className:"tw:flex tw:items-center tw:justify-center tw:rounded-md","aria-label":Zt("%comment_aria_cancel_edit%",a,"Cancel edit"),children:e.jsx($.Undo2,{})})}),e.jsx(o.TooltipContent,{children:Zt("%comment_aria_cancel_edit%",a,"Cancel edit")})]}),e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ue,{isDisabled:Z,disabledExplanation:Zt("%comment_aria_save_edit%",a,"Save edit"),className:"tw:inline-flex",children:e.jsx(o.Button,{size:"icon-sm",onClick:C,className:"tw:flex tw:items-center tw:justify-center tw:rounded-md",disabled:Z,"aria-label":Zt("%comment_aria_save_edit%",a,"Save edit"),children:e.jsx($.ArrowUp,{})})})}),e.jsx(o.TooltipContent,{children:Zt("%comment_aria_save_edit%",a,"Save edit")})]})]})})}),!x&&e.jsxs(e.Fragment,{children:[t.status==="Resolved"&&!D&&e.jsx("div",{className:"tw:text-sm tw:italic",children:a["%comment_status_resolved%"]}),t.status==="Todo"&&r&&e.jsx("div",{className:"tw:text-sm tw:italic",children:a["%comment_status_todo%"]}),D?e.jsx("div",{className:"tw:text-sm tw:italic",children:Eo(t.conflictResolutionAction)==="merged"?a["%conflict_note_outcome_combined%"]??"Combined both changes.":a["%conflict_note_outcome_used_other%"]??"Used the other change instead of the current text."}):e.jsx("div",{className:o.cn(Co,"tw:items-start tw:gap-2",{"tw:line-clamp-3":!n}),dangerouslySetInnerHTML:{__html:I}})]})]}),Y&&e.jsxs(o.DropdownMenu,{children:[e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsx(o.Button,{variant:"ghost",size:"icon",children:e.jsx($.MoreHorizontal,{})})}),e.jsx(o.DropdownMenuContent,{align:"end",children:Y})]})]})}function Io({show:t,disabled:r=!1,onClick:a,ariaLabel:n}){if(t)return e.jsx(o.Button,{variant:"ghost",size:"icon",disabled:r,className:o.cn("tw:ms-auto","tw:text-primary tw:transition-opacity tw:duration-200 tw:hover:bg-primary/10","tw:opacity-0 tw:group-hover:opacity-100"),onClick:i=>{i.stopPropagation(),a()},"aria-label":n,children:e.jsx($.Check,{className:"tw:h-4 tw:w-4"})})}const Rs={root:{children:[{children:[{detail:0,format:0,mode:"normal",style:"",text:"",type:"text",version:1}],direction:"ltr",format:"",indent:0,type:"paragraph",version:1,textFormat:0,textStyle:""}],direction:"ltr",format:"",indent:0,type:"root",version:1}},Oo=s.memo(function({classNameForVerseText:r,comments:a,localizedStrings:n,isSelected:i=!1,verseRef:l,assignedUser:c,currentUser:d,handleSelectThread:u,threadId:w,thread:p,threadStatus:h,handleAddCommentToThread:g,handleUpdateComment:m,handleDeleteComment:x,handleReadStatusChange:y,assignableUsers:f,canUserAddCommentToThread:E,canUserAssignThreadCallback:k,canUserResolveThreadCallback:N,canUserEditOrDeleteCommentCallback:C,isRead:A=!1,autoReadDelay:R=5,onVerseRefClick:O,initialAssignedUser:I,activeComments:S,rootContentSlot:D,resolveActionSlot:Y,spaceRootContentFromReplies:Z=!1,draft:L,onDraftChange:j}){var Ie;const[et,P]=s.useState({}),K=L??et,W=K.editorState??Rs,F=K.assignedUser,tt=j!==void 0,lt=s.useRef(K);lt.current=K;const it=s.useCallback(T=>{const at={...lt.current,...T};lt.current=at,tt||P(at),j==null||j(w,Wr(at)?void 0:at)},[tt,j,w]),J=s.useCallback((T,at)=>{const ct={...K.commentEdits};at===void 0?delete ct[T]:ct[T]=at,it({commentEdits:Ze(ct)?ct:void 0})},[K.commentEdits,it]),[dt,gt]=s.useState(),wt=i,[mt,vt]=s.useState(!1),[Mt,Xt]=s.useState(!1),[Wt,Nt]=s.useState(!1),[bt,Lt]=s.useState(!1),[oe,se]=s.useState(!1),[Et,kt]=s.useState(A),[qt,Jt]=s.useState(!1),Qt=s.useRef(void 0),[te,Kt]=s.useState(new Map);s.useEffect(()=>{let T=!0;return(async()=>{const ct=N?await N(w):!1;T&&se(ct)})(),()=>{T=!1}},[w,N]),s.useEffect(()=>{let T=!0;if(!i){Lt(!1),Kt(new Map);return}return(async()=>{const ct=k?await k(w):!1;T&&Lt(ct)})(),()=>{T=!1}},[i,w,k]);const Pt=s.useRef("idle");s.useEffect(()=>{if(!i){Pt.current!=="idle"&&(it({assignedUser:void 0}),gt(void 0),Pt.current="idle");return}Pt.current==="idle"&&(Pt.current="pending"),bt?Pt.current==="pending"&&I!==void 0&&I!==c&&(it({assignedUser:I}),Pt.current="auto-populated"):Pt.current==="auto-populated"&&(it({assignedUser:void 0}),Pt.current="pending")},[i,I,bt,c,it]);const Bt=s.useRef(dt);Bt.current=dt;const M=s.useRef(j);M.current=j;const q=s.useRef(w);q.current=w,s.useEffect(()=>()=>{var at;const{current:T}=lt;T.assignedUser!==void 0&&T.assignedUser===Bt.current&&T.editorState===void 0&&!Ze(T.commentEdits)&&((at=M.current)==null||at.call(M,q.current,void 0))},[]);const _=s.useMemo(()=>S??a.filter(T=>!T.deleted),[S,a]),z=s.useMemo(()=>{const{commentEdits:T}=K;if(!T)return T;const at=new Set(_.map(Ct=>Ct.id)),ct=Object.fromEntries(Object.entries(T).filter(([Ct])=>at.has(Ct)));return Ze(ct)?ct:void 0},[K,_]),X=Mt||Ze(z);s.useEffect(()=>{let T=!0;if(!i||!C){Kt(new Map);return}return(async()=>{const ct=new Map;await Promise.all(_.map(async Ct=>{const xe=await C(Ct.id);T&&ct.set(Ct.id,xe)})),T&&Kt(ct)})(),()=>{T=!1}},[i,_,C]);const V=s.useMemo(()=>_[0],[_]),rt=s.useRef(null),st=s.useRef(void 0),nt=s.useCallback(()=>{var T;(T=st.current)==null||T.call(st),it({editorState:void 0})},[it]),ft=s.useCallback(T=>{it({editorState:Yt(T)?T:void 0})},[it]),xt=s.useCallback(()=>{const T=!Et;kt(T),Jt(!T),y==null||y(w,T)},[Et,y,w]);s.useEffect(()=>{vt(!1)},[i]),s.useEffect(()=>{if(i&&!Et&&!qt&&Wr(K)){const T=setTimeout(()=>{kt(!0),y==null||y(w,!0)},R*1e3);return Qt.current=T,()=>clearTimeout(T)}Qt.current&&(clearTimeout(Qt.current),Qt.current=void 0)},[i,Et,qt,R,w,y,K]);const ht=s.useMemo(()=>({singleReply:n["%comment_thread_single_reply%"],multipleReplies:n["%comment_thread_multiple_replies%"]}),[n]),_t=s.useMemo(()=>{if(c===void 0)return;if(c==="")return n["%comment_assign_unassigned%"]??"Unassigned";const T=mr(c,n);return B.formatReplacementString(n["%comment_assigned_to%"],{assignedUser:T})},[c,n]),zt=s.useMemo(()=>_.slice(1),[_]),jt=s.useMemo(()=>zt.length??0,[zt.length]),ce=s.useMemo(()=>jt>0,[jt]),ge=s.useMemo(()=>{if(mt||jt<=2)return zt;const T=new Set(zt.slice(-2).map(at=>at.id));return zt.filter(at=>{var ct;return T.has(at.id)||((ct=K.commentEdits)==null?void 0:ct[at.id])!==void 0})},[zt,jt,mt,K.commentEdits]),le=s.useMemo(()=>mt||jt<=2?0:jt-ge.length,[jt,mt,ge.length]),je=s.useMemo(()=>jt===1?ht.singleReply:B.formatReplacementString(ht.multipleReplies,{count:jt}),[jt,ht]),Ce=s.useMemo(()=>le===1?ht.singleReply:B.formatReplacementString(ht.multipleReplies,{count:le}),[le,ht]);s.useEffect(()=>{!i&&X&&ce&&Xt(!1)},[i,X,ce]);const be=s.useCallback(async T=>{T&&T.stopPropagation();const at=Yt(W)?jr(W):void 0;if(F!==void 0){await g({threadId:w,contents:at,assignedUser:F})&&(gt(F),at&&nt());return}at&&await g({threadId:w,contents:at})&&nt()},[nt,W,g,F,w]),fe=s.useCallback(async T=>{const at=Yt(W)?jr(W):void 0,ct=T.status?T.assignedUser:F??T.assignedUser,Ct=await g({...T,contents:at,assignedUser:ct});return Ct&&(ct!==void 0&>(ct),at&&nt()),Ct},[nt,W,g,F]);if(_.length===0)return;const de=!bt||!f||f.length===0||!f.includes(d),De=!Yt(W)&&(F===void 0||F===dt),er=e.jsx(Va,{comment:V,localizedStrings:n,isThreadExpanded:i,threadStatus:h,handleAddCommentToThread:fe,handleUpdateComment:m,handleDeleteComment:x,onEditingChange:Xt,canEditOrDelete:(!X&&te.get(V.id))??!1,canUserResolveThread:oe,draftEditorState:(Ie=K.commentEdits)==null?void 0:Ie[V.id],onDraftEditorStateChange:T=>J(V.id,T)});return e.jsx(So,{role:"option","aria-selected":i,id:w,className:o.cn("tw:group tw:w-full tw:rounded-none tw:border-s-4 tw:p-3 tw:outline-hidden tw:transition-all tw:duration-200 tw:focus:ring-2 tw:focus:ring-ring tw:focus:ring-offset-1 tw:focus:ring-offset-background",{"tw:cursor-pointer tw:hover:shadow-md":!i},{"tw:border-foreground tw:shadow-md":i,"tw:border-transparent":!i},{"tw:bg-card":h!=="Resolved"&&Et,"tw:bg-muted":h==="Resolved","tw:bg-accent":!Et&&h!=="Resolved"}),onClick:()=>{u(w)},tabIndex:-1,children:e.jsxs(Ro,{className:"tw:flex tw:flex-col tw:gap-2 tw:p-0",children:[e.jsxs("div",{className:"tw:flex tw:flex-col tw:content-center tw:items-start tw:gap-2",children:[e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-2",children:[_t&&e.jsx(o.Badge,{className:"tw:rounded-sm tw:bg-input tw:text-sm tw:font-normal tw:text-primary tw:hover:bg-input",children:_t}),e.jsx(o.Button,{variant:"ghost",size:"icon",onClick:T=>{T.stopPropagation(),xt()},className:"tw:text-muted-foreground tw:transition tw:hover:text-foreground","aria-label":Et?n["%comment_aria_mark_as_unread%"]??"Mark as unread":n["%comment_aria_mark_as_read%"]??"Mark as read",children:Et?e.jsx($.MailOpen,{}):e.jsx($.Mail,{})}),Y===void 0?e.jsx(Io,{show:oe&&h!=="Resolved",onClick:()=>fe({threadId:w,status:"Resolved"}),ariaLabel:n["%comment_aria_resolve_thread%"]??"Resolve thread"}):Y]}),e.jsx("div",{className:"tw:flex tw:max-w-full tw:flex-wrap tw:items-baseline tw:gap-2",children:e.jsxs("p",{ref:rt,className:o.cn("tw:flex-1 tw:overflow-hidden tw:text-ellipsis tw:text-sm tw:font-normal tw:text-muted-foreground",{"tw:overflow-visible tw:text-clip tw:whitespace-normal tw:break-words":wt},{"tw:whitespace-nowrap":!wt}),children:[l&&O?e.jsx(o.Button,{variant:"ghost",size:"sm",className:"tw:h-auto tw:px-1 tw:py-0 tw:text-sm tw:font-normal tw:text-muted-foreground",onClick:T=>{T.stopPropagation(),O(p)},children:l}):l,e.jsxs("span",{className:r,children:[V.contextBefore,e.jsx("span",{className:"tw:font-bold",children:V.selectedText}),V.contextAfter]})]})}),D??er]}),e.jsxs(e.Fragment,{children:[ce&&!i&&e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-5",children:[e.jsx("div",{className:"tw:w-8",children:e.jsx(o.Separator,{})}),e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:je})]}),!i&&Yt(W)&&e.jsx(_r,{editorSerializedState:W,onSerializedChange:ft,placeholder:n["%comment_replyOrAssign%"]}),i&&e.jsxs(e.Fragment,{children:[Z&&ge.length>0&&e.jsx("div",{className:"tw:h-2","data-slot":"root-content-reply-gap","aria-hidden":"true"}),le>0&&e.jsxs("div",{className:"tw:flex tw:cursor-pointer tw:items-center tw:gap-5 tw:py-2",onClick:T=>{T.stopPropagation(),vt(!0)},role:"button",tabIndex:0,onKeyDown:T=>{(T.key==="Enter"||T.key===" ")&&(T.preventDefault(),T.stopPropagation(),vt(!0))},children:[e.jsx("div",{className:"tw:w-8",children:e.jsx(o.Separator,{})}),e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-2",children:[e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:Ce}),mt?e.jsx($.ChevronUp,{}):e.jsx($.ChevronDown,{})]})]}),ge.map(T=>{var at;return e.jsx("div",{children:e.jsx(Va,{comment:T,localizedStrings:n,isReply:!0,isThreadExpanded:i,handleUpdateComment:m,handleDeleteComment:x,onEditingChange:Xt,canEditOrDelete:(!X&&te.get(T.id))??!1,draftEditorState:(at=K.commentEdits)==null?void 0:at[T.id],onDraftEditorStateChange:ct=>J(T.id,ct)})},T.id)}),E!==!1&&(!X||Yt(W))&&e.jsx("div",{role:"textbox",tabIndex:-1,className:"tw:w-full tw:space-y-2",onClick:T=>T.stopPropagation(),onKeyDownCapture:T=>{ua(T)&&(T.preventDefault(),T.stopPropagation(),(Yt(W)||F!==void 0&&F!==dt)&&be())},onKeyDown:T=>{la(T),(T.key==="Enter"||T.key===" ")&&T.stopPropagation()},children:e.jsx(_r,{editorSerializedState:W,onSerializedChange:ft,placeholder:h==="Resolved"?n["%comment_reopenResolved%"]:n["%comment_replyOrAssign%"],autoFocus:!0,onClear:T=>{st.current=T},actions:e.jsxs(e.Fragment,{children:[F!==void 0&&(Yt(W)||F!==dt)?e.jsx("span",{className:"tw:flex-1 tw:text-sm tw:text-muted-foreground",children:B.formatReplacementString(Zt("%comment_assigning_to%",n,"Assigning to: {assignedUser}"),{assignedUser:mr(F,n)})}):e.jsx("div",{className:"tw:flex-1"}),e.jsxs(o.Popover,{open:Wt,onOpenChange:Nt,children:[e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ue,{isDisabled:de,disabledExplanation:Zt("%comment_aria_assign_user%",n,"Assign user"),children:e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsx(o.Button,{size:"icon-sm",variant:"outline",className:"tw:flex tw:items-center tw:justify-center tw:rounded-md",disabled:de,"aria-label":Zt("%comment_aria_assign_user%",n,"Assign user"),children:e.jsx($.AtSign,{})})})})}),e.jsx(o.TooltipContent,{children:Zt("%comment_aria_assign_user%",n,"Assign user")})]}),e.jsx(o.PopoverContent,{className:"tw:w-auto tw:p-0",align:"end",onKeyDown:T=>{T.key==="Escape"&&(T.stopPropagation(),Nt(!1))},children:e.jsx(o.Command,{children:e.jsx(o.CommandList,{children:f==null?void 0:f.map(T=>e.jsx(o.CommandItem,{onSelect:()=>{it({assignedUser:T!==c?T:void 0}),Pt.current="user-selected",gt(void 0),Nt(!1)},className:"tw:flex tw:items-center",children:e.jsx("span",{children:mr(T,n)})},T||"unassigned"))})})})]}),e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ue,{isDisabled:De,disabledExplanation:Zt("%comment_aria_submit_comment%",n,"Submit comment"),className:"tw:inline-flex",children:e.jsx(o.Button,{size:"icon-sm",onClick:be,className:"tw:flex tw:items-center tw:justify-center tw:rounded-md",disabled:De,"aria-label":Zt("%comment_aria_submit_comment%",n,"Submit comment"),children:e.jsx($.ArrowUp,{})})})}),e.jsx(o.TooltipContent,{children:Zt("%comment_aria_submit_comment%",n,"Submit comment")})]})]})})})]})]})]})})}),Ms=o.cn(Co,"tw:[&>blockquote]:my-0 tw:[&_p]:my-0","tw:[&_u]:font-semibold tw:[&_u]:text-success-foreground tw:[&_u]:no-underline","tw:[&_s]:text-destructive tw:[&_s]:line-through"),Ds=t=>t.replace(/(\s+)(<\/[us]>)/g,"$2$1"),vr=t=>Ds(B.sanitizeHtml(t));function br({html:t}){return e.jsx("div",{className:Ms,dangerouslySetInnerHTML:{__html:t}})}function Po({comment:t,localizedStrings:r,availableActions:a="acceptOrReject",resolvedResolution:n,onResolve:i,isResolving:l=!1}){const[c,d]=s.useState("accept"),u=s.useId(),w=s.useId(),p=a==="loading",h=a==="accept",g=a==="none",m=a==="acceptRejectOrMerge",x=h?"accept":c,y=s.useMemo(()=>vr(t.rejectedText??""),[t.rejectedText]),f=s.useMemo(()=>vr(t.acceptedText??""),[t.acceptedText]),E=s.useMemo(()=>vr(t.mergedText??""),[t.mergedText]),k=s.useMemo(()=>B.sanitizeHtml(t.contents),[t.contents]);if(!No(t))return e.jsx(br,{html:k});const N=P=>{d(P==="reject"||P==="merge"?P:"accept")},C=r["%conflict_note_stale_notice%"]??"The verse was edited after this conflict was recorded, so 'Use the other change' is no longer available. Keep the current text to resolve.",A=m?[{value:"merge",label:r["%conflict_note_option_combine%"]??"Combine both changes",html:E}]:[],R=[{value:"accept",label:r["%conflict_note_option_keep_current%"]??"Keep the current text",html:f},{value:"reject",label:r["%conflict_note_option_use_other%"]??"Use the other change",html:y},...A],O=x==="accept",I=l||O;let S;O?S=r["%conflict_note_save_disabled_tooltip%"]??"Keeping the current text makes no change — resolve the thread with the ✓ to keep it.":l||(S=r["%conflict_note_save_warning%"]??"This can't be undone.");const D=r["%conflict_note_no_result%"]??"No result preview available.",Y=e.jsx("p",{className:"tw:text-muted-foreground",children:D}),Z=P=>P?e.jsx("p",{className:"tw:whitespace-pre-wrap tw:text-foreground",children:P}):Y,L=()=>{const P=n??"accept";return P==="merged"?t.mergedText?e.jsx(br,{html:E}):Y:Z(P==="reject"?t.rejectedResultText:t.resultText)},j=P=>h&&P.value==="reject",et=P=>{const K=x===P.value,W=`${w}-${P.value}`,F=j(P);return e.jsxs("label",{htmlFor:W,"data-slot":"conflict-resolution-option","data-value":P.value,className:o.cn("tw:flex tw:flex-col tw:gap-1 tw:rounded-md tw:border tw:p-2","tw:focus-within:ring-2 tw:focus-within:ring-ring tw:focus-within:ring-offset-1",K?"tw:border-border tw:bg-accent/50":"tw:border-transparent tw:hover:bg-accent/30",F?"tw:cursor-not-allowed tw:opacity-60":"tw:cursor-pointer"),children:[e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-2",children:[e.jsx(o.RadioGroupItem,{id:W,value:P.value,"aria-label":P.label,disabled:F,"aria-describedby":F?u:void 0}),e.jsx("span",{"aria-hidden":!0,className:"tw:font-medium",children:P.label})]}),F&&e.jsx("span",{id:u,className:"tw:sr-only",children:C}),e.jsx(br,{html:P.html})]},P.value)};return e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-3 tw:text-sm",onClick:P=>P.stopPropagation(),children:[e.jsx("p",{children:r["%conflict_note_description_verseText%"]??"Conflicting changes were made to the verse text."}),p&&e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-2","data-slot":"conflict-loading",children:[e.jsx(o.Skeleton,{className:"tw:h-8 tw:w-full"}),e.jsx(o.Skeleton,{className:"tw:h-8 tw:w-full"}),e.jsx(o.Skeleton,{className:"tw:h-8 tw:w-24"})]}),!p&&g&&L(),!p&&!g&&e.jsxs(e.Fragment,{children:[e.jsx("p",{children:r["%conflict_note_choose_prompt%"]??"Select which change to keep:"}),e.jsx(o.RadioGroup,{value:x,onValueChange:N,disabled:l,"aria-label":r["%conflict_note_choose_aria_label%"]??"Choose resolution",children:R.map(P=>j(P)?e.jsx(o.TooltipProvider,{delayDuration:0,children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:et(P)}),e.jsx(o.TooltipContent,{children:C})]})},P.value):et(P))}),e.jsx(o.TooltipProvider,{delayDuration:0,children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ue,{isDisabled:I&&S!==void 0,disabledExplanation:S,className:"tw:inline-flex tw:self-start",children:e.jsx(o.Button,{size:"sm",disabled:I,onClick:()=>i==null?void 0:i(x),children:r["%conflict_note_save_and_resolve%"]??"Save and resolve"})})}),S&&e.jsx(o.TooltipContent,{children:S})]})})]})]})}const Is={accept:{key:"%conflict_note_summary_resolved_kept_current%",fallback:"Conflicting edits were resolved. Kept the current text."},reject:{key:"%conflict_note_summary_resolved_used_other%",fallback:"Conflicting edits were resolved. Used the other change."},merged:{key:"%conflict_note_summary_resolved_combined%",fallback:"Conflicting edits were resolved. Combined both changes."}};function Os({comment:t,localizedStrings:r,resolvedResolution:a}){const n=s.useMemo(()=>vr(t.rejectedText??""),[t.rejectedText]);if(a){const{key:l,fallback:c}=Is[a];return e.jsx("p",{className:"tw:text-sm tw:font-normal tw:text-muted-foreground",children:r[l]??c})}const i=r["%conflict_note_summary_unresolved%"]??"Conflicting edits. Choose which change to keep.";return e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-1",children:[e.jsx("p",{className:"tw:text-sm tw:font-normal tw:text-muted-foreground",children:i}),n?e.jsx(br,{html:n}):void 0]})}function Ps(t){return t==="reject"?"reject":t==="merge"?"merged":"accept"}function As({threadId:t,threadStatus:r,isSelected:a,activeComments:n,conflictResolution:i}){const[l,c]=s.useState("loading"),[d,u]=s.useState(!1),[w,p]=s.useState(),h=i==null?void 0:i.getOptions,g=i==null?void 0:i.resolve;s.useEffect(()=>{let k=!0;if(!a){c("loading");return}return(async()=>{let C;try{C=h?await h(t):"none"}catch{C="none"}k&&(c(C),C!=="none"&&p(void 0))})(),()=>{k=!1}},[a,t,r,h]);const m=s.useRef(!1),x=s.useCallback(async k=>{if(!(!g||m.current)){m.current=!0,u(!0);try{await g(t,k)&&(p(Ps(k)),c("none"))}catch{}finally{m.current=!1,u(!1)}}},[g,t]),f=s.useMemo(()=>{if(r==="Resolved"){for(let k=n.length-1;k>=0;k-=1)if(n[k].status==="Resolved")return Eo(n[k].conflictResolutionAction);return"accept"}},[r,n])??w;return{conflictOptions:l,isResolving:d,resolve:x,resolvedResolution:f,showResolveCheck:l!=="loading"&&l!=="none"}}const Ls=s.memo(function(r){const{comments:a,localizedStrings:n,isSelected:i=!1,threadId:l,threadStatus:c,conflictResolution:d}=r,u=s.useMemo(()=>a.filter(k=>!k.deleted),[a]),w=s.useMemo(()=>u.find(k=>k.conflictType)??u[0],[u]),{conflictOptions:p,isResolving:h,resolve:g,resolvedResolution:m,showResolveCheck:x}=As({threadId:l,threadStatus:c,isSelected:i,activeComments:u,conflictResolution:d}),y=No(w);let f;y&&w&&(f=i?e.jsx(Po,{comment:w,localizedStrings:n,availableActions:p,resolvedResolution:m,onResolve:g,isResolving:h}):e.jsx(Os,{comment:w,localizedStrings:n,resolvedResolution:m}));let E;return y&&(E=e.jsx(Io,{show:x,disabled:h,onClick:()=>g("accept"),ariaLabel:n["%comment_aria_resolve_thread%"]??"Resolve thread"})),e.jsx(Oo,{...r,activeComments:u,rootContentSlot:f,resolveActionSlot:E,spaceRootContentFromReplies:y&&i})});function Bs({className:t="",classNameForVerseText:r,threads:a,currentUser:n,localizedStrings:i,handleAddCommentToThread:l,handleUpdateComment:c,handleDeleteComment:d,handleReadStatusChange:u,assignableUsers:w,canUserAddCommentToThread:p,canUserAssignThreadCallback:h,canUserResolveThreadCallback:g,canUserEditOrDeleteCommentCallback:m,selectedThreadId:x,onSelectedThreadChange:y,onVerseRefClick:f,conflictResolution:E,drafts:k,onDraftChange:N}){const[C,A]=s.useState(new Set),[R,O]=s.useState(),[I,S]=s.useState(),D=s.useCallback(async F=>{const tt=await l(F);return tt!==void 0&&F.assignedUser!==void 0&&F.assignedUser!==""&&S(F.assignedUser),tt},[l]);s.useEffect(()=>{x&&(A(F=>new Set(F).add(x)),O(x))},[x]);const Y=a.filter(F=>F.comments.some(tt=>!tt.deleted)),Z=Y.map(F=>({id:F.id})),L=s.useCallback(F=>{A(tt=>new Set(tt).add(F.id)),O(F.id),y==null||y(F.id)},[y]),j=s.useCallback(F=>{const tt=C.has(F);A(lt=>{const it=new Set(lt);return it.has(F)?it.delete(F):it.add(F),it}),O(F),y==null||y(tt?void 0:F)},[C,y]),{listboxRef:et,activeId:P,handleKeyDown:K}=o.useListbox({options:Z,onOptionSelect:L}),W=s.useCallback(F=>{F.key==="Escape"?(R&&C.has(R)&&(A(tt=>{const lt=new Set(tt);return lt.delete(R),lt}),O(void 0),y==null||y(void 0)),F.preventDefault(),F.stopPropagation()):K(F)},[R,C,K,y]);return e.jsx("div",{id:To,role:"listbox",tabIndex:0,ref:et,"aria-activedescendant":P??void 0,"aria-label":"Comments",className:o.cn("tw:flex tw:w-full tw:flex-col tw:outline-hidden tw:focus:ring-2 tw:focus:ring-ring tw:focus:ring-offset-1 tw:focus:ring-offset-background",t),onKeyDown:W,children:Y.map(F=>{const tt={classNameForVerseText:r,comments:F.comments,localizedStrings:i,verseRef:F.verseRef,handleSelectThread:j,threadId:F.id,thread:F,isRead:F.isRead,isSelected:C.has(F.id),currentUser:n,assignedUser:F.assignedUser,threadStatus:F.status,handleAddCommentToThread:D,handleUpdateComment:c,handleDeleteComment:d,handleReadStatusChange:u,assignableUsers:w,canUserAddCommentToThread:p,canUserAssignThreadCallback:h,canUserResolveThreadCallback:g,canUserEditOrDeleteCommentCallback:m,onVerseRefClick:f,initialAssignedUser:I,draft:k==null?void 0:k[F.id],onDraftChange:N};return e.jsx("div",{className:o.cn("tw:border-b tw:border-border tw:last:border-b-0",{"tw:opacity-60":F.status==="Resolved"}),children:F.type==="Conflict"?e.jsx(Ls,{...tt,conflictResolution:E}):e.jsx(Oo,{...tt})},F.id)})})}const Ao=s.forwardRef(function({area:r,...a},n){return e.jsx(o.ContentZoomAreaProvider,{area:r,children:e.jsx("div",{ref:n,...a,"data-platform-content-zoom-root":r??""})})});Ao.displayName="ContentZoomRoot";function zs({table:t}){return e.jsxs(o.DropdownMenu,{children:[e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:"outline",size:"sm",className:"tw:ml-auto tw:hidden tw:h-8 tw:lg:flex",children:[e.jsx($.FilterIcon,{className:"tw:mr-2 tw:h-4 tw:w-4"}),"View"]})}),e.jsxs(o.DropdownMenuContent,{align:"end",className:"tw:w-[150px]",children:[e.jsx(o.DropdownMenuLabel,{children:"Toggle columns"}),e.jsx(o.DropdownMenuSeparator,{}),t.getAllColumns().filter(r=>r.getCanHide()).map(r=>e.jsx(o.DropdownMenuCheckboxItem,{className:"tw:capitalize",checked:r.getIsVisible(),onCheckedChange:a=>r.toggleVisibility(!!a),children:r.id},r.id))]})]})}function Te({...t}){return e.jsx(G.Select.Root,{"data-slot":"select",...t})}function Lo({className:t,...r}){return e.jsx(G.Select.Group,{"data-slot":"select-group",className:o.cn("tw:scroll-my-1 tw:p-1",t),...r})}function Se({...t}){return e.jsx(G.Select.Value,{"data-slot":"select-value",...t})}function Re({className:t,size:r="default",children:a,...n}){const i=o.readDirection();return e.jsxs(G.Select.Trigger,{"data-slot":"select-trigger","data-size":r,className:o.cn("pr-twp tw:flex tw:w-fit tw:items-center tw:gap-2 tw:rounded-lg tw:border tw:border-input tw:bg-transparent tw:py-2 tw:pe-2 tw:ps-2.5 tw:text-sm tw:whitespace-nowrap tw:transition-colors tw:outline-none tw:select-none tw:focus-visible:border-ring tw:focus-visible:ring-3 tw:focus-visible:ring-ring/50 tw:disabled:cursor-not-allowed tw:disabled:opacity-50 tw:aria-invalid:border-destructive tw:aria-invalid:ring-3 tw:aria-invalid:ring-destructive/20 tw:data-placeholder:text-muted-foreground tw:data-[size=default]:h-8 tw:data-[size=sm]:h-7 tw:data-[size=sm]:rounded-[min(var(--tw-radius-md),10px)] tw:*:data-[slot=select-value]:line-clamp-1 tw:*:data-[slot=select-value]:flex tw:*:data-[slot=select-value]:flex-1 tw:*:data-[slot=select-value]:items-center tw:*:data-[slot=select-value]:gap-1.5 tw:*:data-[slot=select-value]:text-start tw:dark:bg-input/30 tw:dark:hover:bg-input/50 tw:dark:aria-invalid:border-destructive/50 tw:dark:aria-invalid:ring-destructive/40 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),dir:i,...n,children:[a,e.jsx(G.Select.Icon,{asChild:!0,children:e.jsx(Rt.IconSelector,{className:"tw:pointer-events-none tw:size-4 tw:text-muted-foreground"})})]})}function Me({className:t,children:r,position:a="popper",align:n="center",style:i,...l}){const c=o.readDirection();return e.jsx(G.Select.Portal,{children:e.jsxs(G.Select.Content,{"data-slot":"select-content","data-align-trigger":a==="item-aligned",className:o.cn("pr-twp tw:relative tw:max-h-(--radix-select-content-available-height) tw:data-[align-trigger=true]:min-w-(--radix-select-trigger-width) tw:data-[align-trigger=false]:min-w-36 tw:origin-(--radix-select-content-transform-origin) tw:overflow-x-hidden tw:overflow-y-auto tw:rounded-lg tw:bg-popover tw:text-popover-foreground tw:shadow-md tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[align-trigger=true]:animate-none tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",a==="popper"&&"tw:data-[side=bottom]:translate-y-1 tw:data-[side=left]:-translate-x-1 tw:rtl:data-[side=left]:translate-x-1 tw:data-[side=right]:translate-x-1 tw:rtl:data-[side=right]:-translate-x-1 tw:data-[side=top]:-translate-y-1",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...i},position:a,align:n,...l,children:[e.jsx(Bo,{}),e.jsx(G.Select.Viewport,{"data-position":a,className:o.cn("tw:data-[position=popper]:h-(--radix-select-trigger-height) tw:data-[position=popper]:w-full tw:data-[position=popper]:min-w-(--radix-select-trigger-width)",a==="popper"&&"tw:"),children:e.jsx("div",{dir:c,children:r})}),e.jsx(zo,{})]})})}function Vs({className:t,...r}){return e.jsx(G.Select.Label,{"data-slot":"select-label",className:o.cn("pr-twp tw:px-1.5 tw:py-1 tw:text-xs tw:text-muted-foreground",t),...r})}function ae({className:t,children:r,...a}){return e.jsxs(G.Select.Item,{"data-slot":"select-item",className:o.cn("pr-twp tw:relative tw:flex tw:w-full tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:py-1 tw:pe-8 tw:ps-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:not-data-[variant=destructive]:focus:**:text-accent-foreground tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4 tw:*:[span]:last:flex tw:*:[span]:last:items-center tw:*:[span]:last:gap-2",t),...a,children:[e.jsx("span",{className:"tw:pointer-events-none tw:absolute tw:end-2 tw:flex tw:size-4 tw:items-center tw:justify-center",children:e.jsx(G.Select.ItemIndicator,{children:e.jsx(Rt.IconCheck,{className:"tw:pointer-events-none"})})}),e.jsx(G.Select.ItemText,{children:r})]})}function $s({className:t,...r}){return e.jsx(G.Select.Separator,{"data-slot":"select-separator",className:o.cn("pr-twp tw:pointer-events-none tw:-mx-1 tw:my-1 tw:h-px tw:bg-border",t),...r})}function Bo({className:t,...r}){return e.jsx(G.Select.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:o.cn("pr-twp tw:z-10 tw:flex tw:cursor-default tw:items-center tw:justify-center tw:bg-popover tw:py-1 tw:[&_svg:not([class*=size-])]:size-4",t),...r,children:e.jsx(Rt.IconChevronUp,{})})}function zo({className:t,...r}){return e.jsx(G.Select.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:o.cn("pr-twp tw:z-10 tw:flex tw:cursor-default tw:items-center tw:justify-center tw:bg-popover tw:py-1 tw:[&_svg:not([class*=size-])]:size-4",t),...r,children:e.jsx(Rt.IconChevronDown,{})})}function Fs({table:t}){return e.jsx("div",{className:"tw:flex tw:items-center tw:justify-between tw:px-2 tw:pb-3 tw:pt-3",children:e.jsxs("div",{className:"tw:flex tw:items-center tw:space-x-6 tw:lg:space-x-8",children:[e.jsxs("div",{className:"tw:flex-1 tw:text-sm tw:text-muted-foreground",children:[t.getFilteredSelectedRowModel().rows.length," of"," ",t.getFilteredRowModel().rows.length," row(s) selected"]}),e.jsxs("div",{className:"tw:flex tw:items-center tw:space-x-2",children:[e.jsx("p",{className:"tw:text-nowrap tw:text-sm tw:font-medium",children:"Rows per page"}),e.jsxs(Te,{value:`${t.getState().pagination.pageSize}`,onValueChange:r=>{t.setPageSize(Number(r))},children:[e.jsx(Re,{className:"tw:h-8 tw:w-[70px]",children:e.jsx(Se,{placeholder:t.getState().pagination.pageSize})}),e.jsx(Me,{side:"top",children:[10,20,30,40,50].map(r=>e.jsx(ae,{value:`${r}`,children:r},r))})]})]}),e.jsxs("div",{className:"tw:flex tw:w-[100px] tw:items-center tw:justify-center tw:text-sm tw:font-medium",children:["Page ",t.getState().pagination.pageIndex+1," of ",t.getPageCount()]}),e.jsxs("div",{className:"tw:flex tw:items-center tw:space-x-2",children:[e.jsxs(o.Button,{variant:"outline",size:"icon",className:"tw:hidden tw:h-8 tw:w-8 tw:p-0 tw:lg:flex",onClick:()=>t.setPageIndex(0),disabled:!t.getCanPreviousPage(),children:[e.jsx("span",{className:"tw:sr-only",children:"Go to first page"}),e.jsx($.ArrowLeftIcon,{className:"tw:h-4 tw:w-4"})]}),e.jsxs(o.Button,{variant:"outline",size:"icon",className:"tw:h-8 tw:w-8 tw:p-0",onClick:()=>t.previousPage(),disabled:!t.getCanPreviousPage(),children:[e.jsx("span",{className:"tw:sr-only",children:"Go to previous page"}),e.jsx($.ChevronLeftIcon,{className:"tw:h-4 tw:w-4"})]}),e.jsxs(o.Button,{variant:"outline",size:"icon",className:"tw:h-8 tw:w-8 tw:p-0",onClick:()=>t.nextPage(),disabled:!t.getCanNextPage(),children:[e.jsx("span",{className:"tw:sr-only",children:"Go to next page"}),e.jsx($.ChevronRightIcon,{className:"tw:h-4 tw:w-4"})]}),e.jsxs(o.Button,{variant:"outline",size:"icon",className:"tw:hidden tw:h-8 tw:w-8 tw:p-0 tw:lg:flex",onClick:()=>t.setPageIndex(t.getPageCount()-1),disabled:!t.getCanNextPage(),children:[e.jsx("span",{className:"tw:sr-only",children:"Go to last page"}),e.jsx($.ArrowRightIcon,{className:"tw:h-4 tw:w-4"})]})]})]})})}function Vo({columns:t,data:r,enablePagination:a=!1,showPaginationControls:n=!1,showColumnVisibilityControls:i=!1,stickyHeader:l=!1,onRowClickHandler:c=()=>{},id:d,isLoading:u=!1,noResultsMessage:w}){var R;const[p,h]=s.useState([]),[g,m]=s.useState([]),[x,y]=s.useState({}),[f,E]=s.useState({}),k=s.useMemo(()=>r??[],[r]),N=Gt.useReactTable({data:k,columns:t,getCoreRowModel:Gt.getCoreRowModel(),...a&&{getPaginationRowModel:Gt.getPaginationRowModel()},onSortingChange:h,getSortedRowModel:Gt.getSortedRowModel(),onColumnFiltersChange:m,getFilteredRowModel:Gt.getFilteredRowModel(),onColumnVisibilityChange:y,onRowSelectionChange:E,state:{sorting:p,columnFilters:g,columnVisibility:x,rowSelection:f}}),C=N.getVisibleFlatColumns();let A;return u?A=Array.from({length:10}).map((S,D)=>`skeleton-row-${D}`).map(S=>e.jsx(o.TableRow,{className:"tw:hover:bg-transparent",children:e.jsx(o.TableCell,{colSpan:C.length??t.length,className:"tw:border-0 tw:p-0",children:e.jsx("div",{className:"tw:w-full tw:py-2",children:e.jsx(o.Skeleton,{className:"tw:h-14 tw:w-full tw:rounded-md"})})})},S)):((R=N.getRowModel().rows)==null?void 0:R.length)>0?A=N.getRowModel().rows.map(O=>e.jsx(o.TableRow,{onClick:()=>c(O,N),"data-state":O.getIsSelected()&&"selected",children:O.getVisibleCells().map(I=>e.jsx(o.TableCell,{children:Gt.flexRender(I.column.columnDef.cell,I.getContext())},I.id))},O.id)):A=e.jsx(o.TableRow,{children:e.jsx(o.TableCell,{colSpan:t.length,className:"tw:h-24 tw:text-center",children:w})}),e.jsxs("div",{className:"pr-twp",id:d,children:[i&&e.jsx(zs,{table:N}),e.jsxs(o.Table,{stickyHeader:l,children:[e.jsx(o.TableHeader,{stickyHeader:l,children:N.getHeaderGroups().map(O=>e.jsx(o.TableRow,{children:O.headers.map(I=>e.jsx(o.TableHead,{className:"tw:p-0",children:I.isPlaceholder?void 0:Gt.flexRender(I.column.columnDef.header,I.getContext())},I.id))},O.id))}),e.jsx(o.TableBody,{children:A})]}),a&&e.jsxs("div",{className:"tw:flex tw:items-center tw:justify-end tw:space-x-2 tw:py-4",children:[e.jsx(o.Button,{variant:"outline",size:"sm",onClick:()=>N.previousPage(),disabled:!N.getCanPreviousPage(),children:"Previous"}),e.jsx(o.Button,{variant:"outline",size:"sm",onClick:()=>N.nextPage(),disabled:!N.getCanNextPage(),children:"Next"})]}),a&&n&&e.jsx(Fs,{table:N})]})}function Us({id:t,markdown:r,className:a,anchorTarget:n,truncate:i}){const l=s.useMemo(()=>({overrides:{a:{props:{target:n,rel:n==="_blank"?"noopener noreferrer":void 0}}}}),[n]);return e.jsx("div",{id:t,className:o.cn("pr-twp tw:prose",{"tw:line-clamp-3 tw:max-h-10 tw:overflow-hidden tw:text-ellipsis tw:break-words":i},a),children:e.jsx(In,{options:l,children:r})})}const $o=Object.freeze(["%webView_error_dump_header%","%webView_error_dump_info_message%"]),$a=(t,r)=>t[r]??r;function Fo({errorDetails:t,handleCopyNotify:r,localizedStrings:a,id:n}){const i=$a(a,"%webView_error_dump_header%"),l=$a(a,"%webView_error_dump_info_message%");function c(){navigator.clipboard.writeText(t),r&&r()}return e.jsxs("div",{id:n,className:"tw:inline-flex tw:w-full tw:flex-col tw:items-start tw:justify-start tw:gap-4",children:[e.jsxs("div",{className:"tw:inline-flex tw:items-start tw:justify-start tw:gap-4 tw:self-stretch",children:[e.jsxs("div",{className:"tw:inline-flex tw:flex-1 tw:flex-col tw:items-start tw:justify-start",children:[e.jsx("div",{className:"tw:text-color-text tw:justify-center tw:text-center tw:text-lg tw:font-semibold tw:leading-loose",children:i}),e.jsx("div",{className:"tw:justify-center tw:self-stretch tw:text-sm tw:font-normal tw:leading-tight tw:text-muted-foreground",children:l})]}),e.jsx(o.Button,{variant:"secondary",size:"icon",className:"size-8",onClick:()=>c(),children:e.jsx($.Copy,{})})]}),e.jsx("div",{className:"tw:prose tw:w-full",children:e.jsx("pre",{className:"tw:text-xs",children:t})})]})}const Gs=Object.freeze([...$o,"%webView_error_dump_copied_message%"]);function Ks({errorDetails:t,handleCopyNotify:r,localizedStrings:a,children:n,className:i,id:l}){const[c,d]=s.useState(!1),u=()=>{d(!0),r&&r()},w=p=>{p||d(!1)};return e.jsxs(o.Popover,{onOpenChange:w,children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:n}),e.jsxs(o.PopoverContent,{id:l,className:o.cn("tw:min-w-80 tw:max-w-96",i),children:[c&&a["%webView_error_dump_copied_message%"]&&e.jsx(o.Label,{children:a["%webView_error_dump_copied_message%"]}),e.jsx(Fo,{errorDetails:t,handleCopyNotify:u,localizedStrings:a})]})]})}var Uo=(t=>(t[t.Check=0]="Check",t[t.Radio=1]="Radio",t))(Uo||{});function Hs({id:t,label:r,groups:a}){const[n,i]=s.useState(Object.fromEntries(a.map((w,p)=>w.itemType===0?[p,[]]:void 0).filter(w=>!!w))),[l,c]=s.useState({}),d=(w,p)=>{const h=!n[w][p];i(m=>(m[w][p]=h,{...m}));const g=a[w].items[p];g.onUpdate(g.id,h)},u=(w,p)=>{c(g=>(g[w]=p,{...g}));const h=a[w].items.find(g=>g.id===p);h?h.onUpdate(p):console.error(`Could not find dropdown radio item with id '${p}'!`)};return e.jsx("div",{id:t,children:e.jsxs(o.DropdownMenu,{children:[e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:"default",children:[e.jsx($.Filter,{size:16,className:"tw:mr-2 tw:h-4 tw:w-4"}),r,e.jsx($.ChevronDown,{size:16,className:"tw:ml-2 tw:h-4 tw:w-4"})]})}),e.jsx(o.DropdownMenuContent,{children:a.map((w,p)=>e.jsxs("div",{children:[e.jsx(o.DropdownMenuLabel,{children:w.label}),e.jsx(o.DropdownMenuGroup,{children:w.itemType===0?e.jsx(e.Fragment,{children:w.items.map((h,g)=>e.jsx("div",{children:e.jsx(o.DropdownMenuCheckboxItem,{checked:n[p][g],onCheckedChange:()=>d(p,g),children:h.label})},h.id))}):e.jsx(o.DropdownMenuRadioGroup,{value:l[p],onValueChange:h=>u(p,h),children:w.items.map(h=>e.jsx("div",{children:e.jsx(o.DropdownMenuRadioItem,{value:h.id,children:h.label})},h.id))})}),e.jsx(o.DropdownMenuSeparator,{})]},w.label))})]})})}function qs({id:t,category:r,downloads:a,languages:n,moreInfoUrl:i,handleMoreInfoLinkClick:l,supportUrl:c,handleSupportLinkClick:d}){const u=new B.NumberFormat("en",{notation:"compact",compactDisplay:"short"}).format(Object.values(a).reduce((p,h)=>p+h,0)),w=()=>{window.scrollTo(0,document.body.scrollHeight)};return e.jsxs("div",{id:t,className:"pr-twp tw:flex tw:items-center tw:justify-center tw:divide-x tw:border-b tw:border-t tw:py-2 tw:text-center",children:[r&&e.jsxs("div",{className:"tw:flex tw:flex-col tw:items-center tw:gap-1 tw:px-4",children:[e.jsx("div",{className:"tw:flex",children:e.jsx("span",{className:"tw:text-xs tw:font-semibold tw:text-foreground",children:r})}),e.jsx("span",{className:"tw:text-xs tw:text-foreground",children:"CATEGORY"})]}),e.jsxs("div",{className:"tw:flex tw:flex-col tw:items-center tw:gap-1 tw:px-4",children:[e.jsxs("div",{className:"tw:flex tw:gap-1",children:[e.jsx($.User,{className:"tw:h-4 tw:w-4"}),e.jsx("span",{className:"tw:text-xs tw:font-semibold tw:text-foreground",children:u})]}),e.jsx("span",{className:"tw:text-xs tw:text-foreground",children:"USERS"})]}),e.jsxs("div",{className:"tw:flex tw:flex-col tw:items-center tw:gap-1 tw:px-4",children:[e.jsx("div",{className:"tw:flex tw:gap-2",children:n.slice(0,3).map(p=>e.jsx("span",{className:"tw:text-xs tw:font-semibold tw:text-foreground",children:p.toUpperCase()},p))}),n.length>3&&e.jsxs("button",{type:"button",onClick:()=>w(),className:"tw:text-xs tw:text-foreground tw:underline",children:["+",n.length-3," more languages"]})]}),(i||c)&&e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-1 tw:px-4",children:[i&&e.jsx("div",{className:"tw:flex tw:gap-1",children:e.jsxs(o.Button,{onClick:()=>l(),variant:"link",className:"tw:flex tw:h-auto tw:gap-1 tw:py-0 tw:text-xs tw:font-semibold tw:text-foreground",children:["Website",e.jsx($.Link,{className:"tw:h-4 tw:w-4"})]})}),c&&e.jsx("div",{className:"tw:flex tw:gap-1",children:e.jsxs(o.Button,{onClick:()=>d(),variant:"link",className:"tw:flex tw:h-auto tw:gap-1 tw:py-0 tw:text-xs tw:font-semibold tw:text-foreground",children:["Support",e.jsx($.CircleHelp,{className:"tw:h-4 tw:w-4"})]})})]})]})}function Ys({id:t,versionHistory:r}){const[a,n]=s.useState(!1),i=new Date;function l(d){const u=new Date(d),w=new Date(i.getTime()-u.getTime()),p=w.getUTCFullYear()-1970,h=w.getUTCMonth(),g=w.getUTCDate()-1;let m="";return p>0?m=`${p.toString()} year${p===1?"":"s"} ago`:h>0?m=`${h.toString()} month${h===1?"":"s"} ago`:g===0?m="today":m=`${g.toString()} day${g===1?"":"s"} ago`,m}const c=Object.entries(r).sort((d,u)=>u[0].localeCompare(d[0]));return e.jsxs("div",{className:"pr-twp",id:t,children:[e.jsx("h3",{className:"tw:text-md tw:font-semibold",children:"What`s New"}),e.jsx("ul",{className:"tw:list-disc tw:pl-5 tw:pr-4 tw:text-xs tw:text-foreground",children:(a?c:c.slice(0,5)).map(d=>e.jsxs("div",{className:"tw:mt-3 tw:flex tw:justify-between",children:[e.jsx("div",{className:"tw:text-foreground",children:e.jsx("li",{className:"tw:prose tw:text-xs",children:e.jsx("span",{children:d[1].description})})}),e.jsxs("div",{className:"tw:justify-end tw:text-right",children:[e.jsxs("div",{children:["Version ",d[0]]}),e.jsx("div",{children:l(d[1].date)})]})]},d[0]))}),c.length>5&&e.jsx("button",{type:"button",onClick:()=>n(!a),className:"tw:text-xs tw:text-foreground tw:underline",children:a?"Show Less Version History":"Show All Version History"})]})}function Zs({id:t,publisherDisplayName:r,fileSize:a,locales:n,versionHistory:i,currentVersion:l}){const c=s.useMemo(()=>B.formatBytes(a),[a]),u=(w=>{const p=new Intl.DisplayNames(B.getCurrentLocale(),{type:"language"});return w.map(h=>p.of(h))})(n);return e.jsx("div",{id:t,className:"pr-twp tw:border-t tw:py-2",children:e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-2 tw:divide-y",children:[Object.entries(i).length>0&&e.jsx(Ys,{versionHistory:i}),e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-2 tw:py-2",children:[e.jsx("h2",{className:"tw:text-md tw:font-semibold",children:"Information"}),e.jsxs("div",{className:"tw:flex tw:items-start tw:justify-between tw:text-xs tw:text-foreground",children:[e.jsxs("p",{className:"tw:flex tw:flex-col tw:justify-start tw:gap-1",children:[e.jsx("span",{children:"Publisher"}),e.jsx("span",{className:"tw:font-semibold",children:r}),e.jsx("span",{children:"Size"}),e.jsx("span",{className:"tw:font-semibold",children:c})]}),e.jsx("div",{className:"tw:flex tw:w-3/4 tw:items-center tw:justify-between tw:text-xs tw:text-foreground",children:e.jsxs("p",{className:"tw:flex tw:flex-col tw:justify-start tw:gap-1",children:[e.jsx("span",{children:"Version"}),e.jsx("span",{className:"tw:font-semibold",children:l}),e.jsx("span",{children:"Languages"}),e.jsx("span",{className:"tw:font-semibold",children:u.join(", ")})]})})]})]})]})})}function Xs({entries:t,selected:r,onChange:a,placeholder:n,commandEmptyMessage:i,customSelectedText:l,isDisabled:c,sortSelected:d,icon:u,className:w,badgesPlaceholder:p,id:h}){return e.jsxs("div",{id:h,className:"tw:flex tw:items-center tw:gap-2",children:[e.jsx(o.MultiSelectComboBox,{entries:t,selected:r,onChange:a,placeholder:n,commandEmptyMessage:i,customSelectedText:l,isDisabled:c,sortSelected:d,icon:u,className:w}),r.length>0?e.jsx("div",{className:"tw:flex tw:flex-wrap tw:items-center tw:gap-2",children:r.map(g=>{var m;return e.jsxs(o.Badge,{variant:"muted",className:"tw:flex tw:items-center tw:gap-1",children:[e.jsx(o.Button,{variant:"ghost",size:"icon",className:"tw:h-4 tw:w-4 tw:p-0 tw:hover:bg-transparent",onClick:()=>a(r.filter(x=>x!==g)),children:e.jsx($.X,{className:"tw:h-3 tw:w-3"})}),(m=t.find(x=>x.value===g))==null?void 0:m.label]},g)})}):e.jsx(o.Label,{children:p})]})}const Go=Object.freeze(["%undoButton_tooltip%","%redoButton_tooltip%"]),Fa=(t,r)=>t[r]??r;function Ko({onUndoClick:t,onRedoClick:r,canUndo:a=!0,canRedo:n=!0,localizedStrings:i={},showKeyboardShortcuts:l=!0,className:c="tw:h-6 tw:w-6",variant:d="ghost"}){const u=o.isMacOs(),w=Fa(i,"%undoButton_tooltip%"),p=Fa(i,"%redoButton_tooltip%"),h=d==="secondary"||d==="default";return e.jsxs(o.ButtonGroup,{children:[e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{"aria-label":w,className:c,size:"icon",onClick:t,disabled:!a,variant:d,children:e.jsx($.Undo,{})})}),e.jsx(o.TooltipContent,{children:e.jsxs("p",{children:[w,l&&e.jsxs(e.Fragment,{children:[" ",e.jsx(o.Kbd,{children:u?"⌘Z":"Ctrl+Z"})]})]})})]})}),r&&h&&e.jsx(o.ButtonGroupSeparator,{}),r&&e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{"aria-label":p,className:c,size:"icon",onClick:r,disabled:!n,variant:d,children:e.jsx($.Redo,{})})}),e.jsx(o.TooltipContent,{children:e.jsxs("p",{children:[p,l&&e.jsxs(e.Fragment,{children:[" ",e.jsx(o.Kbd,{children:u?"⌘⇧Z":"Ctrl+Y"})]})]})})]})})]})}function Ho({children:t,editorRef:r,canUndo:a=!0,canRedo:n=!0}){const i=s.useRef(null);return s.useEffect(()=>{var u;const l=o.isMacOs(),c=((u=i.current)==null?void 0:u.querySelector(".editor-input"))??void 0,d=w=>{var h,g,m,x;if(!c||document.activeElement!==c)return;const p=w.key.toLowerCase();if(l){if(!w.metaKey)return;!w.shiftKey&&p==="z"?(w.preventDefault(),a&&((h=r.current)==null||h.undo())):w.shiftKey&&p==="z"&&(w.preventDefault(),n&&((g=r.current)==null||g.redo()))}else{if(!w.ctrlKey)return;!w.shiftKey&&p==="z"?(w.preventDefault(),a&&((m=r.current)==null||m.undo())):(p==="y"||w.shiftKey&&p==="z")&&(w.preventDefault(),n&&((x=r.current)==null||x.redo()))}};return document.addEventListener("keydown",d),()=>document.removeEventListener("keydown",d)},[n,a,r]),e.jsx("div",{ref:i,children:t})}function qo(){const t=s.useRef(void 0),r=s.useRef(new DOMRect),a=s.useRef({getBoundingClientRect:()=>{var l;const i=(l=t.current)==null?void 0:l.measure();return i&&(r.current=i),r.current},get contextElement(){var i;return(i=t.current)==null?void 0:i.contextElement}}),n=s.useCallback(i=>{t.current=i,r.current=i.measure()??new DOMRect},[]);return s.useMemo(()=>({virtualRef:a,setSource:n}),[n])}function Yo(t){if(t.getClientRects().length!==0)return t.getBoundingClientRect()}function Zo(t){return new DOMRect(t.left,t.top,0,t.height)}function Ws(t){if(t.getClientRects().length!==0)return t.getBoundingClientRect()}const Js=(t,r,a)=>t==="generated"?e.jsxs(e.Fragment,{children:[e.jsx("p",{children:"+"})," ",r["%footnoteEditor_callerDropdown_item_generated%"]]}):t==="hidden"?e.jsxs(e.Fragment,{children:[e.jsx("p",{children:"-"})," ",r["%footnoteEditor_callerDropdown_item_hidden%"]]}):e.jsxs(e.Fragment,{children:[e.jsx("p",{children:a})," ",r["%footnoteEditor_callerDropdown_item_custom%"]]});function Qs({callerType:t,customCaller:r,updateCaller:a,localizedStrings:n}){const i=s.useRef(null),l=s.useRef(null),c=s.useRef(!1),[d,u]=s.useState(t),[w,p]=s.useState(r),[h,g]=s.useState(!1),m=s.useRef(!1),x=s.useRef(d);x.current=d;const y=s.useRef(w);y.current=w,s.useEffect(()=>{u(t)},[t]),s.useEffect(()=>{w!==r&&p(r)},[r]);const f=k=>{if(c.current=!1,g(k),!k){const N=x.current,C=y.current;N!=="custom"||C?(N!==t||C!==r)&&a(N,C):(u(t),p(r))}},E=k=>{var N,C,A,R;k.stopPropagation(),document.activeElement===l.current&&k.key==="ArrowDown"||k.key==="ArrowRight"?((N=i.current)==null||N.focus(),c.current=!0):document.activeElement===i.current&&k.key==="ArrowUp"?((C=l.current)==null||C.focus(),c.current=!1):document.activeElement===i.current&&k.key==="ArrowLeft"&&((A=i.current)==null?void 0:A.selectionStart)===0&&((R=l.current)==null||R.focus(),c.current=!1),d==="custom"&&k.key==="Enter"&&(document.activeElement===l.current||document.activeElement===i.current)&&f(!1)};return e.jsxs(o.DropdownMenu,{open:h,onOpenChange:f,children:[e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsx(o.Button,{variant:"outline",className:"tw:h-6",children:Js(t,n,r)})})}),e.jsx(o.TooltipContent,{children:n["%footnoteEditor_callerDropdown_tooltip%"]})]})}),e.jsxs(o.DropdownMenuContent,{style:{zIndex:o.Z_INDEX_ABOVE_POPOVER},onClick:()=>{c.current&&(c.current=!1)},onKeyDown:E,onMouseMove:()=>{var k;c.current&&((k=i.current)==null||k.focus())},children:[e.jsx(o.DropdownMenuLabel,{children:n["%footnoteEditor_callerDropdown_label%"]}),e.jsx(o.DropdownMenuSeparator,{}),e.jsx(o.DropdownMenuCheckboxItem,{checked:d==="generated",onCheckedChange:()=>u("generated"),children:e.jsxs("div",{className:"tw:flex tw:w-full tw:justify-between",children:[e.jsx("span",{children:n["%footnoteEditor_callerDropdown_item_generated%"]}),e.jsx("span",{className:"tw:w-10 tw:text-center",children:Ft.GENERATOR_NOTE_CALLER})]})}),e.jsx(o.DropdownMenuCheckboxItem,{checked:d==="hidden",onCheckedChange:()=>u("hidden"),children:e.jsxs("div",{className:"tw:flex tw:w-full tw:justify-between",children:[e.jsx("span",{children:n["%footnoteEditor_callerDropdown_item_hidden%"]}),e.jsx("span",{className:"tw:w-10 tw:text-center",children:Ft.HIDDEN_NOTE_CALLER})]})}),e.jsx(o.DropdownMenuCheckboxItem,{ref:l,checked:d==="custom",onCheckedChange:()=>u("custom"),onPointerDown:()=>{m.current=d==="custom"},onClick:k=>{var N;if(k.stopPropagation(),m.current&&k.target!==i.current){f(!1);return}c.current=!0,(N=i.current)==null||N.focus()},onSelect:k=>k.preventDefault(),children:e.jsxs("div",{className:"tw:flex tw:w-full tw:justify-between",children:[e.jsx("span",{children:n["%footnoteEditor_callerDropdown_item_custom%"]}),e.jsx(o.Input,{tabIndex:0,onMouseDown:k=>{k.stopPropagation(),u("custom"),c.current=!0},ref:i,className:"tw:h-auto tw:w-10 tw:p-0 tw:text-center",value:w,onKeyDown:k=>{k.key==="Enter"||k.key==="ArrowUp"||k.key==="ArrowDown"||k.key==="ArrowLeft"||k.key==="ArrowRight"||k.stopPropagation()},maxLength:1,onChange:k=>p(k.target.value)})]})})]})]})}const tc=(t,r)=>t==="f"?e.jsxs(e.Fragment,{children:[e.jsx($.FunctionSquare,{})," ",r["%footnoteEditor_noteType_footnote_label%"]]}):t==="fe"?e.jsxs(e.Fragment,{children:[e.jsx($.SquareSigma,{})," ",r["%footnoteEditor_noteType_endNote_label%"]]}):e.jsxs(e.Fragment,{children:[e.jsx($.SquareX,{})," ",r["%footnoteEditor_noteType_crossReference_label%"]]}),ec=(t,r)=>{if(t==="x")return r["%footnoteEditor_noteType_crossReference_label%"];let a=r["%footnoteEditor_noteType_endNote_label%"];return t==="f"&&(a=r["%footnoteEditor_noteType_footnote_label%"]),B.formatReplacementString(r["%footnoteEditor_noteType_tooltip%"]??"",{noteType:a})};function rc({noteType:t,handleNoteTypeChange:r,localizedStrings:a,isTypeSwitchable:n}){return e.jsxs(o.DropdownMenu,{children:[e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsx(o.Button,{variant:"outline",className:"tw:h-6",children:tc(t,a)})})}),e.jsx(o.TooltipContent,{children:e.jsx("p",{children:ec(t,a)})})]})}),e.jsxs(o.DropdownMenuContent,{style:{zIndex:o.Z_INDEX_ABOVE_POPOVER},children:[e.jsx(o.DropdownMenuLabel,{children:a["%footnoteEditor_noteTypeDropdown_label%"]}),e.jsx(o.DropdownMenuSeparator,{}),e.jsxs(o.DropdownMenuCheckboxItem,{disabled:t!=="x"&&!n,checked:t==="x",onCheckedChange:()=>r("x"),className:"tw:gap-2",children:[e.jsx($.SquareX,{}),e.jsx("span",{children:a["%footnoteEditor_noteType_crossReference_label%"]})]}),e.jsxs(o.DropdownMenuCheckboxItem,{disabled:t==="x"&&!n,checked:t==="f",onCheckedChange:()=>r("f"),className:"tw:gap-2",children:[e.jsx($.FunctionSquare,{}),e.jsx("span",{children:a["%footnoteEditor_noteType_footnote_label%"]})]}),e.jsxs(o.DropdownMenuCheckboxItem,{disabled:t==="x"&&!n,checked:t==="fe",onCheckedChange:()=>r("fe"),className:"tw:gap-2",children:[e.jsx($.SquareSigma,{}),e.jsx("span",{children:a["%footnoteEditor_noteType_endNote_label%"]})]})]})]})}const Xo=Object.freeze(["%markerMenu_deprecated_label%","%markerMenu_disallowed_label%","%markerMenu_noResults%","%markerMenu_searchPlaceholder%","%markerMenu_searchPlaceholder_character%","%markerMenu_searchPlaceholder_insert%","%markerMenu_searchPlaceholder_paragraph%"]);function ac({icon:t,className:r}){const a=t??$.Ban;return e.jsx(a,{className:r,size:16})}function oc({state:t}){return e.jsx("div",{"data-slot":"marker-selection-state",className:"tw:flex tw:w-4 tw:min-w-4 tw:items-center tw:justify-center",children:t!=="none"&&e.jsx($.Check,{size:16})})}function Ua({item:t,localizedStrings:r}){return e.jsxs(o.CommandItem,{className:"tw:flex tw:gap-2 tw:hover:bg-accent",disabled:t.isDisallowed||t.isDeprecated||t.isDisabled,"aria-checked":t.selectionState===void 0?void 0:{all:!0,partial:"mixed",none:!1}[t.selectionState],onSelect:t.action,children:[t.selectionState!==void 0&&e.jsx(oc,{state:t.selectionState}),e.jsx("div",{className:"tw:w-8 tw:min-w-8",children:t.marker?e.jsx("span",{className:"tw:font-mono tw:text-xs",children:t.marker}):e.jsx("div",{children:e.jsx(ac,{icon:t.icon})})}),e.jsxs("div",{className:"tw:flex tw:min-w-0 tw:flex-1 tw:items-baseline tw:gap-2",children:[e.jsx("p",{className:"tw:min-w-0 tw:shrink tw:truncate tw:text-sm",title:t.title,children:t.title}),t.subtitle&&e.jsx("p",{className:"tw:min-w-0 tw:shrink-[9999] tw:truncate tw:text-end tw:text-xs tw:text-muted-foreground",title:t.subtitle,children:t.subtitle})]}),(t.isDisallowed||t.isDeprecated)&&e.jsx(o.CommandShortcut,{className:"tw:font-sans",children:t.isDisallowed?r["%markerMenu_disallowed_label%"]:r["%markerMenu_deprecated_label%"]})]})}function Wo({localizedStrings:t,markerMenuItems:r,searchRef:a,searchPlaceholder:n}){const[i,l]=s.useState(""),[c,d]=s.useMemo(()=>{const u=o.stripMarkerNestingPrefix(i.trim().toLowerCase());if(!u){const h=r.filter(g=>!g.isDisallowed);return[h.length>0?h:r,[]]}const w=r.filter(h=>{var m;const g=(m=h.marker)==null?void 0:m.toLowerCase();return h.isDisallowed?g===u:g==null?void 0:g.includes(u)}),p=r.filter(h=>h.title.toLowerCase().includes(u)&&!w.includes(h));return[w,p]},[i,r]);return e.jsxs(o.Command,{className:"tw:p-1",shouldFilter:!1,loop:!0,children:[e.jsx(o.CommandInput,{className:"marker-menu-search",ref:a,value:i,onValueChange:u=>l(u),placeholder:n??t["%markerMenu_searchPlaceholder%"],spaceSelectsHighlightedItem:!0}),e.jsxs(o.CommandList,{children:[e.jsx(o.CommandEmpty,{children:t["%markerMenu_noResults%"]}),e.jsx(o.CommandGroup,{children:c.map(u=>{var w;return e.jsx(Ua,{item:u,localizedStrings:t},`item-${u.marker??((w=u.icon)==null?void 0:w.displayName)}-${u.title.replaceAll(" ","")}`)})}),d.length>0&&e.jsxs(e.Fragment,{children:[c.length>0&&e.jsx(o.CommandSeparator,{alwaysRender:!0}),e.jsx(o.CommandGroup,{children:d.map(u=>{var w;return e.jsx(Ua,{item:u,localizedStrings:t},`item-${u.marker??((w=u.icon)==null?void 0:w.displayName)}-${u.title.replaceAll(" ","")}`)})})]})]})]})}function nc(t,r,a,n){if(!n||n==="p")return[];const i=B.usfmMarkers[n];if(!(i!=null&&i.children))return[];const l=[];return Object.entries(i.children).forEach(([,c])=>{l.push(...c.map(d=>({marker:d,title:a[B.usfmMarkers[d].description]??B.usfmMarkers[d].description,action:()=>{var u;(u=t.current)==null||u.insertMarker(d),r()}})))}),l.sort((c,d)=>(c.marker??c.title).localeCompare(d.marker??d.title))}function Jo(t){return{id:t.marker,label:t.marker,description:t.description,badge:t.kind==="closeTag"?"%markerMenu_endTag_label%":void 0,muted:!t.isBasic}}function ic(t){var a;const r=(a=t.attributes)==null?void 0:a.char;r!=null&&r.style&&(r.style==="ft"&&(r.style="xt"),r.style==="fr"&&(r.style="xo"),r.style==="fq"&&(r.style="xq"))}function sc(t){var a;const r=(a=t.attributes)==null?void 0:a.char;r!=null&&r.style&&(r.style==="xt"&&(r.style="ft"),r.style==="xo"&&(r.style="fr"),r.style==="xq"&&(r.style="fq"))}const cc={type:"USJ",version:"3.1",content:[{type:"para"}]};function lc({classNameForEditor:t,noteOps:r,onChange:a,onClose:n,scrRef:i,noteKey:l,editorOptions:c,defaultMarkerMenuTrigger:d,localizedStrings:u,parentEditorRef:w,markerPalette:p,onNoteEdit:h}){var Bt;const g=s.useRef(null),m=s.useRef(null),x=s.useRef(null);s.useLayoutEffect(()=>{if(!x.current)return;const M=parseFloat(getComputedStyle(x.current).width);M>0&&(x.current.style.width=`${M}px`)},[]);const[y,f]=s.useState("generated"),[E,k]=s.useState("generated"),[N,C]=s.useState("*"),[A,R]=s.useState("*"),[O,I]=s.useState("f"),[S,D]=s.useState(!1),[Y,Z]=s.useState(!0),[L,j]=s.useState(!1),et=s.useRef(!1),P=s.useRef(""),[K,W]=s.useState(!1),F=qo(),[tt,lt]=s.useState(),it=s.useRef(null),J=s.useRef(void 0),dt=s.useRef(0),gt=s.useRef(void 0),wt=s.useMemo(()=>({...c,contextMenu:void 0,markerMenuTrigger:d,hasExternalUI:!0,view:{...c.view??Ft.getDefaultViewOptions(),noteMode:"expanded",isNoteShellEditable:!1,showParaMarkerPrefixes:!1}}),[c,d]),mt=s.useMemo(()=>nc(g,()=>W(!1),u,tt),[u,tt]);s.useEffect(()=>{var M;K||(M=g.current)==null||M.focus()},[O,K]);const vt=s.useCallback(()=>{var z,X,V;const M=(z=m.current)==null?void 0:z.querySelector(".editor-input"),q=M==null?void 0:M.querySelector("span.note"),_=(V=(X=m.current)==null?void 0:X.ownerDocument.getSelection())==null?void 0:V.anchorNode;return!!q&&!!_&&q.contains(_)},[]);s.useEffect(()=>{var X,V;let M,q,_;et.current=!1,gt.current=void 0,Z(!0);const z=r==null?void 0:r.at(0);if(z&&Ft.isInsertEmbedOpOfType("note",z)){const rt=(X=z.insert.note)==null?void 0:X.caller;let st="custom";rt===Ft.GENERATOR_NOTE_CALLER?st="generated":rt===Ft.HIDDEN_NOTE_CALLER?st="hidden":rt&&(C(rt),R(rt)),f(st),k(st),I(((V=z.insert.note)==null?void 0:V.style)??"f"),M=setTimeout(()=>{var nt,ft,xt;(nt=g.current)==null||nt.applyUpdate([z]),(ft=g.current)==null||ft.selectNote(0),(xt=g.current)==null||xt.focus(),q=requestAnimationFrame(()=>{_=setTimeout(()=>{var ht,_t;vt()||((ht=g.current)==null||ht.selectNote(0),(_t=g.current)==null||_t.focus())},0)})},0)}return()=>{M&&clearTimeout(M),q!==void 0&&cancelAnimationFrame(q),_!==void 0&&clearTimeout(_)}},[r,l,vt]);const Mt=s.useCallback((M=!1)=>{var _,z,X;h==null||h();const q=(z=(_=g.current)==null?void 0:_.getNoteOps(0))==null?void 0:z.at(0);q&&Ft.isInsertEmbedOpOfType("note",q)&&(a==null||a([q]),M&&w&&l&&((X=w.current)==null||X.replaceEmbedUpdate(l,[q])))},[l,a,h,w]),Xt=s.useCallback((M,q)=>{var X,V,rt;const _=(V=(X=g.current)==null?void 0:X.getNoteOps(0))==null?void 0:V.at(0);if(!_||!Ft.isInsertEmbedOpOfType("note",_)||!_.insert.note)return;let z;M==="custom"?z=q:M==="generated"?z=Ft.GENERATOR_NOTE_CALLER:z=Ft.HIDDEN_NOTE_CALLER,_.insert.note.caller!==z&&(_.insert.note.caller=z,(rt=g.current)==null||rt.applyUpdate([_,{delete:1}]))},[]),Wt=s.useCallback(()=>{var M;J.current||(M=g.current)==null||M.commitPendingMarkerEdits(),Mt(!0),n()},[n,Mt]),Nt=s.useRef(Wt);s.useLayoutEffect(()=>{Nt.current=Wt});const bt=s.useRef({book:i.book,chapterNum:i.chapterNum});s.useLayoutEffect(()=>{(bt.current.book!==i.book||bt.current.chapterNum!==i.chapterNum)&&(bt.current={book:i.book,chapterNum:i.chapterNum},Nt.current())},[i.book,i.chapterNum]);const Lt=()=>{var q;const M=(q=m.current)==null?void 0:q.getElementsByClassName("editor-input")[0];M!=null&&M.textContent&&navigator.clipboard.writeText(M.textContent)},oe=s.useCallback((M,q)=>{h==null||h(),f(M),C(q),Xt(M,q)},[Xt,h]),se=M=>{var _,z,X,V,rt;I(M);const q=(z=(_=g.current)==null?void 0:_.getNoteOps(0))==null?void 0:z.at(0);if(q&&Ft.isInsertEmbedOpOfType("note",q)){q.insert.note&&(q.insert.note.style=M);const st=(V=(X=q.insert.note)==null?void 0:X.contents)==null?void 0:V.ops;O!=="x"&&M==="x"?st==null||st.forEach(nt=>ic(nt)):O==="x"&&M!=="x"&&(st==null||st.forEach(nt=>sc(nt))),(rt=g.current)==null||rt.applyUpdate([q,{delete:1}])}},Et=M=>{lt(M.contextMarker),j(M.canRedo)},kt=s.useCallback(M=>{var _,z,X,V,rt;const q=(z=(_=g.current)==null?void 0:_.getNoteOps(0))==null?void 0:z.at(0);if(q&&Ft.isInsertEmbedOpOfType("note",q)){M.content.length>1&&setTimeout(()=>{var ft;(ft=g.current)==null||ft.applyUpdate([{retain:2},{delete:1}])},0);const st=(X=q.insert.note)==null?void 0:X.style,nt=(rt=(V=q.insert.note)==null?void 0:V.contents)==null?void 0:rt.ops;if(st||D(!1),D(st==="x"?!!(nt!=null&&nt.every(ft=>{var ht,_t;if(!((ht=ft.attributes)!=null&&ht.char))return!0;const xt=((_t=ft.attributes)==null?void 0:_t.char).style;return xt==="xt"||xt==="xo"||xt==="xq"})):!!(nt!=null&&nt.every(ft=>{var ht,_t;if(!((ht=ft.attributes)!=null&&ht.char))return!0;const xt=((_t=ft.attributes)==null?void 0:_t.char).style;return xt==="ft"||xt==="fr"||xt==="fq"}))),!et.current){et.current=!0,P.current=JSON.stringify(q),Z(!0);return}Z(JSON.stringify(q)===P.current),Mt()}else D(!1),Z(!0)},[Mt]),qt=s.useCallback(()=>{const M=window.getSelection();if(!mt.length||!M||M.rangeCount===0)return;const q=m.current;if(!q)return;const _=M.getRangeAt(0).cloneRange();F.setSource({measure:()=>{const z=Yo(_);return z&&Zo(z)},contextElement:q}),W(!0)},[mt,F]),Jt=s.useRef(()=>{}),Qt=s.useCallback((M,q,_)=>{const{anchorRect:z}=M;if(!p||!z)return;const{passive:X}=_;o.runMarkerPaletteSession({items:q,passive:X,sessionCounterRef:dt,setSession:V=>{J.current=V},clearSessionIfCurrent:V=>o.clearPaletteSessionIfCurrent(J,V),runSessionKey:V=>Jt.current(V),show:V=>p.show(q.map(Jo),z,X,V),restoreSelectionIfLost:()=>{var V,rt,st;if(!((V=g.current)!=null&&V.getSelection())){const nt=gt.current;nt?(rt=g.current)==null||rt.setSelection(nt):(st=g.current)==null||st.selectNote(0)}},focusEditor:()=>{var V;return(V=g.current)==null?void 0:V.focus()},applyItem:V=>{var rt;return(rt=g.current)==null?void 0:rt.applyMarkerMenuSelection(V,{trigger:"backslash",literalPrefixLanded:!1})},onShowError:V=>{(!B.isPlatformError(V)||V.code!==B.ABORTED)&&console.warn(`FootnoteEditor: the marker palette did not open: ${B.getErrorMessage(V)}`)}})},[p]),te=s.useCallback(()=>{var _;const M=(_=g.current)==null?void 0:_.getMarkerMenuContext();if(!M)return!1;const q=Ft.getMarkerMenuItems(wt.styleInfo??Ft.defaultStyleInfo,M);return q.length===0?!1:(Qt(M,q,{passive:!M.hasTextSelection}),!0)},[Qt,wt.styleInfo]),Kt=s.useCallback(M=>{const q=J.current;if(!q||!p)return;o.handleMarkerPaletteSessionKeyDown(M,q,{update:z=>p.update(z),commit:()=>p.commit(),dismiss:()=>p.dismiss(),commitTyped:z=>{var X;return(X=g.current)==null?void 0:X.commitTypedMarker(z)},commitTypedAndReopen:z=>{var X;(X=g.current)==null||X.commitTypedMarker(z,{trailingSpace:!1}),te()},commitTypedCloser:z=>{var X;return(X=g.current)==null?void 0:X.commitTypedCloser(z)},commitItem:z=>{var V;const X=q.items.find(rt=>rt.marker===z);X&&((V=g.current)==null||V.applyMarkerMenuSelection(X,{trigger:"backslash",literalPrefixLanded:!1}))}})==="ended"&&o.clearPaletteSessionIfCurrent(J,q.token)},[p,te]);s.useEffect(()=>{Jt.current=Kt},[Kt]),s.useEffect(()=>{const M=q=>{var X,V;const _=(X=m.current)==null?void 0:X.querySelector(".editor-input");if(!_||q.target!==_)return;const z=(V=g.current)==null?void 0:V.getSelection();z&&(gt.current=z)};return document.addEventListener("focusout",M),()=>document.removeEventListener("focusout",M)},[]),s.useEffect(()=>{const M=()=>{K&&W(!1)};return window.addEventListener("click",M),()=>{window.removeEventListener("click",M)}},[K]),s.useEffect(()=>{var M;K&&((M=it.current)==null||M.focus())},[K]),s.useEffect(()=>{var _;const M=()=>{var z;return((z=m.current)==null?void 0:z.querySelector(".editor-input"))??void 0};if(((_=wt.view)==null?void 0:_.markerMode)==="editable"){const z=V=>{var nt,ft,xt,ht;if(o.isImeCompositionKeyEvent(V))return;const rt=M();if(!rt||document.activeElement!==rt)return;if(J.current&&p){Jt.current(V);return}if(V.key==="Enter"&&!vt()){V.preventDefault(),V.stopPropagation(),(nt=g.current)==null||nt.selectNote(0),(ft=g.current)==null||ft.focus();return}if(p&&V.key===d){if(!vt()){V.preventDefault(),V.stopPropagation(),(xt=g.current)==null||xt.selectNote(0),(ht=g.current)==null||ht.focus();return}te()&&(V.preventDefault(),V.stopPropagation())}},X=()=>{var rt,st;const V=M();!V||document.activeElement!==V||vt()||((rt=g.current)==null||rt.selectNote(0),(st=g.current)==null||st.focus())};return document.addEventListener("keydown",z,{capture:!0}),document.addEventListener("paste",X,{capture:!0}),()=>{document.removeEventListener("keydown",z,{capture:!0}),document.removeEventListener("paste",X,{capture:!0})}}const q=z=>{const X=M();!K&&X&&document.activeElement===X&&z.key===d?(z.preventDefault(),qt()):K&&z.key==="Escape"&&(z.preventDefault(),W(!1))};return document.addEventListener("keydown",q),()=>{document.removeEventListener("keydown",q)}},[K,qt,d,(Bt=wt.view)==null?void 0:Bt.markerMode,wt.styleInfo,p,te,vt]),s.useEffect(()=>{const M=()=>{var z,X,V;const q=((z=m.current)==null?void 0:z.querySelector(".editor-input"))??void 0;if(!q||document.activeElement!==q)return;const _=document.getSelection();_&&!_.isCollapsed||vt()||((X=g.current)==null||X.selectNote(0),(V=g.current)==null||V.focus())};return document.addEventListener("pointerup",M),document.addEventListener("selectionchange",M),()=>{document.removeEventListener("pointerup",M),document.removeEventListener("selectionchange",M)}},[vt]);const Pt=u["%footnoteEditor_copyButton_tooltip%"];return e.jsxs(e.Fragment,{children:[e.jsxs("div",{ref:x,className:"footnote-editor tw:grid tw:max-w-full tw:gap-[12px]",children:[e.jsxs("div",{className:"tw:flex tw:flex-wrap tw:gap-y-2",children:[e.jsxs("div",{className:"tw:flex tw:gap-4",children:[e.jsx(rc,{isTypeSwitchable:S,noteType:O,handleNoteTypeChange:se,localizedStrings:u}),e.jsx(Qs,{callerType:y,customCaller:N,updateCaller:oe,localizedStrings:u})]}),e.jsx("div",{className:"tw:flex tw:flex-1 tw:justify-end",children:e.jsxs(o.ButtonGroup,{children:[e.jsx(Ko,{onUndoClick:()=>{var M;return(M=g.current)==null?void 0:M.undo()},onRedoClick:()=>{var M;return(M=g.current)==null?void 0:M.redo()},canUndo:!Y,canRedo:L,localizedStrings:u}),e.jsx(wa,{onCancelClick:n,onAcceptClick:Wt,canAccept:!Y||E!==y||y==="custom"&&N!==A,localizedStrings:u,acceptLabel:u["%footnoteEditor_saveButton_tooltip%"]})]})})]}),e.jsxs("div",{ref:m,className:"tw:relative tw:rounded-[6px] tw:border-2 tw:border-ring",children:[e.jsx("div",{className:t,children:e.jsx(Ho,{editorRef:g,canUndo:!Y,canRedo:L,children:e.jsx(Ft.Editorial,{options:wt,onStateChange:Et,onUsjChange:kt,defaultUsj:cc,onScrRefChange:()=>{},scrRef:i,ref:g})})}),e.jsx("div",{className:"tw:absolute tw:bottom-0 tw:right-0",children:e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(o.Button,{"aria-label":Pt,onClick:Lt,className:"tw:h-6 tw:w-6",variant:"ghost",size:"icon",children:e.jsx($.Copy,{})})}),e.jsx(o.TooltipContent,{children:e.jsx("p",{children:Pt})})]})})})]})]}),e.jsxs(o.Popover,{open:K,children:[e.jsx(o.PopoverAnchor,{virtualRef:F.virtualRef}),e.jsx(o.PopoverContent,{className:"tw:w-[500px] tw:p-0",onClick:M=>{M.preventDefault(),M.stopPropagation()},children:e.jsx(Wo,{markerMenuItems:mt,localizedStrings:u,searchRef:it})})]})]})}const dc=Object.freeze([...Xo,...Object.entries(B.usfmMarkers).map(([,t])=>t.description).filter(t=>!!t),"%footnoteEditor_callerDropdown_item_custom%","%footnoteEditor_callerDropdown_item_generated%","%footnoteEditor_callerDropdown_item_hidden%","%footnoteEditor_callerDropdown_label%","%footnoteEditor_callerDropdown_tooltip%","%footnoteEditor_copyButton_tooltip%","%footnoteEditor_noteType_crossReference_label%","%footnoteEditor_noteType_endNote_label%","%footnoteEditor_noteType_footnote_label%","%footnoteEditor_noteType_tooltip%","%footnoteEditor_noteTypeDropdown_label%","%footnoteEditor_saveButton_tooltip%",...Go,...da]);function wc(t,r,a=!0,n=void 0){if(!r||r.length===0)return;const i=[],l=[];let c=[];return r.forEach(d=>{typeof d!="string"&&d.marker==="fp"?(c.length>0&&l.push(c),c=[d]):c.push(d)}),c.length>0&&l.push(c),l.map((d,u)=>{const w=u===l.length-1;return e.jsxs("p",{children:[pa(t,d,a,!0,i),w&&n]},`para-${u}`)})}function pa(t,r,a=!0,n=!0,i=[]){if(!(!r||r.length===0))return r.map((l,c)=>{const d=`part-${c}`;if(typeof l=="string"){if(n){const u=o.cn(`usfm_${t}`);return e.jsx("span",{className:u,children:l},d)}return e.jsxs("span",{className:"tw:inline-flex tw:items-center tw:gap-1 tw:underline tw:decoration-destructive",children:[e.jsx($.AlertCircle,{className:"tw:h-4 tw:w-4 tw:fill-destructive"}),e.jsx("span",{children:l}),e.jsx($.AlertCircle,{className:"tw:h-4 tw:w-4 tw:fill-destructive"})]},d)}return uc(l,d,a,[...i,t??"unknown"])})}function uc(t,r,a,n=[]){const{marker:i}=t;return e.jsxs("span",{children:[i?a&&e.jsx("span",{className:"marker",children:`\\${i} `}):e.jsx($.AlertCircle,{className:"tw:text-error tw:mr-1 tw:inline-block tw:h-4 tw:w-4","aria-label":"Missing marker"}),pa(i,t.content,a,!0,[...n,i??"unknown"])]},r)}function Qo({footnote:t,layout:r="horizontal",formatCaller:a,showMarkers:n=!0}){const i=a?a(t.caller):t.caller,l=i!==t.caller;let c,d=t.content;Array.isArray(t.content)&&t.content.length>0&&typeof t.content[0]!="string"&&(t.content[0].marker==="fr"||t.content[0].marker==="xo")&&([c,...d]=t.content);const u=n?e.jsx("span",{className:"marker",children:`\\${t.marker}`}):void 0,w=n?e.jsx("span",{className:"marker",children:` \\${t.marker}*`}):void 0,p=i&&e.jsx("span",{className:o.cn("note-caller tw:inline-block",{formatted:l}),children:i}),h=t.category&&e.jsxs("span",{className:"note-category tw:inline-block",children:[n&&e.jsx("span",{className:"marker",children:"\\cat "}),t.category,n&&e.jsx("span",{className:"marker",children:"\\cat*"})]}),g=c&&e.jsxs(e.Fragment,{children:[pa(t.marker,[c],n,!1)," "]}),m=!!u,x=!!p,y=!!h,f=r==="horizontal"?"horizontal":"vertical",E=n?"marker-visible":"",k=r==="horizontal"?"tw:col-span-1":"tw:col-span-2 tw:col-start-1 tw:row-start-2",N=o.cn(f,E);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:o.cn("textual-note-header tw:col-span-1 tw:w-fit tw:text-nowrap",N),children:[u,m&&(x||y)&&" ",p,x&&y&&" ",h]}),e.jsx("div",{className:o.cn("textual-note-header tw:col-span-1 tw:w-fit tw:text-nowrap",N),children:g}),e.jsx("div",{className:o.cn("textual-note-body tw:flex tw:flex-col tw:gap-1",k,N),children:d&&d.length>0&&e.jsx(e.Fragment,{children:wc(t.marker,d,n,w)})})]})}function pc({className:t,classNameForItems:r,footnotes:a,layout:n="horizontal",listId:i,selectedFootnote:l,selectionRequest:c,showMarkers:d=!0,suppressFormatting:u=!1,formatCaller:w,onFootnoteSelected:p}){const h=w??B.getFormatCallerFunction(a,void 0),g=(C,A)=>{p==null||p(C,A,i)},m=l?a.findIndex(C=>C===l):-1,[x,y]=s.useState(m),f=(C,A,R)=>{if(a.length)switch(C.key){case"Enter":case" ":C.preventDefault(),p==null||p(A,R,i);break}},E=C=>{if(a.length)switch(C.key){case"ArrowDown":C.preventDefault(),y(A=>Math.min(A+1,a.length-1));break;case"ArrowUp":C.preventDefault(),y(A=>Math.max(A-1,0));break}},k=s.useRef([]);s.useEffect(()=>{var C;x>=0&&xC===l):-1;return s.useEffect(()=>{var C;N<0||N>=k.current.length||(C=k.current[N])==null||C.scrollIntoView({block:"nearest"})},[N,c]),e.jsx("div",{role:"listbox","aria-label":"Footnotes",tabIndex:x<0?0:-1,className:o.cn("tw:h-full tw:overflow-y-auto",t),onKeyDown:E,children:e.jsx("ul",{className:o.cn("tw:p-0.5 tw:pt-1","tw:grid",n==="horizontal"?"tw:grid-cols-[min-content_min-content_1fr]":"tw:grid-cols-[min-content_1fr]",!u&&"formatted-font"),children:a.map((C,A)=>{const R=C===l,O=`${i}-${A}`;return e.jsxs(s.Fragment,{children:[e.jsx("li",{ref:I=>{k.current[A]=I},role:"option","aria-selected":R,"data-marker":C.marker,"data-state":R?"selected":void 0,tabIndex:A===x?0:-1,className:o.cn("tw:gap-x-3 tw:gap-y-1 tw:p-2 tw:data-[state=selected]:bg-muted",p&&"tw:hover:bg-muted/50","tw:w-full tw:rounded-sm tw:border-0 tw:bg-transparent tw:shadow-none","tw:focus:outline-hidden tw:focus-visible:outline-hidden","tw:focus-visible:ring-offset-0.5 tw:focus-visible:relative tw:focus-visible:z-10 tw:focus-visible:ring-2 tw:focus-visible:ring-ring","tw:grid tw:grid-flow-col tw:grid-cols-subgrid",n==="horizontal"?"tw:col-span-3":"tw:col-span-2 tw:row-span-2",r),onClick:()=>g(C,A),onKeyDown:I=>f(I,C,A),children:e.jsx(Qo,{footnote:C,layout:n,formatCaller:()=>h(C.caller,A),showMarkers:d})}),A a&&r.push(t.substring(a,i.index)),r.push(e.jsx("strong",{children:i[1]},i.index)),a=n.lastIndex;return a 0?r:[t]}function gc({occurrenceData:t,setScriptureReference:r,localizedStrings:a,classNameForText:n}){const i=a["%webView_inventory_occurrences_table_header_reference%"],l=a["%webView_inventory_occurrences_table_header_occurrence%"],c=s.useMemo(()=>{const d=[],u=new Set;return t.forEach(w=>{const p=`${w.reference.book}:${w.reference.chapterNum}:${w.reference.verseNum}:${w.text}`;u.has(p)||(u.add(p),d.push(w))}),d},[t]);return e.jsxs(o.Table,{stickyHeader:!0,children:[e.jsx(o.TableHeader,{stickyHeader:!0,children:e.jsxs(o.TableRow,{children:[e.jsx(o.TableHead,{children:i}),e.jsx(o.TableHead,{children:l})]})}),e.jsx(o.TableBody,{children:c.length>0&&c.map(d=>e.jsxs(o.TableRow,{onClick:()=>{r(d.reference)},children:[e.jsx(o.TableCell,{children:B.formatScrRef(d.reference,"English")}),e.jsx(o.TableCell,{className:n,children:hc(d.text)})]},`${d.reference.book} ${d.reference.chapterNum}:${d.reference.verseNum}-${d.text}`))})]})}function ha({className:t,...r}){return e.jsx(G.Checkbox.Root,{"data-slot":"checkbox",className:o.cn("pr-twp tw:peer tw:relative tw:flex tw:size-4 tw:shrink-0 tw:items-center tw:justify-center tw:rounded-[4px] tw:border tw:border-input tw:transition-colors tw:outline-none tw:group-has-disabled/field:opacity-50 tw:after:absolute tw:after:-inset-x-3 tw:after:-inset-y-2 tw:focus-visible:border-ring tw:focus-visible:ring-3 tw:focus-visible:ring-ring/50 tw:disabled:cursor-not-allowed tw:disabled:opacity-50 tw:aria-invalid:border-destructive tw:aria-invalid:ring-3 tw:aria-invalid:ring-destructive/20 tw:aria-invalid:aria-checked:border-primary tw:dark:bg-input/30 tw:dark:aria-invalid:border-destructive/50 tw:dark:aria-invalid:ring-destructive/40 tw:data-checked:border-primary tw:data-checked:bg-primary tw:data-checked:text-primary-foreground tw:dark:data-checked:bg-primary",t),...r,children:e.jsx(G.Checkbox.Indicator,{"data-slot":"checkbox-indicator",className:"tw:grid tw:place-content-center tw:text-current tw:transition-none tw:[&>svg]:size-3.5",children:e.jsx(Rt.IconCheck,{})})})}const fc=t=>{if(t==="asc")return e.jsx($.ArrowUpIcon,{className:"tw:h-4 tw:w-4"});if(t==="desc")return e.jsx($.ArrowDownIcon,{className:"tw:h-4 tw:w-4"})},Qe=(t,r,a)=>e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsxs(o.TooltipTrigger,{className:o.cn("tw:flex tw:w-full tw:justify-start",a),variant:"ghost",onClick:()=>t.toggleSorting(void 0),children:[e.jsx("span",{className:"tw:w-6 tw:max-w-fit tw:flex-1 tw:overflow-hidden tw:text-ellipsis",children:r}),fc(t.getIsSorted())]}),e.jsx(o.TooltipContent,{side:"bottom",children:r})]})}),mc=t=>({accessorKey:"item",accessorFn:r=>r.items[0],header:({column:r})=>Qe(r,t)}),vc=(t,r)=>({accessorKey:`item${r}`,accessorFn:a=>a.items[r],header:({column:a})=>Qe(a,t)}),bc=t=>({accessorKey:"count",header:({column:r})=>Qe(r,t,"tw:justify-end"),cell:({row:r})=>e.jsx("div",{className:"tw:flex tw:justify-end tw:tabular-nums",children:r.getValue("count")})}),$r=(t,r,a,n,i,l)=>{let c=[...a];t.forEach(u=>{r==="approved"?c.includes(u)||c.push(u):c=c.filter(w=>w!==u)}),n(c);let d=[...i];t.forEach(u=>{r==="unapproved"?d.includes(u)||d.push(u):d=d.filter(w=>w!==u)}),l(d)},xc=(t,r,a,n,i)=>({accessorKey:"status",header:({column:l})=>Qe(l,t,"tw:justify-center"),cell:({row:l})=>{const c=l.getValue("status"),d=l.getValue("item");return e.jsx("div",{className:"tw:flex tw:justify-center",children:e.jsxs(o.ToggleGroup,{value:c,variant:"outline",type:"single",className:"tw:gap-0",children:[e.jsx(o.ToggleGroupItem,{onClick:u=>{u.stopPropagation(),$r([d],"approved",r,a,n,i)},value:"approved",className:"tw:rounded-e-none tw:border-e-0",children:e.jsx($.CircleCheckIcon,{})}),e.jsx(o.ToggleGroupItem,{onClick:u=>{u.stopPropagation(),$r([d],"unapproved",r,a,n,i)},value:"unapproved",className:"tw:rounded-none",children:e.jsx($.CircleXIcon,{})}),e.jsx(o.ToggleGroupItem,{onClick:u=>{u.stopPropagation(),$r([d],"unknown",r,a,n,i)},value:"unknown",className:"tw:rounded-s-none tw:border-s-0",children:e.jsx($.CircleHelpIcon,{})})]})})}}),yc=t=>t.split(/(?:\r?\n|\r)|(?=(?:\\(?:v|c|id)))/g),kc=t=>{const r=/^\\[vc]\s+(\d+)/,a=t.match(r);if(a)return+a[1]},_c=t=>{const r=t.match(/^\\id\s+([A-Za-z]+)/);return r?r[1]:""},tn=(t,r,a)=>a.includes(t)?"unapproved":r.includes(t)?"approved":"unknown",jc=Object.freeze(["%webView_inventory_all%","%webView_inventory_approved%","%webView_inventory_unapproved%","%webView_inventory_unknown%","%webView_inventory_scope_currentBook%","%webView_inventory_scope_chapter%","%webView_inventory_scope_verse%","%webView_inventory_filter_text%","%webView_inventory_show_additional_items%","%webView_inventory_occurrences_table_header_reference%","%webView_inventory_occurrences_table_header_occurrence%","%webView_inventory_no_results%"]),Cc=(t,r,a)=>{let n=t;return r!=="all"&&(n=n.filter(i=>r==="approved"&&i.status==="approved"||r==="unapproved"&&i.status==="unapproved"||r==="unknown"&&i.status==="unknown")),a!==""&&(n=n.filter(i=>i.items[0].includes(a))),n},Nc=(t,r,a)=>t.map(n=>{const i=B.isString(n.key)?n.key:n.key[0];return{items:B.isString(n.key)?[n.key]:n.key,count:n.count,status:n.status||tn(i,r,a),occurrences:n.occurrences||[]}}),we=(t,r)=>t[r]??r;function Ec({inventoryItems:t,setVerseRef:r,localizedStrings:a,additionalItemsLabels:n,approvedItems:i,unapprovedItems:l,scope:c,onScopeChange:d,columns:u,id:w,areInventoryItemsLoading:p=!1,classNameForVerseText:h,onItemSelected:g}){const m=we(a,"%webView_inventory_all%"),x=we(a,"%webView_inventory_approved%"),y=we(a,"%webView_inventory_unapproved%"),f=we(a,"%webView_inventory_unknown%"),E=we(a,"%webView_inventory_scope_currentBook%"),k=we(a,"%webView_inventory_scope_chapter%"),N=we(a,"%webView_inventory_scope_verse%"),C=we(a,"%webView_inventory_filter_text%"),A=we(a,"%webView_inventory_show_additional_items%"),R=we(a,"%webView_inventory_no_results%"),[O,I]=s.useState(!1),[S,D]=s.useState("all"),[Y,Z]=s.useState(""),[L,j]=s.useState([]),et=s.useMemo(()=>{const J=t??[];return J.length===0?[]:Nc(J,i,l)},[t,i,l]),P=s.useMemo(()=>{if(O)return et;const J=[];return et.forEach(dt=>{const gt=dt.items[0],wt=J.find(mt=>mt.items[0]===gt);wt?(wt.count+=dt.count,wt.occurrences=wt.occurrences.concat(dt.occurrences)):J.push({items:[gt],count:dt.count,occurrences:dt.occurrences,status:dt.status})}),J},[O,et]),K=s.useMemo(()=>P.length===0?[]:Cc(P,S,Y),[P,S,Y]),W=s.useMemo(()=>{var gt,wt;if(!O)return u;const J=(gt=n==null?void 0:n.tableHeaders)==null?void 0:gt.length;if(!J)return u;const dt=[];for(let mt=0;mt {K.length===0?j([]):K.length===1&&j(K[0].items)},[K]);const F=(J,dt)=>{dt.setRowSelection(()=>{const wt={};return wt[J.index]=!0,wt});const gt=J.original.items;j(gt),g&>.length>0&&g(gt[0])},tt=J=>{if(J==="book"||J==="chapter"||J==="verse")d(J);else throw new Error(`Invalid scope value: ${J}`)},lt=J=>{if(J==="all"||J==="approved"||J==="unapproved"||J==="unknown")D(J);else throw new Error(`Invalid status filter value: ${J}`)},it=s.useMemo(()=>{if(P.length===0||L.length===0)return[];const J=P.filter(dt=>B.deepEqual(O?dt.items:[dt.items[0]],L));if(J.length>1)throw new Error("Selected item is not unique");return J.length===0?[]:J[0].occurrences},[L,O,P]);return e.jsx("div",{id:w,className:"pr-twp tw:h-full tw:overflow-auto",children:e.jsxs("div",{className:"tw:flex tw:h-full tw:w-full tw:min-w-min tw:flex-col",children:[e.jsxs("div",{className:"tw:flex tw:items-stretch",style:{contain:"inline-size"},children:[e.jsxs(Te,{onValueChange:J=>lt(J),defaultValue:S,children:[e.jsx(Re,{className:"tw:m-1 tw:w-auto tw:flex-1",children:e.jsx(Se,{placeholder:"Select filter"})}),e.jsxs(Me,{children:[e.jsx(ae,{value:"all",children:m}),e.jsx(ae,{value:"approved",children:x}),e.jsx(ae,{value:"unapproved",children:y}),e.jsx(ae,{value:"unknown",children:f})]})]}),e.jsxs(Te,{onValueChange:J=>tt(J),defaultValue:c,children:[e.jsx(Re,{className:"tw:m-1 tw:w-auto tw:flex-1",children:e.jsx(Se,{placeholder:"Select scope"})}),e.jsxs(Me,{children:[e.jsx(ae,{value:"book",children:E}),e.jsx(ae,{value:"chapter",children:k}),e.jsx(ae,{value:"verse",children:N})]})]}),e.jsx(o.Input,{className:"tw:m-1 tw:flex-1 tw:rounded-md tw:border",placeholder:C,value:Y,onChange:J=>{Z(J.target.value)}}),n&&e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsxs("div",{className:"tw:m-1 tw:flex tw:w-fit tw:min-w-[26px] tw:items-center tw:rounded-md tw:border",children:[e.jsx(ha,{className:"tw:m-1 tw:shrink-0",checked:O,onCheckedChange:J=>{I(J)}}),e.jsx(o.Label,{className:"tw:m-1 tw:truncate",children:(n==null?void 0:n.checkboxText)??A})]})}),e.jsx(o.TooltipContent,{children:(n==null?void 0:n.checkboxText)??A})]})})]}),e.jsx("div",{className:"tw:m-1 tw:flex-1 tw:overflow-auto tw:rounded-md tw:border",children:e.jsx(Vo,{columns:W,data:K,onRowClickHandler:F,stickyHeader:!0,isLoading:p,noResultsMessage:R})}),it.length>0&&e.jsx("div",{className:"tw:m-1 tw:flex-1 tw:overflow-auto tw:rounded-md tw:border",children:e.jsx(gc,{classNameForText:h,occurrenceData:it,setScriptureReference:r,localizedStrings:a})})]})})}const Tc="16rem",Sc="3rem",en=s.createContext(void 0);function tr(){const t=s.useContext(en);if(!t)throw new Error("useSidebar must be used within a SidebarProvider.");return t}function rn({defaultOpen:t=!0,open:r,onOpenChange:a,className:n,style:i,children:l,side:c="primary",...d}){const[u,w]=s.useState(t),p=r??u,h=s.useCallback(N=>{const C=typeof N=="function"?N(p):N;a?a(C):w(C)},[a,p]),g=s.useCallback(()=>h(N=>!N),[h]),m=p?"expanded":"collapsed",f=o.readDirection()==="ltr"?c:c==="primary"?"secondary":"primary",E=s.useMemo(()=>({state:m,open:p,setOpen:h,toggleSidebar:g,side:f}),[m,p,h,g,f]),k={"--sidebar-width":Tc,"--sidebar-width-icon":Sc,...i};return e.jsx(en.Provider,{value:E,children:e.jsx("div",{"data-slot":"sidebar-wrapper",style:k,className:o.cn("pr-twp tw:group/sidebar-wrapper tw:flex tw:w-full tw:has-data-[variant=inset]:bg-sidebar",n),...d,children:l})})}function an({variant:t="sidebar",collapsible:r="offcanvas",className:a,children:n,...i}){const l=tr();return r==="none"?e.jsx("div",{"data-slot":"sidebar",className:o.cn("tw:flex tw:h-full tw:w-(--sidebar-width) tw:flex-col tw:bg-sidebar tw:text-sidebar-foreground",a),...i,children:n}):e.jsxs("div",{className:"tw:group tw:peer tw:hidden tw:text-sidebar-foreground tw:md:block","data-state":l.state,"data-collapsible":l.state==="collapsed"?r:"","data-variant":t,"data-side":l.side,"data-slot":"sidebar",children:[e.jsx("div",{"data-slot":"sidebar-gap",className:o.cn("tw:relative tw:w-(--sidebar-width) tw:bg-transparent tw:transition-[width] tw:duration-200 tw:ease-linear","tw:group-data-[collapsible=offcanvas]:w-0","tw:group-data-[side=secondary]:rotate-180",t==="floating"||t==="inset"?"tw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"tw:group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),e.jsx("div",{"data-slot":"sidebar-container","data-side":l.side,className:o.cn("tw:absolute tw:inset-y-0 tw:z-10 tw:hidden tw:h-svh tw:w-(--sidebar-width) tw:transition-[left,right,width] tw:duration-200 tw:ease-linear tw:md:flex",l.side==="primary"?"tw:left-0 tw:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"tw:right-0 tw:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"tw:p-2 tw:group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"tw:group-data-[collapsible=icon]:w-(--sidebar-width-icon) tw:group-data-[side=primary]:border-e tw:group-data-[side=secondary]:border-s",a),...i,children:e.jsx("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"tw:flex tw:size-full tw:flex-col tw:bg-sidebar tw:group-data-[variant=floating]:rounded-lg tw:group-data-[variant=floating]:shadow-sm tw:group-data-[variant=floating]:ring-1 tw:group-data-[variant=floating]:ring-sidebar-border",children:n})})]})}function Rc({className:t,onClick:r,...a}){const{toggleSidebar:n,side:i}=tr();return e.jsxs(o.Button,{"data-sidebar":"trigger","data-slot":"sidebar-trigger",variant:"ghost",size:"icon-sm",className:o.cn(t),onClick:l=>{r==null||r(l),n()},...a,children:[i==="primary"?e.jsx(Rt.IconLayoutSidebar,{}):e.jsx(Rt.IconLayoutSidebarRight,{}),e.jsx("span",{className:"tw:sr-only",children:"Toggle Sidebar"})]})}function Mc({className:t,...r}){const{toggleSidebar:a}=tr();return e.jsx("button",{type:"button","data-sidebar":"rail","data-slot":"sidebar-rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:a,title:"Toggle Sidebar",className:o.cn("tw:absolute tw:inset-y-0 tw:z-20 tw:hidden tw:w-4 tw:transition-all tw:ease-linear tw:group-data-[side=primary]:-right-4 tw:group-data-[side=secondary]:left-0 tw:after:absolute tw:after:inset-y-0 tw:after:start-1/2 tw:after:w-[2px] tw:hover:after:bg-sidebar-border tw:sm:flex tw:ltr:-translate-x-1/2 tw:rtl:translate-x-1/2","tw:in-data-[side=primary]:cursor-w-resize tw:rtl:in-data-[side=primary]:cursor-e-resize tw:in-data-[side=secondary]:cursor-e-resize tw:rtl:in-data-[side=secondary]:cursor-w-resize","tw:[[data-side=primary][data-state=collapsed]_&]:cursor-e-resize tw:rtl:[[data-side=primary][data-state=collapsed]_&]:cursor-w-resize tw:[[data-side=secondary][data-state=collapsed]_&]:cursor-w-resize tw:rtl:[[data-side=secondary][data-state=collapsed]_&]:cursor-e-resize","tw:group-data-[collapsible=offcanvas]:translate-x-0 tw:group-data-[collapsible=offcanvas]:after:start-full tw:hover:group-data-[collapsible=offcanvas]:bg-sidebar","tw:[[data-side=primary][data-collapsible=offcanvas]_&]:-end-2","tw:[[data-side=secondary][data-collapsible=offcanvas]_&]:-start-2",t),...r})}function on({className:t,...r}){return e.jsx("main",{"data-slot":"sidebar-inset",className:o.cn("tw:relative tw:flex tw:w-full tw:flex-1 tw:flex-col tw:bg-background tw:md:peer-data-[variant=inset]:m-2 tw:md:peer-data-[variant=inset]:ms-0 tw:md:peer-data-[variant=inset]:rounded-xl tw:md:peer-data-[variant=inset]:shadow-sm tw:md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2",t),...r})}function Dc({className:t,...r}){return e.jsx(o.Input,{"data-slot":"sidebar-input","data-sidebar":"input",className:o.cn("tw:h-8 tw:w-full tw:bg-background tw:shadow-none",t),...r})}function Ic({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:o.cn("tw:flex tw:flex-col tw:gap-2 tw:p-2",t),...r})}function Oc({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:o.cn("tw:flex tw:flex-col tw:gap-2 tw:p-2",t),...r})}function Pc({className:t,...r}){return e.jsx(o.Separator,{"data-slot":"sidebar-separator","data-sidebar":"separator",className:o.cn("tw:mx-2 tw:w-auto tw:bg-sidebar-border",t),...r})}function nn({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:o.cn("tw:no-scrollbar tw:flex tw:min-h-0 tw:flex-1 tw:flex-col tw:gap-0 tw:overflow-auto tw:group-data-[collapsible=icon]:overflow-hidden",t),...r})}function Jr({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:o.cn("tw:relative tw:flex tw:w-full tw:min-w-0 tw:flex-col tw:p-2",t),...r})}function Qr({className:t,asChild:r=!1,...a}){const n=r?G.Slot.Root:"div";return e.jsx(n,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:o.cn("tw:flex tw:h-8 tw:shrink-0 tw:items-center tw:rounded-md tw:px-2 tw:text-xs tw:font-medium tw:text-sidebar-foreground/70 tw:ring-sidebar-ring tw:outline-hidden tw:transition-[margin,opacity] tw:duration-200 tw:ease-linear tw:group-data-[collapsible=icon]:-mt-8 tw:group-data-[collapsible=icon]:opacity-0 tw:focus-visible:ring-2 tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",t),...a})}function Ac({className:t,asChild:r=!1,...a}){const n=r?G.Slot.Root:"button";return e.jsx(n,{"data-slot":"sidebar-group-action","data-sidebar":"group-action",className:o.cn("tw:absolute tw:top-3.5 tw:end-3 tw:flex tw:aspect-square tw:w-5 tw:items-center tw:justify-center tw:rounded-md tw:p-0 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:transition-transform tw:group-data-[collapsible=icon]:hidden tw:after:absolute tw:after:-inset-2 tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:md:after:hidden tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",t),...a})}function ta({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:o.cn("tw:w-full tw:text-sm",t),...r})}function sn({className:t,...r}){return e.jsx("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:o.cn("tw:flex tw:w-full tw:min-w-0 tw:flex-col tw:gap-0",t),...r})}function cn({className:t,...r}){return e.jsx("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:o.cn("tw:group/menu-item tw:relative",t),...r})}const Lc=Ya.cva("tw:peer/menu-button tw:group/menu-button tw:flex tw:w-full tw:items-center tw:gap-2 tw:overflow-hidden tw:rounded-md tw:p-2 tw:text-start tw:text-sm tw:ring-sidebar-ring tw:outline-hidden tw:transition-[width,height,padding] tw:group-has-data-[sidebar=menu-action]/menu-item:pe-8 tw:group-data-[collapsible=icon]:size-8! tw:group-data-[collapsible=icon]:p-2! tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:active:bg-sidebar-accent tw:active:text-sidebar-accent-foreground tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:aria-disabled:pointer-events-none tw:aria-disabled:opacity-50 tw:data-open:hover:bg-sidebar-accent tw:data-open:hover:text-sidebar-accent-foreground tw:data-active:bg-sidebar-accent tw:data-active:font-medium tw:data-active:text-sidebar-accent-foreground tw:[&_svg]:size-4 tw:[&_svg]:shrink-0 tw:[&>span:last-child]:truncate",{variants:{variant:{default:"tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground",outline:"tw:bg-background tw:shadow-[0_0_0_1px_var(--sidebar-border)] tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"tw:h-8 tw:text-sm",sm:"tw:h-7 tw:text-xs",lg:"tw:h-12 tw:text-sm tw:group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function ln({asChild:t=!1,isActive:r=!1,variant:a="default",size:n="default",tooltip:i,className:l,...c}){const d=t?G.Slot.Root:"button",{state:u}=tr(),w=e.jsx(d,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":n,"data-active":r,className:o.cn(Lc({variant:a,size:n}),l),...c});if(!i)return w;const p=typeof i=="string"?{children:i}:i;return e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:w}),e.jsx(o.TooltipContent,{side:"right",align:"center",hidden:u!=="collapsed",...p})]})}function Bc({className:t,asChild:r=!1,showOnHover:a=!1,...n}){const i=r?G.Slot.Root:"button";return e.jsx(i,{"data-slot":"sidebar-menu-action","data-sidebar":"menu-action",className:o.cn("tw:absolute tw:top-1.5 tw:end-1 tw:flex tw:aspect-square tw:w-5 tw:items-center tw:justify-center tw:rounded-md tw:p-0 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:transition-transform tw:group-data-[collapsible=icon]:hidden tw:peer-hover/menu-button:text-sidebar-accent-foreground tw:peer-data-[size=default]/menu-button:top-1.5 tw:peer-data-[size=lg]/menu-button:top-2.5 tw:peer-data-[size=sm]/menu-button:top-1 tw:after:absolute tw:after:-inset-2 tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:md:after:hidden tw:[&>svg]:size-4 tw:[&>svg]:shrink-0",a&&"tw:group-focus-within/menu-item:opacity-100 tw:group-hover/menu-item:opacity-100 tw:peer-data-active/menu-button:text-sidebar-accent-foreground tw:aria-expanded:opacity-100 tw:md:opacity-0",t),...n})}function zc({className:t,...r}){return e.jsx("div",{"data-slot":"sidebar-menu-badge","data-sidebar":"menu-badge",className:o.cn("tw:pointer-events-none tw:absolute tw:end-1 tw:flex tw:h-5 tw:min-w-5 tw:items-center tw:justify-center tw:rounded-md tw:px-1 tw:text-xs tw:font-medium tw:text-sidebar-foreground tw:tabular-nums tw:select-none tw:group-data-[collapsible=icon]:hidden tw:peer-hover/menu-button:text-sidebar-accent-foreground tw:peer-data-[size=default]/menu-button:top-1.5 tw:peer-data-[size=lg]/menu-button:top-2.5 tw:peer-data-[size=sm]/menu-button:top-1 tw:peer-data-active/menu-button:text-sidebar-accent-foreground",t),...r})}function Vc({className:t,showIcon:r=!1,...a}){const[n]=s.useState(()=>`${Math.floor(Math.random()*40)+50}%`),i={"--skeleton-width":n};return e.jsxs("div",{"data-slot":"sidebar-menu-skeleton","data-sidebar":"menu-skeleton",className:o.cn("tw:flex tw:h-8 tw:items-center tw:gap-2 tw:rounded-md tw:px-2",t),...a,children:[r&&e.jsx(o.Skeleton,{className:"tw:size-4 tw:rounded-md","data-sidebar":"menu-skeleton-icon"}),e.jsx(o.Skeleton,{className:"tw:h-4 tw:max-w-(--skeleton-width) tw:flex-1","data-sidebar":"menu-skeleton-text",style:i})]})}function $c({className:t,...r}){return e.jsx("ul",{"data-slot":"sidebar-menu-sub","data-sidebar":"menu-sub",className:o.cn("tw:mx-3.5 tw:flex tw:min-w-0 tw:translate-x-px tw:rtl:-translate-x-px tw:flex-col tw:gap-1 tw:border-s tw:border-sidebar-border tw:px-2.5 tw:py-0.5 tw:group-data-[collapsible=icon]:hidden",t),...r})}function Fc({className:t,...r}){return e.jsx("li",{"data-slot":"sidebar-menu-sub-item","data-sidebar":"menu-sub-item",className:o.cn("tw:group/menu-sub-item tw:relative",t),...r})}function Uc({asChild:t=!1,size:r="md",isActive:a=!1,className:n,...i}){const l=t?G.Slot.Root:"a";return e.jsx(l,{"data-slot":"sidebar-menu-sub-button","data-sidebar":"menu-sub-button","data-size":r,"data-active":a,className:o.cn("tw:flex tw:h-7 tw:min-w-0 tw:-translate-x-px tw:rtl:translate-x-px tw:items-center tw:gap-2 tw:overflow-hidden tw:rounded-md tw:px-2 tw:text-sidebar-foreground tw:ring-sidebar-ring tw:outline-hidden tw:group-data-[collapsible=icon]:hidden tw:hover:bg-sidebar-accent tw:hover:text-sidebar-accent-foreground tw:focus-visible:ring-2 tw:active:bg-sidebar-accent tw:active:text-sidebar-accent-foreground tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:aria-disabled:pointer-events-none tw:aria-disabled:opacity-50 tw:data-[size=md]:text-sm tw:data-[size=sm]:text-xs tw:data-active:bg-sidebar-accent tw:data-active:text-sidebar-accent-foreground tw:[&>span:last-child]:truncate tw:[&>svg]:size-4 tw:[&>svg]:shrink-0 tw:[&>svg]:text-sidebar-accent-foreground",n),...i})}function dn({id:t,extensionLabels:r,projectInfo:a,handleSelectSidebarItem:n,selectedSidebarItem:i,extensionsSidebarGroupLabel:l,projectsSidebarGroupLabel:c,buttonPlaceholderText:d,searchPlaceholderText:u,noResultsText:w,className:p}){const h=s.useCallback((f,E)=>{n(f,E)},[n]),g=s.useCallback(f=>{const E=a.find(k=>k.projectId===f);return E?E.projectName:f},[a]),m=s.useMemo(()=>a.map(f=>({id:f.projectId,shortName:f.projectName,fullName:f.projectName})),[a]),x=s.useMemo(()=>{const f={buttonPlaceholder:d,ariaLabel:c};return u&&(f.searchPlaceholder=u),w&&(f.commandEmptyMessage=w),f},[d,c,u,w]),y=s.useCallback(f=>!i.projectId&&f===i.label,[i]);return e.jsx(an,{id:t,collapsible:"none",variant:"inset",className:o.cn("tw:w-96 tw:gap-2 tw:overflow-y-auto",p),children:e.jsxs(nn,{children:[e.jsxs(Jr,{children:[e.jsx(Qr,{className:"tw:text-sm",children:l}),e.jsx(ta,{children:e.jsx(sn,{children:Object.entries(r).map(([f,E])=>e.jsx(cn,{children:e.jsx(ln,{onClick:()=>h(f),isActive:y(f),children:e.jsx("span",{className:"tw:pl-3",children:E})})},f))})})]}),e.jsxs(Jr,{children:[e.jsx(Qr,{className:"tw:text-sm",children:c}),e.jsx(ta,{className:"tw:pl-3",children:e.jsxs("div",{className:o.cn("tw:flex tw:w-full tw:items-center tw:gap-2 tw:rounded-md tw:px-2 tw:py-1",{"tw:bg-sidebar-accent tw:text-sidebar-accent-foreground":i==null?void 0:i.projectId}),children:[e.jsx($.ScrollText,{className:"tw:h-4 tw:w-4 tw:shrink-0"}),e.jsx(o.ProjectSelector,{mode:"project",projects:m,openTabs:[],selection:{projectId:(i==null?void 0:i.projectId)??""},onChangeSelection:({projectId:f})=>{if(!f)return;const E=g(f);h(E,f)},buttonVariant:"ghost",buttonClassName:"tw:h-8 tw:w-full tw:flex-1 tw:justify-start tw:font-normal",localizedStrings:x})]})})]})]})})}function Gc({id:t,children:r,searchValue:a,onSearch:n,className:i,...l}){return e.jsxs("div",{className:"tw:box-border tw:flex tw:h-full tw:flex-col",children:[e.jsx("div",{className:"tw:box-border tw:flex tw:items-center tw:justify-center tw:py-4",children:e.jsx(o.SearchBar,{className:"tw:w-9/12",value:a,onSearch:n,placeholder:"Search app settings, extension settings, and project settings"})}),e.jsxs(rn,{id:t,className:"tw:h-full tw:flex-1 tw:gap-4 tw:overflow-auto tw:border-t",children:[e.jsx(dn,{className:o.cn("tw:w-1/2 tw:min-w-[140px] tw:max-w-[220px] tw:border-e",i),...l}),e.jsx(on,{className:"tw:min-w-[215px]",children:r})]})]})}const ye="scrBook",Kc="scrRef",Ee="source",Hc="details",qc="Scripture Reference",Yc="Scripture Book",wn="Type",Zc="Details";function Xc(t,r){const a=r??!1;return[{accessorFn:n=>`${n.start.book} ${n.start.chapterNum}:${n.start.verseNum}`,id:ye,header:(t==null?void 0:t.scriptureReferenceColumnName)??qc,cell:n=>{const i=n.row.original;return n.row.getIsGrouped()?Ot.Canon.bookIdToEnglishName(i.start.book):n.row.groupingColumnId===ye?B.formatScrRef(i.start):void 0},getGroupingValue:n=>Ot.Canon.bookIdToNumber(n.start.book),sortingFn:(n,i)=>B.compareScrRefs(n.original.start,i.original.start),enableGrouping:!0},{accessorFn:n=>B.formatScrRef(n.start),id:Kc,header:void 0,cell:n=>{const i=n.row.original;return n.row.getIsGrouped()?void 0:B.formatScrRef(i.start)},sortingFn:(n,i)=>B.compareScrRefs(n.original.start,i.original.start),enableGrouping:!1},{accessorFn:n=>n.source.displayName,id:Ee,header:a?(t==null?void 0:t.typeColumnName)??wn:void 0,cell:n=>a||n.row.getIsGrouped()?n.getValue():void 0,getGroupingValue:n=>n.source.id,sortingFn:(n,i)=>n.original.source.displayName.localeCompare(i.original.source.displayName),enableGrouping:!0},{accessorFn:n=>n.detail,id:Hc,header:(t==null?void 0:t.detailsColumnName)??Zc,cell:n=>n.getValue(),enableGrouping:!1}]}const Wc=t=>{if(!("offset"in t.start))throw new Error("No offset available in range start");if(t.end&&!("offset"in t.end))throw new Error("No offset available in range end");const{offset:r}=t.start;let a=0;return t.end&&({offset:a}=t.end),!t.end||B.compareScrRefs(t.start,t.end)===0?`${B.scrRefToBBBCCCVVV(t.start)}+${r}`:`${B.scrRefToBBBCCCVVV(t.start)}+${r}-${B.scrRefToBBBCCCVVV(t.end)}+${a}`},Ga=t=>`${Wc({start:t.start,end:t.end})} ${t.source.displayName} ${t.detail}`;function Jc({sources:t,showColumnHeaders:r=!1,showSourceColumn:a=!1,scriptureReferenceColumnName:n,scriptureBookGroupName:i,typeColumnName:l,detailsColumnName:c,onRowSelected:d,id:u}){const[w,p]=s.useState([]),[h,g]=s.useState([{id:ye,desc:!1}]),[m,x]=s.useState({}),y=s.useMemo(()=>t.flatMap(S=>S.data.map(D=>({...D,source:S.source}))),[t]),f=s.useMemo(()=>Xc({scriptureReferenceColumnName:n,typeColumnName:l,detailsColumnName:c},a),[n,l,c,a]);s.useEffect(()=>{w.includes(Ee)?g([{id:Ee,desc:!1},{id:ye,desc:!1}]):g([{id:ye,desc:!1}])},[w]);const E=Gt.useReactTable({data:y,columns:f,state:{grouping:w,sorting:h,rowSelection:m},onGroupingChange:p,onSortingChange:g,onRowSelectionChange:x,getExpandedRowModel:Gt.getExpandedRowModel(),getGroupedRowModel:Gt.getGroupedRowModel(),getCoreRowModel:Gt.getCoreRowModel(),getSortedRowModel:Gt.getSortedRowModel(),getRowId:Ga,autoResetExpanded:!1,enableMultiRowSelection:!1,enableSubRowSelection:!1});s.useEffect(()=>{if(d){const S=E.getSelectedRowModel().rowsById,D=Object.keys(S);if(D.length===1){const Y=y.find(Z=>Ga(Z)===D[0])||void 0;Y&&d(Y)}}},[m,y,d,E]);const k=i??Yc,N=l??wn,C=[{label:"No Grouping",value:[]},{label:`Group by ${k}`,value:[ye]},{label:`Group by ${N}`,value:[Ee]},{label:`Group by ${k} and ${N}`,value:[ye,Ee]},{label:`Group by ${N} and ${k}`,value:[Ee,ye]}],A=S=>{p(JSON.parse(S))},R=(S,D)=>{!S.getIsGrouped()&&!S.getIsSelected()&&S.getToggleSelectedHandler()(D)},O=(S,D)=>S.getIsGrouped()?"":o.cn("banded-row",D%2===0?"even":"odd"),I=(S,D,Y)=>{if(!((S==null?void 0:S.length)===0||D.depth {A(S)},children:[e.jsx(Re,{className:"tw:mb-1 tw:mt-2",children:e.jsx(Se,{})}),e.jsx(Me,{position:"item-aligned",children:e.jsx(Lo,{children:C.map(S=>e.jsx(ae,{value:JSON.stringify(S.value),children:S.label},S.label))})})]}),e.jsxs(o.Table,{className:"tw:relative tw:flex tw:flex-col tw:overflow-y-auto tw:p-0",children:[r&&e.jsx(o.TableHeader,{children:E.getHeaderGroups().map(S=>e.jsx(o.TableRow,{children:S.headers.filter(D=>D.column.columnDef.header).map(D=>e.jsx(o.TableHead,{colSpan:D.colSpan,className:"tw:sticky top-0",children:D.isPlaceholder?void 0:e.jsxs("div",{children:[D.column.getCanGroup()?e.jsx(o.Button,{variant:"ghost",title:`Toggle grouping by ${D.column.columnDef.header}`,onClick:D.column.getToggleGroupingHandler(),type:"button",children:D.column.getIsGrouped()?"🛑":"👊 "}):void 0," ",Gt.flexRender(D.column.columnDef.header,D.getContext())]})},D.id))},S.id))}),e.jsx(o.TableBody,{children:E.getRowModel().rows.map((S,D)=>{const Y=o.readDirection();return e.jsx(o.TableRow,{"data-state":S.getIsSelected()?"selected":"",className:o.cn(O(S,D)),onClick:Z=>R(S,Z),children:S.getVisibleCells().map(Z=>{if(!(Z.getIsPlaceholder()||Z.column.columnDef.enableGrouping&&!Z.getIsGrouped()&&(Z.column.columnDef.id!==Ee||!a)))return e.jsx(o.TableCell,{className:o.cn(Z.column.columnDef.id,"tw:p-[1px]",I(w,S,Z)),children:Z.getIsGrouped()?e.jsxs(o.Button,{variant:"link",onClick:S.getToggleExpandedHandler(),type:"button",children:[S.getIsExpanded()&&e.jsx($.ChevronDown,{}),!S.getIsExpanded()&&(Y==="ltr"?e.jsx($.ChevronRight,{}):e.jsx($.ChevronLeft,{}))," ",Gt.flexRender(Z.column.columnDef.cell,Z.getContext())," (",S.subRows.length,")"]}):Gt.flexRender(Z.column.columnDef.cell,Z.getContext())},Z.id)})},S.id)})})]})]})}function un({availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}){const c=n["%webView_book_selector_books_selected%"],d=n["%webView_book_selector_select_books%"],u=n["%webView_book_selector_search_books%"],w=n["%webView_book_selector_select_all%"],p=n["%webView_book_selector_clear_all%"],h=n["%webView_book_selector_no_book_found%"],{otLong:g,ntLong:m,dcLong:x,extraLong:y}={otLong:n==null?void 0:n["%scripture_section_ot_long%"],ntLong:n==null?void 0:n["%scripture_section_nt_long%"],dcLong:n==null?void 0:n["%scripture_section_dc_long%"],extraLong:n==null?void 0:n["%scripture_section_extra_long%"]},[f,E]=s.useState(!1),[k,N]=s.useState(""),C=s.useRef(void 0),A=s.useRef(!1),R=s.useMemo(()=>o.getAvailableBookIds(t),[t]),O=s.useMemo(()=>{if(!k.trim()){const P={[B.Section.OT]:[],[B.Section.NT]:[],[B.Section.DC]:[],[B.Section.Extra]:[]};return R.forEach(K=>{const W=B.getSectionForBook(K);P[W].push(K)}),P}const j=R.filter(P=>o.doesBookMatchQuery(P,k,i)),et={[B.Section.OT]:[],[B.Section.NT]:[],[B.Section.DC]:[],[B.Section.Extra]:[]};return j.forEach(P=>{const K=B.getSectionForBook(P);et[K].push(P)}),et},[R,k,i]),I=s.useCallback((j,et=!1)=>{if(!et||!C.current){a(r.includes(j)?r.filter(lt=>lt!==j):[...r,j]),C.current=j;return}const P=R.findIndex(lt=>lt===C.current),K=R.findIndex(lt=>lt===j);if(P===-1||K===-1)return;const[W,F]=[Math.min(P,K),Math.max(P,K)],tt=R.slice(W,F+1).map(lt=>lt);a(r.includes(j)?r.filter(lt=>!tt.includes(lt)):[...new Set([...r,...tt])])},[r,a,R]),S=j=>{I(j,A.current),A.current=!1},D=(j,et)=>{j.preventDefault(),I(et,j.shiftKey)},Y=()=>{a(R.map(j=>j))},Z=()=>{a([])},L=s.useMemo(()=>Object.values(B.Section).filter(j=>(l==null?void 0:l[j])!==void 0&&o.getBooksForSection(R,j).length===0).map(j=>({section:j,explanation:l==null?void 0:l[j]})),[l,R]);return e.jsxs(o.Popover,{open:f,onOpenChange:j=>{E(j),j||N("")},children:[e.jsx(o.PopoverTrigger,{asChild:!0,children:e.jsxs(o.Button,{variant:"outline",role:"combobox","aria-expanded":f,className:"tw:max-w-64 tw:justify-between",children:[r.length>0?`${c}: ${r.length}`:d,e.jsx($.ChevronsUpDown,{className:"tw:ml-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.PopoverContent,{className:"tw:max-h-(--radix-popover-content-available-height) tw:w-[500px] tw:max-w-[calc(100vw-2rem)] tw:p-0",align:"start",collisionPadding:8,children:e.jsxs(o.Command,{className:"tw:min-h-0",shouldFilter:!1,onKeyDown:j=>{j.key==="Enter"&&(A.current=j.shiftKey)},children:[e.jsx(o.CommandInput,{className:"tw:shrink-0",placeholder:u,value:k,onValueChange:N,spaceSelectsHighlightedItem:!0}),e.jsxs("div",{className:"tw:flex tw:shrink-0 tw:justify-between tw:border-b tw:p-2",children:[e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:Y,disabled:R.length===0,children:w}),e.jsx(o.Button,{variant:"ghost",size:"sm",onClick:Z,children:p})]}),e.jsxs(o.CommandList,{className:"tw:max-h-72 tw:min-h-0 tw:flex-1",children:[e.jsx(o.CommandEmpty,{children:h}),Object.values(B.Section).filter(j=>O[j].length>0).map((j,et)=>{const P=O[j];return e.jsxs(s.Fragment,{children:[et>0&&e.jsx(o.CommandSeparator,{alwaysRender:!0}),e.jsx(o.CommandGroup,{heading:o.getSectionLongName(j,g,m,x,y),children:P.map(K=>e.jsx(Xa,{bookId:K,isSelected:r.includes(K),onSelect:()=>S(K),onMouseDown:W=>D(W,K),section:B.getSectionForBook(K),showCheck:!0,localizedBookNames:i,commandValue:Gr(K,i),className:"tw:flex tw:items-center"},K))})]},j)})]}),L.length>0&&e.jsx("div",{className:"tw:shrink-0 tw:border-t tw:p-2",children:L.map(({section:j,explanation:et})=>e.jsx("p",{className:"tw:text-xs tw:text-muted-foreground",children:et},j))})]})})]})}function pn({disabled:t,tooltipText:r,children:a,className:n}){return e.jsx(o.TooltipProvider,{children:e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:e.jsx(Ue,{className:n,isDisabled:t,disabledExplanation:r,children:a})}),t&&e.jsx(o.TooltipContent,{children:e.jsx("p",{className:"tw:max-w-xs tw:whitespace-pre-line",children:r})})]})})}function Qc({section:t,availableBookIds:r,selectedBookIds:a,onToggle:n,localizedStrings:i,disabledExplanation:l}){const c=o.getBooksForSection(r,t).length===0,d=i["%scripture_section_ot_short%"],u=i["%scripture_section_nt_short%"],w=i["%scripture_section_dc_short%"],p=i["%scripture_section_extra_short%"],h=e.jsx(o.Button,{variant:"outline",size:"sm",onClick:()=>n(t),className:o.cn(o.isSectionFullySelected(r,t,a)&&!c&&"tw:bg-primary tw:text-primary-foreground tw:hover:bg-primary/70 tw:hover:text-primary-foreground"),disabled:c,children:o.getSectionShortName(t,d,u,w,p)});return l?e.jsx(pn,{className:"tw:flex",disabled:c,tooltipText:l,children:h}):h}const Ka=5,Fr=6;function hn({availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}){const c=n["%webView_book_selector_more%"],d=s.useMemo(()=>o.getAvailableBookIds(t),[t]),u=s.useCallback(w=>{const p=o.getBooksForSection(d,w).map(h=>h);a(o.isSectionFullySelected(d,w,r)?r.filter(h=>!p.includes(h)):[...new Set([...r,...p])])},[r,a,d]);return e.jsxs("div",{className:"tw:space-y-2",children:[e.jsx("div",{className:"tw:flex tw:flex-wrap tw:gap-2",children:Object.values(B.Section).map(w=>e.jsx(Qc,{section:w,availableBookIds:d,selectedBookIds:r,onToggle:u,localizedStrings:n,disabledExplanation:l==null?void 0:l[w]},w))}),e.jsx(un,{availableBookInfo:t,selectedBookIds:r,onChangeSelectedBookIds:a,localizedStrings:n,localizedBookNames:i,disabledSectionExplanations:l}),r.length>0&&e.jsxs("div",{className:"tw:mt-2 tw:flex tw:flex-wrap tw:gap-1",children:[r.slice(0,r.length===Fr?Fr:Ka).map(w=>e.jsx(o.Badge,{className:"tw:hover:bg-secondary",variant:"secondary",children:o.getLocalizedBookName(w,i)},w)),r.length>Fr&&e.jsx(o.Badge,{className:"tw:hover:bg-secondary",variant:"secondary",children:`+${r.length-Ka} ${c}`})]})]})}const gn=Object.freeze(["%webView_book_selector_books_selected%","%webView_book_selector_select_books%","%webView_book_selector_search_books%","%webView_book_selector_select_all%","%webView_book_selector_clear_all%","%webView_book_selector_no_book_found%","%webView_book_selector_more%","%scripture_section_ot_long%","%scripture_section_ot_short%","%scripture_section_nt_long%","%scripture_section_nt_short%","%scripture_section_dc_long%","%scripture_section_dc_short%","%scripture_section_extra_long%","%scripture_section_extra_short%"]),tl=Object.freeze(["%webView_scope_selector_selected_text%","%webView_scope_selector_verse%","%webView_scope_selector_chapter%","%webView_scope_selector_book%","%webView_scope_selector_current_verse%","%webView_scope_selector_current_chapter%","%webView_scope_selector_current_book%","%webView_scope_selector_choose_books%","%webView_scope_selector_scope%","%webView_scope_selector_select_books%","%webView_scope_selector_range%","%webView_scope_selector_select_range%","%webView_scope_selector_range_start%","%webView_scope_selector_range_end%","%webView_scope_selector_ok%","%webView_scope_selector_cancel%","%webView_scope_selector_navigate%",...gn]),It=(t,r)=>t[r]??r,el=Object.freeze([" ","-"]);function rl({scope:t,availableScopes:r,onScopeChange:a,availableBookInfo:n,selectedBookIds:i,onSelectedBookIdsChange:l,localizedStrings:c,localizedBookNames:d,disabledSectionExplanations:u,disabledScopeExplanations:w,id:p,variant:h="radio",rangeStart:g,rangeEnd:m,onRangeStartChange:x,onRangeEndChange:y,currentScrRef:f,onCurrentScrRefChange:E,bookChapterControlLocalizedStrings:k,getEndVerse:N,hideLabel:C=!1,buttonClassName:A}){const R=It(c,"%webView_scope_selector_selected_text%"),O=It(c,"%webView_scope_selector_verse%"),I=It(c,"%webView_scope_selector_chapter%"),S=It(c,"%webView_scope_selector_book%"),D=It(c,"%webView_scope_selector_current_verse%"),Y=It(c,"%webView_scope_selector_current_chapter%"),Z=It(c,"%webView_scope_selector_current_book%"),L=It(c,"%webView_scope_selector_choose_books%"),j=It(c,"%webView_scope_selector_scope%"),et=It(c,"%webView_scope_selector_select_books%"),P=It(c,"%webView_scope_selector_range%"),K=It(c,"%webView_scope_selector_select_range%"),W=It(c,"%webView_scope_selector_range_start%"),F=It(c,"%webView_scope_selector_range_end%"),tt=It(c,"%webView_scope_selector_ok%"),lt=It(c,"%webView_scope_selector_cancel%"),it=It(c,"%webView_scope_selector_navigate%"),J=U=>{if(!f)return;const Q=f.book.toUpperCase();switch(U){case"verse":return B.formatScrRef(f,"id");case"chapter":return`${Q} ${f.chapterNum}`;case"book":return Q;default:return}},dt=[{value:"selectedText",label:R,id:"scope-selected-text"},{value:"verse",label:O,dropdownLabel:D,scrRefSuffix:J("verse"),id:"scope-verse"},{value:"chapter",label:I,dropdownLabel:Y,scrRefSuffix:J("chapter"),id:"scope-chapter"},{value:"book",label:S,dropdownLabel:Z,scrRefSuffix:J("book"),id:"scope-book"},{value:"selectedBooks",label:L,id:"scope-selected"},{value:"range",label:P,id:"scope-range"}],gt=(U,Q,Tt=!1)=>e.jsxs(e.Fragment,{children:[U,Q&&!Tt&&e.jsxs("span",{className:"tw:text-muted-foreground",children:[": ",Q]})]}),wt=r?dt.filter(U=>r.includes(U.value)):dt,mt=f??B.defaultScrRef,vt=g??mt,Mt=m??mt,Xt=()=>{},Wt=s.useRef(null),Nt=s.useRef(null),bt=s.useRef(!1),Lt=s.useRef(null),oe=s.useRef(!1),[se,Et]=s.useState(void 0),kt=s.useRef(!1),qt=s.useRef(!1),Jt=s.useRef(null),Qt=s.useCallback(U=>{if(U){Et("start"),kt.current=!1;return}Et(Q=>Q==="start"?void 0:Q),kt.current&&(kt.current=!1,requestAnimationFrame(()=>{var Tt;const Q=(Tt=Wt.current)==null?void 0:Tt.querySelector("button");Q==null||Q.click()}))},[]),te=s.useCallback(U=>{if(U){Et("end"),qt.current=!1;return}Et(Q=>Q==="end"?void 0:Q)},[]),Kt=s.useCallback(U=>{x==null||x(U),y==null||y(U),kt.current=!0},[x,y]),Pt=s.useCallback(U=>{y==null||y(U),qt.current=!0},[y]),Bt=s.useCallback(U=>{a(U),U==="selectedBooks"&&i.length===0&&(f!=null&&f.book)&&l([f.book])},[a,i,f,l]),M=wt.find(U=>U.value===t),q=()=>t==="selectedBooks"&&i.length>0?i.map(U=>U.toUpperCase()).join(", "):t==="range"?B.formatScrRefRange(vt,Mt,{optionOrLocalizedBookName:"id",endRefOptionOrLocalizedBookName:"id",repeatBookName:!0}):M?gt(M.label,M.scrRefSuffix):t,_=wt.filter(U=>U.value!=="selectedBooks"&&U.value!=="range"),z=wt.find(U=>U.value==="selectedBooks"),X=wt.find(U=>U.value==="range"),[V,rt]=s.useState(!1),[st,nt]=s.useState(void 0),[ft,xt]=s.useState(void 0),[ht,_t]=s.useState(void 0),[zt,jt]=s.useState(void 0),[ce,ge]=s.useState([]),le=h==="dropdown"&&st==="selectedBooks",je=e.jsx(hn,{availableBookInfo:n,selectedBookIds:le?ce:i,onChangeSelectedBookIds:le?ge:l,localizedStrings:c,localizedBookNames:d,disabledSectionExplanations:u}),Ce=se==="end",be=se==="start",fe="tw:text-muted-foreground",de=h==="dropdown"&&st==="range",De=de?_t:Kt,Ie=de?jt:y?Pt:Xt,T=e.jsxs("div",{className:"tw:flex tw:flex-wrap tw:items-end tw:gap-4",children:[e.jsxs("div",{className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{htmlFor:"scope-range-start",className:o.cn(Ce&&fe),children:W}),e.jsx(gr,{id:"scope-range-start",scrRef:de?ht??vt:vt,handleSubmit:De,localizedBookNames:d,localizedStrings:k,getEndVerse:N,submitKeys:el,onOpenChange:Qt,className:o.cn(Ce&&fe),modal:!0})]}),e.jsxs("div",{ref:Wt,className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{htmlFor:"scope-range-end",className:o.cn(be&&fe),children:F}),e.jsx(gr,{id:"scope-range-end",scrRef:de?zt??Mt:Mt,handleSubmit:Ie,localizedBookNames:d,localizedStrings:k,getEndVerse:N,disableReferencesUpTo:de?ht??vt:vt,onOpenChange:te,onCloseAutoFocus:U=>{var Q;qt.current&&(qt.current=!1,U.preventDefault(),(Q=Jt.current)==null||Q.focus())},className:o.cn(be&&fe),modal:!0,align:"start"})]})]}),at=s.useRef({}),ct=s.useCallback(U=>Q=>{at.current[U]=Q},[]),Ct=s.useRef(null);s.useEffect(()=>{if(!V)return;let U=0;const Q=requestAnimationFrame(()=>{U=requestAnimationFrame(()=>{var Tt;(Tt=at.current[t])==null||Tt.focus()})});return()=>{cancelAnimationFrame(Q),U&&cancelAnimationFrame(U)}},[V,t]);const[xe,Tr]=s.useState(null),[me,Oe]=s.useState(null),[Pe,Sr]=s.useState(null),rr=200,[Rr,ar]=s.useState(!1);s.useEffect(()=>{if(!Pe||typeof ResizeObserver>"u")return;const U=new ResizeObserver(([Q])=>{ar(Q.contentRect.width U.disconnect()},[Pe]);const or=s.useCallback(U=>{xt(U),_t(vt),jt(Mt),ge(i),rt(!1),nt(U)},[vt,Mt,i]),nr=s.useCallback(()=>{ft!==void 0&&(ft==="range"?(ht&&(x==null||x(ht)),zt&&(y==null||y(zt))):ft==="selectedBooks"&&l(ce),Bt(ft),nt(void 0),xt(void 0))},[ft,ht,zt,ce,x,y,l,Bt]),Ae=s.useCallback(U=>{U||(nt(void 0),xt(void 0))},[]),ir=s.useCallback(U=>{var Q;U.preventDefault(),(Q=Ct.current)==null||Q.focus()},[]),sr=U=>t===U?e.jsx("span",{className:"tw:absolute tw:flex tw:h-3.5 tw:w-3.5 tw:items-center tw:justify-center tw:ltr:left-2 tw:rtl:right-2",children:e.jsx($.Check,{className:"tw:h-4 tw:w-4"})}):void 0;return e.jsxs("div",{id:p,className:"tw:grid tw:gap-4",children:[e.jsxs("div",{className:"tw:grid tw:gap-2",children:[!C&&e.jsx(o.Label,{children:j}),h==="dropdown"?e.jsxs(o.DropdownMenu,{open:V,onOpenChange:rt,children:[e.jsx(o.DropdownMenuTrigger,{asChild:!0,children:e.jsxs(o.Button,{ref:Ct,variant:"outline",role:"combobox",className:o.cn("tw:w-full tw:justify-between tw:overflow-hidden tw:font-normal",A),children:[e.jsx("span",{className:"tw:min-w-0 tw:flex-1 tw:truncate tw:text-start",children:q()}),e.jsx($.ChevronDown,{className:"tw:ms-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})}),e.jsx(o.DropdownMenuContent,{ref:Sr,className:"tw:w-[var(--radix-dropdown-menu-trigger-width)] tw:min-w-[12rem]",align:"start",children:e.jsxs(o.PopoverPortalContainerProvider,{container:Pe,children:[_.map(({value:U,label:Q,dropdownLabel:Tt,scrRefSuffix:ee,id:ne})=>{const b=w==null?void 0:w[U];return e.jsxs(o.DropdownMenuItem,{ref:ct(U),disabled:!!b,className:"tw:relative tw:ps-8 data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground",onSelect:()=>Bt(U),"data-selected":t===U?"true":void 0,children:[t===U&&e.jsx("span",{className:"tw:absolute tw:flex tw:h-3.5 tw:w-3.5 tw:items-center tw:justify-center tw:ltr:left-2 tw:rtl:right-2",children:e.jsx($.Check,{className:"tw:h-4 tw:w-4"})}),e.jsxs("span",{className:"tw:flex tw:min-w-0 tw:flex-col tw:gap-0.5",children:[e.jsx("span",{className:"tw:flex tw:items-center tw:gap-1.5",children:gt(Tt??Q,ee,Rr)}),b&&e.jsx("span",{className:"tw:text-xs tw:whitespace-normal tw:text-foreground",children:b})]})]},ne)}),(z||X)&&e.jsx(o.DropdownMenuSeparator,{}),z&&e.jsxs(o.DropdownMenuItem,{ref:ct("selectedBooks"),className:o.cn("tw:relative tw:ps-8","data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground"),onSelect:()=>or("selectedBooks"),"data-selected":t==="selectedBooks"?"true":void 0,children:[sr("selectedBooks"),`${z.label}…`]}),X&&e.jsxs(o.DropdownMenuItem,{ref:ct("range"),className:o.cn("tw:relative tw:ps-8","data-[highlighted]:tw:bg-accent data-[highlighted]:tw:text-accent-foreground"),onSelect:()=>or("range"),"data-selected":t==="range"?"true":void 0,children:[sr("range"),`${X.label}…`]}),E&&e.jsxs(e.Fragment,{children:[e.jsx(o.DropdownMenuSeparator,{}),e.jsx(o.DropdownMenuLabel,{className:"tw:px-2 tw:py-1.5 tw:text-xs tw:font-medium tw:text-muted-foreground",children:it}),e.jsx(o.DropdownMenuItem,{ref:Lt,className:"tw:p-0",onSelect:U=>{var Q,Tt;if(U.preventDefault(),bt.current){bt.current=!1;return}oe.current||(Tt=(Q=Nt.current)==null?void 0:Q.querySelector("button"))==null||Tt.click()},children:e.jsx("div",{ref:Nt,className:"tw:w-full tw:px-1 tw:pb-1",onPointerDownCapture:U=>{const Q=U.target instanceof HTMLElement?U.target:void 0;Q!=null&&Q.closest("button")&&(bt.current=!0,requestAnimationFrame(()=>{bt.current=!1}))},children:e.jsx(gr,{id:"scope-navigate",scrRef:f??B.defaultScrRef,handleSubmit:E,localizedBookNames:d,localizedStrings:k,getEndVerse:N,triggerVariant:"ghost",onOpenChange:U=>{oe.current=U},onCloseAutoFocus:U=>{var Q;U.preventDefault(),(Q=Lt.current)==null||Q.focus()},modal:!0,className:"tw:w-full tw:min-w-0 tw:max-w-none tw:justify-between tw:px-2 tw:font-normal",triggerContent:e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"tw:min-w-0 tw:flex-1 tw:truncate tw:text-start",children:B.formatScrRef(f??B.defaultScrRef,"id")}),e.jsx($.ChevronDown,{className:"tw:ms-2 tw:h-4 tw:w-4 tw:shrink-0 tw:opacity-50"})]})})})})]})]})})]}):e.jsx(o.RadioGroup,{value:t,onValueChange:Bt,className:"tw:flex tw:flex-col tw:space-y-1",children:wt.map(({value:U,label:Q,scrRefSuffix:Tt,id:ee})=>{const ne=w==null?void 0:w[U];return e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-0.5",children:[e.jsxs("div",{className:"tw:flex tw:items-center",children:[e.jsx(o.RadioGroupItem,{className:"tw:me-2",value:U,id:ee,disabled:!!ne,"aria-describedby":ne?`${ee}-explanation`:void 0}),e.jsx(o.Label,{htmlFor:ee,children:gt(Q,Tt)})]}),ne&&e.jsx("span",{id:`${ee}-explanation`,className:"tw:ms-6 tw:text-xs tw:whitespace-normal tw:text-muted-foreground",children:ne})]},ee)})})]}),h==="radio"&&t==="selectedBooks"&&e.jsxs("div",{className:"tw:grid tw:gap-2",children:[e.jsx(o.Label,{children:et}),je]}),h==="radio"&&t==="range"&&T,h==="dropdown"&&z&&e.jsx(o.Dialog,{open:st==="selectedBooks",onOpenChange:Ae,children:e.jsx(o.DialogContent,{ref:Oe,onCloseAutoFocus:ir,onEscapeKeyDown:U=>{me!=null&&me.querySelector('[data-state="open"]')&&U.preventDefault()},children:e.jsxs(o.PopoverPortalContainerProvider,{container:me,children:[e.jsx(o.DialogHeader,{className:"tw:pe-8",children:e.jsx(o.DialogTitle,{children:L})}),je,e.jsxs(o.DialogFooter,{children:[e.jsx(o.Button,{variant:"outline",onClick:()=>Ae(!1),children:lt}),e.jsx(o.Button,{onClick:nr,children:tt})]})]})})}),h==="dropdown"&&X&&e.jsx(o.Dialog,{open:st==="range",onOpenChange:Ae,children:e.jsx(o.DialogContent,{ref:Tr,onCloseAutoFocus:ir,onEscapeKeyDown:U=>{xe!=null&&xe.querySelector('[data-state="open"]')&&U.preventDefault()},children:e.jsxs(o.PopoverPortalContainerProvider,{container:xe,children:[e.jsx(o.DialogHeader,{className:"tw:pe-8",children:e.jsx(o.DialogTitle,{children:K})}),T,e.jsxs(o.DialogFooter,{children:[e.jsx(o.Button,{variant:"outline",onClick:()=>Ae(!1),children:lt}),e.jsx(o.Button,{ref:Jt,onClick:nr,children:tt})]})]})})})]})}function al({availableScrollGroupIds:t,scrollGroupId:r,onChangeScrollGroupId:a,localizedStrings:n={},size:i="sm",className:l,id:c,disabled:d}){const u={...o.dt,...Object.fromEntries(Object.entries(n).map(([p,h])=>[p,p===h&&p in o.dt?o.dt[p]:h]))},w=o.readDirection();return e.jsxs(Te,{value:`${r}`,onValueChange:p=>a(p==="undefined"?void 0:parseInt(p,10)),disabled:d,children:[e.jsx(Re,{size:i,className:o.cn("pr-twp tw:w-auto",l),children:e.jsx(Se,{placeholder:u[B.getLocalizeKeyForScrollGroupId(r)]??r})}),e.jsx(Me,{id:c,align:w==="rtl"?"end":"start",style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:t.map(p=>e.jsx(ae,{value:`${p}`,children:u[B.getLocalizeKeyForScrollGroupId(p)]},`${p}`))})]})}function ol({children:t}){return e.jsx("div",{className:"pr-twp tw:grid",children:t})}function nl({primary:t,secondary:r,children:a,isLoading:n=!1,loadingMessage:i}){return e.jsxs("div",{className:"tw:flex tw:items-center tw:justify-between tw:space-x-4 tw:py-2",children:[e.jsxs("div",{children:[e.jsx("p",{className:"tw:text-sm tw:font-medium tw:leading-none",children:t}),e.jsx("p",{className:"tw:whitespace-normal tw:break-words tw:text-sm tw:text-muted-foreground",children:r})]}),n?e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:i}):e.jsx("div",{children:a})]})}function il({primary:t,secondary:r,includeSeparator:a=!1}){return e.jsxs("div",{className:"tw:space-y-4 tw:py-2",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"tw:text-lg tw:font-medium",children:t}),e.jsx("p",{className:"tw:text-sm tw:text-muted-foreground",children:r})]}),a?e.jsx(o.Separator,{}):""]})}function fn(t,r){var a;return(a=Object.entries(t).find(([,n])=>"menuItem"in n&&n.menuItem===r))==null?void 0:a[0]}function mn(t){return Object.entries(t).flatMap(([r,a])=>typeof a=="object"?[{columnKey:r,column:a}]:[]).sort((r,a)=>r.column.order-a.column.order)}function vn(t,r,a){return"column"in r&&r.column===a||t===a}function sl(t){const r=new Set(t.items.map(n=>n.group)),a=Object.entries(t.groups).filter(([n])=>r.has(n));return mn(t.columns).filter(({columnKey:n})=>a.some(([i,l])=>vn(i,l,n))).map(({columnKey:n,column:i})=>({columnKey:n,label:i.label}))}function Cr({icon:t,menuLabel:r,leading:a}){return t?e.jsx("img",{className:o.cn("tw:max-h-5 tw:max-w-5",a?"tw:me-2":"tw:ms-2"),src:t,alt:`${a?"Leading":"Trailing"} icon for ${r}`}):void 0}const bn=(t,r,a,n)=>a?Object.entries(t).filter(([l,c])=>vn(l,c,a)).sort(([,l],[,c])=>l.order-c.order).flatMap(([l])=>r.filter(d=>d.group===l).sort((d,u)=>d.order-u.order).map(d=>e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:"command"in d?e.jsxs(o.DropdownMenuItem,{onClick:()=>{n(d)},children:[d.iconPathBefore&&e.jsx(Cr,{icon:d.iconPathBefore,menuLabel:d.label,leading:!0}),d.label,d.iconPathAfter&&e.jsx(Cr,{icon:d.iconPathAfter,menuLabel:d.label}),d.shortcut&&e.jsx(o.DropdownMenuShortcut,{children:d.shortcut})]},`dropdown-menu-item-${d.label}-${d.command}`):e.jsxs(o.DropdownMenuSub,{children:[e.jsx(o.DropdownMenuSubTrigger,{children:d.label}),e.jsx(o.DropdownMenuPortal,{children:e.jsx(o.DropdownMenuSubContent,{children:bn(t,r,fn(t,d.id),n)})})]},`dropdown-menu-sub-${d.label}-${d.id}`)}),d.tooltip&&e.jsx(o.TooltipContent,{children:d.tooltip})]},`tooltip-${d.label}-${"command"in d?d.command:d.id}`))):void 0;function Nr({onSelectMenuItem:t,menuData:r,tabLabel:a,icon:n,className:i,showSectionHeadings:l=!1,variant:c,buttonVariant:d="ghost",id:u}){const w=s.useId(),p=sl(r),h=l&&p.length>1;Ja();const g=s.useRef(null),m=()=>o.showFocusRing(g.current??void 0);return e.jsxs(o.DropdownMenu,{variant:c,children:[e.jsx(o.DropdownMenuTrigger,{"aria-label":a,className:i,asChild:!0,id:u,children:e.jsx(o.Button,{ref:g,variant:d,size:"icon",className:o.QUIET_FOCUS_RING_SUPPRESSION,onKeyDown:m,onBlur:m,children:n??e.jsx($.MenuIcon,{})})}),e.jsx(o.DropdownMenuContent,{align:"start",style:{zIndex:o.Z_INDEX_ABOVE_DOCK},onCloseAutoFocus:()=>{o.getLastInteractionModality()==="pointer"&&o.hideFocusRing(g.current??void 0)},children:p.map(({columnKey:x,label:y},f)=>{const E=`${w}-${x}`;return e.jsxs(s.Fragment,{children:[e.jsxs(o.DropdownMenuGroup,{"aria-labelledby":h?E:void 0,children:[h&&e.jsx(o.DropdownMenuLabel,{id:E,children:y}),e.jsx(o.TooltipProvider,{children:bn(r.groups,r.items,x,t)})]}),f t>=c),i=n===-1?r.length:n;if(a===void 0||i>=a)return i;const l=r.findIndex(c=>t>=c+cl);return l===-1?a:Math.min(a,l)}function ga(t,r){const[a,n]=s.useState(0),i=s.useRef(void 0);return s.useLayoutEffect(()=>{if(!t||typeof ResizeObserver>"u")return;const l=()=>{const{width:d}=t.getBoundingClientRect(),u=i.current;i.current=d;const w=u===void 0||u===0;n(p=>ll(d,r,w?void 0:p))};l();const c=new ResizeObserver(l);return c.observe(t),()=>c.disconnect()},[t,r]),a}const dl=Object.freeze([520,420,340]),xn=s.forwardRef(({id:t,className:r,children:a},n)=>{const[i,l]=s.useState(void 0),c=s.useRef(n);c.current=n;const d=s.useCallback(h=>{l(h??void 0);const g=c.current;typeof g=="function"?g(h):g&&(g.current=h)},[]),u=ga(i,dl),w=ra()??u,p=w>=ze.MINIMUM;return e.jsx(Je.Provider,{value:w,children:e.jsx("div",{ref:d,className:o.cn("tw:sticky tw:top-0 tw:box-border tw:h-14 tw:items-center tw:justify-between tw:overflow-clip tw:py-2 tw:text-foreground tw:@container/toolbar",p?"tw:gap-1 tw:px-2":"tw:gap-2 tw:px-4",r,"tw:flex tw:flex-row"),id:t,children:a})})});function wl({onSelectProjectMenuItem:t,onSelectViewInfoMenuItem:r,projectMenuData:a,tabViewMenuData:n,id:i,className:l,startAreaChildren:c,centerAreaChildren:d,endAreaChildren:u,menuButtonIcon:w}){return e.jsxs(xn,{className:`tw:w-full tw:border-b ${l}`,id:i,children:[a&&e.jsx(Nr,{onSelectMenuItem:t,menuData:a,tabLabel:"Project",icon:w??e.jsx($.Menu,{}),buttonVariant:"ghost",showSectionHeadings:!0}),c&&e.jsx("div",{className:"tw:flex tw:min-w-0 tw:shrink tw:grow-[10] tw:flex-row tw:flex-nowrap tw:items-start tw:gap-x-1 tw:gap-y-2 tw:overflow-clip",children:c}),d&&e.jsx("div",{className:"tw:flex tw:shrink tw:grow-[1] tw:basis-0 tw:flex-row tw:flex-nowrap tw:items-start tw:justify-center tw:gap-x-1 tw:gap-y-2 tw:overflow-clip tw:@sm:basis-auto",children:d}),e.jsxs("div",{className:"tw:flex tw:shrink-0 tw:grow-[1] tw:flex-row-reverse tw:flex-nowrap tw:items-start tw:gap-x-1 tw:gap-y-2 tw:overflow-clip",children:[n&&e.jsx(Nr,{onSelectMenuItem:r,menuData:n,tabLabel:"View Info",icon:e.jsx($.EllipsisVertical,{}),className:"tw:h-full",showSectionHeadings:!0}),u]})]})}function ul({onSelectProjectMenuItem:t,projectMenuData:r,id:a,className:n,menuButtonIcon:i}){return e.jsx(xn,{className:"tw:pointer-events-none",id:a,children:r&&e.jsx(Nr,{onSelectMenuItem:t,menuData:r,tabLabel:"Project",icon:i,className:`tw:pointer-events-auto tw:shadow-lg ${n}`,buttonVariant:"outline",showSectionHeadings:!0})})}const fa=s.forwardRef(({className:t,...r},a)=>{const n=o.readDirection();return e.jsx(G.Tabs.Root,{orientation:"vertical",ref:a,className:o.cn("tw:flex tw:gap-1 tw:rounded-md tw:text-muted-foreground",t),...r,dir:n})});fa.displayName=G.Tabs.List.displayName;const ma=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.List,{ref:a,className:o.cn("tw:flex tw:items-center tw:w-[124px] tw:justify-center tw:rounded-md tw:bg-muted tw:p-1 tw:text-muted-foreground",t),...r}));ma.displayName=G.Tabs.List.displayName;const yn=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.Trigger,{ref:a,...r,className:o.cn("tw:inline-flex tw:w-[116px] tw:cursor-pointer tw:items-center tw:justify-center tw:break-words tw:rounded-sm tw:border-0 tw:bg-muted tw:px-3 tw:py-1.5 tw:text-sm tw:font-medium tw:text-inherit tw:ring-offset-background tw:transition-all tw:hover:text-foreground tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-2 tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:data-[state=active]:bg-background tw:data-[state=active]:text-foreground tw:data-[state=active]:shadow-sm tw:overflow-clip",t)})),va=s.forwardRef(({className:t,...r},a)=>e.jsx(G.Tabs.Content,{ref:a,className:o.cn("tw:ms-5 tw:flex-grow tw:text-foreground tw:ring-offset-background tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-ring tw:focus-visible:ring-offset-2",t),...r}));va.displayName=G.Tabs.Content.displayName;function pl({tabList:t,searchValue:r,onSearch:a,searchPlaceholder:n,headerTitle:i,searchClassName:l,id:c}){return e.jsxs("div",{id:c,className:"pr-twp",children:[e.jsxs("div",{className:"tw:sticky tw:top-0 tw:space-y-2 tw:pb-2",children:[i?e.jsx("h1",{children:i}):"",e.jsx(o.SearchBar,{className:l,value:r,onSearch:a,placeholder:n})]}),e.jsxs(fa,{children:[e.jsx(ma,{children:t.map(d=>e.jsx(yn,{value:d.value,children:d.value},d.key))}),t.map(d=>e.jsx(va,{value:d.value,children:d.content},d.key))]})]})}function hl({className:t,variant:r="default",...a}){const n=s.useMemo(()=>({variant:r}),[r]);return e.jsx(o.MenuContext.Provider,{value:n,children:e.jsx(G.Menubar.Root,{"data-slot":"menubar",className:o.cn("tw:flex tw:h-8 tw:items-center tw:gap-0.5 tw:rounded-lg tw:border tw:p-[3px]",t),...a})})}function gl({...t}){return e.jsx(G.Menubar.Menu,{"data-slot":"menubar-menu",...t})}function fl({...t}){return e.jsx(G.Menubar.Portal,{"data-slot":"menubar-portal",...t})}function ml({className:t,...r}){const a=o.useMenuContext();return e.jsx(G.Menubar.Trigger,{"data-slot":"menubar-trigger",className:o.cn("tw:flex tw:items-center tw:rounded-sm tw:px-1.5 tw:py-[2px] tw:text-sm tw:font-medium tw:outline-hidden tw:select-none tw:hover:bg-muted tw:aria-expanded:bg-muted","pr-twp",o.menuVariants({variant:a.variant,className:t})),...r})}function vl({className:t,align:r="start",alignOffset:a=-4,sideOffset:n=8,style:i,...l}){return e.jsx(fl,{children:e.jsx(G.Menubar.Content,{"data-slot":"menubar-content",align:r,alignOffset:a,sideOffset:n,className:o.cn("tw:min-w-36 tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-md tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative","pr-twp",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...i},...l})})}function bl({className:t,inset:r,variant:a="default",...n}){const i=o.useMenuContext();return e.jsx(G.Menubar.Item,{"data-slot":"menubar-item","data-inset":r,"data-variant":a,className:o.cn("tw:group/menubar-item tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:not-data-[variant=destructive]:focus:**:text-accent-foreground tw:data-inset:ps-7 tw:data-[variant=destructive]:text-destructive tw:data-[variant=destructive]:focus:bg-destructive/10 tw:data-[variant=destructive]:focus:text-destructive tw:dark:data-[variant=destructive]:focus:bg-destructive/20 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4 tw:data-[variant=destructive]:*:[svg]:text-destructive!",o.menuVariants({variant:i.variant,className:t})),...n})}function xl({className:t,...r}){return e.jsx(G.Menubar.Separator,{"data-slot":"menubar-separator",className:o.cn("tw:-mx-1 tw:my-1 tw:h-px tw:bg-border",t),...r})}function yl({className:t,...r}){return e.jsx("span",{"data-slot":"menubar-shortcut",className:o.cn("tw:[unicode-bidi:plaintext] tw:ms-auto tw:text-xs tw:tracking-widest tw:text-muted-foreground tw:group-focus/menubar-item:text-accent-foreground",t),...r})}function kl({...t}){return e.jsx(G.Menubar.Sub,{"data-slot":"menubar-sub",...t})}function _l({className:t,inset:r,children:a,...n}){const i=o.useMenuContext();return e.jsxs(G.Menubar.SubTrigger,{"data-slot":"menubar-sub-trigger","data-inset":r,className:o.cn("tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-none tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-open:bg-accent tw:data-open:text-accent-foreground tw:[&_svg:not([class*=size-])]:size-4",o.menuVariants({variant:i.variant,className:t})),...n,children:[a,e.jsx(Rt.IconChevronRight,{className:"tw:ms-auto tw:size-4"})]})}function jl({className:t,style:r,...a}){return e.jsx(G.Menubar.SubContent,{"data-slot":"menubar-sub-content",className:o.cn("tw:min-w-32 tw:origin-(--radix-menubar-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-lg tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})}const qe=(t,r)=>{setTimeout(()=>{r.forEach(a=>{var n;(n=t.current)==null||n.dispatchEvent(new KeyboardEvent("keydown",a))})},0)},kn=(t,r,a,n)=>{if(!a)return;const i=Object.entries(t).filter(([l,c])=>"column"in c&&c.column===a||l===a).sort(([,l],[,c])=>l.order-c.order);return i.flatMap(([l],c)=>{const d=r.filter(w=>w.group===l).sort((w,p)=>w.order-p.order).map(w=>e.jsxs(o.Tooltip,{children:[e.jsx(o.TooltipTrigger,{asChild:!0,children:"command"in w?e.jsxs(bl,{onClick:()=>{n(w)},children:[w.iconPathBefore&&e.jsx(Cr,{icon:w.iconPathBefore,menuLabel:w.label,leading:!0}),w.label,w.iconPathAfter&&e.jsx(Cr,{icon:w.iconPathAfter,menuLabel:w.label}),w.shortcut&&e.jsx(yl,{children:w.shortcut})]},`menubar-item-${w.label}-${w.command}`):e.jsxs(kl,{children:[e.jsx(_l,{children:w.label}),e.jsx(jl,{children:kn(t,r,fn(t,w.id),n)})]},`menubar-sub-${w.label}-${w.id}`)}),w.tooltip&&e.jsx(o.TooltipContent,{children:w.tooltip})]},`tooltip-${w.label}-${"command"in w?w.command:w.id}`)),u=[...d];return d.length>0&&c {switch(p){case"platform.app":return l;case"platform.window":return c;case"platform.layout":return d;case"platform.help":return u;default:return}};if(On.useHotkeys(["alt","alt+p","alt+l","alt+n","alt+h"],(p,h)=>{var x,y,f,E;p.preventDefault();const g={key:"Escape",code:"Escape",keyCode:27,bubbles:!0},m={key:" ",code:"Space",keyCode:32,bubbles:!0};switch(h.hotkey){case"alt":qe(l,[g]);break;case"alt+p":(x=l.current)==null||x.focus(),qe(l,[g,m]);break;case"alt+l":(y=c.current)==null||y.focus(),qe(c,[g,m]);break;case"alt+n":(f=d.current)==null||f.focus(),qe(d,[g,m]);break;case"alt+h":(E=u.current)==null||E.focus(),qe(u,[g,m]);break}}),s.useEffect(()=>{if(!a||!i.current)return;const p=new MutationObserver(m=>{m.forEach(x=>{if(x.attributeName==="data-state"&&x.target instanceof HTMLElement){const y=x.target.getAttribute("data-state");a(y==="open")}})});return i.current.querySelectorAll("[data-state]").forEach(m=>{p.observe(m,{attributes:!0})}),()=>p.disconnect()},[a]),!!t)return e.jsx(hl,{ref:i,className:"pr-twp tw:border-0 tw:bg-transparent",variant:n,children:mn(t.columns).map(({columnKey:p,column:h})=>e.jsxs(gl,{children:[e.jsx(ml,{ref:w(p),children:h.label}),e.jsx(vl,{style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:e.jsx(o.TooltipProvider,{children:kn(t.groups,t.items,p,r)})})]},p))})}const Nl=Object.freeze([950,800,700]);function El(t){switch(t){case void 0:return;case"darwin":return"tw:ps-[85px]";default:return"tw:pe-[calc(138px+1rem)]"}}function Tl({menuData:t,onOpenChange:r,onSelectMenuItem:a,className:n,id:i,children:l,appMenuAreaChildren:c,configAreaChildren:d,shouldUseAsAppDragArea:u,menubarVariant:w="default"}){const[p,h]=s.useState(void 0),g=s.useCallback(y=>h(y??void 0),[]),m=ga(p,Nl),x=ra()??m;return e.jsx(Je.Provider,{value:x,children:e.jsx("div",{className:o.cn("tw:border tw:px-4 tw:text-foreground",n),style:{position:"relative"},id:i,children:e.jsxs("div",{"data-testid":"toolbar-content-row",className:"tw:flex tw:h-full tw:w-full tw:justify-between tw:overflow-hidden",ref:g,style:u?{WebkitAppRegion:"drag"}:void 0,children:[e.jsx("div",{className:"tw:flex tw:shrink-0 tw:grow tw:basis-0",children:e.jsxs("div",{className:"tw:flex tw:items-center tw:gap-2",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:[c,t&&e.jsx(Cl,{menuData:t,onOpenChange:r,onSelectMenuItem:a,variant:w})]})}),e.jsx("div",{"data-testid":"toolbar-content-area",className:"tw:flex tw:min-w-0 tw:shrink tw:items-center tw:gap-2 tw:overflow-clip tw:px-2",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:l}),e.jsx("div",{className:"tw:flex tw:min-w-0 tw:grow tw:basis-0 tw:justify-end",children:e.jsx("div",{className:"tw:flex tw:min-w-0 tw:items-center tw:gap-2 tw:pe-1",style:u?{WebkitAppRegion:"no-drag"}:void 0,children:d})})]})})})}const Sl=(t,r)=>t[r]??r;function Rl({knownUiLanguages:t,primaryLanguage:r="en",fallbackLanguages:a=[],onLanguagesChange:n,onPrimaryLanguageChange:i,onFallbackLanguagesChange:l,localizedStrings:c,className:d,id:u}){const w=Sl(c,"%settings_uiLanguageSelector_fallbackLanguages%"),[p,h]=s.useState(!1),g=x=>{i&&i(x),n&&n([x,...a.filter(y=>y!==x)]),l&&a.find(y=>y===x)&&l([...a.filter(y=>y!==x)]),h(!1)},m=(x,y)=>{var E,k,N,C,A,R;const f=y!==x?((k=(E=t[x])==null?void 0:E.uiNames)==null?void 0:k[y])??((C=(N=t[x])==null?void 0:N.uiNames)==null?void 0:C.en):void 0;return f?`${(A=t[x])==null?void 0:A.autonym} (${f})`:(R=t[x])==null?void 0:R.autonym};return e.jsxs("div",{id:u,className:o.cn("pr-twp tw:max-w-sm",d),children:[e.jsxs(Te,{name:"uiLanguage",value:r,onValueChange:g,open:p,onOpenChange:x=>h(x),children:[e.jsx(Re,{children:e.jsx(Se,{})}),e.jsx(Me,{style:{zIndex:o.Z_INDEX_ABOVE_DOCK},children:Object.keys(t).map(x=>e.jsx(ae,{value:x,children:m(x,r)},x))})]}),r!=="en"&&e.jsx("div",{className:"tw:pt-3",children:e.jsx(o.Label,{className:"tw:font-normal tw:text-muted-foreground",children:B.formatReplacementString(w,{fallbackLanguages:(a==null?void 0:a.length)>0?a.map(x=>m(x,r)).join(", "):t.en.autonym})})})]})}const Ml=Object.freeze(["%firstRun_language_search_placeholder%","%firstRun_language_noResults%","%firstRun_language_selected%"]);function _n(t){return t.normalize("NFD").replace(/[\u0300-\u036f]/g,"").toLowerCase()}function Dl(t,r){if(!r)return t;const a=_n(r);return t.filter(({keywords:n})=>n.some(i=>i.includes(a)))}function Il(t){return[...t].sort(([r,a],[n,i])=>r==="en"&&n!=="en"?-1:n==="en"&&r!=="en"?1:a.autonym.localeCompare(i.autonym))}function Ol({languages:t,value:r,onChange:a,localizedStrings:n,className:i,id:l}){const[c,d]=s.useState(""),[u,w]=s.useState(),p=s.useRef(null),h=s.useRef(null),g=s.useRef(new Map),[m,x]=s.useState(),y=s.useMemo(()=>Il(Object.entries(t)).map(([R,O])=>({tag:R,info:O,keywords:[O.autonym,...Object.values(O.uiNames??{}),...O.otherNames??[]].map(_n)})),[t]),f=s.useMemo(()=>Dl(y,c),[y,c]),E=s.useMemo(()=>{var O;const R=I=>!!I&&f.some(S=>S.tag===I);return R(u)?u:R(r)?r:((O=f[0])==null?void 0:O.tag)??""},[u,r,f]),k=y.length>1;s.useLayoutEffect(()=>{var R;x((R=h.current)==null?void 0:R.id)},[]),s.useLayoutEffect(()=>{const R=g.current.get(E),O=k?p.current:void 0;O&&(R?O.setAttribute("aria-activedescendant",R.id):O.removeAttribute("aria-activedescendant")),R&&E!==u&&R.scrollIntoView({block:"nearest"})},[E,u,k]);const N=n["%firstRun_language_search_placeholder%"]??"",C=n["%firstRun_language_noResults%"]??"",A=n["%firstRun_language_selected%"]??"";return e.jsxs(o.Command,{id:l,className:o.cn("pr-twp",i),shouldFilter:!1,value:E,onValueChange:w,children:[k&&e.jsx("div",{"data-slot":"command-input-wrapper",className:"tw:p-1 tw:pb-0",children:e.jsxs(o.InputGroup,{className:"tw:h-8! tw:rounded-lg! tw:border-input/30 tw:bg-input/30 tw:shadow-none! tw:*:data-[slot=input-group-addon]:ps-2!",children:[e.jsx("input",{ref:p,"data-slot":"command-input",type:"text",role:"combobox","aria-expanded":!0,"aria-controls":m,"aria-autocomplete":"list",placeholder:N,"aria-label":N,value:c,onChange:R=>{d(R.currentTarget.value),w(void 0)},className:"tw:w-full tw:text-sm tw:outline-hidden tw:disabled:cursor-not-allowed tw:disabled:opacity-50"}),e.jsx(o.InputGroupAddon,{children:e.jsx(Rt.IconSearch,{className:"tw:size-4 tw:shrink-0 tw:opacity-50"})})]})}),e.jsxs(o.CommandList,{ref:h,children:[e.jsx(o.CommandEmpty,{children:C}),f.map(({tag:R,info:O})=>{const I=R===r;return e.jsxs(o.CommandItem,{ref:S=>{S?g.current.set(R,S):g.current.delete(R)},value:R,"aria-current":I?"true":void 0,"data-checked":I?"true":void 0,onSelect:()=>a(R),children:[e.jsx("span",{dir:"auto",children:O.autonym}),I&&e.jsx("span",{className:"tw:sr-only",children:A})]},R)})]})]})}function Pl({item:t,createLabel:r,createComplexLabel:a}){return r?e.jsx(o.Label,{children:r(t)}):a?e.jsx(o.Label,{children:a(t)}):e.jsx(o.Label,{children:t})}function jn({id:t,className:r,listItems:a,selectedListItems:n,handleSelectListItem:i,createLabel:l,createComplexLabel:c}){return e.jsx("div",{id:t,className:r,children:a.map(d=>e.jsxs("div",{className:"tw:m-2 tw:flex tw:items-center",children:[e.jsx(ha,{className:"tw:me-2 tw:align-middle",checked:n.includes(d),onCheckedChange:u=>i(d,u)}),e.jsx(Pl,{item:d,createLabel:l,createComplexLabel:c})]},d))})}const Al=jn;function Ll(t,r){const[a,n]=s.useState(t),[i,l]=s.useState(r);return t!==a&&(n(t),t&&l(r)),t?r:i}function Bl({open:t,anchorRect:r,message:a,confirmingKeyLabel:n,side:i="bottom",align:l="start",showArrow:c=!0}){const d=t?B.formatReplacementStringToArray(a,{key:n}).join(""):"",{anchorRect:u,message:w,confirmingKeyLabel:p,showArrow:h}=Ll(t,{anchorRect:r,message:a,confirmingKeyLabel:n,showArrow:c});return e.jsxs(o.TooltipProvider,{children:[e.jsx("span",{role:"status",className:"tw:sr-only",children:d}),e.jsxs(o.Tooltip,{open:t,onOpenChange:()=>{},children:[e.jsx(o.TooltipTrigger,{"aria-hidden":"true",tabIndex:-1,className:o.cn("tw:absolute tw:opacity-0 tw:pointer-events-none","tw:p-0 tw:border-0 tw:bg-transparent tw:cursor-default tw:min-w-0 tw:min-h-0"),style:{top:u.top,left:u.left,width:u.width,height:u.height}}),e.jsx(o.TooltipContent,{side:i,align:l,showArrow:h,arrowPadding:8,className:o.cn("tw:p-0 tw:has-data-[slot=kbd]:pe-0 tw:bg-background tw:text-destructive tw:border tw:border-destructive"),arrowClassName:"tw:bg-[color-mix(in_oklab,var(--destructive)_10%,var(--background))] tw:fill-[color-mix(in_oklab,var(--destructive)_10%,var(--background))] tw:border tw:border-destructive",children:e.jsx("div",{className:"tw:w-full tw:h-full tw:rounded-md tw:bg-destructive/10 tw:px-3 tw:py-1.5",children:B.formatReplacementStringToArray(w,{key:e.jsx(o.Kbd,{className:o.cn("tw:border tw:border-destructive tw:in-data-[slot=tooltip-content]:text-destructive","tw:align-middle"),children:p})}).map((g,m)=>e.jsx(s.Fragment,{children:g},`key-${m}`))})})]})]})}function zl({cardKey:t,isSelected:r,onSelect:a,isDenied:n,isHidden:i=!1,className:l,children:c,selectedButtons:d,hoverButtons:u,dropdownContent:w,additionalContent:p,accentColor:h,showDropdownOnHover:g=!1}){const m=f=>{if(f.key==="Enter"||f.key===" "){if(f.target!==f.currentTarget)return;f.preventDefault(),a()}},[x,y]=s.useState(!1);return e.jsxs("div",{hidden:i,onClick:a,onKeyDown:m,onMouseEnter:()=>y(!0),onFocus:()=>y(!0),role:"button",tabIndex:0,"aria-pressed":r,className:o.cn("tw:group tw:relative tw:min-w-36 tw:rounded-xl tw:border tw:shadow-none tw:hover:bg-muted/50",{"tw:opacity-50 tw:hover:opacity-100":n&&!r},{"tw:bg-accent":r},{"tw:bg-transparent":!r},l),children:[e.jsxs("div",{className:"tw:flex tw:flex-col tw:gap-2 tw:p-4",children:[e.jsxs("div",{className:"tw:flex tw:justify-between tw:overflow-hidden",children:[e.jsx("div",{className:"tw:min-w-0 tw:flex-1",children:c}),r&&d,!r&&u&&e.jsx("div",{className:"tw:invisible tw:group-hover:visible",children:u}),w&&(r||g&&x)&&e.jsx("div",{className:o.cn(!r&&g&&"tw:invisible tw:group-hover:visible"),children:e.jsxs(o.DropdownMenu,{children:[e.jsx(o.DropdownMenuTrigger,{className:o.cn(h&&"tw:me-1"),asChild:!0,children:e.jsx(o.Button,{className:"tw:m-1 tw:h-6 tw:w-6",variant:"ghost",size:"icon",onClick:f=>f.stopPropagation(),onFocus:f=>f.stopPropagation(),children:e.jsx($.MoreVertical,{})})}),e.jsx(o.DropdownMenuContent,{align:"end",children:w})]})})]}),p&&e.jsx("div",{className:"tw:w-fit tw:min-w-0 tw:max-w-full tw:overflow-hidden",children:p})]}),h&&e.jsx("div",{className:`tw:absolute tw:right-0 tw:top-0 tw:h-full tw:w-2 tw:rounded-r-xl ${h}`})]},t)}function Vl({id:t,isDisabled:r=!1,hasError:a=!1,isFullWidth:n=!1,helperText:i,label:l,placeholder:c,isRequired:d=!1,className:u,defaultValue:w,value:p,onChange:h,onFocus:g,onBlur:m}){return e.jsxs("div",{className:o.cn("tw:inline-grid tw:items-center tw:gap-1.5",{"tw:w-full":n}),children:[e.jsx(o.Label,{htmlFor:t,className:o.cn({"tw:text-red-600":a,"tw:hidden":!l}),children:`${l}${d?"*":""}`}),e.jsx(o.Input,{id:t,disabled:r,placeholder:c,required:d,className:o.cn(u,{"tw:border-red-600":a}),defaultValue:w,value:p,onChange:h,onFocus:g,onBlur:m}),e.jsx("p",{className:o.cn({"tw:hidden":!i}),children:i})]})}function $l({currentStep:t,totalSteps:r,locale:a}){const n=a||"en",i=s.useMemo(()=>{const d=new B.NumberFormat(n);return u=>d.format(u)},[n]),l=Math.min(Math.max(t,1),r),c=Array.from({length:r},(d,u)=>u+1);return e.jsx("div",{className:"tw:flex tw:items-center","aria-hidden":"true",children:c.map(d=>{let u="upcoming";return d===l?u="active":d 1&&e.jsx("div",{className:"tw:h-px tw:flex-1 tw:bg-border"}),e.jsx("div",{"data-state":u,className:o.cn("tw:flex tw:h-8 tw:w-8 tw:shrink-0 tw:items-center tw:justify-center tw:rounded-full tw:text-sm tw:font-medium",u==="active"&&"tw:bg-primary tw:text-primary-foreground",u==="complete"&&"tw:bg-muted tw:text-muted-foreground",u==="upcoming"&&"tw:border tw:border-input tw:text-muted-foreground"),children:u==="complete"?e.jsx($.Check,{className:"tw:h-4 tw:w-4"}):i(d)})]},d)})})}function Fl({...t}){return e.jsx(G.ContextMenu.Root,{"data-slot":"context-menu",...t})}function Ul({className:t,...r}){return e.jsx(G.ContextMenu.Trigger,{"data-slot":"context-menu-trigger",className:o.cn("tw:select-none",t),...r})}function Gl({...t}){return e.jsx(G.ContextMenu.Group,{"data-slot":"context-menu-group",...t})}function Kl({...t}){return e.jsx(G.ContextMenu.Portal,{"data-slot":"context-menu-portal",...t})}function Hl({...t}){return e.jsx(G.ContextMenu.Sub,{"data-slot":"context-menu-sub",...t})}function ql({...t}){return e.jsx(G.ContextMenu.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function Yl({className:t,style:r,...a}){return e.jsx(G.ContextMenu.Portal,{children:e.jsx(G.ContextMenu.Content,{"data-slot":"context-menu-content",className:o.cn("pr-twp tw:max-h-(--radix-context-menu-content-available-height) tw:min-w-36 tw:origin-(--radix-context-menu-content-transform-origin) tw:overflow-x-hidden tw:overflow-y-auto tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-md tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})})}function Zl({className:t,inset:r,variant:a="default",...n}){return e.jsx(G.ContextMenu.Item,{"data-slot":"context-menu-item","data-inset":r,"data-variant":a,className:o.cn("pr-twp tw:group/context-menu-item tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-[variant=destructive]:text-destructive tw:data-[variant=destructive]:focus:bg-destructive/10 tw:data-[variant=destructive]:focus:text-destructive tw:dark:data-[variant=destructive]:focus:bg-destructive/20 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4 tw:focus:*:[svg]:text-accent-foreground tw:data-[variant=destructive]:*:[svg]:text-destructive",t),...n})}function Xl({className:t,inset:r,children:a,...n}){return e.jsxs(G.ContextMenu.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":r,className:o.cn("pr-twp tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:px-1.5 tw:py-1 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-open:bg-accent tw:data-open:text-accent-foreground tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),...n,children:[a,e.jsx(Rt.IconChevronRight,{className:"tw:ms-auto"})]})}function Wl({className:t,style:r,...a}){return e.jsx(G.ContextMenu.SubContent,{"data-slot":"context-menu-sub-content",className:o.cn("pr-twp tw:min-w-32 tw:origin-(--radix-context-menu-content-transform-origin) tw:overflow-hidden tw:rounded-lg tw:bg-popover tw:p-1 tw:text-popover-foreground tw:shadow-lg tw:ring-1 tw:ring-foreground/10 tw:duration-100 tw:data-[side=bottom]:slide-in-from-top-2 tw:data-[side=left]:slide-in-from-right-2 tw:data-[side=right]:slide-in-from-left-2 tw:data-[side=top]:slide-in-from-bottom-2 tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-open:zoom-in-95 tw:data-closed:animate-out tw:data-closed:fade-out-0 tw:data-closed:zoom-out-95 tw:animate-none! tw:**:data-[slot$=-item]:focus:bg-foreground/10 tw:**:data-[slot$=-item]:data-highlighted:bg-foreground/10 tw:**:data-[slot$=-separator]:bg-foreground/5 tw:**:data-[slot$=-trigger]:focus:bg-foreground/10 tw:**:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! tw:**:data-[variant=destructive]:focus:bg-foreground/10! tw:**:data-[variant=destructive]:text-accent-foreground! tw:**:data-[variant=destructive]:**:text-accent-foreground! tw:relative",t),style:{zIndex:o.Z_INDEX_ABOVE_DOCK,...r},...a})}function Jl({className:t,children:r,checked:a,inset:n,...i}){return e.jsxs(G.ContextMenu.CheckboxItem,{"data-slot":"context-menu-checkbox-item","data-inset":n,className:o.cn("pr-twp tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:py-1 tw:pe-8 tw:ps-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),checked:a,...i,children:[e.jsx("span",{className:"tw:pointer-events-none tw:absolute tw:end-2",children:e.jsx(G.ContextMenu.ItemIndicator,{children:e.jsx(Rt.IconCheck,{})})}),r]})}function Ql({className:t,children:r,inset:a,...n}){return e.jsxs(G.ContextMenu.RadioItem,{"data-slot":"context-menu-radio-item","data-inset":a,className:o.cn("pr-twp tw:relative tw:flex tw:cursor-default tw:items-center tw:gap-1.5 tw:rounded-md tw:py-1 tw:pe-8 tw:ps-1.5 tw:text-sm tw:outline-hidden tw:select-none tw:focus:bg-accent tw:focus:text-accent-foreground tw:data-inset:ps-7 tw:data-disabled:pointer-events-none tw:data-disabled:opacity-50 tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4",t),...n,children:[e.jsx("span",{className:"tw:pointer-events-none tw:absolute tw:end-2",children:e.jsx(G.ContextMenu.ItemIndicator,{children:e.jsx(Rt.IconCheck,{})})}),r]})}function td({className:t,inset:r,...a}){return e.jsx(G.ContextMenu.Label,{"data-slot":"context-menu-label","data-inset":r,className:o.cn("pr-twp tw:px-1.5 tw:py-1 tw:text-xs tw:font-medium tw:text-muted-foreground tw:data-inset:ps-7",t),...a})}function ed({className:t,...r}){return e.jsx(G.ContextMenu.Separator,{"data-slot":"context-menu-separator",className:o.cn("pr-twp tw:-mx-1 tw:my-1 tw:h-px tw:bg-border",t),...r})}function rd({className:t,...r}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:o.cn("pr-twp tw:[unicode-bidi:plaintext] tw:ms-auto tw:text-xs tw:tracking-widest tw:text-muted-foreground tw:group-focus/context-menu-item:text-accent-foreground",t),...r})}function ad({...t}){return e.jsx(_e.Drawer.Root,{"data-slot":"drawer",...t})}function od({...t}){return e.jsx(_e.Drawer.Trigger,{"data-slot":"drawer-trigger",...t})}function Cn({...t}){return e.jsx(_e.Drawer.Portal,{"data-slot":"drawer-portal",...t})}function nd({...t}){return e.jsx(_e.Drawer.Close,{"data-slot":"drawer-close",...t})}function Nn({className:t,...r}){return e.jsx(_e.Drawer.Overlay,{"data-slot":"drawer-overlay",className:o.cn("pr-twp tw:fixed tw:inset-0 tw:z-50 tw:bg-black/10 tw:supports-backdrop-filter:backdrop-blur-xs tw:data-open:animate-in tw:data-open:fade-in-0 tw:data-closed:animate-out tw:data-closed:fade-out-0",t),...r})}function id({className:t,children:r,hideDrawerHandle:a=!1,...n}){const i=o.readDirection();return e.jsxs(Cn,{"data-slot":"drawer-portal",children:[e.jsx(Nn,{}),e.jsxs(_e.Drawer.Content,{"data-slot":"drawer-content",className:o.cn("pr-twp tw:group/drawer-content tw:fixed tw:z-50 tw:flex tw:h-auto tw:flex-col tw:bg-popover tw:text-sm tw:text-popover-foreground tw:data-[vaul-drawer-direction=bottom]:inset-x-0 tw:data-[vaul-drawer-direction=bottom]:bottom-0 tw:data-[vaul-drawer-direction=bottom]:mt-24 tw:data-[vaul-drawer-direction=bottom]:max-h-[80vh] tw:data-[vaul-drawer-direction=bottom]:rounded-t-xl tw:data-[vaul-drawer-direction=bottom]:border-t tw:data-[vaul-drawer-direction=left]:inset-y-0 tw:data-[vaul-drawer-direction=left]:left-0 tw:data-[vaul-drawer-direction=left]:w-3/4 tw:data-[vaul-drawer-direction=left]:rounded-r-xl tw:data-[vaul-drawer-direction=left]:border-r tw:data-[vaul-drawer-direction=left]:flex-row tw:data-[vaul-drawer-direction=right]:inset-y-0 tw:data-[vaul-drawer-direction=right]:right-0 tw:data-[vaul-drawer-direction=right]:w-3/4 tw:data-[vaul-drawer-direction=right]:rounded-l-xl tw:data-[vaul-drawer-direction=right]:border-l tw:data-[vaul-drawer-direction=right]:flex-row tw:data-[vaul-drawer-direction=top]:inset-x-0 tw:data-[vaul-drawer-direction=top]:top-0 tw:data-[vaul-drawer-direction=top]:mb-24 tw:data-[vaul-drawer-direction=top]:max-h-[80vh] tw:data-[vaul-drawer-direction=top]:rounded-b-xl tw:data-[vaul-drawer-direction=top]:border-b tw:data-[vaul-drawer-direction=left]:sm:max-w-sm tw:data-[vaul-drawer-direction=right]:sm:max-w-sm",t),dir:"ltr",...n,children:[!a&&e.jsx("div",{className:"tw:hidden tw:shrink-0 tw:rounded-full tw:bg-muted tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:mx-auto tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:mt-4 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:h-1.5 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:w-[100px] tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:block tw:group-data-[vaul-drawer-direction=right]/drawer-content:my-auto tw:group-data-[vaul-drawer-direction=right]/drawer-content:ms-4 tw:group-data-[vaul-drawer-direction=right]/drawer-content:h-[100px] tw:group-data-[vaul-drawer-direction=right]/drawer-content:w-1.5 tw:group-data-[vaul-drawer-direction=right]/drawer-content:block"}),e.jsx("div",{className:"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col",dir:i,children:r}),!a&&e.jsx("div",{className:"tw:hidden tw:shrink-0 tw:rounded-full tw:bg-muted tw:group-data-[vaul-drawer-direction=top]/drawer-content:mx-auto tw:group-data-[vaul-drawer-direction=top]/drawer-content:mb-4 tw:group-data-[vaul-drawer-direction=top]/drawer-content:h-1.5 tw:group-data-[vaul-drawer-direction=top]/drawer-content:w-[100px] tw:group-data-[vaul-drawer-direction=top]/drawer-content:block tw:group-data-[vaul-drawer-direction=left]/drawer-content:my-auto tw:group-data-[vaul-drawer-direction=left]/drawer-content:me-4 tw:group-data-[vaul-drawer-direction=left]/drawer-content:h-[100px] tw:group-data-[vaul-drawer-direction=left]/drawer-content:w-1.5 tw:group-data-[vaul-drawer-direction=left]/drawer-content:block"})]})]})}function sd({className:t,...r}){return e.jsx("div",{"data-slot":"drawer-header",className:o.cn("pr-twp tw:flex tw:flex-col tw:gap-0.5 tw:p-4 tw:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center tw:group-data-[vaul-drawer-direction=top]/drawer-content:text-center tw:md:gap-0.5 tw:md:text-start",t),...r})}function cd({className:t,...r}){return e.jsx("div",{"data-slot":"drawer-footer",className:o.cn("pr-twp tw:mt-auto tw:flex tw:flex-col tw:gap-2 tw:p-4",t),...r})}function ld({className:t,...r}){return e.jsx(_e.Drawer.Title,{"data-slot":"drawer-title",className:o.cn("pr-twp tw:font-heading tw:text-base tw:font-medium tw:text-foreground",t),...r})}function dd({className:t,...r}){return e.jsx(_e.Drawer.Description,{"data-slot":"drawer-description",className:o.cn("pr-twp tw:text-sm tw:text-muted-foreground",t),...r})}function wd({className:t,value:r,...a}){return e.jsx(G.Progress.Root,{"data-slot":"progress",className:o.cn("pr-twp tw:relative tw:flex tw:h-1 tw:w-full tw:items-center tw:overflow-x-hidden tw:rounded-full tw:bg-muted",t),...a,children:e.jsx(G.Progress.Indicator,{"data-slot":"progress-indicator",className:"tw:size-full tw:flex-1 tw:bg-primary tw:transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})})}function ud({...t}){const{theme:r="system"}=Pn.useTheme(),a=r==="light"||r==="dark"||r==="system"?r:"system",n={"--normal-bg":"var(--popover)","--normal-text":"var(--popover-foreground)","--normal-border":"var(--border)","--border-radius":"var(--radius)"};return e.jsx(Za.Toaster,{theme:a,className:"tw:toaster tw:group",icons:{success:e.jsx(Rt.IconCircleCheck,{className:"tw:size-4"}),info:e.jsx(Rt.IconInfoCircle,{className:"tw:size-4"}),warning:e.jsx(Rt.IconAlertTriangle,{className:"tw:size-4"}),error:e.jsx(Rt.IconAlertOctagon,{className:"tw:size-4"}),loading:e.jsx(Rt.IconLoader,{className:"tw:size-4 tw:animate-spin"})},style:n,toastOptions:{classNames:{toast:"cn-toast"}},...t})}function pd({className:t,defaultValue:r,value:a,min:n=0,max:i=100,...l}){const c=o.readDirection(),d=s.useMemo(()=>Array.isArray(a)?a:Array.isArray(r)?r:[n,i],[a,r,n,i]);return e.jsxs(G.Slider.Root,{"data-slot":"slider",defaultValue:r,value:a,min:n,max:i,className:o.cn("pr-twp tw:relative tw:flex tw:w-full tw:touch-none tw:items-center tw:select-none tw:data-disabled:opacity-50 tw:data-vertical:h-full tw:data-vertical:min-h-40 tw:data-vertical:w-auto tw:data-vertical:flex-col",t),dir:c,...l,children:[e.jsx(G.Slider.Track,{"data-slot":"slider-track",className:"tw:relative tw:grow tw:overflow-hidden tw:rounded-full tw:bg-muted tw:data-horizontal:h-1 tw:data-horizontal:w-full tw:data-vertical:h-full tw:data-vertical:w-1",children:e.jsx(G.Slider.Range,{"data-slot":"slider-range",className:"tw:absolute tw:bg-primary tw:select-none tw:data-horizontal:h-full tw:data-vertical:w-full"})}),Array.from({length:d.length},(u,w)=>e.jsx(G.Slider.Thumb,{"data-slot":"slider-thumb",className:"tw:relative tw:block tw:size-3 tw:shrink-0 tw:rounded-full tw:border tw:border-ring tw:bg-white tw:ring-ring/50 tw:transition-[color,box-shadow] tw:select-none tw:after:absolute tw:after:-inset-2 tw:hover:ring-3 tw:focus-visible:ring-3 tw:focus-visible:outline-hidden tw:active:ring-3 tw:disabled:pointer-events-none tw:disabled:opacity-50"},w))]})}function hd({className:t,size:r="default",...a}){return e.jsx(G.Switch.Root,{"data-slot":"switch","data-size":r,className:o.cn("tw:peer pr-twp tw:group/switch tw:relative tw:inline-flex tw:shrink-0 tw:items-center tw:rounded-full tw:border tw:border-transparent tw:transition-all tw:outline-none tw:after:absolute tw:after:-inset-x-3 tw:after:-inset-y-2 tw:focus-visible:border-ring tw:focus-visible:ring-3 tw:focus-visible:ring-ring/50 tw:aria-invalid:border-destructive tw:aria-invalid:ring-3 tw:aria-invalid:ring-destructive/20 tw:data-[size=default]:h-[18.4px] tw:data-[size=default]:w-[32px] tw:data-[size=sm]:h-[14px] tw:data-[size=sm]:w-[24px] tw:dark:aria-invalid:border-destructive/50 tw:dark:aria-invalid:ring-destructive/40 tw:data-checked:bg-primary tw:data-unchecked:bg-input tw:dark:data-unchecked:bg-input/80 tw:data-disabled:cursor-not-allowed tw:data-disabled:opacity-50",t),...a,children:e.jsx(G.Switch.Thumb,{"data-slot":"switch-thumb",className:"tw:pointer-events-none tw:block tw:rounded-full tw:bg-background tw:ring-0 tw:transition-transform tw:group-data-[size=default]/switch:size-4 tw:group-data-[size=sm]/switch:size-3 tw:group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] tw:rtl:group-data-[size=default]/switch:data-checked:-translate-x-[calc(100%-2px)] tw:group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] tw:rtl:group-data-[size=sm]/switch:data-checked:-translate-x-[calc(100%-2px)] tw:dark:data-checked:bg-primary-foreground tw:group-data-[size=default]/switch:data-unchecked:translate-x-0 tw:rtl:group-data-[size=default]/switch:data-unchecked:-translate-x-0 tw:group-data-[size=sm]/switch:data-unchecked:translate-x-0 tw:rtl:group-data-[size=sm]/switch:data-unchecked:-translate-x-0 tw:dark:data-unchecked:bg-foreground"})})}function gd({className:t,orientation:r="horizontal",...a}){return e.jsx(G.Tabs.Root,{"data-slot":"tabs","data-orientation":r,className:o.cn("tw:group/tabs tw:flex tw:gap-2 tw:data-horizontal:flex-col",t),...a})}const fd=Ya.cva("tw:group/tabs-list tw:inline-flex tw:w-fit tw:items-center tw:justify-center tw:rounded-lg tw:p-[3px] tw:text-muted-foreground tw:group-data-horizontal/tabs:h-8 tw:group-data-vertical/tabs:h-fit tw:group-data-vertical/tabs:flex-col tw:data-[variant=line]:rounded-none",{variants:{variant:{default:"tw:bg-muted",line:"tw:gap-1 tw:bg-transparent"}},defaultVariants:{variant:"default"}});function md({className:t,variant:r="default",...a}){const n=o.readDirection();return e.jsx(G.Tabs.List,{"data-slot":"tabs-list","data-variant":r,className:o.cn("pr-twp",fd({variant:r}),t),dir:n,...a})}function vd({className:t,...r}){return e.jsx(G.Tabs.Trigger,{"data-slot":"tabs-trigger",className:o.cn("pr-twp tw:relative tw:inline-flex tw:h-[calc(100%-1px)] tw:flex-1 tw:items-center tw:justify-center tw:gap-1.5 tw:rounded-md tw:border tw:border-transparent tw:px-1.5 tw:py-0.5 tw:text-sm tw:font-medium tw:whitespace-nowrap tw:text-foreground/60 tw:transition-all tw:group-data-vertical/tabs:w-full tw:group-data-vertical/tabs:justify-start tw:hover:text-foreground tw:focus-visible:border-ring tw:focus-visible:ring-[3px] tw:focus-visible:ring-ring/50 tw:focus-visible:outline-1 tw:focus-visible:outline-ring tw:disabled:pointer-events-none tw:disabled:opacity-50 tw:has-data-[icon=inline-end]:pe-1 tw:has-data-[icon=inline-start]:ps-1 tw:dark:text-muted-foreground tw:dark:hover:text-foreground tw:group-data-[variant=default]/tabs-list:data-active:shadow-sm tw:group-data-[variant=line]/tabs-list:data-active:shadow-none tw:[&_svg]:pointer-events-none tw:[&_svg]:shrink-0 tw:[&_svg:not([class*=size-])]:size-4","tw:group-data-[variant=line]/tabs-list:bg-transparent tw:group-data-[variant=line]/tabs-list:data-active:bg-transparent tw:dark:group-data-[variant=line]/tabs-list:data-active:border-transparent tw:dark:group-data-[variant=line]/tabs-list:data-active:bg-transparent","tw:data-active:bg-background tw:data-active:text-foreground tw:dark:data-active:border-input tw:dark:data-active:bg-input/30 tw:dark:data-active:text-foreground","tw:after:absolute tw:after:bg-foreground tw:after:opacity-0 tw:after:transition-opacity tw:group-data-horizontal/tabs:after:inset-x-0 tw:group-data-horizontal/tabs:after:bottom-[-5px] tw:group-data-horizontal/tabs:after:h-0.5 tw:group-data-vertical/tabs:after:inset-y-0 tw:group-data-vertical/tabs:after:-end-1 tw:group-data-vertical/tabs:after:w-0.5 tw:group-data-[variant=line]/tabs-list:data-active:after:opacity-100",t),...r})}function bd({className:t,...r}){return e.jsx(G.Tabs.Content,{"data-slot":"tabs-content",className:o.cn("pr-twp tw:flex-1 tw:text-sm tw:outline-none",t),...r})}const xd=(t,r)=>{s.useEffect(()=>{if(!t)return;let a=!1;const i=t(l=>{a||r(l)});return()=>{a=!0;try{i()}catch(l){console.error("useEvent: error while unsubscribing from event",l)}}},[t,r])},yd=(t,r)=>{s.useEffect(()=>{if(!t)return;let a=!1,n,i=!1;const l=d=>{a||r(d)},c=()=>{if(i||!n)return;i=!0;const d=n;(async()=>{try{await d()}catch(u){console.error("useEventAsync: error while unsubscribing from event",u)}})()};return(async()=>{try{n=await Promise.resolve(t(l)),a&&c()}catch(d){console.error("useEventAsync: error while subscribing to event",d)}})(),()=>{a=!0,c()}},[t,r])};function kd(t){return{preserveValue:!0,...t}}const En=(t,r,a={})=>{const n=s.useRef(r);n.current=r;const i=s.useRef(a);i.current=kd(i.current);const[l,c]=s.useState(()=>n.current),[d,u]=s.useState(!0);return s.useEffect(()=>{let w=!0;return u(!!t),(async()=>{if(t)try{const p=await t();w&&(c(()=>p),u(!1))}catch(p){w&&u(!1),console.error("usePromise: the promise factory rejected, so there is no new value",p)}})(),()=>{w=!1,i.current.preserveValue||c(()=>n.current)}},[t]),[l,d]},_d=t=>{const[r,a]=s.useState(!1),[n,i]=s.useState(!1),[l,c]=s.useState(0),d=s.useRef(void 0),u=s.useMemo(()=>{if(!t)return;const g=async()=>{try{const m=await t();return d.current===g&&(a(!1),i(!0)),m}catch(m){throw d.current===g&&(a(!0),i(!0)),m}};return g},[t,l]);s.useEffect(()=>{d.current=u,a(!1),i(!u)},[u]);const[w,p]=En(u,void 0),h=s.useCallback(()=>{d.current&&(a(!1),i(!1),c(g=>g+1))},[]);return s.useMemo(()=>({data:w,isLoading:p,hasError:r,hasSettled:n,refetch:h}),[w,p,r,n,h])};function jd(t){s.useEffect(()=>{let r;return t&&(r=document.createElement("style"),r.appendChild(document.createTextNode(t)),document.head.appendChild(r)),()=>{r&&document.head.removeChild(r)}},[t])}function Cd(t){const r=s.useMemo(()=>B.collectUsjMarkers(t).slice().sort().join(" "),[t]);return s.useMemo(()=>r?r.split(" "):[],[r])}const Tn=()=>{const[t,r]=s.useState(()=>document.body.getBoundingClientRect().height>0);return s.useEffect(()=>{const a=new IntersectionObserver(n=>{const i=n[n.length-1];i&&r(i.isIntersecting)});return a.observe(document.body),()=>{a.disconnect()}},[]),t};function Nd(t,r){const[a,n]=s.useState(!1),i=s.useRef(r);i.current=r;const l=s.useRef(t);l.current=t;const c=s.useCallback(()=>{l.current?i.current():n(!0)},[]);return s.useEffect(()=>{!t||!a||(n(!1),i.current())},[t,a]),c}function Sn(t,r,a){return t?a.dark:r===void 0?a.lightDefault:a.lightUnselected}function Ed(t,r){const a=Tn();return Sn(t,a,r)}function Td({value:t,children:r}){return e.jsx(ea.Provider,{value:t,children:e.jsx(Je.Provider,{value:t,children:r})})}const Sd=300;exports.Alert=o.Alert;exports.AlertDescription=o.AlertDescription;exports.AlertTitle=o.AlertTitle;exports.Badge=o.Badge;exports.Button=o.Button;exports.ButtonGroup=o.ButtonGroup;exports.ButtonGroupSeparator=o.ButtonGroupSeparator;exports.ButtonGroupText=o.ButtonGroupText;exports.CONTENT_ZOOM_CSS_VARIABLE_PREFIX=o.CONTENT_ZOOM_CSS_VARIABLE_PREFIX;exports.CONTENT_ZOOM_DEFAULT_CSS_VARIABLE=o.CONTENT_ZOOM_DEFAULT_CSS_VARIABLE;exports.CONTENT_ZOOM_POPUP_ATTRIBUTE=o.CONTENT_ZOOM_POPUP_ATTRIBUTE;exports.CONTENT_ZOOM_ROOT_ATTRIBUTE=o.CONTENT_ZOOM_ROOT_ATTRIBUTE;exports.Command=o.Command;exports.CommandEmpty=o.CommandEmpty;exports.CommandGroup=o.CommandGroup;exports.CommandInput=o.CommandInput;exports.CommandItem=o.CommandItem;exports.CommandList=o.CommandList;exports.ContentZoomAreaProvider=o.ContentZoomAreaProvider;exports.Dialog=o.Dialog;exports.DialogClose=o.DialogClose;exports.DialogContent=o.DialogContent;exports.DialogDescription=o.DialogDescription;exports.DialogFooter=o.DialogFooter;exports.DialogHeader=o.DialogHeader;exports.DialogOverlay=o.DialogOverlay;exports.DialogPortal=o.DialogPortal;exports.DialogTitle=o.DialogTitle;exports.DialogTrigger=o.DialogTrigger;exports.DropdownMenu=o.DropdownMenu;exports.DropdownMenuCheckboxItem=o.DropdownMenuCheckboxItem;exports.DropdownMenuContent=o.DropdownMenuContent;exports.DropdownMenuGroup=o.DropdownMenuGroup;exports.DropdownMenuItem=o.DropdownMenuItem;exports.DropdownMenuLabel=o.DropdownMenuLabel;exports.DropdownMenuPortal=o.DropdownMenuPortal;exports.DropdownMenuRadioGroup=o.DropdownMenuRadioGroup;exports.DropdownMenuRadioItem=o.DropdownMenuRadioItem;exports.DropdownMenuSeparator=o.DropdownMenuSeparator;exports.DropdownMenuShortcut=o.DropdownMenuShortcut;exports.DropdownMenuSub=o.DropdownMenuSub;exports.DropdownMenuSubContent=o.DropdownMenuSubContent;exports.DropdownMenuSubTrigger=o.DropdownMenuSubTrigger;exports.DropdownMenuTrigger=o.DropdownMenuTrigger;exports.Empty=o.Empty;exports.EmptyContent=o.EmptyContent;exports.EmptyDescription=o.EmptyDescription;exports.EmptyHeader=o.EmptyHeader;exports.EmptyMedia=o.EmptyMedia;exports.EmptyState=o.EmptyState;exports.EmptyTitle=o.EmptyTitle;exports.Input=o.Input;exports.Kbd=o.Kbd;exports.KbdGroup=o.KbdGroup;exports.Label=o.Label;exports.MAIN_CONTENT_ZOOM_AREA_ID=o.MAIN_CONTENT_ZOOM_AREA_ID;exports.MultiSelectComboBox=o.MultiSelectComboBox;exports.Popover=o.Popover;exports.PopoverAnchor=o.PopoverAnchor;exports.PopoverContent=o.PopoverContent;exports.PopoverDescription=o.PopoverDescription;exports.PopoverHeader=o.PopoverHeader;exports.PopoverPortalContainerProvider=o.PopoverPortalContainerProvider;exports.PopoverTitle=o.PopoverTitle;exports.PopoverTrigger=o.PopoverTrigger;exports.RadioGroup=o.RadioGroup;exports.RadioGroupItem=o.RadioGroupItem;exports.ResizableHandle=o.ResizableHandle;exports.ResizablePanel=o.ResizablePanel;exports.ResizablePanelGroup=o.ResizablePanelGroup;exports.RetryableErrorView=o.RetryableErrorView;exports.SearchBar=o.SearchBar;exports.Separator=o.Separator;exports.Skeleton=o.Skeleton;exports.Spinner=o.Spinner;exports.Table=o.Table;exports.TableBody=o.TableBody;exports.TableCaption=o.TableCaption;exports.TableCell=o.TableCell;exports.TableFooter=o.TableFooter;exports.TableHead=o.TableHead;exports.TableHeader=o.TableHeader;exports.TableRow=o.TableRow;exports.ToggleGroup=o.ToggleGroup;exports.ToggleGroupItem=o.ToggleGroupItem;exports.Tooltip=o.Tooltip;exports.TooltipContent=o.TooltipContent;exports.TooltipProvider=o.TooltipProvider;exports.TooltipTrigger=o.TooltipTrigger;exports.Z_INDEX_ABOVE_DOCK=o.Z_INDEX_ABOVE_DOCK;exports.Z_INDEX_ABOVE_POPOVER=o.Z_INDEX_ABOVE_POPOVER;exports.Z_INDEX_CONNECTION_LOST=o.Z_INDEX_CONNECTION_LOST;exports.Z_INDEX_FIRST_RUN=o.Z_INDEX_FIRST_RUN;exports.Z_INDEX_MODAL=o.Z_INDEX_MODAL;exports.Z_INDEX_MODAL_BACKDROP=o.Z_INDEX_MODAL_BACKDROP;exports.Z_INDEX_NESTED_MODAL=o.Z_INDEX_NESTED_MODAL;exports.Z_INDEX_NESTED_MODAL_BACKDROP=o.Z_INDEX_NESTED_MODAL_BACKDROP;exports.Z_INDEX_ONBOARDING_TOUR=o.Z_INDEX_ONBOARDING_TOUR;exports.Z_INDEX_OVERLAY=o.Z_INDEX_OVERLAY;exports.badgeVariants=o.badgeVariants;exports.buttonGroupVariants=o.buttonGroupVariants;exports.buttonVariants=o.buttonVariants;exports.cn=o.cn;exports.isMacOs=o.isMacOs;exports.isWindows=o.isWindows;exports.useContentZoomArea=o.useContentZoomArea;exports.useListbox=o.useListbox;exports.useTruncationTooltip=o.useTruncationTooltip;Object.defineProperty(exports,"sonner",{enumerable:!0,get:()=>Za.toast});exports.Avatar=Mo;exports.AvatarFallback=Do;exports.AvatarImage=Ss;exports.BOOK_CHAPTER_CONTROL_STRING_KEYS=Qn;exports.BOOK_SELECTOR_STRING_KEYS=ei;exports.BookChapterControl=gr;exports.BookSelector=ri;exports.CANCEL_ACCEPT_BUTTONS_STRING_KEYS=da;exports.COMMENT_EDITOR_STRING_KEYS=ks;exports.COMMENT_LIST_ELEMENT_ID=To;exports.COMMENT_LIST_STRING_KEYS=_s;exports.CONFLICT_NOTE_STRING_KEYS=vs;exports.CancelAcceptButtons=wa;exports.Card=So;exports.CardContent=Ro;exports.CardDescription=Es;exports.CardFooter=Ts;exports.CardHeader=Cs;exports.CardTitle=Ns;exports.ChapterRangeSelector=ro;exports.Checkbox=ha;exports.CheckboxGroup=Al;exports.Checklist=jn;exports.ComboBox=qr;exports.CommentEditor=ys;exports.CommentList=Bs;exports.ConflictNoteCard=Po;exports.ContentZoomRoot=Ao;exports.ContextMenu=Fl;exports.ContextMenuCheckboxItem=Jl;exports.ContextMenuContent=Yl;exports.ContextMenuGroup=Gl;exports.ContextMenuItem=Zl;exports.ContextMenuLabel=td;exports.ContextMenuPortal=Kl;exports.ContextMenuRadioGroup=ql;exports.ContextMenuRadioItem=Ql;exports.ContextMenuSeparator=ed;exports.ContextMenuShortcut=rd;exports.ContextMenuSub=Hl;exports.ContextMenuSubContent=Wl;exports.ContextMenuSubTrigger=Xl;exports.ContextMenuTrigger=Ul;exports.DataTable=Vo;exports.DestructiveKeyConfirmation=Bl;exports.DisabledActionTooltip=pn;exports.DisabledTooltipWrapper=Ue;exports.Drawer=ad;exports.DrawerClose=nd;exports.DrawerContent=id;exports.DrawerDescription=dd;exports.DrawerFooter=cd;exports.DrawerHeader=sd;exports.DrawerOverlay=Nn;exports.DrawerPortal=Cn;exports.DrawerTitle=ld;exports.DrawerTrigger=od;exports.DropdownMenuItemType=Uo;exports.ERROR_DUMP_STRING_KEYS=$o;exports.ERROR_POPOVER_STRING_KEYS=Gs;exports.EditorKeyboardShortcuts=Ho;exports.ErrorDump=Fo;exports.ErrorPopover=Ks;exports.FOOTNOTE_EDITOR_STRING_KEYS=dc;exports.Filter=Xs;exports.FilterDropdown=Hs;exports.Footer=Zs;exports.FootnoteEditor=lc;exports.FootnoteItem=Qo;exports.FootnoteList=pc;exports.INTERFACE_LANGUAGE_PICKER_STRING_KEYS=Ml;exports.INVENTORY_STRING_KEYS=jc;exports.InterfaceLanguagePicker=Ol;exports.Inventory=Ec;exports.MARKER_MENU_STRING_KEYS=Xo;exports.MarkdownRenderer=Us;exports.MarkerMenu=Wo;exports.MoreInfo=qs;exports.NavigationContentSearch=pl;exports.Progress=wd;exports.RecentSearches=to;exports.ResultsCard=zl;exports.SCOPE_SELECTOR_STRING_KEYS=tl;exports.SELECT_BOOKS_STRING_KEYS=gn;exports.SHRINK_STEP=ze;exports.ScopeSelector=rl;exports.ScriptureResultsViewer=Jc;exports.ScrollGroupSelector=al;exports.Select=Te;exports.SelectBooks=hn;exports.SelectBooksPicker=un;exports.SelectContent=Me;exports.SelectGroup=Lo;exports.SelectItem=ae;exports.SelectLabel=Vs;exports.SelectScrollDownButton=zo;exports.SelectScrollUpButton=Bo;exports.SelectSeparator=$s;exports.SelectTrigger=Re;exports.SelectValue=Se;exports.SettingsList=ol;exports.SettingsListHeader=il;exports.SettingsListItem=nl;exports.SettingsSidebar=dn;exports.SettingsSidebarContentSearch=Gc;exports.ShrinkStepContext=Je;exports.ShrinkStepOverride=Td;exports.ShrinkStepOverrideContext=ea;exports.Sidebar=an;exports.SidebarContent=nn;exports.SidebarFooter=Oc;exports.SidebarGroup=Jr;exports.SidebarGroupAction=Ac;exports.SidebarGroupContent=ta;exports.SidebarGroupLabel=Qr;exports.SidebarHeader=Ic;exports.SidebarInput=Dc;exports.SidebarInset=on;exports.SidebarMenu=sn;exports.SidebarMenuAction=Bc;exports.SidebarMenuBadge=zc;exports.SidebarMenuButton=ln;exports.SidebarMenuItem=cn;exports.SidebarMenuSkeleton=Vc;exports.SidebarMenuSub=$c;exports.SidebarMenuSubButton=Uc;exports.SidebarMenuSubItem=Fc;exports.SidebarProvider=rn;exports.SidebarRail=Mc;exports.SidebarSeparator=Pc;exports.SidebarTrigger=Rc;exports.Slider=pd;exports.Sonner=ud;exports.Switch=hd;exports.TOOLTIP_DELAY_MS=Sd;exports.TabDropdownMenu=Nr;exports.TabFloatingMenu=ul;exports.TabToolbar=wl;exports.Tabs=gd;exports.TabsContent=bd;exports.TabsList=md;exports.TabsTrigger=vd;exports.TextField=Vl;exports.Textarea=An;exports.Toolbar=Tl;exports.ToolbarCompoundLabel=Qa;exports.UNDO_REDO_BUTTONS_STRING_KEYS=Go;exports.UiLanguageSelector=Rl;exports.UndoRedoButtons=Ko;exports.VerticalTabs=fa;exports.VerticalTabsContent=va;exports.VerticalTabsList=ma;exports.VerticalTabsTrigger=yn;exports.WizardStepper=$l;exports.getBookIdFromUSFM=_c;exports.getCommentThreadElementId=js;exports.getInventoryHeader=Qe;exports.getLinesFromUSFM=yc;exports.getNumberFromUSFM=kc;exports.getStatusForItem=tn;exports.getToolbarOSReservedSpaceClassName=El;exports.inventoryCountColumn=bc;exports.inventoryItemColumn=mc;exports.inventoryStatusColumn=xc;exports.isCommentDraftEmpty=Wr;exports.leftEdgeRect=Zo;exports.localizeOrFallback=Zt;exports.markerMenuItemToPaletteItem=Jo;exports.measureElement=Ws;exports.measureRange=Yo;exports.pickTabIconUrl=Sn;exports.useEvent=xd;exports.useEventAsync=yd;exports.useExtraValidMarkers=Cd;exports.useLivePopoverAnchor=qo;exports.usePromise=En;exports.useRecentSearches=Fn;exports.useRetryablePromise=_d;exports.useRunWhenVisible=Nd;exports.useShrinkStep=ga;exports.useShrinkStepOverride=ra;exports.useShrinkStepValue=Wa;exports.useSidebar=tr;exports.useStylesheet=jd;exports.useTabIconSelection=Ed;exports.useViewVisibility=Tn;function Rd(t,r="top"){if(!t||typeof document>"u")return;const a=document.head||document.querySelector("head"),n=a.querySelector(":first-child"),i=document.createElement("style");i.appendChild(document.createTextNode(t)),r==="top"&&n?a.insertBefore(i,n):a.appendChild(i)}Rd(`/* By default the editor is too tall for the footnote editor, even while empty, so this makes it shorter. */ .footnote-editor .editor-input { min-height: 75px; @@ -154,6 +154,6 @@ list-style-type: disclosure-open; } /*! tailwindcss v4.2.2 | 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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--tw-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--tw-color-red-100:oklch(93.6% .032 17.717);--tw-color-red-200:oklch(88.5% .062 18.334);--tw-color-red-300:oklch(80.8% .114 19.571);--tw-color-red-400:oklch(70.4% .191 22.216);--tw-color-red-500:oklch(63.7% .237 25.331);--tw-color-red-600:oklch(57.7% .245 27.325);--tw-color-red-700:oklch(50.5% .213 27.518);--tw-color-red-800:oklch(44.4% .177 26.899);--tw-color-orange-100:oklch(95.4% .038 75.164);--tw-color-orange-800:oklch(47% .157 37.304);--tw-color-amber-200:oklch(92.4% .12 95.746);--tw-color-amber-400:oklch(82.8% .189 84.429);--tw-color-amber-500:oklch(76.9% .188 70.08);--tw-color-amber-600:oklch(66.6% .179 58.318);--tw-color-yellow-50:oklch(98.7% .026 102.212);--tw-color-yellow-100:oklch(97.3% .071 103.193);--tw-color-yellow-400:oklch(85.2% .199 91.936);--tw-color-yellow-500:oklch(79.5% .184 86.047);--tw-color-yellow-600:oklch(68.1% .162 75.834);--tw-color-yellow-700:oklch(55.4% .135 66.442);--tw-color-green-50:oklch(98.2% .018 155.826);--tw-color-green-100:oklch(96.2% .044 156.743);--tw-color-green-500:oklch(72.3% .219 149.579);--tw-color-green-600:oklch(62.7% .194 149.214);--tw-color-green-700:oklch(52.7% .154 150.069);--tw-color-green-800:oklch(44.8% .119 151.328);--tw-color-teal-400:oklch(77.7% .152 181.912);--tw-color-teal-500:oklch(70.4% .14 182.503);--tw-color-teal-600:oklch(60% .118 184.704);--tw-color-sky-400:oklch(74.6% .16 232.661);--tw-color-sky-500:oklch(68.5% .169 237.323);--tw-color-sky-600:oklch(58.8% .158 241.966);--tw-color-blue-50:oklch(97% .014 254.604);--tw-color-blue-100:oklch(93.2% .032 255.585);--tw-color-blue-400:oklch(70.7% .165 254.624);--tw-color-blue-500:oklch(62.3% .214 259.815);--tw-color-blue-600:oklch(54.6% .245 262.881);--tw-color-blue-800:oklch(42.4% .199 265.638);--tw-color-indigo-200:oklch(87% .065 274.039);--tw-color-purple-50:oklch(97.7% .014 308.299);--tw-color-purple-200:oklch(90.2% .063 306.703);--tw-color-purple-900:oklch(38.1% .176 304.987);--tw-color-rose-400:oklch(71.2% .194 13.428);--tw-color-rose-500:oklch(64.5% .246 16.439);--tw-color-rose-600:oklch(58.6% .253 17.585);--tw-color-slate-300:oklch(86.9% .022 252.894);--tw-color-slate-400:oklch(70.4% .04 256.788);--tw-color-slate-900:oklch(20.8% .042 265.755);--tw-color-gray-50:oklch(98.5% .002 247.839);--tw-color-gray-100:oklch(96.7% .003 264.542);--tw-color-gray-300:oklch(87.2% .01 258.338);--tw-color-gray-500:oklch(55.1% .027 264.364);--tw-color-gray-600:oklch(44.6% .03 256.802);--tw-color-gray-700:oklch(37.3% .034 259.733);--tw-color-gray-800:oklch(27.8% .033 256.848);--tw-color-zinc-400:oklch(70.5% .015 286.067);--tw-color-neutral-300:oklch(87% 0 0);--tw-color-black:#000;--tw-color-white:#fff;--tw-container-xs:20rem;--tw-container-sm:24rem;--tw-container-md:28rem;--tw-container-lg:32rem;--tw-container-2xl:42rem;--tw-container-3xl:48rem;--tw-container-4xl:56rem;--tw-container-6xl:72rem;--tw-text-xs:.75rem;--tw-text-xs--line-height:calc(1 / .75);--tw-text-sm:.875rem;--tw-text-sm--line-height:calc(1.25 / .875);--tw-text-base:1rem;--tw-text-base--line-height:calc(1.5 / 1);--tw-text-lg:1.125rem;--tw-text-lg--line-height:calc(1.75 / 1.125);--tw-text-xl:1.25rem;--tw-text-xl--line-height:calc(1.75 / 1.25);--tw-text-2xl:1.5rem;--tw-text-2xl--line-height:calc(2 / 1.5);--tw-text-3xl:1.875rem;--tw-text-3xl--line-height:calc(2.25 / 1.875);--tw-text-4xl:2.25rem;--tw-text-4xl--line-height:calc(2.5 / 2.25);--tw-text-5xl:3rem;--tw-text-5xl--line-height:1;--tw-font-weight-normal:400;--tw-font-weight-medium:500;--tw-font-weight-semibold:600;--tw-font-weight-bold:700;--tw-font-weight-extrabold:800;--tw-tracking-tight:-.025em;--tw-tracking-wider:.05em;--tw-tracking-widest:.1em;--tw-leading-tight:1.25;--tw-leading-snug:1.375;--tw-leading-relaxed:1.625;--tw-leading-loose:2;--tw-radius-xs:.125rem;--tw-radius-md:calc(var(--radius) * .8);--tw-drop-shadow-sm:0 1px 2px #00000026;--tw-animate-spin:spin 1s linear infinite;--tw-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--tw-blur-xs:4px;--tw-default-transition-duration:.15s;--tw-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--tw-default-font-family:"IBM Plex Sans Variable", sans-serif;--tw-default-mono-font-family:var(--tw-font-mono)}}@layer base{.pr-twp,.pr-twp *{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.pr-twp,.pr-twp *{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body.pr-twp{background-color:var(--background);color:var(--foreground)}html.pr-twp{font-family:IBM Plex Sans Variable,sans-serif}:where(.pr-twp,.pr-twp *),:where(.pr-twp,.pr-twp *):after,:where(.pr-twp,.pr-twp *):before,:where(.pr-twp,.pr-twp *) ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}:where(.pr-twp,.pr-twp *) ::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.pr-twp{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--tw-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(--tw-default-font-feature-settings,normal);font-variation-settings:var(--tw-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr:where(.pr-twp,.pr-twp *){height:0;color:inherit;border-top-width:1px}abbr:where([title]):where(.pr-twp,.pr-twp *){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1:where(.pr-twp,.pr-twp *),h2:where(.pr-twp,.pr-twp *),h3:where(.pr-twp,.pr-twp *),h4:where(.pr-twp,.pr-twp *),h5:where(.pr-twp,.pr-twp *),h6:where(.pr-twp,.pr-twp *){font-size:inherit;font-weight:inherit}a:where(.pr-twp,.pr-twp *){color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b:where(.pr-twp,.pr-twp *),strong:where(.pr-twp,.pr-twp *){font-weight:bolder}code:where(.pr-twp,.pr-twp *),kbd:where(.pr-twp,.pr-twp *),samp:where(.pr-twp,.pr-twp *),pre:where(.pr-twp,.pr-twp *){font-family:var(--tw-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--tw-default-mono-font-feature-settings,normal);font-variation-settings:var(--tw-default-mono-font-variation-settings,normal);font-size:1em}small:where(.pr-twp,.pr-twp *){font-size:80%}sub:where(.pr-twp,.pr-twp *),sup:where(.pr-twp,.pr-twp *){vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub:where(.pr-twp,.pr-twp *){bottom:-.25em}sup:where(.pr-twp,.pr-twp *){top:-.5em}table:where(.pr-twp,.pr-twp *){text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(.pr-twp,.pr-twp *){outline:auto}progress:where(.pr-twp,.pr-twp *){vertical-align:baseline}summary:where(.pr-twp,.pr-twp *){display:list-item}ol:where(.pr-twp,.pr-twp *),ul:where(.pr-twp,.pr-twp *),menu:where(.pr-twp,.pr-twp *){list-style:none}img:where(.pr-twp,.pr-twp *),svg:where(.pr-twp,.pr-twp *),video:where(.pr-twp,.pr-twp *),canvas:where(.pr-twp,.pr-twp *),audio:where(.pr-twp,.pr-twp *),iframe:where(.pr-twp,.pr-twp *),embed:where(.pr-twp,.pr-twp *),object:where(.pr-twp,.pr-twp *){vertical-align:middle;display:block}img:where(.pr-twp,.pr-twp *),video:where(.pr-twp,.pr-twp *){max-width:100%;height:auto}button:where(.pr-twp,.pr-twp *),input:where(.pr-twp,.pr-twp *),select:where(.pr-twp,.pr-twp *),optgroup:where(.pr-twp,.pr-twp *),textarea:where(.pr-twp,.pr-twp *){font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(.pr-twp,.pr-twp *) ::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:where(.pr-twp,.pr-twp *){font-weight:bolder}:where(select:is([multiple],[size])) optgroup option:where(.pr-twp,.pr-twp *){padding-inline-start:20px}:where(.pr-twp,.pr-twp *) ::file-selector-button{margin-inline-end:4px}:where(.pr-twp,.pr-twp *) ::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){:where(.pr-twp,.pr-twp *) ::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){:where(.pr-twp,.pr-twp *) ::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea:where(.pr-twp,.pr-twp *){resize:vertical}:where(.pr-twp,.pr-twp *) ::-webkit-search-decoration{-webkit-appearance:none}:where(.pr-twp,.pr-twp *) ::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit{display:inline-flex}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-fields-wrapper{padding:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-year-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-month-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-day-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-hour-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-minute-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-second-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-millisecond-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-meridiem-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid:where(.pr-twp,.pr-twp *){box-shadow:none}button:where(.pr-twp,.pr-twp *),input:where([type=button],[type=reset],[type=submit]):where(.pr-twp,.pr-twp *){appearance:button}:where(.pr-twp,.pr-twp *) ::file-selector-button{appearance:button}:where(.pr-twp,.pr-twp *) ::-webkit-inner-spin-button{height:auto}:where(.pr-twp,.pr-twp *) ::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])):where(.pr-twp,.pr-twp *){display:none!important}}@layer components;@layer utilities{.tw\\:\\@container\\/card-header{container:card-header/inline-size}.tw\\:\\@container\\/search{container:search/inline-size}.tw\\:\\@container\\/toolbar{container:toolbar/inline-size}.tw\\:pointer-events-auto{pointer-events:auto}.tw\\:pointer-events-none{pointer-events:none}.tw\\:invisible{visibility:hidden}.tw\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tw\\:absolute{position:absolute}.tw\\:fixed{position:fixed}.tw\\:relative{position:relative}.tw\\:sticky{position:sticky}.tw\\:inset-0{inset:calc(calc(var(--spacing)) * 0)}.tw\\:inset-y-0{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:inset-s-3{inset-inline-start:calc(calc(var(--spacing)) * 3)}.tw\\:start-1\\.5{inset-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:start-1\\/2{inset-inline-start:50%}.tw\\:end-0{inset-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:end-1{inset-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:end-2{inset-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:end-3{inset-inline-end:calc(calc(var(--spacing)) * 3)}.tw\\:inset-e-0{inset-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:-top-\\[1px\\]{top:-1px}.tw\\:top-0{top:calc(calc(var(--spacing)) * 0)}.tw\\:top-1{top:calc(calc(var(--spacing)) * 1)}.tw\\:top-1\\.5{top:calc(calc(var(--spacing)) * 1.5)}.tw\\:top-1\\/2{top:50%}.tw\\:top-1\\/3{top:33.3333%}.tw\\:top-2{top:calc(calc(var(--spacing)) * 2)}.tw\\:top-2\\.5{top:calc(calc(var(--spacing)) * 2.5)}.tw\\:top-3\\.5{top:calc(calc(var(--spacing)) * 3.5)}.tw\\:top-\\[-1px\\]{top:-1px}.tw\\:top-full{top:100%}.tw\\:-right-1{right:calc(calc(var(--spacing)) * -1)}.tw\\:right-0{right:calc(calc(var(--spacing)) * 0)}.tw\\:right-1{right:calc(calc(var(--spacing)) * 1)}.tw\\:right-3{right:calc(calc(var(--spacing)) * 3)}.tw\\:bottom-0{bottom:calc(calc(var(--spacing)) * 0)}.tw\\:-left-\\[1px\\]{left:-1px}.tw\\:left-0{left:calc(calc(var(--spacing)) * 0)}.tw\\:left-1\\/2{left:50%}.tw\\:left-2{left:calc(calc(var(--spacing)) * 2)}.tw\\:left-3{left:calc(calc(var(--spacing)) * 3)}.tw\\:isolate{isolation:isolate}.tw\\:z-10{z-index:10}.tw\\:z-20{z-index:20}.tw\\:z-50{z-index:50}.tw\\:order-first{order:-9999}.tw\\:order-last{order:9999}.tw\\:col-span-1{grid-column:span 1/span 1}.tw\\:col-span-2{grid-column:span 2/span 2}.tw\\:col-span-3{grid-column:span 3/span 3}.tw\\:col-start-1{grid-column-start:1}.tw\\:col-start-2{grid-column-start:2}.tw\\:row-span-2{grid-row:span 2/span 2}.tw\\:row-start-1{grid-row-start:1}.tw\\:row-start-2{grid-row-start:2}.tw\\:m-0{margin:calc(calc(var(--spacing)) * 0)}.tw\\:m-1{margin:calc(calc(var(--spacing)) * 1)}.tw\\:m-2{margin:calc(calc(var(--spacing)) * 2)}.tw\\:-mx-1{margin-inline:calc(calc(var(--spacing)) * -1)}.tw\\:-mx-4{margin-inline:calc(calc(var(--spacing)) * -4)}.tw\\:mx-0{margin-inline:calc(calc(var(--spacing)) * 0)}.tw\\:mx-1{margin-inline:calc(calc(var(--spacing)) * 1)}.tw\\:mx-2{margin-inline:calc(calc(var(--spacing)) * 2)}.tw\\:mx-3\\.5{margin-inline:calc(calc(var(--spacing)) * 3.5)}.tw\\:mx-4{margin-inline:calc(calc(var(--spacing)) * 4)}.tw\\:mx-8{margin-inline:calc(calc(var(--spacing)) * 8)}.tw\\:my-1{margin-block:calc(calc(var(--spacing)) * 1)}.tw\\:my-2\\.5{margin-block:calc(calc(var(--spacing)) * 2.5)}.tw\\:my-4{margin-block:calc(calc(var(--spacing)) * 4)}.tw\\:my-auto{margin-block:auto}.tw\\:ms-1{margin-inline-start:calc(calc(var(--spacing)) * 1)}.tw\\:ms-2{margin-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:ms-5{margin-inline-start:calc(calc(var(--spacing)) * 5)}.tw\\:ms-6{margin-inline-start:calc(calc(var(--spacing)) * 6)}.tw\\:ms-auto{margin-inline-start:auto}.tw\\:me-1{margin-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:me-2{margin-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:prose{color:var(--tw-prose-body);max-width:65ch}.tw\\:prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.tw\\:prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.tw\\:prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.tw\\:prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.tw\\:prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.tw\\:prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.tw\\:prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.tw\\:prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.tw\\:prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.tw\\:prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.tw\\:prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.tw\\:prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.tw\\:prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.tw\\:prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.tw\\:prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.tw\\:prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.tw\\:prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.tw\\:prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.tw\\:prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.tw\\:prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.tw\\:prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.tw\\:prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.tw\\:prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.tw\\:prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.tw\\:prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.tw\\:prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.tw\\:prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.tw\\:prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.tw\\:prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.tw\\:prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.tw\\:prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.tw\\:prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"\`"}.tw\\:prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.tw\\:prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.tw\\:prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.tw\\:prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.tw\\:prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.tw\\:prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.tw\\:prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.tw\\:prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.tw\\:prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.tw\\:prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.tw\\:prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.tw\\:prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.tw\\:prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.tw\\:prose{--tw-prose-body:var(--foreground);--tw-prose-headings:var(--foreground);--tw-prose-lead:var(--muted-foreground);--tw-prose-links:var(--primary);--tw-prose-bold:var(--foreground);--tw-prose-counters:var(--muted-foreground);--tw-prose-bullets:var(--muted-foreground);--tw-prose-hr:var(--border);--tw-prose-quotes:var(--foreground);--tw-prose-quote-borders:var(--border);--tw-prose-captions:var(--muted-foreground);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:NaN NaN NaN;--tw-prose-code:var(--foreground);--tw-prose-pre-code:var(--muted-foreground);--tw-prose-pre-bg:var(--muted);--tw-prose-th-borders:var(--border);--tw-prose-td-borders:var(--border);--tw-prose-invert-body:var(--foreground);--tw-prose-invert-headings:var(--foreground);--tw-prose-invert-lead:var(--muted-foreground);--tw-prose-invert-links:var(--primary);--tw-prose-invert-bold:var(--foreground);--tw-prose-invert-counters:var(--muted-foreground);--tw-prose-invert-bullets:var(--muted-foreground);--tw-prose-invert-hr:var(--border);--tw-prose-invert-quotes:var(--foreground);--tw-prose-invert-quote-borders:var(--border);--tw-prose-invert-captions:var(--muted-foreground);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:var(--foreground);--tw-prose-invert-pre-code:var(--muted-foreground);--tw-prose-invert-pre-bg:var(--muted);--tw-prose-invert-th-borders:var(--border);--tw-prose-invert-td-borders:var(--border);font-size:1rem;line-height:1.75}.tw\\:prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.tw\\:prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.tw\\:prose :where(.tw\\:prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.tw\\:prose :where(.tw\\:prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.tw\\:prose :where(.tw\\:prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.tw\\:prose :where(.tw\\:prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.tw\\:prose :where(.tw\\:prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.tw\\:prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.tw\\:prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.tw\\:prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.tw\\:prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.tw\\:prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(.tw\\:prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose :where(.tw\\:prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.tw\\:prose-sm{font-size:.875rem;line-height:1.71429}.tw\\:prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.tw\\:prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.tw\\:prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.tw\\:prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.tw\\:prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.tw\\:prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.tw\\:prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.tw\\:prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.tw\\:prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.tw\\:prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.tw\\:prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.tw\\:prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.tw\\:prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.tw\\:prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.tw\\:prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.tw\\:prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.tw\\:prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.tw\\:prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.tw\\:prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.tw\\:prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.tw\\:prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.tw\\:prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.tw\\:prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.tw\\:prose-sm :where(.tw\\:prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose-sm :where(.tw\\:prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.tw\\:-mt-4{margin-top:calc(calc(var(--spacing)) * -4)}.tw\\:mt-0\\.5{margin-top:calc(calc(var(--spacing)) * .5)}.tw\\:mt-1{margin-top:calc(calc(var(--spacing)) * 1)}.tw\\:mt-2{margin-top:calc(calc(var(--spacing)) * 2)}.tw\\:mt-3{margin-top:calc(calc(var(--spacing)) * 3)}.tw\\:mt-4{margin-top:calc(calc(var(--spacing)) * 4)}.tw\\:mt-6{margin-top:calc(calc(var(--spacing)) * 6)}.tw\\:mt-auto{margin-top:auto}.tw\\:mr-1{margin-right:calc(calc(var(--spacing)) * 1)}.tw\\:mr-2{margin-right:calc(calc(var(--spacing)) * 2)}.tw\\:mr-3{margin-right:calc(calc(var(--spacing)) * 3)}.tw\\:-mb-4{margin-bottom:calc(calc(var(--spacing)) * -4)}.tw\\:mb-1{margin-bottom:calc(calc(var(--spacing)) * 1)}.tw\\:mb-2{margin-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:mb-3{margin-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:mb-4{margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:ml-1{margin-left:calc(calc(var(--spacing)) * 1)}.tw\\:ml-2{margin-left:calc(calc(var(--spacing)) * 2)}.tw\\:ml-4{margin-left:calc(calc(var(--spacing)) * 4)}.tw\\:ml-auto{margin-left:auto}.tw\\:box-border{box-sizing:border-box}.tw\\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tw\\:no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.tw\\:no-scrollbar::-webkit-scrollbar{display:none}.tw\\:block{display:block}.tw\\:flex{display:flex}.tw\\:grid{display:grid}.tw\\:hidden{display:none}.tw\\:inline-block{display:inline-block}.tw\\:inline-flex{display:inline-flex}.tw\\:inline-grid{display:inline-grid}.tw\\:field-sizing-content{field-sizing:content}.tw\\:aspect-square{aspect-ratio:1}.tw\\:size-2{width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:size-2\\.5{width:calc(calc(var(--spacing)) * 2.5);height:calc(calc(var(--spacing)) * 2.5)}.tw\\:size-3{width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:size-3\\.5{width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:size-4{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:size-6{width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:size-7{width:calc(calc(var(--spacing)) * 7);height:calc(calc(var(--spacing)) * 7)}.tw\\:size-8{width:calc(calc(var(--spacing)) * 8);height:calc(calc(var(--spacing)) * 8)}.tw\\:size-9{width:calc(calc(var(--spacing)) * 9);height:calc(calc(var(--spacing)) * 9)}.tw\\:size-10{width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:size-full{width:100%;height:100%}.tw\\:h-1{height:calc(calc(var(--spacing)) * 1)}.tw\\:h-2{height:calc(calc(var(--spacing)) * 2)}.tw\\:h-3{height:calc(calc(var(--spacing)) * 3)}.tw\\:h-3\\.5{height:calc(calc(var(--spacing)) * 3.5)}.tw\\:h-4{height:calc(calc(var(--spacing)) * 4)}.tw\\:h-5{height:calc(calc(var(--spacing)) * 5)}.tw\\:h-6{height:calc(calc(var(--spacing)) * 6)}.tw\\:h-7{height:calc(calc(var(--spacing)) * 7)}.tw\\:h-8{height:calc(calc(var(--spacing)) * 8)}.tw\\:h-8\\!{height:calc(calc(var(--spacing)) * 8)!important}.tw\\:h-8\\.5{height:calc(calc(var(--spacing)) * 8.5)}.tw\\:h-9{height:calc(calc(var(--spacing)) * 9)}.tw\\:h-10{height:calc(calc(var(--spacing)) * 10)}.tw\\:h-12{height:calc(calc(var(--spacing)) * 12)}.tw\\:h-14{height:calc(calc(var(--spacing)) * 14)}.tw\\:h-20{height:calc(calc(var(--spacing)) * 20)}.tw\\:h-24{height:calc(calc(var(--spacing)) * 24)}.tw\\:h-32{height:calc(calc(var(--spacing)) * 32)}.tw\\:h-40{height:calc(calc(var(--spacing)) * 40)}.tw\\:h-64{height:calc(calc(var(--spacing)) * 64)}.tw\\:h-80{height:calc(calc(var(--spacing)) * 80)}.tw\\:h-96{height:calc(calc(var(--spacing)) * 96)}.tw\\:h-\\[5px\\]{height:5px}.tw\\:h-\\[260px\\]{height:260px}.tw\\:h-\\[300px\\]{height:300px}.tw\\:h-\\[400px\\]{height:400px}.tw\\:h-\\[600px\\]{height:600px}.tw\\:h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 1px)}.tw\\:h-\\[calc\\(100\\%-2px\\)\\]{height:calc(100% - 2px)}.tw\\:h-auto{height:auto}.tw\\:h-full{height:100%}.tw\\:h-px{height:1px}.tw\\:h-screen{height:100vh}.tw\\:h-svh{height:100svh}.tw\\:max-h-\\(--radix-context-menu-content-available-height\\){max-height:var(--radix-context-menu-content-available-height)}.tw\\:max-h-\\(--radix-dropdown-menu-content-available-height\\){max-height:var(--radix-dropdown-menu-content-available-height)}.tw\\:max-h-\\(--radix-popover-content-available-height\\){max-height:var(--radix-popover-content-available-height)}.tw\\:max-h-\\(--radix-select-content-available-height\\){max-height:var(--radix-select-content-available-height)}.tw\\:max-h-5{max-height:calc(calc(var(--spacing)) * 5)}.tw\\:max-h-10{max-height:calc(calc(var(--spacing)) * 10)}.tw\\:max-h-72{max-height:calc(calc(var(--spacing)) * 72)}.tw\\:max-h-80{max-height:calc(calc(var(--spacing)) * 80)}.tw\\:max-h-\\[96\\%\\]{max-height:96%}.tw\\:max-h-\\[300px\\]{max-height:300px}.tw\\:min-h-0{min-height:calc(calc(var(--spacing)) * 0)}.tw\\:min-h-11{min-height:calc(calc(var(--spacing)) * 11)}.tw\\:min-h-16{min-height:calc(calc(var(--spacing)) * 16)}.tw\\:min-h-\\[200px\\]{min-height:200px}.tw\\:min-h-full{min-height:100%}.tw\\:min-h-svh{min-height:100svh}.tw\\:w-\\(--radix-dropdown-menu-trigger-width\\){width:var(--radix-dropdown-menu-trigger-width)}.tw\\:w-\\(--sidebar-width\\){width:var(--sidebar-width)}.tw\\:w-1{width:calc(calc(var(--spacing)) * 1)}.tw\\:w-1\\/2{width:50%}.tw\\:w-1\\/4{width:25%}.tw\\:w-1\\/6{width:16.6667%}.tw\\:w-2{width:calc(calc(var(--spacing)) * 2)}.tw\\:w-3{width:calc(calc(var(--spacing)) * 3)}.tw\\:w-3\\.5{width:calc(calc(var(--spacing)) * 3.5)}.tw\\:w-3\\/4{width:75%}.tw\\:w-4{width:calc(calc(var(--spacing)) * 4)}.tw\\:w-4\\/5{width:80%}.tw\\:w-4\\/6{width:66.6667%}.tw\\:w-5{width:calc(calc(var(--spacing)) * 5)}.tw\\:w-5\\/6{width:83.3333%}.tw\\:w-6{width:calc(calc(var(--spacing)) * 6)}.tw\\:w-7{width:calc(calc(var(--spacing)) * 7)}.tw\\:w-8{width:calc(calc(var(--spacing)) * 8)}.tw\\:w-9{width:calc(calc(var(--spacing)) * 9)}.tw\\:w-9\\/12{width:75%}.tw\\:w-10{width:calc(calc(var(--spacing)) * 10)}.tw\\:w-12{width:calc(calc(var(--spacing)) * 12)}.tw\\:w-14{width:calc(calc(var(--spacing)) * 14)}.tw\\:w-20{width:calc(calc(var(--spacing)) * 20)}.tw\\:w-24{width:calc(calc(var(--spacing)) * 24)}.tw\\:w-32{width:calc(calc(var(--spacing)) * 32)}.tw\\:w-48{width:calc(calc(var(--spacing)) * 48)}.tw\\:w-56{width:calc(calc(var(--spacing)) * 56)}.tw\\:w-60{width:calc(calc(var(--spacing)) * 60)}.tw\\:w-64{width:calc(calc(var(--spacing)) * 64)}.tw\\:w-72{width:calc(calc(var(--spacing)) * 72)}.tw\\:w-80{width:calc(calc(var(--spacing)) * 80)}.tw\\:w-96{width:calc(calc(var(--spacing)) * 96)}.tw\\:w-\\[1px\\]{width:1px}.tw\\:w-\\[5px\\]{width:5px}.tw\\:w-\\[70px\\]{width:70px}.tw\\:w-\\[100px\\]{width:100px}.tw\\:w-\\[116px\\]{width:116px}.tw\\:w-\\[124px\\]{width:124px}.tw\\:w-\\[150px\\]{width:150px}.tw\\:w-\\[180px\\]{width:180px}.tw\\:w-\\[200px\\]{width:200px}.tw\\:w-\\[250px\\]{width:250px}.tw\\:w-\\[260px\\]{width:260px}.tw\\:w-\\[280px\\]{width:280px}.tw\\:w-\\[300px\\]{width:300px}.tw\\:w-\\[320px\\]{width:320px}.tw\\:w-\\[350px\\]{width:350px}.tw\\:w-\\[400px\\]{width:400px}.tw\\:w-\\[420px\\]{width:420px}.tw\\:w-\\[500px\\]{width:500px}.tw\\:w-\\[560px\\]{width:560px}.tw\\:w-\\[600px\\]{width:600px}.tw\\:w-\\[calc\\(100\\%-2px\\)\\]{width:calc(100% - 2px)}.tw\\:w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\]{width:var(--radix-dropdown-menu-trigger-width)}.tw\\:w-auto{width:auto}.tw\\:w-fit{width:fit-content}.tw\\:w-full{width:100%}.tw\\:w-max{width:max-content}.tw\\:w-px{width:1px}.tw\\:max-w-\\(--skeleton-width\\){max-width:var(--skeleton-width)}.tw\\:max-w-0{max-width:calc(calc(var(--spacing)) * 0)}.tw\\:max-w-2xl{max-width:var(--tw-container-2xl)}.tw\\:max-w-3xl{max-width:var(--tw-container-3xl)}.tw\\:max-w-4xl{max-width:var(--tw-container-4xl)}.tw\\:max-w-5{max-width:calc(calc(var(--spacing)) * 5)}.tw\\:max-w-6xl{max-width:var(--tw-container-6xl)}.tw\\:max-w-40{max-width:calc(calc(var(--spacing)) * 40)}.tw\\:max-w-48{max-width:calc(calc(var(--spacing)) * 48)}.tw\\:max-w-64{max-width:calc(calc(var(--spacing)) * 64)}.tw\\:max-w-96{max-width:calc(calc(var(--spacing)) * 96)}.tw\\:max-w-\\[200px\\]{max-width:200px}.tw\\:max-w-\\[220px\\]{max-width:220px}.tw\\:max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.tw\\:max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.tw\\:max-w-fit{max-width:fit-content}.tw\\:max-w-full{max-width:100%}.tw\\:max-w-lg{max-width:var(--tw-container-lg)}.tw\\:max-w-md{max-width:var(--tw-container-md)}.tw\\:max-w-none{max-width:none}.tw\\:max-w-sm{max-width:var(--tw-container-sm)}.tw\\:max-w-xs{max-width:var(--tw-container-xs)}.tw\\:min-w-0{min-width:calc(calc(var(--spacing)) * 0)}.tw\\:min-w-4{min-width:calc(calc(var(--spacing)) * 4)}.tw\\:min-w-5{min-width:calc(calc(var(--spacing)) * 5)}.tw\\:min-w-7{min-width:calc(calc(var(--spacing)) * 7)}.tw\\:min-w-8{min-width:calc(calc(var(--spacing)) * 8)}.tw\\:min-w-9{min-width:calc(calc(var(--spacing)) * 9)}.tw\\:min-w-16{min-width:calc(calc(var(--spacing)) * 16)}.tw\\:min-w-32{min-width:calc(calc(var(--spacing)) * 32)}.tw\\:min-w-36{min-width:calc(calc(var(--spacing)) * 36)}.tw\\:min-w-80{min-width:calc(calc(var(--spacing)) * 80)}.tw\\:min-w-\\[12rem\\]{min-width:12rem}.tw\\:min-w-\\[26px\\]{min-width:26px}.tw\\:min-w-\\[96px\\]{min-width:96px}.tw\\:min-w-\\[140px\\]{min-width:140px}.tw\\:min-w-\\[215px\\]{min-width:215px}.tw\\:min-w-\\[500px\\]{min-width:500px}.tw\\:min-w-min{min-width:min-content}.tw\\:flex-1{flex:1}.tw\\:shrink{flex-shrink:1}.tw\\:shrink\\!{flex-shrink:1!important}.tw\\:shrink-0{flex-shrink:0}.tw\\:shrink-\\[9999\\]{flex-shrink:9999}.tw\\:flex-grow,.tw\\:grow,.tw\\:grow-\\[1\\]{flex-grow:1}.tw\\:grow-\\[10\\]{flex-grow:10}.tw\\:basis-0{flex-basis:calc(calc(var(--spacing)) * 0)}.tw\\:table-fixed{table-layout:fixed}.tw\\:caption-bottom{caption-side:bottom}.tw\\:border-collapse{border-collapse:collapse}.tw\\:origin-\\(--radix-context-menu-content-transform-origin\\){transform-origin:var(--radix-context-menu-content-transform-origin)}.tw\\:origin-\\(--radix-dropdown-menu-content-transform-origin\\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.tw\\:origin-\\(--radix-menubar-content-transform-origin\\){transform-origin:var(--radix-menubar-content-transform-origin)}.tw\\:origin-\\(--radix-popover-content-transform-origin\\){transform-origin:var(--radix-popover-content-transform-origin)}.tw\\:origin-\\(--radix-select-content-transform-origin\\){transform-origin:var(--radix-select-content-transform-origin)}.tw\\:origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.tw\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-y-0{--tw-translate-y:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-y-px{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rotate-45{rotate:45deg}.tw\\:rotate-180{rotate:180deg}.tw\\:transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.tw\\:animate-none\\!{animation:none!important}.tw\\:animate-pulse{animation:var(--tw-animate-pulse)}.tw\\:animate-spin{animation:var(--tw-animate-spin)}.tw\\:cursor-default{cursor:default}.tw\\:cursor-ew-resize{cursor:ew-resize}.tw\\:cursor-not-allowed{cursor:not-allowed}.tw\\:cursor-pointer{cursor:pointer}.tw\\:cursor-text{cursor:text}.tw\\:touch-none{touch-action:none}.tw\\:resize{resize:both}.tw\\:resize-none{resize:none}.tw\\:scroll-m-20{scroll-margin:calc(calc(var(--spacing)) * 20)}.tw\\:scroll-my-1{scroll-margin-block:calc(calc(var(--spacing)) * 1)}.tw\\:scroll-py-1{scroll-padding-block:calc(calc(var(--spacing)) * 1)}.tw\\:list-inside{list-style-position:inside}.tw\\:list-outside{list-style-position:outside}.tw\\:\\!list-\\[lower-alpha\\]{list-style-type:lower-alpha!important}.tw\\:\\!list-\\[lower-roman\\]{list-style-type:lower-roman!important}.tw\\:\\!list-\\[upper-alpha\\]{list-style-type:upper-alpha!important}.tw\\:\\!list-\\[upper-roman\\]{list-style-type:upper-roman!important}.tw\\:\\!list-decimal{list-style-type:decimal!important}.tw\\:\\!list-disc{list-style-type:disc!important}.tw\\:list-decimal{list-style-type:decimal}.tw\\:list-disc{list-style-type:disc}.tw\\:list-none{list-style-type:none}.tw\\:grid-flow-col{grid-auto-flow:column}.tw\\:grid-flow-row{grid-auto-flow:row}.tw\\:auto-rows-min{grid-auto-rows:min-content}.tw\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.tw\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tw\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.tw\\:grid-cols-\\[25\\%_25\\%_50\\%\\]{grid-template-columns:25% 25% 50%}.tw\\:grid-cols-\\[25\\%_50\\%_25\\%\\]{grid-template-columns:25% 50% 25%}.tw\\:grid-cols-\\[auto_auto_auto_auto\\]{grid-template-columns:auto auto auto auto}.tw\\:grid-cols-\\[min-content_1fr\\]{grid-template-columns:min-content 1fr}.tw\\:grid-cols-\\[min-content_min-content_1fr\\]{grid-template-columns:min-content min-content 1fr}.tw\\:grid-cols-subgrid{grid-template-columns:subgrid}.tw\\:flex-col{flex-direction:column}.tw\\:flex-col-reverse{flex-direction:column-reverse}.tw\\:flex-row{flex-direction:row}.tw\\:flex-row-reverse{flex-direction:row-reverse}.tw\\:flex-nowrap{flex-wrap:nowrap}.tw\\:flex-wrap{flex-wrap:wrap}.tw\\:place-content-center{place-content:center}.tw\\:content-center{align-content:center}.tw\\:items-baseline{align-items:baseline}.tw\\:items-center{align-items:center}.tw\\:items-end{align-items:flex-end}.tw\\:items-start{align-items:flex-start}.tw\\:items-stretch{align-items:stretch}.tw\\:justify-between{justify-content:space-between}.tw\\:justify-center{justify-content:center}.tw\\:justify-end{justify-content:flex-end}.tw\\:justify-start{justify-content:flex-start}.tw\\:gap-0{gap:calc(calc(var(--spacing)) * 0)}.tw\\:gap-0\\.5{gap:calc(calc(var(--spacing)) * .5)}.tw\\:gap-1{gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-1\\.5{gap:calc(calc(var(--spacing)) * 1.5)}.tw\\:gap-1\\.5\\!{gap:calc(calc(var(--spacing)) * 1.5)!important}.tw\\:gap-2{gap:calc(calc(var(--spacing)) * 2)}.tw\\:gap-2\\.5{gap:calc(calc(var(--spacing)) * 2.5)}.tw\\:gap-3{gap:calc(calc(var(--spacing)) * 3)}.tw\\:gap-4{gap:calc(calc(var(--spacing)) * 4)}.tw\\:gap-5{gap:calc(calc(var(--spacing)) * 5)}.tw\\:gap-6{gap:calc(calc(var(--spacing)) * 6)}.tw\\:gap-8{gap:calc(calc(var(--spacing)) * 8)}.tw\\:gap-16{gap:calc(calc(var(--spacing)) * 16)}.tw\\:gap-\\[--spacing\\(var\\(--gap\\)\\)\\]{gap:calc(calc(var(--spacing)) * var(--gap))}.tw\\:gap-\\[12px\\]{gap:12px}:where(.tw\\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 8) * calc(1 - var(--tw-space-y-reverse)))}.tw\\:gap-x-1{column-gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-x-2{column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:gap-x-3{column-gap:calc(calc(var(--spacing)) * 3)}.tw\\:gap-x-4{column-gap:calc(calc(var(--spacing)) * 4)}:where(.tw\\:-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 6) * calc(1 - var(--tw-space-x-reverse)))}.tw\\:gap-y-1{row-gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-y-2{row-gap:calc(calc(var(--spacing)) * 2)}:where(.tw\\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.tw\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.tw\\:self-start{align-self:flex-start}.tw\\:self-stretch{align-self:stretch}.tw\\:justify-self-end{justify-self:flex-end}.tw\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tw\\:overflow-auto{overflow:auto}.tw\\:overflow-clip{overflow:clip}.tw\\:overflow-hidden{overflow:hidden}.tw\\:overflow-scroll{overflow:scroll}.tw\\:overflow-visible{overflow:visible}.tw\\:overflow-x-auto{overflow-x:auto}.tw\\:overflow-x-hidden{overflow-x:hidden}.tw\\:overflow-y-auto{overflow-y:auto}.tw\\:overflow-y-hidden{overflow-y:hidden}.tw\\:rounded{border-radius:.25rem}.tw\\:rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.tw\\:rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.tw\\:rounded-\\[4px\\]{border-radius:4px}.tw\\:rounded-\\[6px\\]{border-radius:6px}.tw\\:rounded-\\[calc\\(var\\(--radius\\)-3px\\)\\]{border-radius:calc(var(--radius) - 3px)}.tw\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,10px\\)\\]{border-radius:min(var(--tw-radius-md), 10px)}.tw\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,12px\\)\\]{border-radius:min(var(--tw-radius-md), 12px)}.tw\\:rounded-full{border-radius:3.40282e38px}.tw\\:rounded-lg{border-radius:var(--radius)}.tw\\:rounded-lg\\!{border-radius:var(--radius)!important}.tw\\:rounded-md{border-radius:calc(var(--radius) * .8)}.tw\\:rounded-none{border-radius:0}.tw\\:rounded-sm{border-radius:calc(var(--radius) * .6)}.tw\\:rounded-xl{border-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-xl\\!{border-radius:calc(var(--radius) * 1.4)!important}.tw\\:rounded-xs{border-radius:var(--tw-radius-xs)}.tw\\:rounded-s-none{border-start-start-radius:0;border-end-start-radius:0}.tw\\:rounded-e-none{border-start-end-radius:0;border-end-end-radius:0}.tw\\:rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-l-lg{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.tw\\:rounded-r-xl{border-top-right-radius:calc(var(--radius) * 1.4);border-bottom-right-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:border{border-style:var(--tw-border-style);border-width:1px}.tw\\:border-0{border-style:var(--tw-border-style);border-width:0}.tw\\:border-2{border-style:var(--tw-border-style);border-width:2px}.tw\\:border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:border-s-0{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.tw\\:border-s-4{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.tw\\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.tw\\:border-e-0{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.tw\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.tw\\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.tw\\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.tw\\:border-dashed{--tw-border-style:dashed;border-style:dashed}.tw\\:border-none{--tw-border-style:none;border-style:none}.tw\\:border-solid{--tw-border-style:solid;border-style:solid}.tw\\:border-black{border-color:var(--tw-color-black)}.tw\\:border-blue-400{border-color:var(--tw-color-blue-400)}.tw\\:border-blue-500{border-color:var(--tw-color-blue-500)}.tw\\:border-border,.tw\\:border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-border\\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.tw\\:border-destructive{border-color:var(--destructive)}.tw\\:border-foreground{border-color:var(--foreground)}.tw\\:border-gray-300{border-color:var(--tw-color-gray-300)}.tw\\:border-input,.tw\\:border-input\\/30{border-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-input\\/30{border-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:border-muted-foreground,.tw\\:border-muted-foreground\\/40{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-muted-foreground\\/40{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.tw\\:border-primary{border-color:var(--primary)}.tw\\:border-red-300{border-color:var(--tw-color-red-300)}.tw\\:border-red-400{border-color:var(--tw-color-red-400)}.tw\\:border-red-500{border-color:var(--tw-color-red-500)}.tw\\:border-red-600{border-color:var(--tw-color-red-600)}.tw\\:border-ring{border-color:var(--ring)}.tw\\:border-sidebar-border{border-color:var(--sidebar-border)}.tw\\:border-slate-300{border-color:var(--tw-color-slate-300)}.tw\\:border-transparent{border-color:#0000}.tw\\:border-yellow-400{border-color:var(--tw-color-yellow-400)}.tw\\:border-yellow-500{border-color:var(--tw-color-yellow-500)}.tw\\:border-s-amber-200{border-inline-start-color:var(--tw-color-amber-200)}.tw\\:border-s-indigo-200{border-inline-start-color:var(--tw-color-indigo-200)}.tw\\:border-s-purple-200{border-inline-start-color:var(--tw-color-purple-200)}.tw\\:border-s-red-200{border-inline-start-color:var(--tw-color-red-200)}.tw\\:\\!bg-destructive\\/50{background-color:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.tw\\:\\!bg-destructive\\/50{background-color:color-mix(in oklab, var(--destructive) 50%, transparent)!important}}.tw\\:bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.tw\\:bg-accent,.tw\\:bg-accent\\/50{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-accent\\/50{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.tw\\:bg-amber-500,.tw\\:bg-amber-500\\/5{background-color:var(--tw-color-amber-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-amber-500\\/5{background-color:color-mix(in oklab, var(--tw-color-amber-500) 5%, transparent)}}.tw\\:bg-amber-500\\/15{background-color:var(--tw-color-amber-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-amber-500\\/15{background-color:color-mix(in oklab, var(--tw-color-amber-500) 15%, transparent)}}.tw\\:bg-background,.tw\\:bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-background\\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.tw\\:bg-black\\/10{background-color:var(--tw-color-black)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-black\\/10{background-color:color-mix(in oklab, var(--tw-color-black) 10%, transparent)}}.tw\\:bg-blue-50{background-color:var(--tw-color-blue-50)}.tw\\:bg-blue-100{background-color:var(--tw-color-blue-100)}.tw\\:bg-blue-400{background-color:var(--tw-color-blue-400)}.tw\\:bg-blue-500{background-color:var(--tw-color-blue-500)}.tw\\:bg-border{background-color:var(--border)}.tw\\:bg-card{background-color:var(--card)}.tw\\:bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-destructive\\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.tw\\:bg-foreground{background-color:var(--foreground)}.tw\\:bg-gray-50{background-color:var(--tw-color-gray-50)}.tw\\:bg-gray-100{background-color:var(--tw-color-gray-100)}.tw\\:bg-gray-500{background-color:var(--tw-color-gray-500)}.tw\\:bg-green-50{background-color:var(--tw-color-green-50)}.tw\\:bg-green-100{background-color:var(--tw-color-green-100)}.tw\\:bg-green-500{background-color:var(--tw-color-green-500)}.tw\\:bg-input,.tw\\:bg-input\\/30{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-input\\/30{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:bg-muted,.tw\\:bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-muted\\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:bg-neutral-300{background-color:var(--tw-color-neutral-300)}.tw\\:bg-orange-100{background-color:var(--tw-color-orange-100)}.tw\\:bg-popover,.tw\\:bg-popover\\/70{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-popover\\/70{background-color:color-mix(in oklab, var(--popover) 70%, transparent)}}.tw\\:bg-primary{background-color:var(--primary)}.tw\\:bg-primary-foreground{background-color:var(--primary-foreground)}.tw\\:bg-primary\\/30{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-primary\\/30{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.tw\\:bg-purple-50{background-color:var(--tw-color-purple-50)}.tw\\:bg-red-100{background-color:var(--tw-color-red-100)}.tw\\:bg-red-500{background-color:var(--tw-color-red-500)}.tw\\:bg-rose-500,.tw\\:bg-rose-500\\/5{background-color:var(--tw-color-rose-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-rose-500\\/5{background-color:color-mix(in oklab, var(--tw-color-rose-500) 5%, transparent)}}.tw\\:bg-rose-500\\/15{background-color:var(--tw-color-rose-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-rose-500\\/15{background-color:color-mix(in oklab, var(--tw-color-rose-500) 15%, transparent)}}.tw\\:bg-secondary{background-color:var(--secondary)}.tw\\:bg-sidebar{background-color:var(--sidebar)}.tw\\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.tw\\:bg-sidebar-border{background-color:var(--sidebar-border)}.tw\\:bg-sky-500,.tw\\:bg-sky-500\\/5{background-color:var(--tw-color-sky-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-sky-500\\/5{background-color:color-mix(in oklab, var(--tw-color-sky-500) 5%, transparent)}}.tw\\:bg-sky-500\\/15{background-color:var(--tw-color-sky-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-sky-500\\/15{background-color:color-mix(in oklab, var(--tw-color-sky-500) 15%, transparent)}}.tw\\:bg-teal-500,.tw\\:bg-teal-500\\/5{background-color:var(--tw-color-teal-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-teal-500\\/5{background-color:color-mix(in oklab, var(--tw-color-teal-500) 5%, transparent)}}.tw\\:bg-teal-500\\/15{background-color:var(--tw-color-teal-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-teal-500\\/15{background-color:color-mix(in oklab, var(--tw-color-teal-500) 15%, transparent)}}.tw\\:bg-transparent{background-color:#0000}.tw\\:bg-white{background-color:var(--tw-color-white)}.tw\\:bg-yellow-50{background-color:var(--tw-color-yellow-50)}.tw\\:bg-yellow-100{background-color:var(--tw-color-yellow-100)}.tw\\:bg-yellow-500{background-color:var(--tw-color-yellow-500)}.tw\\:bg-zinc-400{background-color:var(--tw-color-zinc-400)}.tw\\:bg-clip-padding{background-clip:padding-box}.tw\\:fill-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{fill:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:fill-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{fill:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.tw\\:fill-destructive{fill:var(--destructive)}.tw\\:fill-foreground{fill:var(--foreground)}.tw\\:fill-yellow-400,.tw\\:fill-yellow-400\\/50{fill:var(--tw-color-yellow-400)}@supports (color:color-mix(in lab, red, red)){.tw\\:fill-yellow-400\\/50{fill:color-mix(in oklab, var(--tw-color-yellow-400) 50%, transparent)}}.tw\\:object-cover{object-fit:cover}.tw\\:\\!p-4{padding:calc(calc(var(--spacing)) * 4)!important}.tw\\:p-0{padding:calc(calc(var(--spacing)) * 0)}.tw\\:p-0\\.5{padding:calc(calc(var(--spacing)) * .5)}.tw\\:p-1{padding:calc(calc(var(--spacing)) * 1)}.tw\\:p-2{padding:calc(calc(var(--spacing)) * 2)}.tw\\:p-2\\.5{padding:calc(calc(var(--spacing)) * 2.5)}.tw\\:p-3{padding:calc(calc(var(--spacing)) * 3)}.tw\\:p-4{padding:calc(calc(var(--spacing)) * 4)}.tw\\:p-6{padding:calc(calc(var(--spacing)) * 6)}.tw\\:p-8{padding:calc(calc(var(--spacing)) * 8)}.tw\\:p-\\[1px\\]{padding:1px}.tw\\:p-\\[3px\\]{padding:3px}.tw\\:p-\\[10px\\]{padding:10px}.tw\\:p-\\[16px\\]{padding:16px}.tw\\:px-0{padding-inline:calc(calc(var(--spacing)) * 0)}.tw\\:px-0\\.5{padding-inline:calc(calc(var(--spacing)) * .5)}.tw\\:px-1{padding-inline:calc(calc(var(--spacing)) * 1)}.tw\\:px-1\\.5{padding-inline:calc(calc(var(--spacing)) * 1.5)}.tw\\:px-2{padding-inline:calc(calc(var(--spacing)) * 2)}.tw\\:px-2\\.5{padding-inline:calc(calc(var(--spacing)) * 2.5)}.tw\\:px-3{padding-inline:calc(calc(var(--spacing)) * 3)}.tw\\:px-4{padding-inline:calc(calc(var(--spacing)) * 4)}.tw\\:px-6{padding-inline:calc(calc(var(--spacing)) * 6)}.tw\\:py-0{padding-block:calc(calc(var(--spacing)) * 0)}.tw\\:py-0\\.5{padding-block:calc(calc(var(--spacing)) * .5)}.tw\\:py-1{padding-block:calc(calc(var(--spacing)) * 1)}.tw\\:py-1\\.5{padding-block:calc(calc(var(--spacing)) * 1.5)}.tw\\:py-2{padding-block:calc(calc(var(--spacing)) * 2)}.tw\\:py-3{padding-block:calc(calc(var(--spacing)) * 3)}.tw\\:py-4{padding-block:calc(calc(var(--spacing)) * 4)}.tw\\:py-6{padding-block:calc(calc(var(--spacing)) * 6)}.tw\\:py-8{padding-block:calc(calc(var(--spacing)) * 8)}.tw\\:py-\\[2px\\]{padding-block:2px}.tw\\:ps-1\\.5{padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:ps-2{padding-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:ps-2\\.5{padding-inline-start:calc(calc(var(--spacing)) * 2.5)}.tw\\:ps-4{padding-inline-start:calc(calc(var(--spacing)) * 4)}.tw\\:ps-6{padding-inline-start:calc(calc(var(--spacing)) * 6)}.tw\\:ps-7{padding-inline-start:calc(calc(var(--spacing)) * 7)}.tw\\:ps-8{padding-inline-start:calc(calc(var(--spacing)) * 8)}.tw\\:ps-9{padding-inline-start:calc(calc(var(--spacing)) * 9)}.tw\\:ps-12{padding-inline-start:calc(calc(var(--spacing)) * 12)}.tw\\:ps-\\[85px\\]{padding-inline-start:85px}.tw\\:pe-1{padding-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:pe-1\\.5{padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:pe-2{padding-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:pe-4{padding-inline-end:calc(calc(var(--spacing)) * 4)}.tw\\:pe-8{padding-inline-end:calc(calc(var(--spacing)) * 8)}.tw\\:pe-8\\!{padding-inline-end:calc(calc(var(--spacing)) * 8)!important}.tw\\:pe-9{padding-inline-end:calc(calc(var(--spacing)) * 9)}.tw\\:pe-\\[calc\\(138px\\+1rem\\)\\]{padding-inline-end:calc(138px + 1rem)}.tw\\:pe-\\[…\\]{padding-inline-end:…}.tw\\:pt-1{padding-top:calc(calc(var(--spacing)) * 1)}.tw\\:pt-2{padding-top:calc(calc(var(--spacing)) * 2)}.tw\\:pt-3{padding-top:calc(calc(var(--spacing)) * 3)}.tw\\:pt-4{padding-top:calc(calc(var(--spacing)) * 4)}.tw\\:pt-6{padding-top:calc(calc(var(--spacing)) * 6)}.tw\\:pr-0{padding-right:calc(calc(var(--spacing)) * 0)}.tw\\:pr-3{padding-right:calc(calc(var(--spacing)) * 3)}.tw\\:pr-4{padding-right:calc(calc(var(--spacing)) * 4)}.tw\\:pb-0{padding-bottom:calc(calc(var(--spacing)) * 0)}.tw\\:pb-1{padding-bottom:calc(calc(var(--spacing)) * 1)}.tw\\:pb-2{padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:pb-3{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:pb-4{padding-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:pb-8{padding-bottom:calc(calc(var(--spacing)) * 8)}.tw\\:pb-12{padding-bottom:calc(calc(var(--spacing)) * 12)}.tw\\:pb-16{padding-bottom:calc(calc(var(--spacing)) * 16)}.tw\\:pb-24{padding-bottom:calc(calc(var(--spacing)) * 24)}.tw\\:pl-2{padding-left:calc(calc(var(--spacing)) * 2)}.tw\\:pl-3{padding-left:calc(calc(var(--spacing)) * 3)}.tw\\:pl-4{padding-left:calc(calc(var(--spacing)) * 4)}.tw\\:pl-5{padding-left:calc(calc(var(--spacing)) * 5)}.tw\\:pl-6{padding-left:calc(calc(var(--spacing)) * 6)}.tw\\:pl-8{padding-left:calc(calc(var(--spacing)) * 8)}.tw\\:text-center{text-align:center}.tw\\:text-end{text-align:end}.tw\\:text-left{text-align:left}.tw\\:text-right{text-align:right}.tw\\:text-start{text-align:start}.tw\\:align-middle{vertical-align:middle}.tw\\:font-heading{font-family:var(--font-sans)}.tw\\:font-mono{font-family:var(--tw-font-mono)}.tw\\:font-sans{font-family:IBM Plex Sans Variable,sans-serif}.tw\\:text-2xl{font-size:var(--tw-text-2xl);line-height:var(--tw-leading,var(--tw-text-2xl--line-height))}.tw\\:text-3xl{font-size:var(--tw-text-3xl);line-height:var(--tw-leading,var(--tw-text-3xl--line-height))}.tw\\:text-4xl{font-size:var(--tw-text-4xl);line-height:var(--tw-leading,var(--tw-text-4xl--line-height))}.tw\\:text-base{font-size:var(--tw-text-base);line-height:var(--tw-leading,var(--tw-text-base--line-height))}.tw\\:text-lg{font-size:var(--tw-text-lg);line-height:var(--tw-leading,var(--tw-text-lg--line-height))}.tw\\:text-sm{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:text-sm\\/relaxed{font-size:var(--tw-text-sm);line-height:var(--tw-leading-relaxed)}.tw\\:text-xl{font-size:var(--tw-text-xl);line-height:var(--tw-leading,var(--tw-text-xl--line-height))}.tw\\:text-xs{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:text-\\[0\\.8rem\\]{font-size:.8rem}.tw\\:leading-6{--tw-leading:calc(calc(var(--spacing)) * 6);line-height:calc(calc(var(--spacing)) * 6)}.tw\\:leading-loose{--tw-leading:var(--tw-leading-loose);line-height:var(--tw-leading-loose)}.tw\\:leading-none{--tw-leading:1;line-height:1}.tw\\:leading-relaxed{--tw-leading:var(--tw-leading-relaxed);line-height:var(--tw-leading-relaxed)}.tw\\:leading-snug{--tw-leading:var(--tw-leading-snug);line-height:var(--tw-leading-snug)}.tw\\:leading-tight{--tw-leading:var(--tw-leading-tight);line-height:var(--tw-leading-tight)}.tw\\:font-bold{--tw-font-weight:var(--tw-font-weight-bold);font-weight:var(--tw-font-weight-bold)}.tw\\:font-extrabold{--tw-font-weight:var(--tw-font-weight-extrabold);font-weight:var(--tw-font-weight-extrabold)}.tw\\:font-medium{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:font-normal{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:font-semibold{--tw-font-weight:var(--tw-font-weight-semibold);font-weight:var(--tw-font-weight-semibold)}.tw\\:tracking-tight{--tw-tracking:var(--tw-tracking-tight);letter-spacing:var(--tw-tracking-tight)}.tw\\:tracking-wider{--tw-tracking:var(--tw-tracking-wider);letter-spacing:var(--tw-tracking-wider)}.tw\\:tracking-widest{--tw-tracking:var(--tw-tracking-widest);letter-spacing:var(--tw-tracking-widest)}.tw\\:text-balance{text-wrap:balance}.tw\\:text-nowrap{text-wrap:nowrap}.tw\\:break-words{overflow-wrap:break-word}.tw\\:text-clip{text-overflow:clip}.tw\\:text-ellipsis{text-overflow:ellipsis}.tw\\:whitespace-normal{white-space:normal}.tw\\:whitespace-nowrap{white-space:nowrap}.tw\\:whitespace-pre{white-space:pre}.tw\\:whitespace-pre-line{white-space:pre-line}.tw\\:whitespace-pre-wrap{white-space:pre-wrap}.tw\\:\\[color\\:blue\\]{color:#00f}.tw\\:text-accent-foreground{color:var(--accent-foreground)}.tw\\:text-amber-600{color:var(--tw-color-amber-600)}.tw\\:text-background{color:var(--background)}.tw\\:text-blue-400{color:var(--tw-color-blue-400)}.tw\\:text-blue-500{color:var(--tw-color-blue-500)}.tw\\:text-blue-600{color:var(--tw-color-blue-600)}.tw\\:text-blue-800{color:var(--tw-color-blue-800)}.tw\\:text-card-foreground{color:var(--card-foreground)}.tw\\:text-current{color:currentColor}.tw\\:text-destructive{color:var(--destructive)}.tw\\:text-foreground{color:var(--foreground)}.tw\\:text-foreground\\!{color:var(--foreground)!important}.tw\\:text-foreground\\/30{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/30{color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.tw\\:text-foreground\\/50{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/50{color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.tw\\:text-foreground\\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.tw\\:text-foreground\\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.tw\\:text-gray-300{color:var(--tw-color-gray-300)}.tw\\:text-gray-500{color:var(--tw-color-gray-500)}.tw\\:text-gray-600{color:var(--tw-color-gray-600)}.tw\\:text-gray-700{color:var(--tw-color-gray-700)}.tw\\:text-gray-800{color:var(--tw-color-gray-800)}.tw\\:text-green-600{color:var(--tw-color-green-600)}.tw\\:text-green-700{color:var(--tw-color-green-700)}.tw\\:text-green-800{color:var(--tw-color-green-800)}.tw\\:text-inherit{color:inherit}.tw\\:text-muted-foreground,.tw\\:text-muted-foreground\\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-muted-foreground\\/50{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.tw\\:text-orange-800{color:var(--tw-color-orange-800)}.tw\\:text-popover-foreground{color:var(--popover-foreground)}.tw\\:text-primary{color:var(--primary)}.tw\\:text-primary-foreground{color:var(--primary-foreground)}.tw\\:text-purple-900{color:var(--tw-color-purple-900)}.tw\\:text-red-500{color:var(--tw-color-red-500)}.tw\\:text-red-600{color:var(--tw-color-red-600)}.tw\\:text-red-700{color:var(--tw-color-red-700)}.tw\\:text-red-800{color:var(--tw-color-red-800)}.tw\\:text-rose-600{color:var(--tw-color-rose-600)}.tw\\:text-secondary-foreground{color:var(--secondary-foreground)}.tw\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.tw\\:text-sidebar-foreground,.tw\\:text-sidebar-foreground\\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-sidebar-foreground\\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.tw\\:text-sky-600{color:var(--tw-color-sky-600)}.tw\\:text-slate-900{color:var(--tw-color-slate-900)}.tw\\:text-teal-600{color:var(--tw-color-teal-600)}.tw\\:text-white{color:var(--tw-color-white)}.tw\\:text-yellow-400{color:var(--tw-color-yellow-400)}.tw\\:text-yellow-600{color:var(--tw-color-yellow-600)}.tw\\:text-yellow-700{color:var(--tw-color-yellow-700)}.tw\\:capitalize{text-transform:capitalize}.tw\\:uppercase{text-transform:uppercase}.tw\\:italic{font-style:italic}.tw\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tw\\:line-through{text-decoration-line:line-through}.tw\\:underline{text-decoration-line:underline}.tw\\:decoration-destructive{-webkit-text-decoration-color:var(--destructive);-webkit-text-decoration-color:var(--destructive);text-decoration-color:var(--destructive)}.tw\\:underline-offset-4{text-underline-offset:4px}.tw\\:opacity-0{opacity:0}.tw\\:opacity-40{opacity:.4}.tw\\:opacity-50{opacity:.5}.tw\\:opacity-60{opacity:.6}.tw\\:opacity-100{opacity:1}.tw\\:bg-blend-color{background-blend-mode:color}.tw\\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-border));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-none\\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.tw\\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-background{--tw-ring-color:var(--background)}.tw\\:ring-foreground\\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:ring-foreground\\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.tw\\:ring-primary{--tw-ring-color:var(--primary)}.tw\\:ring-ring\\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:ring-ring\\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.tw\\:ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:ring-offset-background{--tw-ring-offset-color:var(--background)}.tw\\:ring-offset-white{--tw-ring-offset-color:var(--tw-color-white)}.tw\\:outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:outline-hidden{outline-offset:2px;outline:2px solid #0000}}.tw\\:drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--tw-drop-shadow-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.tw\\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[left\\,right\\,width\\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[margin\\,opacity\\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[width\\,height\\,padding\\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-none{transition-property:none}.tw\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.tw\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.tw\\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.tw\\:prose-quoteless :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose-quoteless :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.tw\\:outline-none{--tw-outline-style:none;outline-style:none}.tw\\:select-none{-webkit-user-select:none;user-select:none}.tw\\:\\[unicode-bidi\\:plaintext\\]{unicode-bidi:plaintext}.tw\\:group-focus-within\\/menu-item\\:opacity-100:is(:where(.tw\\:group\\/menu-item):focus-within *){opacity:1}@media (hover:hover){.tw\\:group-hover\\:visible:is(:where(.tw\\:group):hover *){visibility:visible}.tw\\:group-hover\\:hidden:is(:where(.tw\\:group):hover *){display:none}.tw\\:group-hover\\:opacity-100:is(:where(.tw\\:group):hover *),.tw\\:group-hover\\/menu-item\\:opacity-100:is(:where(.tw\\:group\\/menu-item):hover *){opacity:1}}.tw\\:group-focus\\/context-menu-item\\:text-accent-foreground:is(:where(.tw\\:group\\/context-menu-item):focus *),.tw\\:group-focus\\/dropdown-menu-item\\:text-accent-foreground:is(:where(.tw\\:group\\/dropdown-menu-item):focus *),.tw\\:group-focus\\/menubar-item\\:text-accent-foreground:is(:where(.tw\\:group\\/menubar-item):focus *){color:var(--accent-foreground)}.tw\\:group-has-disabled\\/field\\:opacity-50:is(:where(.tw\\:group\\/field):has(:disabled) *){opacity:.5}.tw\\:group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pe-8:is(:where(.tw\\:group\\/menu-item):has([data-sidebar=menu-action]) *){padding-inline-end:calc(calc(var(--spacing)) * 8)}.tw\\:group-has-data-\\[size\\=lg\\]\\/avatar-group\\:size-10:is(:where(.tw\\:group\\/avatar-group):has([data-size=lg]) *){width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:group-has-data-\\[size\\=sm\\]\\/avatar-group\\:size-6:is(:where(.tw\\:group\\/avatar-group):has([data-size=sm]) *){width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:group-has-data-\\[slot\\=command-shortcut\\]\\/command-item\\:hidden:is(:where(.tw\\:group\\/command-item):has([data-slot=command-shortcut]) *){display:none}.tw\\:group-has-\\[\\>input\\]\\/input-group\\:pt-2:is(:where(.tw\\:group\\/input-group):has(>input) *){padding-top:calc(calc(var(--spacing)) * 2)}.tw\\:group-has-\\[\\>input\\]\\/input-group\\:pb-2:is(:where(.tw\\:group\\/input-group):has(>input) *){padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:group-has-\\[\\>svg\\]\\/alert\\:col-start-2:is(:where(.tw\\:group\\/alert):has(>svg) *){grid-column-start:2}.tw\\:group-data-\\[checked\\=true\\]\\/command-item\\:opacity-100:is(:where(.tw\\:group\\/command-item)[data-checked=true] *){opacity:1}.tw\\:group-data-\\[collapsible\\=icon\\]\\:-mt-8:is(:where(.tw\\:group)[data-collapsible=icon] *){margin-top:calc(calc(var(--spacing)) * -8)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:hidden:is(:where(.tw\\:group)[data-collapsible=icon] *){display:none}.tw\\:group-data-\\[collapsible\\=icon\\]\\:size-8\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(calc(var(--spacing)) * 8)!important;height:calc(calc(var(--spacing)) * 8)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\):is(:where(.tw\\:group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\]:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(calc(var(--spacing)) * 4)))}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\]:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(calc(var(--spacing)) * 4)) + 2px)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:overflow-hidden:is(:where(.tw\\:group)[data-collapsible=icon] *){overflow:hidden}.tw\\:group-data-\\[collapsible\\=icon\\]\\:p-0\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){padding:calc(calc(var(--spacing)) * 0)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:p-2\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){padding:calc(calc(var(--spacing)) * 2)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:opacity-0:is(:where(.tw\\:group)[data-collapsible=icon] *){opacity:0}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:w-0:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){width:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:group-data-\\[disabled\\=true\\]\\:pointer-events-none:is(:where(.tw\\:group)[data-disabled=true] *){pointer-events:none}.tw\\:group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.tw\\:group)[data-disabled=true] *),.tw\\:group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.tw\\:group\\/input-group)[data-disabled=true] *){opacity:.5}.tw\\:group-data-\\[side\\=primary\\]\\:-right-4:is(:where(.tw\\:group)[data-side=primary] *){right:calc(calc(var(--spacing)) * -4)}.tw\\:group-data-\\[side\\=primary\\]\\:border-e:is(:where(.tw\\:group)[data-side=primary] *){border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.tw\\:group-data-\\[side\\=secondary\\]\\:left-0:is(:where(.tw\\:group)[data-side=secondary] *){left:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-\\[side\\=secondary\\]\\:rotate-180:is(:where(.tw\\:group)[data-side=secondary] *){rotate:180deg}.tw\\:group-data-\\[side\\=secondary\\]\\:border-s:is(:where(.tw\\:group)[data-side=secondary] *){border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:group-data-\\[size\\=default\\]\\/avatar\\:size-2\\.5:is(:where(.tw\\:group\\/avatar)[data-size=default] *){width:calc(calc(var(--spacing)) * 2.5);height:calc(calc(var(--spacing)) * 2.5)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:size-4:is(:where(.tw\\:group\\/switch)[data-size=default] *){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[size\\=lg\\]\\/avatar\\:size-3:is(:where(.tw\\:group\\/avatar)[data-size=lg] *){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=sm] *){width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:text-xs:is(:where(.tw\\:group\\/avatar)[data-size=sm] *){font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:p-3:is(:where(.tw\\:group\\/card)[data-size=sm] *){padding:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:px-3:is(:where(.tw\\:group\\/card)[data-size=sm] *){padding-inline:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:text-sm:is(:where(.tw\\:group\\/card)[data-size=sm] *){font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:size-3:is(:where(.tw\\:group\\/switch)[data-size=sm] *){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:rounded-none:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *){border-radius:0}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:px-2:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *){padding-inline:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[variant\\=floating\\]\\:rounded-lg:is(:where(.tw\\:group)[data-variant=floating] *){border-radius:var(--radius)}.tw\\:group-data-\\[variant\\=floating\\]\\:shadow-sm:is(:where(.tw\\:group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=floating\\]\\:ring-1:is(:where(.tw\\:group)[data-variant=floating] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=floating\\]\\:ring-sidebar-border:is(:where(.tw\\:group)[data-variant=floating] *){--tw-ring-color:var(--sidebar-border)}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *){background-color:#0000}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:mx-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){margin-inline:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:mt-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){margin-top:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:h-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){height:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:w-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){width:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){text-align:center}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:my-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){margin-block:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:me-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){margin-inline-end:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:h-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){height:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:w-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){width:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:my-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){margin-block:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:ms-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){margin-inline-start:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:h-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){height:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:w-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){width:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:mx-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){margin-inline:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:mb-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:h-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){height:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:w-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){width:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){text-align:center}.tw\\:group-data-selected\\/command-item\\:text-foreground:is(:where(.tw\\:group\\/command-item):where([data-selected=true]) *){color:var(--foreground)}.tw\\:group-data-horizontal\\/tabs\\:h-8:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *){height:calc(calc(var(--spacing)) * 8)}.tw\\:group-data-vertical\\/tabs\\:h-fit:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){height:fit-content}.tw\\:group-data-vertical\\/tabs\\:w-full:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){width:100%}.tw\\:group-data-vertical\\/tabs\\:flex-col:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.tw\\:group-data-vertical\\/tabs\\:justify-start:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}@media (hover:hover){.tw\\:peer-hover\\/menu-button\\:text-sidebar-accent-foreground:is(:where(.tw\\:peer\\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}.tw\\:peer-focus\\:group-hover\\:text-blue-500:is(:where(.tw\\:peer):focus~*):is(:where(.tw\\:group):hover *){color:var(--tw-color-blue-500)}}.tw\\:peer-disabled\\:cursor-not-allowed:is(:where(.tw\\:peer):disabled~*){cursor:not-allowed}.tw\\:peer-disabled\\:opacity-50:is(:where(.tw\\:peer):disabled~*){opacity:.5}.tw\\:peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5:is(:where(.tw\\:peer\\/menu-button)[data-size=default]~*){top:calc(calc(var(--spacing)) * 1.5)}.tw\\:peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5:is(:where(.tw\\:peer\\/menu-button)[data-size=lg]~*){top:calc(calc(var(--spacing)) * 2.5)}.tw\\:peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1:is(:where(.tw\\:peer\\/menu-button)[data-size=sm]~*){top:calc(calc(var(--spacing)) * 1)}.tw\\:peer-data-active\\/menu-button\\:text-sidebar-accent-foreground:is(:is(:where(.tw\\:peer\\/menu-button):where([data-state=active]),:where(.tw\\:peer\\/menu-button):where([data-active]:not([data-active=false])))~*){color:var(--sidebar-accent-foreground)}.tw\\:file\\:inline-flex::file-selector-button{display:inline-flex}.tw\\:file\\:h-6::file-selector-button{height:calc(calc(var(--spacing)) * 6)}.tw\\:file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.tw\\:file\\:bg-transparent::file-selector-button{background-color:#0000}.tw\\:file\\:text-sm::file-selector-button{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:file\\:font-medium::file-selector-button{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:file\\:text-foreground::file-selector-button{color:var(--foreground)}.tw\\:placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.tw\\:placeholder\\:text-slate-400::placeholder{color:var(--tw-color-slate-400)}.tw\\:before\\:absolute:before{content:var(--tw-content);position:absolute}.tw\\:before\\:top-0\\.5:before{content:var(--tw-content);top:calc(calc(var(--spacing)) * .5)}.tw\\:before\\:left-0:before{content:var(--tw-content);left:calc(calc(var(--spacing)) * 0)}.tw\\:before\\:block:before{content:var(--tw-content);display:block}.tw\\:before\\:hidden:before{content:var(--tw-content);display:none}.tw\\:before\\:h-4:before{content:var(--tw-content);height:calc(calc(var(--spacing)) * 4)}.tw\\:before\\:w-4:before{content:var(--tw-content);width:calc(calc(var(--spacing)) * 4)}.tw\\:before\\:cursor-pointer:before{content:var(--tw-content);cursor:pointer}.tw\\:before\\:rounded:before{content:var(--tw-content);border-radius:.25rem}.tw\\:before\\:border:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.tw\\:before\\:border-primary:before{content:var(--tw-content);border-color:var(--primary)}.tw\\:before\\:bg-primary:before{content:var(--tw-content);background-color:var(--primary)}.tw\\:before\\:bg-cover:before{content:var(--tw-content);background-size:cover}.tw\\:before\\:bg-no-repeat:before{content:var(--tw-content);background-repeat:no-repeat}.tw\\:before\\:content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.tw\\:before\\:content-\\[\\\\\\"\\\\\\"\\]:before{--tw-content:\\"\\";content:var(--tw-content)}.tw\\:after\\:absolute:after{content:var(--tw-content);position:absolute}.tw\\:after\\:-inset-2:after{content:var(--tw-content);inset:calc(calc(var(--spacing)) * -2)}.tw\\:after\\:inset-0:after{content:var(--tw-content);inset:calc(calc(var(--spacing)) * 0)}.tw\\:after\\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(calc(var(--spacing)) * -3)}.tw\\:after\\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * -2)}.tw\\:after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:after\\:start-1\\/2:after{content:var(--tw-content);inset-inline-start:50%}.tw\\:after\\:top-\\[6px\\]:after{content:var(--tw-content);top:6px}.tw\\:after\\:right-\\[7px\\]:after{content:var(--tw-content);right:7px}.tw\\:after\\:left-\\[7px\\]:after{content:var(--tw-content);left:7px}.tw\\:after\\:block:after{content:var(--tw-content);display:block}.tw\\:after\\:hidden:after{content:var(--tw-content);display:none}.tw\\:after\\:h-0\\.5:after{content:var(--tw-content);height:calc(calc(var(--spacing)) * .5)}.tw\\:after\\:h-\\[6px\\]:after{content:var(--tw-content);height:6px}.tw\\:after\\:w-1:after{content:var(--tw-content);width:calc(calc(var(--spacing)) * 1)}.tw\\:after\\:w-\\[2px\\]:after{content:var(--tw-content);width:2px}.tw\\:after\\:w-\\[3px\\]:after{content:var(--tw-content);width:3px}.tw\\:after\\:-translate-x-1\\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:after\\:rotate-45:after{content:var(--tw-content);rotate:45deg}.tw\\:after\\:cursor-pointer:after{content:var(--tw-content);cursor:pointer}.tw\\:after\\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.tw\\:after\\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.tw\\:after\\:border-t-0:after{content:var(--tw-content);border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:after\\:border-r-2:after{content:var(--tw-content);border-right-style:var(--tw-border-style);border-right-width:2px}.tw\\:after\\:border-b-2:after{content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.tw\\:after\\:border-l-0:after{content:var(--tw-content);border-left-style:var(--tw-border-style);border-left-width:0}.tw\\:after\\:border-solid:after{content:var(--tw-content);--tw-border-style:solid;border-style:solid}.tw\\:after\\:border-border:after{content:var(--tw-content);border-color:var(--border)}.tw\\:after\\:border-white:after{content:var(--tw-content);border-color:var(--tw-color-white)}.tw\\:after\\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.tw\\:after\\:bg-muted:after{content:var(--tw-content);background-color:var(--muted)}.tw\\:after\\:opacity-0:after{content:var(--tw-content);opacity:0}.tw\\:after\\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}.tw\\:after\\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:after\\:content-\\[\\"\\"\\]:after{--tw-content:"";content:var(--tw-content)}.tw\\:after\\:content-\\[\\\\\\"\\\\\\"\\]:after{--tw-content:\\"\\";content:var(--tw-content)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:after\\:start-full:is(:where(.tw\\:group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);inset-inline-start:100%}.tw\\:group-data-horizontal\\/tabs\\:after\\:inset-x-0:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-horizontal\\/tabs\\:after\\:bottom-\\[-5px\\]:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.tw\\:group-data-horizontal\\/tabs\\:after\\:h-0\\.5:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(calc(var(--spacing)) * .5)}.tw\\:group-data-vertical\\/tabs\\:after\\:inset-y-0:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-vertical\\/tabs\\:after\\:-end-1:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-inline-end:calc(calc(var(--spacing)) * -1)}.tw\\:group-data-vertical\\/tabs\\:after\\:w-0\\.5:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(calc(var(--spacing)) * .5)}.tw\\:first\\:mt-0:first-child{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:even\\:bg-muted:nth-child(2n){background-color:var(--muted)}.tw\\:focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.tw\\:focus-within\\:ring-offset-1:focus-within{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}@media (hover:hover){.tw\\:hover\\:-mt-4:hover{margin-top:calc(calc(var(--spacing)) * -4)}.tw\\:hover\\:cursor-pointer:hover{cursor:pointer}.tw\\:hover\\:bg-accent:hover,.tw\\:hover\\:bg-accent\\/30:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.tw\\:hover\\:bg-accent\\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--accent) 80%, transparent)}}.tw\\:hover\\:bg-blue-600:hover{background-color:var(--tw-color-blue-600)}.tw\\:hover\\:bg-destructive\\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-destructive\\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:hover\\:bg-gray-50:hover{background-color:var(--tw-color-gray-50)}.tw\\:hover\\:bg-input:hover{background-color:var(--input)}.tw\\:hover\\:bg-muted:hover,.tw\\:hover\\:bg-muted\\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:hover\\:bg-muted\\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-muted\\/80:hover{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.tw\\:hover\\:bg-primary\\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/10:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.tw\\:hover\\:bg-primary\\/70:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/70:hover{background-color:color-mix(in oklab, var(--primary) 70%, transparent)}}.tw\\:hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.tw\\:hover\\:bg-red-500:hover{background-color:var(--tw-color-red-500)}.tw\\:hover\\:bg-secondary:hover,.tw\\:hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.tw\\:hover\\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.tw\\:hover\\:bg-transparent:hover{background-color:#0000}.tw\\:hover\\:text-foreground:hover{color:var(--foreground)}.tw\\:hover\\:text-muted-foreground:hover{color:var(--muted-foreground)}.tw\\:hover\\:text-primary-foreground:hover{color:var(--primary-foreground)}.tw\\:hover\\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.tw\\:hover\\:underline:hover{text-decoration-line:underline}.tw\\:hover\\:opacity-80:hover{opacity:.8}.tw\\:hover\\:opacity-100:hover{opacity:1}.tw\\:hover\\:shadow-\\[0_0_0_1px_var\\(--sidebar-accent\\)\\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:ring-3:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar:hover:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.tw\\:hover\\:after\\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.tw\\:focus\\:relative:focus{position:relative}.tw\\:focus\\:z-10:focus{z-index:10}.tw\\:focus\\:bg-accent:focus{background-color:var(--accent)}.tw\\:focus\\:bg-muted:focus{background-color:var(--muted)}.tw\\:focus\\:text-accent-foreground:focus{color:var(--accent-foreground)}.tw\\:focus\\:text-foreground:focus{color:var(--foreground)}.tw\\:focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.tw\\:focus\\:ring-offset-1:focus{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:focus\\:ring-offset-background:focus{--tw-ring-offset-color:var(--background)}.tw\\:focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}:is(.tw\\:focus\\:\\*\\*\\:text-accent-foreground:focus *),:is(.tw\\:not-data-\\[variant\\=destructive\\]\\:focus\\:\\*\\*\\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.tw\\:focus-visible\\:relative:focus-visible{position:relative}.tw\\:focus-visible\\:z-10:focus-visible{z-index:10}.tw\\:focus-visible\\:border-destructive\\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:border-destructive\\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.tw\\:focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-3:focus-visible,.tw\\:focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-\\[color\\:hsl\\(240\\,5\\%\\,64\\.9\\%\\)\\]:focus-visible{--tw-ring-color:#a1a1aa}.tw\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:focus-visible\\:ring-ring:focus-visible,.tw\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:focus-visible\\:ring-slate-400:focus-visible{--tw-ring-color:var(--tw-color-slate-400)}.tw\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.tw\\:focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.tw\\:focus-visible\\:outline-ring:focus-visible{outline-color:var(--ring)}.tw\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}:is(.tw\\:\\*\\:focus-visible\\:relative>*):focus-visible{position:relative}:is(.tw\\:\\*\\:focus-visible\\:z-10>*):focus-visible{z-index:10}.tw\\:active\\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.tw\\:active\\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.tw\\:active\\:ring-3:active{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:active\\:not-aria-\\[haspopup\\]\\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:active\\:not-aria-\\[haspopup\\]\\:transform-\\[translateY\\(1px\\)\\]:active:not([aria-haspopup]){transform:translateY(1px)}.tw\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.tw\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.tw\\:disabled\\:bg-input\\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:disabled\\:bg-input\\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:disabled\\:bg-transparent:disabled{background-color:#0000}.tw\\:disabled\\:opacity-50:disabled{opacity:.5}:where([data-side=bottom]) .tw\\:in-data-\\[side\\=bottom\\]\\:translate-y-\\[calc\\(-50\\%-1px\\)\\]{--tw-translate-y:calc(-50% - 1px);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=bottom]) .tw\\:in-data-\\[side\\=bottom\\]\\:\\[clip-path\\:polygon\\(100\\%_0\\,100\\%_100\\%\\,0_100\\%\\)\\]{clip-path:polygon(100% 0,100% 100%,0 100%)}:where([data-side=primary]) .tw\\:in-data-\\[side\\=primary\\]\\:cursor-w-resize{cursor:w-resize}:where([data-side=secondary]) .tw\\:in-data-\\[side\\=secondary\\]\\:cursor-e-resize{cursor:e-resize}:where([data-side=top]) .tw\\:in-data-\\[side\\=top\\]\\:translate-y-\\[calc\\(-50\\%-1px\\)\\]{--tw-translate-y:calc(-50% - 1px);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=top]) .tw\\:in-data-\\[side\\=top\\]\\:\\[clip-path\\:polygon\\(100\\%_0\\,100\\%_100\\%\\,0_100\\%\\)\\]{clip-path:polygon(100% 0,100% 100%,0 100%)}:where([data-slot=button-group]) .tw\\:in-data-\\[slot\\=button-group\\]\\:rounded-lg{border-radius:var(--radius)}:where([data-slot=combobox-content]) .tw\\:in-data-\\[slot\\=combobox-content\\]\\:focus-within\\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .tw\\:in-data-\\[slot\\=combobox-content\\]\\:focus-within\\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:where([data-slot=dialog-content]) .tw\\:in-data-\\[slot\\=dialog-content\\]\\:rounded-lg\\!{border-radius:var(--radius)!important}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/20{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/20{background-color:color-mix(in oklab, var(--background) 20%, transparent)}}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:text-background{color:var(--background)}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:text-destructive{color:var(--destructive)}.tw\\:has-disabled\\:bg-input\\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-disabled\\:bg-input\\/50:has(:disabled){background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:has-disabled\\:opacity-50:has(:disabled){opacity:.5}.tw\\:has-aria-expanded\\:bg-muted\\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-aria-expanded\\:bg-muted\\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-1:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-1\\.5:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-2:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:has-data-\\[icon\\=inline-end\\]\\:pe-1\\.5:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-1:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-1\\.5:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-2:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:has-data-\\[icon\\=inline-start\\]\\:ps-1\\.5:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[slot\\=alert-action\\]\\:relative:has([data-slot=alert-action]){position:relative}.tw\\:has-data-\\[slot\\=alert-action\\]\\:pe-18:has([data-slot=alert-action]){padding-inline-end:calc(calc(var(--spacing)) * 18)}.tw\\:has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.tw\\:has-data-\\[slot\\=card-description\\]\\:grid-rows-\\[auto_auto\\]:has([data-slot=card-description]){grid-template-rows:auto auto}.tw\\:has-data-\\[slot\\=card-footer\\]\\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(calc(var(--spacing)) * 0)}.tw\\:has-data-\\[slot\\=kbd\\]\\:pe-0:has([data-slot=kbd]){padding-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:has-data-\\[slot\\=kbd\\]\\:pe-1\\.5:has([data-slot=kbd]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[variant\\=inset\\]\\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.tw\\:has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>button\\]\\:ms-\\[-0\\.3rem\\]:has(>button){margin-inline-start:-.3rem}.tw\\:has-\\[\\>button\\]\\:me-\\[-0\\.3rem\\]:has(>button){margin-inline-end:-.3rem}.tw\\:has-\\[\\>img\\]\\:grid-cols-\\[auto_1fr\\]:has(>img){grid-template-columns:auto 1fr}.tw\\:has-\\[\\>img\\]\\:gap-x-2:has(>img){column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>img\\:first-child\\]\\:pt-0:has(>img:first-child){padding-top:calc(calc(var(--spacing)) * 0)}.tw\\:has-\\[\\>kbd\\]\\:ms-\\[-0\\.15rem\\]:has(>kbd){margin-inline-start:-.15rem}.tw\\:has-\\[\\>kbd\\]\\:me-\\[-0\\.15rem\\]:has(>kbd){margin-inline-end:-.15rem}.tw\\:has-\\[\\>svg\\]\\:grid-cols-\\[auto_1fr\\]:has(>svg){grid-template-columns:auto 1fr}.tw\\:has-\\[\\>svg\\]\\:gap-x-2:has(>svg){column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(calc(var(--spacing)) * 0)}.tw\\:has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.tw\\:aria-disabled\\:pointer-events-none[aria-disabled=true]{pointer-events:none}.tw\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}.tw\\:aria-expanded\\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.tw\\:aria-expanded\\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.tw\\:aria-expanded\\:text-foreground[aria-expanded=true]{color:var(--foreground)}.tw\\:aria-expanded\\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.tw\\:aria-expanded\\:opacity-100[aria-expanded=true]{opacity:1}.tw\\:aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.tw\\:aria-invalid\\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:aria-invalid\\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:aria-invalid\\:aria-checked\\:border-primary[aria-invalid=true][aria-checked=true]{border-color:var(--primary)}.tw\\:aria-pressed\\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:h-px[aria-orientation=horizontal]{height:1px}.tw\\:aria-\\[orientation\\=horizontal\\]\\:w-full[aria-orientation=horizontal]{width:100%}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:start-0[aria-orientation=horizontal]:after{content:var(--tw-content);inset-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:h-1[aria-orientation=horizontal]:after{content:var(--tw-content);height:calc(calc(var(--spacing)) * 1)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:w-full[aria-orientation=horizontal]:after{content:var(--tw-content);width:100%}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:translate-x-0[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:-translate-y-1\\/2[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:aria-\\[orientation\\=vertical\\]\\:flex-col[aria-orientation=vertical]{flex-direction:column}.tw\\:data-inset\\:ps-7[data-inset]{padding-inline-start:calc(calc(var(--spacing)) * 7)}.tw\\:data-placeholder\\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.tw\\:data-quiet-focus\\:focus-visible\\:border-transparent[data-quiet-focus]:focus-visible{border-color:#0000}.tw\\:data-quiet-focus\\:focus-visible\\:ring-0[data-quiet-focus]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-quiet-focus\\:focus-visible\\:outline-none[data-quiet-focus]:focus-visible{--tw-outline-style:none;outline-style:none}.tw\\:data-\\[align-trigger\\=false\\]\\:min-w-36[data-align-trigger=false]{min-width:calc(calc(var(--spacing)) * 36)}.tw\\:data-\\[align-trigger\\=true\\]\\:min-w-\\(--radix-select-trigger-width\\)[data-align-trigger=true]{min-width:var(--radix-select-trigger-width)}.tw\\:data-\\[align-trigger\\=true\\]\\:animate-none[data-align-trigger=true]{animation:none}.tw\\:data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true]{pointer-events:none}.tw\\:data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true]{opacity:.5}.tw\\:data-\\[position\\=popper\\]\\:h-\\(--radix-select-trigger-height\\)[data-position=popper]{height:var(--radix-select-trigger-height)}.tw\\:data-\\[position\\=popper\\]\\:w-full[data-position=popper]{width:100%}.tw\\:data-\\[position\\=popper\\]\\:min-w-\\(--radix-select-trigger-width\\)[data-position=popper]{min-width:var(--radix-select-trigger-width)}.tw\\:data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.tw\\:data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.tw\\:data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.tw\\:data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.tw\\:data-\\[size\\=default\\]\\:h-8[data-size=default]{height:calc(calc(var(--spacing)) * 8)}.tw\\:data-\\[size\\=default\\]\\:h-\\[18\\.4px\\][data-size=default]{height:18.4px}.tw\\:data-\\[size\\=default\\]\\:w-\\[32px\\][data-size=default]{width:32px}.tw\\:data-\\[size\\=lg\\]\\:size-10[data-size=lg]{width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:data-\\[size\\=md\\]\\:text-sm[data-size=md]{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:data-\\[size\\=sm\\]\\:size-6[data-size=sm]{width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:data-\\[size\\=sm\\]\\:h-7[data-size=sm]{height:calc(calc(var(--spacing)) * 7)}.tw\\:data-\\[size\\=sm\\]\\:h-\\[14px\\][data-size=sm]{height:14px}.tw\\:data-\\[size\\=sm\\]\\:w-\\[24px\\][data-size=sm]{width:24px}.tw\\:data-\\[size\\=sm\\]\\:gap-3[data-size=sm]{gap:calc(calc(var(--spacing)) * 3)}.tw\\:data-\\[size\\=sm\\]\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,10px\\)\\][data-size=sm]{border-radius:min(var(--tw-radius-md), 10px)}.tw\\:data-\\[size\\=sm\\]\\:py-3[data-size=sm]{padding-block:calc(calc(var(--spacing)) * 3)}.tw\\:data-\\[size\\=sm\\]\\:text-xs[data-size=sm]{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:data-\\[size\\=sm\\]\\:has-data-\\[slot\\=card-footer\\]\\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(calc(var(--spacing)) * 0)}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-item]:focus{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-item]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:data-highlighted\\:bg-foreground\\/10 *)[data-slot$=-item][data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:data-highlighted\\:bg-foreground\\/10 *)[data-slot$=-item][data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-separator\\]\\:bg-foreground\\/5 *)[data-slot$=-separator]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-separator\\]\\:bg-foreground\\/5 *)[data-slot$=-separator]{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-trigger]:focus{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-trigger]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:aria-expanded\\:bg-foreground\\/10\\! *)[data-slot$=-trigger][aria-expanded=true]{background-color:var(--foreground)!important}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:aria-expanded\\:bg-foreground\\/10\\! *)[data-slot$=-trigger][aria-expanded=true]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)!important}}:is(.tw\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}:is(.tw\\:\\*\\:data-\\[slot\\=avatar\\]\\:ring-2>*)[data-slot=avatar]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.tw\\:\\*\\:data-\\[slot\\=avatar\\]\\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}:is(.tw\\:\\*\\:data-\\[slot\\=input-group-addon\\]\\:ps-2\\!>*)[data-slot=input-group-addon]{padding-inline-start:calc(calc(var(--spacing)) * 2)!important}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:relative *)[data-slot=kbd]{position:relative}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:z-50 *)[data-slot=kbd]{z-index:50}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:flex>*)[data-slot=select-value]{display:flex}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:flex-1>*)[data-slot=select-value]{flex:1}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:items-center>*)[data-slot=select-value]{align-items:center}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:gap-1\\.5>*)[data-slot=select-value]{gap:calc(calc(var(--spacing)) * 1.5)}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:text-start>*)[data-slot=select-value]{text-align:start}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-s-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:first-child{border-start-start-radius:var(--radius);border-end-start-radius:var(--radius)}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-t-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-e-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:last-child{border-start-end-radius:var(--radius);border-end-end-radius:var(--radius)}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-b-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.tw\\:data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--background)}.tw\\:data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:var(--foreground)}.tw\\:data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-\\[state\\=closed\\]\\:overflow-hidden[data-state=closed]{overflow:hidden}.tw\\:data-\\[state\\=delayed-open\\]\\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-\\[state\\=delayed-open\\]\\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.tw\\:data-\\[state\\=delayed-open\\]\\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-approved\\)\\][data-state=on]{background-color:var(--inv-soft-approved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-unapproved\\)\\][data-state=on]{background-color:var(--inv-soft-unapproved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-unknown\\)\\][data-state=on]{background-color:var(--inv-soft-unknown)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-approved\\)\\][data-state=on]{background-color:var(--inv-vivid-approved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-unapproved\\)\\][data-state=on]{background-color:var(--inv-vivid-unapproved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-unknown\\)\\][data-state=on]{background-color:var(--inv-vivid-unknown)}.tw\\:data-\\[state\\=on\\]\\:bg-muted[data-state=on]{background-color:var(--muted)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-approved\\)\\][data-state=on]{color:var(--inv-icon-approved)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-unapproved\\)\\][data-state=on]{color:var(--inv-icon-unapproved)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-unknown\\)\\][data-state=on]{color:var(--inv-icon-unknown)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-on\\)\\][data-state=on]{color:var(--inv-on)}.tw\\:data-\\[state\\=on\\]\\:text-foreground[data-state=on]{color:var(--foreground)}.tw\\:data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.tw\\:data-\\[state\\=open\\]\\:bg-muted[data-state=open]{background-color:var(--muted)}.tw\\:data-\\[state\\=open\\]\\:text-foreground[data-state=open]{color:var(--foreground)}.tw\\:data-\\[state\\=selected\\]\\:bg-muted[data-state=selected]{background-color:var(--muted)}.tw\\:data-\\[variant\\=destructive\\]\\:text-destructive[data-variant=destructive]{color:var(--destructive)}:is(:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:\\*\\*\\:text-accent-foreground\\! *)[data-variant=destructive] *),:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:text-accent-foreground\\! *)[data-variant=destructive]{color:var(--accent-foreground)!important}.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-foreground\\/10\\! *)[data-variant=destructive]:focus{background-color:var(--foreground)!important}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-foreground\\/10\\! *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)!important}}.tw\\:data-\\[variant\\=line\\]\\:rounded-none[data-variant=line]{border-radius:0}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-s-0:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-t-0:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-s:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]:first-child{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-t:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(calc(var(--spacing)) * 24)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\][data-vaul-drawer-direction=bottom]{max-height:80vh}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-xl[data-vaul-drawer-direction=bottom]{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:left-0[data-vaul-drawer-direction=left]{left:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4[data-vaul-drawer-direction=left]{width:75%}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:flex-row[data-vaul-drawer-direction=left]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:rounded-r-xl[data-vaul-drawer-direction=left]{border-top-right-radius:calc(var(--radius) * 1.4);border-bottom-right-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=left\\/right\\]\\:flex-row[data-vaul-drawer-direction=left\\/right]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:right-0[data-vaul-drawer-direction=right]{right:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4[data-vaul-drawer-direction=right]{width:75%}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:flex-row[data-vaul-drawer-direction=right]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:rounded-l-xl[data-vaul-drawer-direction=right]{border-top-left-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:top-0[data-vaul-drawer-direction=top]{top:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(calc(var(--spacing)) * 24)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\][data-vaul-drawer-direction=top]{max-height:80vh}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-xl[data-vaul-drawer-direction=top]{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.tw\\:supports-backdrop-filter\\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--tw-blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:40rem){.tw\\:sm\\:flex{display:flex}.tw\\:sm\\:max-w-sm{max-width:var(--tw-container-sm)}.tw\\:sm\\:flex-row{flex-direction:row}.tw\\:sm\\:justify-end{justify-content:flex-end}.tw\\:sm\\:p-8{padding:calc(calc(var(--spacing)) * 8)}.tw\\:sm\\:text-start{text-align:start}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm[data-vaul-drawer-direction=left],.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--tw-container-sm)}}@media (min-width:48rem){.tw\\:md\\:block{display:block}.tw\\:md\\:flex{display:flex}.tw\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:md\\:gap-0\\.5{gap:calc(calc(var(--spacing)) * .5)}.tw\\:md\\:text-start{text-align:start}.tw\\:md\\:text-sm{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:md\\:text-pretty{text-wrap:pretty}.tw\\:md\\:opacity-0{opacity:0}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:m-2:is(:where(.tw\\:peer)[data-variant=inset]~*){margin:calc(calc(var(--spacing)) * 2)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:ms-0:is(:where(.tw\\:peer)[data-variant=inset]~*){margin-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl:is(:where(.tw\\:peer)[data-variant=inset]~*){border-radius:calc(var(--radius) * 1.4)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm:is(:where(.tw\\:peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ms-2:is(:where(.tw\\:peer)[data-variant=inset]~*):is(:where(.tw\\:peer)[data-state=collapsed]~*){margin-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:md\\:after\\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.tw\\:lg\\:flex{display:flex}.tw\\:lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}:where(.tw\\:lg\\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 8) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 8) * calc(1 - var(--tw-space-x-reverse)))}.tw\\:lg\\:text-5xl{font-size:var(--tw-text-5xl);line-height:var(--tw-leading,var(--tw-text-5xl--line-height))}}@media (min-width:48rem){@media (min-width:64rem){.tw\\:md\\:lg\\:hidden{display:none}}}@media (min-width:80rem){.tw\\:xl\\:auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.tw\\:xl\\:grid-flow-col{grid-auto-flow:column}.tw\\:xl\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:xl\\:grid-cols-none{grid-template-columns:none}.tw\\:xl\\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}}@container search not (min-width:7rem){.tw\\:\\@max-\\[7rem\\]\\/search\\:hidden{display:none}.tw\\:\\@max-\\[7rem\\]\\/search\\:ps-3{padding-inline-start:calc(calc(var(--spacing)) * 3)}}@container search not (min-width:4rem){.tw\\:\\@max-\\[4rem\\]\\/search\\:hidden{display:none}.tw\\:\\@max-\\[4rem\\]\\/search\\:pe-3{padding-inline-end:calc(calc(var(--spacing)) * 3)}}@container search not (min-width:3rem){.tw\\:\\@max-\\[3rem\\]\\/search\\:ps-0{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\@max-\\[3rem\\]\\/search\\:pe-0{padding-inline-end:calc(calc(var(--spacing)) * 0)}}@container (min-width:24rem){.tw\\:\\@sm\\:basis-auto{flex-basis:auto}}.tw\\:ltr\\:left-2:where(:dir(ltr),[dir=ltr],[dir=ltr] *){left:calc(calc(var(--spacing)) * 2)}.tw\\:ltr\\:-translate-x-1\\/2:where(:dir(ltr),[dir=ltr],[dir=ltr] *){--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:right-2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){right:calc(calc(var(--spacing)) * 2)}.tw\\:rtl\\:flex:where(:dir(rtl),[dir=rtl],[dir=rtl] *){display:flex}.tw\\:rtl\\:-translate-x-px:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:translate-x-1\\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:translate-x-px:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:after\\:translate-x-1\\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=primary]) .tw\\:rtl\\:in-data-\\[side\\=primary\\]\\:cursor-e-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:e-resize}:where([data-side=secondary]) .tw\\:rtl\\:in-data-\\[side\\=secondary\\]\\:cursor-w-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:w-resize}.tw\\:rtl\\:aria-\\[orientation\\=horizontal\\]\\:after\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:data-\\[side\\=left\\]\\:translate-x-1:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[data-side=left]{--tw-translate-x:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:data-\\[side\\=right\\]\\:-translate-x-1:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[data-side=right]{--tw-translate-x:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:border-input:is(.dark *){border-color:var(--input)}.tw\\:dark\\:bg-destructive\\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:bg-destructive\\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:dark\\:bg-transparent:is(.dark *){background-color:#0000}.tw\\:dark\\:text-amber-400:is(.dark *){color:var(--tw-color-amber-400)}.tw\\:dark\\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.tw\\:dark\\:text-rose-400:is(.dark *){color:var(--tw-color-rose-400)}.tw\\:dark\\:text-sky-400:is(.dark *){color:var(--tw-color-sky-400)}.tw\\:dark\\:text-teal-400:is(.dark *){color:var(--tw-color-teal-400)}.tw\\:dark\\:after\\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media (hover:hover){.tw\\:dark\\:hover\\:bg-blue-500:is(.dark *):hover{background-color:var(--tw-color-blue-500)}.tw\\:dark\\:hover\\:bg-destructive\\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-destructive\\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.tw\\:dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:dark\\:hover\\:bg-muted\\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-muted\\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:dark\\:hover\\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.tw\\:dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:disabled\\:bg-input\\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:disabled\\:bg-input\\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:dark\\:disabled\\:bg-transparent:is(.dark *):disabled{background-color:#0000}:where([data-slot=tooltip-content]) .tw\\:dark\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/10:is(.dark *){background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){:where([data-slot=tooltip-content]) .tw\\:dark\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/10:is(.dark *){background-color:color-mix(in oklab, var(--background) 10%, transparent)}}.tw\\:dark\\:has-disabled\\:bg-input\\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:has-disabled\\:bg-input\\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:aria-invalid\\:border-destructive\\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:aria-invalid\\:border-destructive\\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.tw\\:dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:data-open\\:animate-in:where([data-state=open]),.tw\\:data-open\\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-open\\:bg-accent:where([data-state=open]),.tw\\:data-open\\:bg-accent:where([data-open]:not([data-open=false])){background-color:var(--accent)}.tw\\:data-open\\:text-accent-foreground:where([data-state=open]),.tw\\:data-open\\:text-accent-foreground:where([data-open]:not([data-open=false])){color:var(--accent-foreground)}.tw\\:data-open\\:fade-in-0:where([data-state=open]),.tw\\:data-open\\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.tw\\:data-open\\:zoom-in-95:where([data-state=open]),.tw\\:data-open\\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}@media (hover:hover){:is(.tw\\:data-open\\:hover\\:bg-sidebar-accent:where([data-state=open]),.tw\\:data-open\\:hover\\:bg-sidebar-accent:where([data-open]:not([data-open=false]))):hover{background-color:var(--sidebar-accent)}:is(.tw\\:data-open\\:hover\\:text-sidebar-accent-foreground:where([data-state=open]),.tw\\:data-open\\:hover\\:text-sidebar-accent-foreground:where([data-open]:not([data-open=false]))):hover{color:var(--sidebar-accent-foreground)}}.tw\\:data-closed\\:animate-out:where([data-state=closed]),.tw\\:data-closed\\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-closed\\:fade-out-0:where([data-state=closed]),.tw\\:data-closed\\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.tw\\:data-closed\\:zoom-out-95:where([data-state=closed]),.tw\\:data-closed\\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.tw\\:data-checked\\:border-primary:where([data-state=checked]),.tw\\:data-checked\\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--primary)}.tw\\:data-checked\\:bg-primary:where([data-state=checked]),.tw\\:data-checked\\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.tw\\:data-checked\\:text-primary-foreground:where([data-state=checked]),.tw\\:data-checked\\:text-primary-foreground:where([data-checked]:not([data-checked=false])){color:var(--primary-foreground)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=checked]),.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=checked]),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=checked]),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=checked]),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x:calc(calc(100% - 2px) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:data-checked\\:bg-primary:is(.dark *):where([data-state=checked]),.tw\\:dark\\:data-checked\\:bg-primary:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.tw\\:dark\\:data-checked\\:bg-primary-foreground:is(.dark *):where([data-state=checked]),.tw\\:dark\\:data-checked\\:bg-primary-foreground:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary-foreground)}.tw\\:data-unchecked\\:bg-input:where([data-state=unchecked]),.tw\\:data-unchecked\\:bg-input:where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=unchecked]),.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=unchecked]),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=unchecked]),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=unchecked]),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])){--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:data-unchecked\\:bg-foreground:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-foreground:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--foreground)}.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:data-selected\\:bg-muted:where([data-selected=true]),.tw\\:data-selected\\:bg-muted\\/50:where([data-selected=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:bg-muted\\/50:where([data-selected=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:data-selected\\:bg-primary:where([data-selected=true]){background-color:var(--primary)}.tw\\:data-selected\\:bg-transparent:where([data-selected=true]){background-color:#0000}.tw\\:data-selected\\:text-foreground:where([data-selected=true]){color:var(--foreground)}.tw\\:data-selected\\:text-inherit:where([data-selected=true]){color:inherit}.tw\\:data-selected\\:text-muted-foreground\\/50:where([data-selected=true]){color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:text-muted-foreground\\/50:where([data-selected=true]){color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.tw\\:data-selected\\:text-primary-foreground:where([data-selected=true]){color:var(--primary-foreground)}.tw\\:data-selected\\:ring-2:where([data-selected=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-selected\\:ring-primary-foreground\\/70:where([data-selected=true]){--tw-ring-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:ring-primary-foreground\\/70:where([data-selected=true]){--tw-ring-color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.tw\\:data-selected\\:ring-ring\\/50:where([data-selected=true]){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:ring-ring\\/50:where([data-selected=true]){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:data-selected\\:ring-inset:where([data-selected=true]){--tw-ring-inset:inset}@media (forced-colors:active){.tw\\:forced-colors\\:data-selected\\:outline-2:where([data-selected=true]){outline-style:var(--tw-outline-style);outline-width:2px}.tw\\:forced-colors\\:data-selected\\:-outline-offset-2:where([data-selected=true]){outline-offset:calc(2px * -1)}.tw\\:forced-colors\\:data-selected\\:outline-\\[color\\:Highlight\\]:where([data-selected=true]){outline-color:highlight}}.tw\\:data-disabled\\:pointer-events-none:where([data-disabled=true]),.tw\\:data-disabled\\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.tw\\:data-disabled\\:cursor-not-allowed:where([data-disabled=true]),.tw\\:data-disabled\\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.tw\\:data-disabled\\:opacity-50:where([data-disabled=true]),.tw\\:data-disabled\\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.tw\\:data-active\\:bg-background:where([data-state=active]),.tw\\:data-active\\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.tw\\:data-active\\:bg-sidebar-accent:where([data-state=active]),.tw\\:data-active\\:bg-sidebar-accent:where([data-active]:not([data-active=false])){background-color:var(--sidebar-accent)}.tw\\:data-active\\:font-medium:where([data-state=active]),.tw\\:data-active\\:font-medium:where([data-active]:not([data-active=false])){--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:data-active\\:text-foreground:where([data-state=active]),.tw\\:data-active\\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.tw\\:data-active\\:text-sidebar-accent-foreground:where([data-state=active]),.tw\\:data-active\\:text-sidebar-accent-foreground:where([data-active]:not([data-active=false])){color:var(--sidebar-accent-foreground)}.tw\\:group-data-\\[variant\\=default\\]\\/tabs-list\\:data-active\\:shadow-sm:is(:where(.tw\\:group\\/tabs-list)[data-variant=default] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=default\\]\\/tabs-list\\:data-active\\:shadow-sm:is(:where(.tw\\:group\\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:shadow-none:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:shadow-none:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:after\\:opacity-100:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:after\\:opacity-100:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.tw\\:dark\\:data-active\\:border-input:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:dark\\:data-active\\:text-foreground:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:border-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:border-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.tw\\:data-horizontal\\:mx-px:where([data-orientation=horizontal]){margin-inline:1px}.tw\\:data-horizontal\\:h-1:where([data-orientation=horizontal]){height:calc(calc(var(--spacing)) * 1)}.tw\\:data-horizontal\\:h-full:where([data-orientation=horizontal]){height:100%}.tw\\:data-horizontal\\:h-px:where([data-orientation=horizontal]){height:1px}.tw\\:data-horizontal\\:w-auto:where([data-orientation=horizontal]){width:auto}.tw\\:data-horizontal\\:w-full:where([data-orientation=horizontal]){width:100%}.tw\\:data-horizontal\\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.tw\\:data-vertical\\:my-px:where([data-orientation=vertical]){margin-block:1px}.tw\\:data-vertical\\:h-auto:where([data-orientation=vertical]){height:auto}.tw\\:data-vertical\\:h-full:where([data-orientation=vertical]){height:100%}.tw\\:data-vertical\\:min-h-40:where([data-orientation=vertical]){min-height:calc(calc(var(--spacing)) * 40)}.tw\\:data-vertical\\:w-1:where([data-orientation=vertical]){width:calc(calc(var(--spacing)) * 1)}.tw\\:data-vertical\\:w-auto:where([data-orientation=vertical]){width:auto}.tw\\:data-vertical\\:w-full:where([data-orientation=vertical]){width:100%}.tw\\:data-vertical\\:w-px:where([data-orientation=vertical]){width:1px}.tw\\:data-vertical\\:flex-col:where([data-orientation=vertical]){flex-direction:column}.tw\\:data-vertical\\:items-stretch:where([data-orientation=vertical]){align-items:stretch}.tw\\:data-vertical\\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:mt-0 [data-lexical-editor=true]>blockquote{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:border-s-0 [data-lexical-editor=true]>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:ps-0 [data-lexical-editor=true]>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:font-normal [data-lexical-editor=true]>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:text-foreground [data-lexical-editor=true]>blockquote{color:var(--foreground)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:not-italic [data-lexical-editor=true]>blockquote{font-style:normal}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:mt-0 [data-lexical-editor=\\"true\\"]>blockquote{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:border-s-0 [data-lexical-editor=\\"true\\"]>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:ps-0 [data-lexical-editor=\\"true\\"]>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:font-normal [data-lexical-editor=\\"true\\"]>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:text-foreground [data-lexical-editor=\\"true\\"]>blockquote{color:var(--foreground)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:not-italic [data-lexical-editor=\\"true\\"]>blockquote{font-style:normal}.tw\\:\\[\\&_a\\]\\:underline a{text-decoration-line:underline}.tw\\:\\[\\&_a\\]\\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.tw\\:\\[\\&_a\\]\\:hover\\:text-foreground a:hover{color:var(--foreground)}}.tw\\:\\[\\&_p\\]\\:my-0 p{margin-block:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_p\\:not\\(\\:last-child\\)\\]\\:mb-4 p:not(:last-child){margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_s\\]\\:text-destructive s{color:var(--destructive)}.tw\\:\\[\\&_s\\]\\:line-through s{text-decoration-line:line-through}.tw\\:\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.tw\\:\\[\\&_svg\\]\\:size-4 svg{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3\\.5 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_tr\\]\\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.tw\\:\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.tw\\:\\[\\&_u\\]\\:font-semibold u{--tw-font-weight:var(--tw-font-weight-semibold);font-weight:var(--tw-font-weight-semibold)}.tw\\:\\[\\&_u\\]\\:text-success-foreground u{color:var(--success-foreground)}.tw\\:\\[\\&_u\\]\\:no-underline u{text-decoration-line:none}.tw\\:\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pe-0:has([role=checkbox]){padding-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\.border-b\\]\\:pb-2.border-b{padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:\\[\\.border-b\\]\\:pb-4.border-b{padding-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:\\[\\.border-b\\]\\:pb-3:is(:where(.tw\\:group\\/card)[data-size=sm] *).border-b{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:\\[\\.border-t\\]\\:pt-2.border-t{padding-top:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:px-2 *)[cmdk-group-heading]{padding-inline:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:py-1\\.5 *)[cmdk-group-heading]{padding-block:calc(calc(var(--spacing)) * 1.5)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-xs *)[cmdk-group-heading]{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-muted-foreground *)[cmdk-group-heading]{color:var(--muted-foreground)}:is(.tw\\:\\*\\:\\[a\\]\\:underline>*):is(a){text-decoration-line:underline}:is(.tw\\:\\*\\:\\[a\\]\\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.tw\\:\\[a\\]\\:hover\\:bg-destructive\\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-destructive\\/20:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:\\[a\\]\\:hover\\:bg-muted:is(a):hover{background-color:var(--muted)}.tw\\:\\[a\\]\\:hover\\:bg-primary\\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-primary\\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.tw\\:\\[a\\]\\:hover\\:bg-secondary\\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-secondary\\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.tw\\:\\[a\\]\\:hover\\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.tw\\:\\*\\:\\[a\\]\\:hover\\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.tw\\:\\*\\:\\[img\\]\\:row-span-2>*):is(img){grid-row:span 2/span 2}:is(.tw\\:\\*\\:\\[img\\]\\:translate-y-0\\.5>*):is(img){--tw-translate-y:calc(calc(var(--spacing)) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.tw\\:\\*\\:\\[img\\]\\:text-current>*):is(img){color:currentColor}:is(.tw\\:\\*\\:\\[img\\:first-child\\]\\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.tw\\:\\*\\:\\[img\\:last-child\\]\\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.tw\\:\\*\\:\\[img\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>*):is(img:not([class*=size-])){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:flex>*):is(span):last-child{display:flex}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:items-center>*):is(span):last-child{align-items:center}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:gap-2>*):is(span):last-child{gap:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\:\\[svg\\]\\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.tw\\:\\*\\:\\[svg\\]\\:translate-y-0\\.5>*):is(svg){--tw-translate-y:calc(calc(var(--spacing)) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.tw\\:\\*\\:\\[svg\\]\\:text-current>*):is(svg){color:currentColor}:is(.tw\\:focus\\:\\*\\:\\[svg\\]\\:text-accent-foreground:focus>*):is(svg){color:var(--accent-foreground)}:is(.tw\\:data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)}:is(.tw\\:data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive\\![data-variant=destructive]>*):is(svg){color:var(--destructive)!important}:is(.tw\\:data-selected\\:\\*\\:\\[svg\\]\\:text-foreground:where([data-selected=true])>*):is(svg){color:var(--foreground)}:is(.tw\\:\\*\\:\\[svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>*):is(svg:not([class*=size-])){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-s-none>:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-s-0>:not(:first-child){border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-e-none>:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.tw\\:has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-e-lg:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-start-end-radius:var(--radius);border-end-end-radius:var(--radius)}.tw\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=w-\\]\\)\\]\\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.tw\\:\\[\\&\\>\\[data-slot\\]\\:not\\(\\:has\\(\\~\\[data-slot\\]\\)\\)\\]\\:rounded-e-lg\\!>[data-slot]:not(:has(~[data-slot])){border-start-end-radius:var(--radius)!important;border-end-end-radius:var(--radius)!important}.tw\\:\\[\\&\\>\\[data-slot\\]\\:not\\(\\:has\\(\\~\\[data-slot\\]\\)\\)\\]\\:rounded-b-lg\\!>[data-slot]:not(:has(~[data-slot])){border-bottom-right-radius:var(--radius)!important;border-bottom-left-radius:var(--radius)!important}.tw\\:\\[\\&\\>a\\]\\:underline>a{text-decoration-line:underline}.tw\\:\\[\\&\\>a\\]\\:underline-offset-4>a{text-underline-offset:4px}.tw\\:\\[\\&\\>a\\:hover\\]\\:text-primary>a:hover{color:var(--primary)}.tw\\:\\[\\&\\>blockquote\\]\\:my-0>blockquote{margin-block:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:border-s-0>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&\\>blockquote\\]\\:p-0>blockquote{padding:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:ps-0>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:font-normal>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&\\>blockquote\\]\\:text-foreground>blockquote{color:var(--foreground)}.tw\\:\\[\\&\\>blockquote\\]\\:not-italic>blockquote{font-style:normal}.tw\\:\\[\\&\\>input\\]\\:flex-1>input{flex:1}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(calc(var(--spacing)) * 3)}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pe-1\\.5:has(>[data-align=inline-end])>input{padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:ps-1\\.5:has(>[data-align=inline-start])>input{padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]>kbd{border-radius:calc(var(--radius) - 5px)}.tw\\:\\[\\&\\>li\\]\\:mt-2>li{margin-top:calc(calc(var(--spacing)) * 2)}.tw\\:\\[\\&\\>span\\:last-child\\]\\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tw\\:\\[\\&\\>svg\\]\\:pointer-events-none>svg{pointer-events:none}.tw\\:\\[\\&\\>svg\\]\\:hidden>svg{display:none}.tw\\:\\[\\&\\>svg\\]\\:size-3\\!>svg{width:calc(calc(var(--spacing)) * 3)!important;height:calc(calc(var(--spacing)) * 3)!important}.tw\\:\\[\\&\\>svg\\]\\:size-3\\.5>svg{width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&\\>svg\\]\\:size-4>svg{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>svg\\]\\:shrink-0>svg{flex-shrink:0}.tw\\:\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.tw\\:group-has-data-\\[size\\=lg\\]\\/avatar-group\\:\\[\\&\\>svg\\]\\:size-5:is(:where(.tw\\:group\\/avatar-group):has([data-size=lg]) *)>svg{width:calc(calc(var(--spacing)) * 5);height:calc(calc(var(--spacing)) * 5)}.tw\\:group-has-data-\\[size\\=sm\\]\\/avatar-group\\:\\[\\&\\>svg\\]\\:size-3:is(:where(.tw\\:group\\/avatar-group):has([data-size=sm]) *)>svg{width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=default\\]\\/avatar\\:\\[\\&\\>svg\\]\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=default] *)>svg,.tw\\:group-data-\\[size\\=lg\\]\\/avatar\\:\\[\\&\\>svg\\]\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=lg] *)>svg{width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:\\[\\&\\>svg\\]\\:hidden:is(:where(.tw\\:group\\/avatar)[data-size=sm] *)>svg,.tw\\:\\[\\&\\>svg\\:last-child\\]\\:hidden>svg:last-child{display:none}.tw\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3\\.5>svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>tr\\]\\:last\\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:\\[\\&\\[align\\=center\\]\\]\\:text-center[align=center]{text-align:center}.tw\\:\\[\\&\\[align\\=right\\]\\]\\:text-right[align=right]{text-align:right}.tw\\:\\[\\&\\[aria-orientation\\=horizontal\\]\\>div\\]\\:rotate-90[aria-orientation=horizontal]>div{rotate:90deg}[data-side=primary][data-collapsible=offcanvas] .tw\\:\\[\\[data-side\\=primary\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-end-2{inset-inline-end:calc(calc(var(--spacing)) * -2)}[data-side=primary][data-state=collapsed] .tw\\:\\[\\[data-side\\=primary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-side=primary][data-state=collapsed] .tw\\:rtl\\:\\[\\[data-side\\=primary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:w-resize}[data-side=secondary][data-collapsible=offcanvas] .tw\\:\\[\\[data-side\\=secondary\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-start-2{inset-inline-start:calc(calc(var(--spacing)) * -2)}[data-side=secondary][data-state=collapsed] .tw\\:\\[\\[data-side\\=secondary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=secondary][data-state=collapsed] .tw\\:rtl\\:\\[\\[data-side\\=secondary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:e-resize}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-cyrillic-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-cyrillic-wght-normal.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-greek-wght-normal.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.light,:root{--radius:.625rem;--spacing:.25rem;--background:oklch(100% 0 0);--foreground:oklch(13.71% .036 258.53);--card:oklch(100% 0 0);--card-foreground:oklch(13.71% .036 258.53);--popover:oklch(98.43% .0018 248.56);--popover-foreground:oklch(13.71% .036 258.53);--primary:oklch(20.79% .0399 265.73);--primary-foreground:oklch(98.38% .0036 248.23);--secondary:oklch(95.89% .011 248.06);--secondary-foreground:oklch(20.79% .0399 265.73);--muted:oklch(95.89% .011 248.06);--muted-foreground:oklch(55.47% .0408 257.45);--accent:oklch(95.89% .011 248.06);--accent-foreground:oklch(20.79% .0399 265.73);--destructive:oklch(63.69% .2077 25.32);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(62.7% .194 149.214);--diff-deleted:oklch(57.7% .245 27.325);--warning:oklch(84% .16 84);--warning-foreground:oklch(28% .07 46);--border:oklch(92.9% .0127 255.58);--input:oklch(92.9% .0127 255.58);--ring:oklch(13.71% .036 258.53);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.43% .0018 248.56);--sidebar-foreground:oklch(13.71% .036 258.53);--sidebar-primary:oklch(20.79% .0399 265.73);--sidebar-primary-foreground:oklch(98.38% .0036 248.23);--sidebar-accent:oklch(95.89% .011 248.06);--sidebar-accent-foreground:oklch(20.79% .0399 265.73);--sidebar-border:oklch(92.9% .0127 255.58);--sidebar-ring:oklch(13.71% .036 258.53)}.dark{--background:oklch(13.71% .036 258.53);--foreground:oklch(98.38% .0036 248.23);--card:oklch(13.71% .036 258.53);--card-foreground:oklch(98.38% .0036 248.23);--popover:oklch(13.71% .036 258.53);--popover-foreground:oklch(98.38% .0036 248.23);--primary:oklch(98.38% .0036 248.23);--primary-foreground:oklch(20.79% .0399 265.73);--secondary:oklch(28% .037 259.98);--secondary-foreground:oklch(98.38% .0036 248.23);--muted:oklch(28% .037 259.98);--muted-foreground:oklch(71.07% .0351 256.8);--accent:oklch(28% .037 259.98);--accent-foreground:oklch(98.38% .0036 248.23);--destructive:oklch(39.6% .1331 25.71);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(79.2% .209 151.711);--diff-deleted:oklch(70.4% .191 22.216);--warning:oklch(41% .11 46);--warning-foreground:oklch(99% .02 95);--border:oklch(44.54% .0374 257.3);--input:oklch(44.54% .0374 257.3);--ring:oklch(86.88% .0199 252.89);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(13.71% .036 258.53);--sidebar-foreground:oklch(71.07% .0351 256.8);--sidebar-primary:oklch(98.38% .0036 248.23);--sidebar-primary-foreground:oklch(20.79% .0399 265.73);--sidebar-accent:oklch(28% .037 259.98);--sidebar-accent-foreground:oklch(71.07% .0351 256.8);--sidebar-border:oklch(28% .037 259.98);--sidebar-ring:oklch(86.88% .0199 252.89)}.paratext-light{--background:oklch(100% 0 0);--foreground:oklch(15.3% .006 107.1);--card:oklch(100% 0 0);--card-foreground:oklch(15.3% .006 107.1);--popover:oklch(100% 0 0);--popover-foreground:oklch(15.3% .006 107.1);--primary:oklch(55.5% .163 48.998);--primary-foreground:oklch(98.7% .022 95.277);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.6% .005 106.5);--muted-foreground:oklch(58% .031 107.3);--accent:oklch(96.6% .005 106.5);--accent-foreground:oklch(22.8% .013 107.4);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(62.7% .194 149.214);--diff-deleted:oklch(57.7% .245 27.325);--warning:oklch(84% .16 84);--warning-foreground:oklch(28% .07 46);--border:oklch(93% .007 106.5);--input:oklch(93% .007 106.5);--ring:oklch(73.7% .021 106.9);--chart-1:oklch(88% .011 106.6);--chart-2:oklch(58% .031 107.3);--chart-3:oklch(46.6% .025 107.3);--chart-4:oklch(39.4% .023 107.4);--chart-5:oklch(28.6% .016 107.4);--sidebar:oklch(98.8% .003 106.5);--sidebar-foreground:oklch(15.3% .006 107.1);--sidebar-primary:oklch(66.6% .179 58.318);--sidebar-primary-foreground:oklch(98.7% .022 95.277);--sidebar-accent:oklch(96.6% .005 106.5);--sidebar-accent-foreground:oklch(22.8% .013 107.4);--sidebar-border:oklch(93% .007 106.5);--sidebar-ring:oklch(73.7% .021 106.9)}.paratext-dark{--background:oklch(15.3% .006 107.1);--foreground:oklch(98.8% .003 106.5);--card:oklch(22.8% .013 107.4);--card-foreground:oklch(98.8% .003 106.5);--popover:oklch(22.8% .013 107.4);--popover-foreground:oklch(98.8% .003 106.5);--primary:oklch(47.3% .137 46.201);--primary-foreground:oklch(98.7% .022 95.277);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(28.6% .016 107.4);--muted-foreground:oklch(73.7% .021 106.9);--accent:oklch(28.6% .016 107.4);--accent-foreground:oklch(98.8% .003 106.5);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(79.2% .209 151.711);--diff-deleted:oklch(70.4% .191 22.216);--warning:oklch(41% .11 46);--warning-foreground:oklch(99% .02 95);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(58% .031 107.3);--chart-1:oklch(88% .011 106.6);--chart-2:oklch(58% .031 107.3);--chart-3:oklch(46.6% .025 107.3);--chart-4:oklch(39.4% .023 107.4);--chart-5:oklch(28.6% .016 107.4);--sidebar:oklch(22.8% .013 107.4);--sidebar-foreground:oklch(98.8% .003 106.5);--sidebar-primary:oklch(76.9% .188 70.08);--sidebar-primary-foreground:oklch(27.9% .077 45.635);--sidebar-accent:oklch(28.6% .016 107.4);--sidebar-accent-foreground:oklch(98.8% .003 106.5);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(58% .031 107.3)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:" ";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} +@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction: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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root,:host{--tw-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--tw-color-red-100:oklch(93.6% .032 17.717);--tw-color-red-200:oklch(88.5% .062 18.334);--tw-color-red-300:oklch(80.8% .114 19.571);--tw-color-red-400:oklch(70.4% .191 22.216);--tw-color-red-500:oklch(63.7% .237 25.331);--tw-color-red-600:oklch(57.7% .245 27.325);--tw-color-red-700:oklch(50.5% .213 27.518);--tw-color-red-800:oklch(44.4% .177 26.899);--tw-color-orange-100:oklch(95.4% .038 75.164);--tw-color-orange-800:oklch(47% .157 37.304);--tw-color-amber-200:oklch(92.4% .12 95.746);--tw-color-amber-400:oklch(82.8% .189 84.429);--tw-color-amber-500:oklch(76.9% .188 70.08);--tw-color-amber-600:oklch(66.6% .179 58.318);--tw-color-yellow-50:oklch(98.7% .026 102.212);--tw-color-yellow-100:oklch(97.3% .071 103.193);--tw-color-yellow-400:oklch(85.2% .199 91.936);--tw-color-yellow-500:oklch(79.5% .184 86.047);--tw-color-yellow-600:oklch(68.1% .162 75.834);--tw-color-yellow-700:oklch(55.4% .135 66.442);--tw-color-green-50:oklch(98.2% .018 155.826);--tw-color-green-100:oklch(96.2% .044 156.743);--tw-color-green-500:oklch(72.3% .219 149.579);--tw-color-green-600:oklch(62.7% .194 149.214);--tw-color-green-700:oklch(52.7% .154 150.069);--tw-color-green-800:oklch(44.8% .119 151.328);--tw-color-teal-400:oklch(77.7% .152 181.912);--tw-color-teal-500:oklch(70.4% .14 182.503);--tw-color-teal-600:oklch(60% .118 184.704);--tw-color-sky-400:oklch(74.6% .16 232.661);--tw-color-sky-500:oklch(68.5% .169 237.323);--tw-color-sky-600:oklch(58.8% .158 241.966);--tw-color-blue-50:oklch(97% .014 254.604);--tw-color-blue-100:oklch(93.2% .032 255.585);--tw-color-blue-400:oklch(70.7% .165 254.624);--tw-color-blue-500:oklch(62.3% .214 259.815);--tw-color-blue-600:oklch(54.6% .245 262.881);--tw-color-blue-800:oklch(42.4% .199 265.638);--tw-color-indigo-200:oklch(87% .065 274.039);--tw-color-purple-50:oklch(97.7% .014 308.299);--tw-color-purple-200:oklch(90.2% .063 306.703);--tw-color-purple-900:oklch(38.1% .176 304.987);--tw-color-rose-400:oklch(71.2% .194 13.428);--tw-color-rose-500:oklch(64.5% .246 16.439);--tw-color-rose-600:oklch(58.6% .253 17.585);--tw-color-slate-300:oklch(86.9% .022 252.894);--tw-color-slate-400:oklch(70.4% .04 256.788);--tw-color-slate-900:oklch(20.8% .042 265.755);--tw-color-gray-50:oklch(98.5% .002 247.839);--tw-color-gray-100:oklch(96.7% .003 264.542);--tw-color-gray-300:oklch(87.2% .01 258.338);--tw-color-gray-500:oklch(55.1% .027 264.364);--tw-color-gray-600:oklch(44.6% .03 256.802);--tw-color-gray-700:oklch(37.3% .034 259.733);--tw-color-gray-800:oklch(27.8% .033 256.848);--tw-color-zinc-400:oklch(70.5% .015 286.067);--tw-color-neutral-300:oklch(87% 0 0);--tw-color-black:#000;--tw-color-white:#fff;--tw-container-xs:20rem;--tw-container-sm:24rem;--tw-container-md:28rem;--tw-container-lg:32rem;--tw-container-2xl:42rem;--tw-container-3xl:48rem;--tw-container-4xl:56rem;--tw-container-6xl:72rem;--tw-text-xs:.75rem;--tw-text-xs--line-height:calc(1 / .75);--tw-text-sm:.875rem;--tw-text-sm--line-height:calc(1.25 / .875);--tw-text-base:1rem;--tw-text-base--line-height:calc(1.5 / 1);--tw-text-lg:1.125rem;--tw-text-lg--line-height:calc(1.75 / 1.125);--tw-text-xl:1.25rem;--tw-text-xl--line-height:calc(1.75 / 1.25);--tw-text-2xl:1.5rem;--tw-text-2xl--line-height:calc(2 / 1.5);--tw-text-3xl:1.875rem;--tw-text-3xl--line-height:calc(2.25 / 1.875);--tw-text-4xl:2.25rem;--tw-text-4xl--line-height:calc(2.5 / 2.25);--tw-text-5xl:3rem;--tw-text-5xl--line-height:1;--tw-font-weight-normal:400;--tw-font-weight-medium:500;--tw-font-weight-semibold:600;--tw-font-weight-bold:700;--tw-font-weight-extrabold:800;--tw-tracking-tight:-.025em;--tw-tracking-wider:.05em;--tw-tracking-widest:.1em;--tw-leading-tight:1.25;--tw-leading-snug:1.375;--tw-leading-relaxed:1.625;--tw-leading-loose:2;--tw-radius-xs:.125rem;--tw-radius-md:calc(var(--radius) * .8);--tw-drop-shadow-sm:0 1px 2px #00000026;--tw-animate-spin:spin 1s linear infinite;--tw-animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--tw-blur-xs:4px;--tw-blur-2xl:40px;--tw-default-transition-duration:.15s;--tw-default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--tw-default-font-family:"IBM Plex Sans Variable", sans-serif;--tw-default-mono-font-family:var(--tw-font-mono)}}@layer base{.pr-twp,.pr-twp *{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.pr-twp,.pr-twp *{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}body.pr-twp{background-color:var(--background);color:var(--foreground)}html.pr-twp{font-family:IBM Plex Sans Variable,sans-serif}:where(.pr-twp,.pr-twp *),:where(.pr-twp,.pr-twp *):after,:where(.pr-twp,.pr-twp *):before,:where(.pr-twp,.pr-twp *) ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}:where(.pr-twp,.pr-twp *) ::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}.pr-twp{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--tw-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(--tw-default-font-feature-settings,normal);font-variation-settings:var(--tw-default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr:where(.pr-twp,.pr-twp *){height:0;color:inherit;border-top-width:1px}abbr:where([title]):where(.pr-twp,.pr-twp *){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1:where(.pr-twp,.pr-twp *),h2:where(.pr-twp,.pr-twp *),h3:where(.pr-twp,.pr-twp *),h4:where(.pr-twp,.pr-twp *),h5:where(.pr-twp,.pr-twp *),h6:where(.pr-twp,.pr-twp *){font-size:inherit;font-weight:inherit}a:where(.pr-twp,.pr-twp *){color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b:where(.pr-twp,.pr-twp *),strong:where(.pr-twp,.pr-twp *){font-weight:bolder}code:where(.pr-twp,.pr-twp *),kbd:where(.pr-twp,.pr-twp *),samp:where(.pr-twp,.pr-twp *),pre:where(.pr-twp,.pr-twp *){font-family:var(--tw-default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--tw-default-mono-font-feature-settings,normal);font-variation-settings:var(--tw-default-mono-font-variation-settings,normal);font-size:1em}small:where(.pr-twp,.pr-twp *){font-size:80%}sub:where(.pr-twp,.pr-twp *),sup:where(.pr-twp,.pr-twp *){vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub:where(.pr-twp,.pr-twp *){bottom:-.25em}sup:where(.pr-twp,.pr-twp *){top:-.5em}table:where(.pr-twp,.pr-twp *){text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(.pr-twp,.pr-twp *){outline:auto}progress:where(.pr-twp,.pr-twp *){vertical-align:baseline}summary:where(.pr-twp,.pr-twp *){display:list-item}ol:where(.pr-twp,.pr-twp *),ul:where(.pr-twp,.pr-twp *),menu:where(.pr-twp,.pr-twp *){list-style:none}img:where(.pr-twp,.pr-twp *),svg:where(.pr-twp,.pr-twp *),video:where(.pr-twp,.pr-twp *),canvas:where(.pr-twp,.pr-twp *),audio:where(.pr-twp,.pr-twp *),iframe:where(.pr-twp,.pr-twp *),embed:where(.pr-twp,.pr-twp *),object:where(.pr-twp,.pr-twp *){vertical-align:middle;display:block}img:where(.pr-twp,.pr-twp *),video:where(.pr-twp,.pr-twp *){max-width:100%;height:auto}button:where(.pr-twp,.pr-twp *),input:where(.pr-twp,.pr-twp *),select:where(.pr-twp,.pr-twp *),optgroup:where(.pr-twp,.pr-twp *),textarea:where(.pr-twp,.pr-twp *){font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(.pr-twp,.pr-twp *) ::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:where(.pr-twp,.pr-twp *){font-weight:bolder}:where(select:is([multiple],[size])) optgroup option:where(.pr-twp,.pr-twp *){padding-inline-start:20px}:where(.pr-twp,.pr-twp *) ::file-selector-button{margin-inline-end:4px}:where(.pr-twp,.pr-twp *) ::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){:where(.pr-twp,.pr-twp *) ::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){:where(.pr-twp,.pr-twp *) ::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea:where(.pr-twp,.pr-twp *){resize:vertical}:where(.pr-twp,.pr-twp *) ::-webkit-search-decoration{-webkit-appearance:none}:where(.pr-twp,.pr-twp *) ::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit{display:inline-flex}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-fields-wrapper{padding:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-year-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-month-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-day-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-hour-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-minute-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-second-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-millisecond-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-datetime-edit-meridiem-field{padding-block:0}:where(.pr-twp,.pr-twp *) ::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid:where(.pr-twp,.pr-twp *){box-shadow:none}button:where(.pr-twp,.pr-twp *),input:where([type=button],[type=reset],[type=submit]):where(.pr-twp,.pr-twp *){appearance:button}:where(.pr-twp,.pr-twp *) ::file-selector-button{appearance:button}:where(.pr-twp,.pr-twp *) ::-webkit-inner-spin-button{height:auto}:where(.pr-twp,.pr-twp *) ::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])):where(.pr-twp,.pr-twp *){display:none!important}}@layer components;@layer utilities{.tw\\:\\@container\\/card-header{container:card-header/inline-size}.tw\\:\\@container\\/search{container:search/inline-size}.tw\\:\\@container\\/toolbar{container:toolbar/inline-size}.tw\\:pointer-events-auto{pointer-events:auto}.tw\\:pointer-events-none{pointer-events:none}.tw\\:invisible{visibility:hidden}.tw\\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tw\\:absolute{position:absolute}.tw\\:fixed{position:fixed}.tw\\:relative{position:relative}.tw\\:sticky{position:sticky}.tw\\:inset-0{inset:calc(calc(var(--spacing)) * 0)}.tw\\:inset-y-0{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:inset-s-3{inset-inline-start:calc(calc(var(--spacing)) * 3)}.tw\\:start-1\\.5{inset-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:start-1\\/2{inset-inline-start:50%}.tw\\:end-0{inset-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:end-1{inset-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:end-2{inset-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:end-3{inset-inline-end:calc(calc(var(--spacing)) * 3)}.tw\\:inset-e-0{inset-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:-top-\\[1px\\]{top:-1px}.tw\\:top-0{top:calc(calc(var(--spacing)) * 0)}.tw\\:top-1{top:calc(calc(var(--spacing)) * 1)}.tw\\:top-1\\.5{top:calc(calc(var(--spacing)) * 1.5)}.tw\\:top-1\\/2{top:50%}.tw\\:top-1\\/3{top:33.3333%}.tw\\:top-2{top:calc(calc(var(--spacing)) * 2)}.tw\\:top-2\\.5{top:calc(calc(var(--spacing)) * 2.5)}.tw\\:top-3\\.5{top:calc(calc(var(--spacing)) * 3.5)}.tw\\:top-\\[-1px\\]{top:-1px}.tw\\:top-full{top:100%}.tw\\:-right-1{right:calc(calc(var(--spacing)) * -1)}.tw\\:right-0{right:calc(calc(var(--spacing)) * 0)}.tw\\:right-1{right:calc(calc(var(--spacing)) * 1)}.tw\\:right-3{right:calc(calc(var(--spacing)) * 3)}.tw\\:bottom-0{bottom:calc(calc(var(--spacing)) * 0)}.tw\\:-left-\\[1px\\]{left:-1px}.tw\\:left-0{left:calc(calc(var(--spacing)) * 0)}.tw\\:left-1\\/2{left:50%}.tw\\:left-2{left:calc(calc(var(--spacing)) * 2)}.tw\\:left-3{left:calc(calc(var(--spacing)) * 3)}.tw\\:isolate{isolation:isolate}.tw\\:z-10{z-index:10}.tw\\:z-20{z-index:20}.tw\\:z-50{z-index:50}.tw\\:order-first{order:-9999}.tw\\:order-last{order:9999}.tw\\:col-span-1{grid-column:span 1/span 1}.tw\\:col-span-2{grid-column:span 2/span 2}.tw\\:col-span-3{grid-column:span 3/span 3}.tw\\:col-start-1{grid-column-start:1}.tw\\:col-start-2{grid-column-start:2}.tw\\:row-span-2{grid-row:span 2/span 2}.tw\\:row-start-1{grid-row-start:1}.tw\\:row-start-2{grid-row-start:2}.tw\\:m-0{margin:calc(calc(var(--spacing)) * 0)}.tw\\:m-1{margin:calc(calc(var(--spacing)) * 1)}.tw\\:m-2{margin:calc(calc(var(--spacing)) * 2)}.tw\\:-mx-1{margin-inline:calc(calc(var(--spacing)) * -1)}.tw\\:-mx-4{margin-inline:calc(calc(var(--spacing)) * -4)}.tw\\:mx-0{margin-inline:calc(calc(var(--spacing)) * 0)}.tw\\:mx-1{margin-inline:calc(calc(var(--spacing)) * 1)}.tw\\:mx-2{margin-inline:calc(calc(var(--spacing)) * 2)}.tw\\:mx-3\\.5{margin-inline:calc(calc(var(--spacing)) * 3.5)}.tw\\:mx-4{margin-inline:calc(calc(var(--spacing)) * 4)}.tw\\:mx-8{margin-inline:calc(calc(var(--spacing)) * 8)}.tw\\:my-1{margin-block:calc(calc(var(--spacing)) * 1)}.tw\\:my-2\\.5{margin-block:calc(calc(var(--spacing)) * 2.5)}.tw\\:my-4{margin-block:calc(calc(var(--spacing)) * 4)}.tw\\:my-auto{margin-block:auto}.tw\\:ms-1{margin-inline-start:calc(calc(var(--spacing)) * 1)}.tw\\:ms-2{margin-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:ms-5{margin-inline-start:calc(calc(var(--spacing)) * 5)}.tw\\:ms-6{margin-inline-start:calc(calc(var(--spacing)) * 6)}.tw\\:ms-auto{margin-inline-start:auto}.tw\\:me-1{margin-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:me-2{margin-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:prose{color:var(--tw-prose-body);max-width:65ch}.tw\\:prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.tw\\:prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);margin-top:1.2em;margin-bottom:1.2em;font-size:1.25em;line-height:1.6}.tw\\:prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.tw\\:prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.tw\\:prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.tw\\:prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.tw\\:prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.tw\\:prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.tw\\:prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.tw\\:prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.tw\\:prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.tw\\:prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.tw\\:prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.tw\\:prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.tw\\:prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:disc}.tw\\:prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.tw\\:prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.tw\\:prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.tw\\:prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.tw\\:prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.tw\\:prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.tw\\:prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.tw\\:prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:0;margin-bottom:.888889em;font-size:2.25em;font-weight:800;line-height:1.11111}.tw\\:prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.tw\\:prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:700;line-height:1.33333}.tw\\:prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.tw\\:prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.tw\\:prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.tw\\:prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.tw\\:prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.tw\\:prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.tw\\:prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"\`"}.tw\\:prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.tw\\:prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.tw\\:prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.tw\\:prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);padding-top:.857143em;padding-inline-end:1.14286em;padding-bottom:.857143em;border-radius:.375rem;margin-top:1.71429em;margin-bottom:1.71429em;padding-inline-start:1.14286em;font-size:.875em;font-weight:400;line-height:1.71429;overflow-x:auto}.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit;background-color:#0000;border-width:0;border-radius:0;padding:0}.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.tw\\:prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429}.tw\\:prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.tw\\:prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);vertical-align:bottom;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em;font-weight:600}.tw\\:prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.tw\\:prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.tw\\:prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.tw\\:prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.tw\\:prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.tw\\:prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.tw\\:prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.tw\\:prose{--tw-prose-body:var(--foreground);--tw-prose-headings:var(--foreground);--tw-prose-lead:var(--muted-foreground);--tw-prose-links:var(--primary);--tw-prose-bold:var(--foreground);--tw-prose-counters:var(--muted-foreground);--tw-prose-bullets:var(--muted-foreground);--tw-prose-hr:var(--border);--tw-prose-quotes:var(--foreground);--tw-prose-quote-borders:var(--border);--tw-prose-captions:var(--muted-foreground);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:NaN NaN NaN;--tw-prose-code:var(--foreground);--tw-prose-pre-code:var(--muted-foreground);--tw-prose-pre-bg:var(--muted);--tw-prose-th-borders:var(--border);--tw-prose-td-borders:var(--border);--tw-prose-invert-body:var(--foreground);--tw-prose-invert-headings:var(--foreground);--tw-prose-invert-lead:var(--muted-foreground);--tw-prose-invert-links:var(--primary);--tw-prose-invert-bold:var(--foreground);--tw-prose-invert-counters:var(--muted-foreground);--tw-prose-invert-bullets:var(--muted-foreground);--tw-prose-invert-hr:var(--border);--tw-prose-invert-quotes:var(--foreground);--tw-prose-invert-quote-borders:var(--border);--tw-prose-invert-captions:var(--muted-foreground);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:var(--foreground);--tw-prose-invert-pre-code:var(--muted-foreground);--tw-prose-invert-pre-bg:var(--muted);--tw-prose-invert-th-borders:var(--border);--tw-prose-invert-td-borders:var(--border);font-size:1rem;line-height:1.75}.tw\\:prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.tw\\:prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.tw\\:prose :where(.tw\\:prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.tw\\:prose :where(.tw\\:prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.tw\\:prose :where(.tw\\:prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.tw\\:prose :where(.tw\\:prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.tw\\:prose :where(.tw\\:prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.tw\\:prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.tw\\:prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.tw\\:prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.tw\\:prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.571429em;padding-inline-end:.571429em;padding-bottom:.571429em;padding-inline-start:.571429em}.tw\\:prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.tw\\:prose :where(.tw\\:prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose :where(.tw\\:prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.tw\\:prose-sm{font-size:.875rem;line-height:1.71429}.tw\\:prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.tw\\:prose-sm :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.888889em;margin-bottom:.888889em;font-size:1.28571em;line-height:1.55556}.tw\\:prose-sm :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.33333em;margin-bottom:1.33333em;padding-inline-start:1.11111em}.tw\\:prose-sm :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:.8em;font-size:2.14286em;line-height:1.2}.tw\\:prose-sm :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:.8em;font-size:1.42857em;line-height:1.4}.tw\\:prose-sm :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.55556em;margin-bottom:.444444em;font-size:1.28571em;line-height:1.55556}.tw\\:prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.tw\\:prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.142857em;padding-inline-end:.357143em;padding-bottom:.142857em;border-radius:.3125rem;padding-inline-start:.357143em;font-size:.857143em}.tw\\:prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.tw\\:prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.tw\\:prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.tw\\:prose-sm :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;border-radius:.25rem;margin-top:1.66667em;margin-bottom:1.66667em;padding-inline-start:1em;font-size:.857143em;line-height:1.66667}.tw\\:prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em;padding-inline-start:1.57143em}.tw\\:prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.tw\\:prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(.tw\\:prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.tw\\:prose-sm :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.tw\\:prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.tw\\:prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.tw\\:prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.tw\\:prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.tw\\:prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.tw\\:prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.tw\\:prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.tw\\:prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose-sm :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.666667em;padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.tw\\:prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.tw\\:prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.tw\\:prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.tw\\:prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.tw\\:prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.tw\\:prose-sm :where(.tw\\:prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.tw\\:prose-sm :where(.tw\\:prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.tw\\:-mt-4{margin-top:calc(calc(var(--spacing)) * -4)}.tw\\:mt-0\\.5{margin-top:calc(calc(var(--spacing)) * .5)}.tw\\:mt-1{margin-top:calc(calc(var(--spacing)) * 1)}.tw\\:mt-2{margin-top:calc(calc(var(--spacing)) * 2)}.tw\\:mt-3{margin-top:calc(calc(var(--spacing)) * 3)}.tw\\:mt-4{margin-top:calc(calc(var(--spacing)) * 4)}.tw\\:mt-6{margin-top:calc(calc(var(--spacing)) * 6)}.tw\\:mt-auto{margin-top:auto}.tw\\:mr-1{margin-right:calc(calc(var(--spacing)) * 1)}.tw\\:mr-2{margin-right:calc(calc(var(--spacing)) * 2)}.tw\\:mr-3{margin-right:calc(calc(var(--spacing)) * 3)}.tw\\:-mb-4{margin-bottom:calc(calc(var(--spacing)) * -4)}.tw\\:mb-1{margin-bottom:calc(calc(var(--spacing)) * 1)}.tw\\:mb-2{margin-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:mb-3{margin-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:mb-4{margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:ml-1{margin-left:calc(calc(var(--spacing)) * 1)}.tw\\:ml-2{margin-left:calc(calc(var(--spacing)) * 2)}.tw\\:ml-4{margin-left:calc(calc(var(--spacing)) * 4)}.tw\\:ml-auto{margin-left:auto}.tw\\:box-border{box-sizing:border-box}.tw\\:line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.tw\\:no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.tw\\:no-scrollbar::-webkit-scrollbar{display:none}.tw\\:block{display:block}.tw\\:flex{display:flex}.tw\\:grid{display:grid}.tw\\:hidden{display:none}.tw\\:inline-block{display:inline-block}.tw\\:inline-flex{display:inline-flex}.tw\\:inline-grid{display:inline-grid}.tw\\:field-sizing-content{field-sizing:content}.tw\\:aspect-square{aspect-ratio:1}.tw\\:size-2{width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:size-2\\.5{width:calc(calc(var(--spacing)) * 2.5);height:calc(calc(var(--spacing)) * 2.5)}.tw\\:size-3{width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:size-3\\.5{width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:size-4{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:size-6{width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:size-7{width:calc(calc(var(--spacing)) * 7);height:calc(calc(var(--spacing)) * 7)}.tw\\:size-8{width:calc(calc(var(--spacing)) * 8);height:calc(calc(var(--spacing)) * 8)}.tw\\:size-9{width:calc(calc(var(--spacing)) * 9);height:calc(calc(var(--spacing)) * 9)}.tw\\:size-10{width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:size-full{width:100%;height:100%}.tw\\:h-1{height:calc(calc(var(--spacing)) * 1)}.tw\\:h-2{height:calc(calc(var(--spacing)) * 2)}.tw\\:h-3{height:calc(calc(var(--spacing)) * 3)}.tw\\:h-3\\.5{height:calc(calc(var(--spacing)) * 3.5)}.tw\\:h-4{height:calc(calc(var(--spacing)) * 4)}.tw\\:h-5{height:calc(calc(var(--spacing)) * 5)}.tw\\:h-6{height:calc(calc(var(--spacing)) * 6)}.tw\\:h-7{height:calc(calc(var(--spacing)) * 7)}.tw\\:h-8{height:calc(calc(var(--spacing)) * 8)}.tw\\:h-8\\!{height:calc(calc(var(--spacing)) * 8)!important}.tw\\:h-8\\.5{height:calc(calc(var(--spacing)) * 8.5)}.tw\\:h-9{height:calc(calc(var(--spacing)) * 9)}.tw\\:h-10{height:calc(calc(var(--spacing)) * 10)}.tw\\:h-12{height:calc(calc(var(--spacing)) * 12)}.tw\\:h-14{height:calc(calc(var(--spacing)) * 14)}.tw\\:h-20{height:calc(calc(var(--spacing)) * 20)}.tw\\:h-24{height:calc(calc(var(--spacing)) * 24)}.tw\\:h-32{height:calc(calc(var(--spacing)) * 32)}.tw\\:h-40{height:calc(calc(var(--spacing)) * 40)}.tw\\:h-64{height:calc(calc(var(--spacing)) * 64)}.tw\\:h-80{height:calc(calc(var(--spacing)) * 80)}.tw\\:h-96{height:calc(calc(var(--spacing)) * 96)}.tw\\:h-\\[5px\\]{height:5px}.tw\\:h-\\[260px\\]{height:260px}.tw\\:h-\\[300px\\]{height:300px}.tw\\:h-\\[400px\\]{height:400px}.tw\\:h-\\[600px\\]{height:600px}.tw\\:h-\\[calc\\(100\\%-1px\\)\\]{height:calc(100% - 1px)}.tw\\:h-\\[calc\\(100\\%-2px\\)\\]{height:calc(100% - 2px)}.tw\\:h-auto{height:auto}.tw\\:h-full{height:100%}.tw\\:h-px{height:1px}.tw\\:h-screen{height:100vh}.tw\\:h-svh{height:100svh}.tw\\:max-h-\\(--radix-context-menu-content-available-height\\){max-height:var(--radix-context-menu-content-available-height)}.tw\\:max-h-\\(--radix-dropdown-menu-content-available-height\\){max-height:var(--radix-dropdown-menu-content-available-height)}.tw\\:max-h-\\(--radix-popover-content-available-height\\){max-height:var(--radix-popover-content-available-height)}.tw\\:max-h-\\(--radix-select-content-available-height\\){max-height:var(--radix-select-content-available-height)}.tw\\:max-h-5{max-height:calc(calc(var(--spacing)) * 5)}.tw\\:max-h-10{max-height:calc(calc(var(--spacing)) * 10)}.tw\\:max-h-72{max-height:calc(calc(var(--spacing)) * 72)}.tw\\:max-h-80{max-height:calc(calc(var(--spacing)) * 80)}.tw\\:max-h-\\[96\\%\\]{max-height:96%}.tw\\:max-h-\\[300px\\]{max-height:300px}.tw\\:max-h-\\[calc\\(var\\(--radix-dropdown-menu-content-available-height\\,100vh\\)\\/var\\(--platform-content-zoom-popup-factor\\,1\\)\\)\\]{max-height:calc(var(--radix-dropdown-menu-content-available-height,100vh) / var(--platform-content-zoom-popup-factor,1))}.tw\\:max-h-\\[calc\\(var\\(--radix-popover-content-available-height\\,100vh\\)\\/var\\(--platform-content-zoom-popup-factor\\,1\\)\\)\\]{max-height:calc(var(--radix-popover-content-available-height,100vh) / var(--platform-content-zoom-popup-factor,1))}.tw\\:min-h-0{min-height:calc(calc(var(--spacing)) * 0)}.tw\\:min-h-11{min-height:calc(calc(var(--spacing)) * 11)}.tw\\:min-h-16{min-height:calc(calc(var(--spacing)) * 16)}.tw\\:min-h-\\[200px\\]{min-height:200px}.tw\\:min-h-full{min-height:100%}.tw\\:min-h-svh{min-height:100svh}.tw\\:w-\\(--radix-dropdown-menu-trigger-width\\){width:var(--radix-dropdown-menu-trigger-width)}.tw\\:w-\\(--sidebar-width\\){width:var(--sidebar-width)}.tw\\:w-1{width:calc(calc(var(--spacing)) * 1)}.tw\\:w-1\\/2{width:50%}.tw\\:w-1\\/4{width:25%}.tw\\:w-1\\/6{width:16.6667%}.tw\\:w-2{width:calc(calc(var(--spacing)) * 2)}.tw\\:w-3{width:calc(calc(var(--spacing)) * 3)}.tw\\:w-3\\.5{width:calc(calc(var(--spacing)) * 3.5)}.tw\\:w-3\\/4{width:75%}.tw\\:w-4{width:calc(calc(var(--spacing)) * 4)}.tw\\:w-4\\/5{width:80%}.tw\\:w-4\\/6{width:66.6667%}.tw\\:w-5{width:calc(calc(var(--spacing)) * 5)}.tw\\:w-5\\/6{width:83.3333%}.tw\\:w-6{width:calc(calc(var(--spacing)) * 6)}.tw\\:w-7{width:calc(calc(var(--spacing)) * 7)}.tw\\:w-8{width:calc(calc(var(--spacing)) * 8)}.tw\\:w-9{width:calc(calc(var(--spacing)) * 9)}.tw\\:w-9\\/12{width:75%}.tw\\:w-10{width:calc(calc(var(--spacing)) * 10)}.tw\\:w-12{width:calc(calc(var(--spacing)) * 12)}.tw\\:w-14{width:calc(calc(var(--spacing)) * 14)}.tw\\:w-20{width:calc(calc(var(--spacing)) * 20)}.tw\\:w-24{width:calc(calc(var(--spacing)) * 24)}.tw\\:w-32{width:calc(calc(var(--spacing)) * 32)}.tw\\:w-48{width:calc(calc(var(--spacing)) * 48)}.tw\\:w-56{width:calc(calc(var(--spacing)) * 56)}.tw\\:w-60{width:calc(calc(var(--spacing)) * 60)}.tw\\:w-64{width:calc(calc(var(--spacing)) * 64)}.tw\\:w-72{width:calc(calc(var(--spacing)) * 72)}.tw\\:w-80{width:calc(calc(var(--spacing)) * 80)}.tw\\:w-96{width:calc(calc(var(--spacing)) * 96)}.tw\\:w-\\[1px\\]{width:1px}.tw\\:w-\\[5px\\]{width:5px}.tw\\:w-\\[70px\\]{width:70px}.tw\\:w-\\[100px\\]{width:100px}.tw\\:w-\\[116px\\]{width:116px}.tw\\:w-\\[124px\\]{width:124px}.tw\\:w-\\[150px\\]{width:150px}.tw\\:w-\\[180px\\]{width:180px}.tw\\:w-\\[200px\\]{width:200px}.tw\\:w-\\[250px\\]{width:250px}.tw\\:w-\\[260px\\]{width:260px}.tw\\:w-\\[280px\\]{width:280px}.tw\\:w-\\[300px\\]{width:300px}.tw\\:w-\\[320px\\]{width:320px}.tw\\:w-\\[350px\\]{width:350px}.tw\\:w-\\[400px\\]{width:400px}.tw\\:w-\\[420px\\]{width:420px}.tw\\:w-\\[500px\\]{width:500px}.tw\\:w-\\[560px\\]{width:560px}.tw\\:w-\\[600px\\]{width:600px}.tw\\:w-\\[calc\\(100\\%-2px\\)\\]{width:calc(100% - 2px)}.tw\\:w-\\[var\\(--radix-dropdown-menu-trigger-width\\)\\]{width:var(--radix-dropdown-menu-trigger-width)}.tw\\:w-auto{width:auto}.tw\\:w-fit{width:fit-content}.tw\\:w-full{width:100%}.tw\\:w-max{width:max-content}.tw\\:w-px{width:1px}.tw\\:max-w-\\(--skeleton-width\\){max-width:var(--skeleton-width)}.tw\\:max-w-0{max-width:calc(calc(var(--spacing)) * 0)}.tw\\:max-w-2xl{max-width:var(--tw-container-2xl)}.tw\\:max-w-3xl{max-width:var(--tw-container-3xl)}.tw\\:max-w-4xl{max-width:var(--tw-container-4xl)}.tw\\:max-w-5{max-width:calc(calc(var(--spacing)) * 5)}.tw\\:max-w-6xl{max-width:var(--tw-container-6xl)}.tw\\:max-w-40{max-width:calc(calc(var(--spacing)) * 40)}.tw\\:max-w-48{max-width:calc(calc(var(--spacing)) * 48)}.tw\\:max-w-64{max-width:calc(calc(var(--spacing)) * 64)}.tw\\:max-w-96{max-width:calc(calc(var(--spacing)) * 96)}.tw\\:max-w-\\[200px\\]{max-width:200px}.tw\\:max-w-\\[220px\\]{max-width:220px}.tw\\:max-w-\\[calc\\(100\\%-2rem\\)\\]{max-width:calc(100% - 2rem)}.tw\\:max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.tw\\:max-w-\\[calc\\(var\\(--radix-dropdown-menu-content-available-width\\,100vw\\)\\/var\\(--platform-content-zoom-popup-factor\\,1\\)\\)\\]{max-width:calc(var(--radix-dropdown-menu-content-available-width,100vw) / var(--platform-content-zoom-popup-factor,1))}.tw\\:max-w-\\[calc\\(var\\(--radix-popover-content-available-width\\,100vw\\)\\/var\\(--platform-content-zoom-popup-factor\\,1\\)\\)\\]{max-width:calc(var(--radix-popover-content-available-width,100vw) / var(--platform-content-zoom-popup-factor,1))}.tw\\:max-w-\\[min\\(20rem\\,calc\\(var\\(--radix-tooltip-content-available-width\\,100vw\\)\\/var\\(--platform-content-zoom-popup-factor\\,1\\)\\)\\)\\]{max-width:min(20rem, calc(var(--radix-tooltip-content-available-width,100vw) / var(--platform-content-zoom-popup-factor,1)))}.tw\\:max-w-fit{max-width:fit-content}.tw\\:max-w-full{max-width:100%}.tw\\:max-w-lg{max-width:var(--tw-container-lg)}.tw\\:max-w-md{max-width:var(--tw-container-md)}.tw\\:max-w-none{max-width:none}.tw\\:max-w-sm{max-width:var(--tw-container-sm)}.tw\\:max-w-xs{max-width:var(--tw-container-xs)}.tw\\:min-w-0{min-width:calc(calc(var(--spacing)) * 0)}.tw\\:min-w-4{min-width:calc(calc(var(--spacing)) * 4)}.tw\\:min-w-5{min-width:calc(calc(var(--spacing)) * 5)}.tw\\:min-w-7{min-width:calc(calc(var(--spacing)) * 7)}.tw\\:min-w-8{min-width:calc(calc(var(--spacing)) * 8)}.tw\\:min-w-9{min-width:calc(calc(var(--spacing)) * 9)}.tw\\:min-w-16{min-width:calc(calc(var(--spacing)) * 16)}.tw\\:min-w-32{min-width:calc(calc(var(--spacing)) * 32)}.tw\\:min-w-36{min-width:calc(calc(var(--spacing)) * 36)}.tw\\:min-w-80{min-width:calc(calc(var(--spacing)) * 80)}.tw\\:min-w-\\[12rem\\]{min-width:12rem}.tw\\:min-w-\\[26px\\]{min-width:26px}.tw\\:min-w-\\[96px\\]{min-width:96px}.tw\\:min-w-\\[140px\\]{min-width:140px}.tw\\:min-w-\\[215px\\]{min-width:215px}.tw\\:min-w-\\[500px\\]{min-width:500px}.tw\\:min-w-min{min-width:min-content}.tw\\:flex-1{flex:1}.tw\\:shrink{flex-shrink:1}.tw\\:shrink\\!{flex-shrink:1!important}.tw\\:shrink-0{flex-shrink:0}.tw\\:shrink-\\[9999\\]{flex-shrink:9999}.tw\\:flex-grow,.tw\\:grow,.tw\\:grow-\\[1\\]{flex-grow:1}.tw\\:grow-\\[10\\]{flex-grow:10}.tw\\:basis-0{flex-basis:calc(calc(var(--spacing)) * 0)}.tw\\:table-fixed{table-layout:fixed}.tw\\:caption-bottom{caption-side:bottom}.tw\\:border-collapse{border-collapse:collapse}.tw\\:origin-\\(--radix-context-menu-content-transform-origin\\){transform-origin:var(--radix-context-menu-content-transform-origin)}.tw\\:origin-\\(--radix-dropdown-menu-content-transform-origin\\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.tw\\:origin-\\(--radix-menubar-content-transform-origin\\){transform-origin:var(--radix-menubar-content-transform-origin)}.tw\\:origin-\\(--radix-popover-content-transform-origin\\){transform-origin:var(--radix-popover-content-transform-origin)}.tw\\:origin-\\(--radix-select-content-transform-origin\\){transform-origin:var(--radix-select-content-transform-origin)}.tw\\:origin-\\(--radix-tooltip-content-transform-origin\\){transform-origin:var(--radix-tooltip-content-transform-origin)}.tw\\:-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:-translate-x-px{--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-x-px{--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-y-0{--tw-translate-y:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:translate-y-px{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rotate-45{rotate:45deg}.tw\\:rotate-180{rotate:180deg}.tw\\:transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.tw\\:animate-none\\!{animation:none!important}.tw\\:animate-pulse{animation:var(--tw-animate-pulse)}.tw\\:animate-spin{animation:var(--tw-animate-spin)}.tw\\:cursor-default{cursor:default}.tw\\:cursor-ew-resize{cursor:ew-resize}.tw\\:cursor-not-allowed{cursor:not-allowed}.tw\\:cursor-pointer{cursor:pointer}.tw\\:cursor-text{cursor:text}.tw\\:touch-none{touch-action:none}.tw\\:resize{resize:both}.tw\\:resize-none{resize:none}.tw\\:scroll-m-20{scroll-margin:calc(calc(var(--spacing)) * 20)}.tw\\:scroll-my-1{scroll-margin-block:calc(calc(var(--spacing)) * 1)}.tw\\:scroll-py-1{scroll-padding-block:calc(calc(var(--spacing)) * 1)}.tw\\:list-inside{list-style-position:inside}.tw\\:list-outside{list-style-position:outside}.tw\\:\\!list-\\[lower-alpha\\]{list-style-type:lower-alpha!important}.tw\\:\\!list-\\[lower-roman\\]{list-style-type:lower-roman!important}.tw\\:\\!list-\\[upper-alpha\\]{list-style-type:upper-alpha!important}.tw\\:\\!list-\\[upper-roman\\]{list-style-type:upper-roman!important}.tw\\:\\!list-decimal{list-style-type:decimal!important}.tw\\:\\!list-disc{list-style-type:disc!important}.tw\\:list-decimal{list-style-type:decimal}.tw\\:list-disc{list-style-type:disc}.tw\\:list-none{list-style-type:none}.tw\\:grid-flow-col{grid-auto-flow:column}.tw\\:grid-flow-row{grid-auto-flow:row}.tw\\:auto-rows-min{grid-auto-rows:min-content}.tw\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.tw\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.tw\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.tw\\:grid-cols-\\[25\\%_25\\%_50\\%\\]{grid-template-columns:25% 25% 50%}.tw\\:grid-cols-\\[25\\%_50\\%_25\\%\\]{grid-template-columns:25% 50% 25%}.tw\\:grid-cols-\\[auto_auto_auto_auto\\]{grid-template-columns:auto auto auto auto}.tw\\:grid-cols-\\[min-content_1fr\\]{grid-template-columns:min-content 1fr}.tw\\:grid-cols-\\[min-content_min-content_1fr\\]{grid-template-columns:min-content min-content 1fr}.tw\\:grid-cols-subgrid{grid-template-columns:subgrid}.tw\\:flex-col{flex-direction:column}.tw\\:flex-col-reverse{flex-direction:column-reverse}.tw\\:flex-row{flex-direction:row}.tw\\:flex-row-reverse{flex-direction:row-reverse}.tw\\:flex-nowrap{flex-wrap:nowrap}.tw\\:flex-wrap{flex-wrap:wrap}.tw\\:place-content-center{place-content:center}.tw\\:content-center{align-content:center}.tw\\:items-baseline{align-items:baseline}.tw\\:items-center{align-items:center}.tw\\:items-end{align-items:flex-end}.tw\\:items-start{align-items:flex-start}.tw\\:items-stretch{align-items:stretch}.tw\\:justify-between{justify-content:space-between}.tw\\:justify-center{justify-content:center}.tw\\:justify-end{justify-content:flex-end}.tw\\:justify-start{justify-content:flex-start}.tw\\:gap-0{gap:calc(calc(var(--spacing)) * 0)}.tw\\:gap-0\\.5{gap:calc(calc(var(--spacing)) * .5)}.tw\\:gap-1{gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-1\\.5{gap:calc(calc(var(--spacing)) * 1.5)}.tw\\:gap-1\\.5\\!{gap:calc(calc(var(--spacing)) * 1.5)!important}.tw\\:gap-2{gap:calc(calc(var(--spacing)) * 2)}.tw\\:gap-2\\.5{gap:calc(calc(var(--spacing)) * 2.5)}.tw\\:gap-3{gap:calc(calc(var(--spacing)) * 3)}.tw\\:gap-4{gap:calc(calc(var(--spacing)) * 4)}.tw\\:gap-5{gap:calc(calc(var(--spacing)) * 5)}.tw\\:gap-6{gap:calc(calc(var(--spacing)) * 6)}.tw\\:gap-8{gap:calc(calc(var(--spacing)) * 8)}.tw\\:gap-16{gap:calc(calc(var(--spacing)) * 16)}.tw\\:gap-\\[--spacing\\(var\\(--gap\\)\\)\\]{gap:calc(calc(var(--spacing)) * var(--gap))}.tw\\:gap-\\[12px\\]{gap:12px}:where(.tw\\:space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.tw\\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(calc(var(--spacing)) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(calc(var(--spacing)) * 8) * calc(1 - var(--tw-space-y-reverse)))}.tw\\:gap-x-1{column-gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-x-2{column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:gap-x-3{column-gap:calc(calc(var(--spacing)) * 3)}.tw\\:gap-x-4{column-gap:calc(calc(var(--spacing)) * 4)}:where(.tw\\:-space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * -2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * -2) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 3) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 4) * calc(1 - var(--tw-space-x-reverse)))}:where(.tw\\:space-x-6>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 6) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 6) * calc(1 - var(--tw-space-x-reverse)))}.tw\\:gap-y-1{row-gap:calc(calc(var(--spacing)) * 1)}.tw\\:gap-y-2{row-gap:calc(calc(var(--spacing)) * 2)}:where(.tw\\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.tw\\:divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}.tw\\:self-start{align-self:flex-start}.tw\\:self-stretch{align-self:stretch}.tw\\:justify-self-end{justify-self:flex-end}.tw\\:truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tw\\:overflow-auto{overflow:auto}.tw\\:overflow-clip{overflow:clip}.tw\\:overflow-hidden{overflow:hidden}.tw\\:overflow-scroll{overflow:scroll}.tw\\:overflow-visible{overflow:visible}.tw\\:overflow-x-auto{overflow-x:auto}.tw\\:overflow-x-hidden{overflow-x:hidden}.tw\\:overflow-y-auto{overflow-y:auto}.tw\\:overflow-y-hidden{overflow-y:hidden}.tw\\:rounded{border-radius:.25rem}.tw\\:rounded-2xl{border-radius:calc(var(--radius) * 1.8)}.tw\\:rounded-4xl{border-radius:calc(var(--radius) * 2.6)}.tw\\:rounded-\\[4px\\]{border-radius:4px}.tw\\:rounded-\\[6px\\]{border-radius:6px}.tw\\:rounded-\\[calc\\(var\\(--radius\\)-3px\\)\\]{border-radius:calc(var(--radius) - 3px)}.tw\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,10px\\)\\]{border-radius:min(var(--tw-radius-md), 10px)}.tw\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,12px\\)\\]{border-radius:min(var(--tw-radius-md), 12px)}.tw\\:rounded-full{border-radius:3.40282e38px}.tw\\:rounded-lg{border-radius:var(--radius)}.tw\\:rounded-lg\\!{border-radius:var(--radius)!important}.tw\\:rounded-md{border-radius:calc(var(--radius) * .8)}.tw\\:rounded-none{border-radius:0}.tw\\:rounded-sm{border-radius:calc(var(--radius) * .6)}.tw\\:rounded-xl{border-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-xl\\!{border-radius:calc(var(--radius) * 1.4)!important}.tw\\:rounded-xs{border-radius:var(--tw-radius-xs)}.tw\\:rounded-s-none{border-start-start-radius:0;border-end-start-radius:0}.tw\\:rounded-e-none{border-start-end-radius:0;border-end-end-radius:0}.tw\\:rounded-t-xl{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-l-lg{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.tw\\:rounded-r-xl{border-top-right-radius:calc(var(--radius) * 1.4);border-bottom-right-radius:calc(var(--radius) * 1.4)}.tw\\:rounded-b-xl{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:border{border-style:var(--tw-border-style);border-width:1px}.tw\\:border-0{border-style:var(--tw-border-style);border-width:0}.tw\\:border-2{border-style:var(--tw-border-style);border-width:2px}.tw\\:border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:border-s-0{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.tw\\:border-s-4{border-inline-start-style:var(--tw-border-style);border-inline-start-width:4px}.tw\\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.tw\\:border-e-0{border-inline-end-style:var(--tw-border-style);border-inline-end-width:0}.tw\\:border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:border-t-0{border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.tw\\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.tw\\:border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.tw\\:border-dashed{--tw-border-style:dashed;border-style:dashed}.tw\\:border-none{--tw-border-style:none;border-style:none}.tw\\:border-solid{--tw-border-style:solid;border-style:solid}.tw\\:border-black{border-color:var(--tw-color-black)}.tw\\:border-blue-400{border-color:var(--tw-color-blue-400)}.tw\\:border-blue-500{border-color:var(--tw-color-blue-500)}.tw\\:border-border,.tw\\:border-border\\/50{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-border\\/50{border-color:color-mix(in oklab, var(--border) 50%, transparent)}}.tw\\:border-destructive{border-color:var(--destructive)}.tw\\:border-foreground{border-color:var(--foreground)}.tw\\:border-gray-300{border-color:var(--tw-color-gray-300)}.tw\\:border-input,.tw\\:border-input\\/30{border-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-input\\/30{border-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:border-muted-foreground,.tw\\:border-muted-foreground\\/40{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:border-muted-foreground\\/40{border-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.tw\\:border-primary{border-color:var(--primary)}.tw\\:border-red-300{border-color:var(--tw-color-red-300)}.tw\\:border-red-400{border-color:var(--tw-color-red-400)}.tw\\:border-red-500{border-color:var(--tw-color-red-500)}.tw\\:border-red-600{border-color:var(--tw-color-red-600)}.tw\\:border-ring{border-color:var(--ring)}.tw\\:border-sidebar-border{border-color:var(--sidebar-border)}.tw\\:border-slate-300{border-color:var(--tw-color-slate-300)}.tw\\:border-transparent{border-color:#0000}.tw\\:border-yellow-400{border-color:var(--tw-color-yellow-400)}.tw\\:border-yellow-500{border-color:var(--tw-color-yellow-500)}.tw\\:border-s-amber-200{border-inline-start-color:var(--tw-color-amber-200)}.tw\\:border-s-indigo-200{border-inline-start-color:var(--tw-color-indigo-200)}.tw\\:border-s-purple-200{border-inline-start-color:var(--tw-color-purple-200)}.tw\\:border-s-red-200{border-inline-start-color:var(--tw-color-red-200)}.tw\\:\\!bg-destructive\\/50{background-color:var(--destructive)!important}@supports (color:color-mix(in lab, red, red)){.tw\\:\\!bg-destructive\\/50{background-color:color-mix(in oklab, var(--destructive) 50%, transparent)!important}}.tw\\:bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{background-color:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.tw\\:bg-accent,.tw\\:bg-accent\\/50{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-accent\\/50{background-color:color-mix(in oklab, var(--accent) 50%, transparent)}}.tw\\:bg-amber-500,.tw\\:bg-amber-500\\/5{background-color:var(--tw-color-amber-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-amber-500\\/5{background-color:color-mix(in oklab, var(--tw-color-amber-500) 5%, transparent)}}.tw\\:bg-amber-500\\/15{background-color:var(--tw-color-amber-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-amber-500\\/15{background-color:color-mix(in oklab, var(--tw-color-amber-500) 15%, transparent)}}.tw\\:bg-background,.tw\\:bg-background\\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-background\\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.tw\\:bg-black\\/10{background-color:var(--tw-color-black)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-black\\/10{background-color:color-mix(in oklab, var(--tw-color-black) 10%, transparent)}}.tw\\:bg-blue-50{background-color:var(--tw-color-blue-50)}.tw\\:bg-blue-100{background-color:var(--tw-color-blue-100)}.tw\\:bg-blue-400{background-color:var(--tw-color-blue-400)}.tw\\:bg-blue-500{background-color:var(--tw-color-blue-500)}.tw\\:bg-border{background-color:var(--border)}.tw\\:bg-card{background-color:var(--card)}.tw\\:bg-destructive\\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-destructive\\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.tw\\:bg-foreground{background-color:var(--foreground)}.tw\\:bg-gray-50{background-color:var(--tw-color-gray-50)}.tw\\:bg-gray-100{background-color:var(--tw-color-gray-100)}.tw\\:bg-gray-500{background-color:var(--tw-color-gray-500)}.tw\\:bg-green-50{background-color:var(--tw-color-green-50)}.tw\\:bg-green-100{background-color:var(--tw-color-green-100)}.tw\\:bg-green-500{background-color:var(--tw-color-green-500)}.tw\\:bg-input,.tw\\:bg-input\\/30{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-input\\/30{background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:bg-muted,.tw\\:bg-muted\\/50{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-muted\\/50{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:bg-neutral-300{background-color:var(--tw-color-neutral-300)}.tw\\:bg-orange-100{background-color:var(--tw-color-orange-100)}.tw\\:bg-popover,.tw\\:bg-popover\\/70{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-popover\\/70{background-color:color-mix(in oklab, var(--popover) 70%, transparent)}}.tw\\:bg-primary{background-color:var(--primary)}.tw\\:bg-primary-foreground{background-color:var(--primary-foreground)}.tw\\:bg-primary\\/30{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-primary\\/30{background-color:color-mix(in oklab, var(--primary) 30%, transparent)}}.tw\\:bg-purple-50{background-color:var(--tw-color-purple-50)}.tw\\:bg-red-100{background-color:var(--tw-color-red-100)}.tw\\:bg-red-500{background-color:var(--tw-color-red-500)}.tw\\:bg-rose-500,.tw\\:bg-rose-500\\/5{background-color:var(--tw-color-rose-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-rose-500\\/5{background-color:color-mix(in oklab, var(--tw-color-rose-500) 5%, transparent)}}.tw\\:bg-rose-500\\/15{background-color:var(--tw-color-rose-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-rose-500\\/15{background-color:color-mix(in oklab, var(--tw-color-rose-500) 15%, transparent)}}.tw\\:bg-secondary{background-color:var(--secondary)}.tw\\:bg-sidebar{background-color:var(--sidebar)}.tw\\:bg-sidebar-accent{background-color:var(--sidebar-accent)}.tw\\:bg-sidebar-border{background-color:var(--sidebar-border)}.tw\\:bg-sky-500,.tw\\:bg-sky-500\\/5{background-color:var(--tw-color-sky-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-sky-500\\/5{background-color:color-mix(in oklab, var(--tw-color-sky-500) 5%, transparent)}}.tw\\:bg-sky-500\\/15{background-color:var(--tw-color-sky-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-sky-500\\/15{background-color:color-mix(in oklab, var(--tw-color-sky-500) 15%, transparent)}}.tw\\:bg-teal-500,.tw\\:bg-teal-500\\/5{background-color:var(--tw-color-teal-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-teal-500\\/5{background-color:color-mix(in oklab, var(--tw-color-teal-500) 5%, transparent)}}.tw\\:bg-teal-500\\/15{background-color:var(--tw-color-teal-500)}@supports (color:color-mix(in lab, red, red)){.tw\\:bg-teal-500\\/15{background-color:color-mix(in oklab, var(--tw-color-teal-500) 15%, transparent)}}.tw\\:bg-transparent{background-color:#0000}.tw\\:bg-white{background-color:var(--tw-color-white)}.tw\\:bg-yellow-50{background-color:var(--tw-color-yellow-50)}.tw\\:bg-yellow-100{background-color:var(--tw-color-yellow-100)}.tw\\:bg-yellow-500{background-color:var(--tw-color-yellow-500)}.tw\\:bg-zinc-400{background-color:var(--tw-color-zinc-400)}.tw\\:bg-clip-padding{background-clip:padding-box}.tw\\:fill-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{fill:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:fill-\\[color-mix\\(in_oklab\\,var\\(--destructive\\)_10\\%\\,var\\(--background\\)\\)\\]{fill:color-mix(in oklab,var(--destructive) 10%,var(--background))}}.tw\\:fill-destructive{fill:var(--destructive)}.tw\\:fill-foreground{fill:var(--foreground)}.tw\\:fill-yellow-400,.tw\\:fill-yellow-400\\/50{fill:var(--tw-color-yellow-400)}@supports (color:color-mix(in lab, red, red)){.tw\\:fill-yellow-400\\/50{fill:color-mix(in oklab, var(--tw-color-yellow-400) 50%, transparent)}}.tw\\:object-cover{object-fit:cover}.tw\\:\\!p-4{padding:calc(calc(var(--spacing)) * 4)!important}.tw\\:p-0{padding:calc(calc(var(--spacing)) * 0)}.tw\\:p-0\\.5{padding:calc(calc(var(--spacing)) * .5)}.tw\\:p-1{padding:calc(calc(var(--spacing)) * 1)}.tw\\:p-2{padding:calc(calc(var(--spacing)) * 2)}.tw\\:p-2\\.5{padding:calc(calc(var(--spacing)) * 2.5)}.tw\\:p-3{padding:calc(calc(var(--spacing)) * 3)}.tw\\:p-4{padding:calc(calc(var(--spacing)) * 4)}.tw\\:p-6{padding:calc(calc(var(--spacing)) * 6)}.tw\\:p-8{padding:calc(calc(var(--spacing)) * 8)}.tw\\:p-\\[1px\\]{padding:1px}.tw\\:p-\\[3px\\]{padding:3px}.tw\\:p-\\[10px\\]{padding:10px}.tw\\:p-\\[16px\\]{padding:16px}.tw\\:px-0{padding-inline:calc(calc(var(--spacing)) * 0)}.tw\\:px-0\\.5{padding-inline:calc(calc(var(--spacing)) * .5)}.tw\\:px-1{padding-inline:calc(calc(var(--spacing)) * 1)}.tw\\:px-1\\.5{padding-inline:calc(calc(var(--spacing)) * 1.5)}.tw\\:px-2{padding-inline:calc(calc(var(--spacing)) * 2)}.tw\\:px-2\\.5{padding-inline:calc(calc(var(--spacing)) * 2.5)}.tw\\:px-3{padding-inline:calc(calc(var(--spacing)) * 3)}.tw\\:px-4{padding-inline:calc(calc(var(--spacing)) * 4)}.tw\\:px-6{padding-inline:calc(calc(var(--spacing)) * 6)}.tw\\:py-0{padding-block:calc(calc(var(--spacing)) * 0)}.tw\\:py-0\\.5{padding-block:calc(calc(var(--spacing)) * .5)}.tw\\:py-1{padding-block:calc(calc(var(--spacing)) * 1)}.tw\\:py-1\\.5{padding-block:calc(calc(var(--spacing)) * 1.5)}.tw\\:py-2{padding-block:calc(calc(var(--spacing)) * 2)}.tw\\:py-3{padding-block:calc(calc(var(--spacing)) * 3)}.tw\\:py-4{padding-block:calc(calc(var(--spacing)) * 4)}.tw\\:py-6{padding-block:calc(calc(var(--spacing)) * 6)}.tw\\:py-8{padding-block:calc(calc(var(--spacing)) * 8)}.tw\\:py-\\[2px\\]{padding-block:2px}.tw\\:ps-1\\.5{padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:ps-2{padding-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:ps-2\\.5{padding-inline-start:calc(calc(var(--spacing)) * 2.5)}.tw\\:ps-4{padding-inline-start:calc(calc(var(--spacing)) * 4)}.tw\\:ps-6{padding-inline-start:calc(calc(var(--spacing)) * 6)}.tw\\:ps-7{padding-inline-start:calc(calc(var(--spacing)) * 7)}.tw\\:ps-8{padding-inline-start:calc(calc(var(--spacing)) * 8)}.tw\\:ps-9{padding-inline-start:calc(calc(var(--spacing)) * 9)}.tw\\:ps-12{padding-inline-start:calc(calc(var(--spacing)) * 12)}.tw\\:ps-\\[85px\\]{padding-inline-start:85px}.tw\\:pe-1{padding-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:pe-1\\.5{padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:pe-2{padding-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:pe-4{padding-inline-end:calc(calc(var(--spacing)) * 4)}.tw\\:pe-8{padding-inline-end:calc(calc(var(--spacing)) * 8)}.tw\\:pe-8\\!{padding-inline-end:calc(calc(var(--spacing)) * 8)!important}.tw\\:pe-9{padding-inline-end:calc(calc(var(--spacing)) * 9)}.tw\\:pe-\\[calc\\(138px\\+1rem\\)\\]{padding-inline-end:calc(138px + 1rem)}.tw\\:pe-\\[…\\]{padding-inline-end:…}.tw\\:pt-1{padding-top:calc(calc(var(--spacing)) * 1)}.tw\\:pt-2{padding-top:calc(calc(var(--spacing)) * 2)}.tw\\:pt-3{padding-top:calc(calc(var(--spacing)) * 3)}.tw\\:pt-4{padding-top:calc(calc(var(--spacing)) * 4)}.tw\\:pt-6{padding-top:calc(calc(var(--spacing)) * 6)}.tw\\:pr-0{padding-right:calc(calc(var(--spacing)) * 0)}.tw\\:pr-3{padding-right:calc(calc(var(--spacing)) * 3)}.tw\\:pr-4{padding-right:calc(calc(var(--spacing)) * 4)}.tw\\:pb-0{padding-bottom:calc(calc(var(--spacing)) * 0)}.tw\\:pb-1{padding-bottom:calc(calc(var(--spacing)) * 1)}.tw\\:pb-2{padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:pb-3{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:pb-4{padding-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:pb-8{padding-bottom:calc(calc(var(--spacing)) * 8)}.tw\\:pb-12{padding-bottom:calc(calc(var(--spacing)) * 12)}.tw\\:pb-16{padding-bottom:calc(calc(var(--spacing)) * 16)}.tw\\:pb-24{padding-bottom:calc(calc(var(--spacing)) * 24)}.tw\\:pl-2{padding-left:calc(calc(var(--spacing)) * 2)}.tw\\:pl-3{padding-left:calc(calc(var(--spacing)) * 3)}.tw\\:pl-4{padding-left:calc(calc(var(--spacing)) * 4)}.tw\\:pl-5{padding-left:calc(calc(var(--spacing)) * 5)}.tw\\:pl-6{padding-left:calc(calc(var(--spacing)) * 6)}.tw\\:pl-8{padding-left:calc(calc(var(--spacing)) * 8)}.tw\\:text-center{text-align:center}.tw\\:text-end{text-align:end}.tw\\:text-left{text-align:left}.tw\\:text-right{text-align:right}.tw\\:text-start{text-align:start}.tw\\:align-middle{vertical-align:middle}.tw\\:font-heading{font-family:var(--font-sans)}.tw\\:font-mono{font-family:var(--tw-font-mono)}.tw\\:font-sans{font-family:IBM Plex Sans Variable,sans-serif}.tw\\:text-2xl{font-size:var(--tw-text-2xl);line-height:var(--tw-leading,var(--tw-text-2xl--line-height))}.tw\\:text-3xl{font-size:var(--tw-text-3xl);line-height:var(--tw-leading,var(--tw-text-3xl--line-height))}.tw\\:text-4xl{font-size:var(--tw-text-4xl);line-height:var(--tw-leading,var(--tw-text-4xl--line-height))}.tw\\:text-base{font-size:var(--tw-text-base);line-height:var(--tw-leading,var(--tw-text-base--line-height))}.tw\\:text-lg{font-size:var(--tw-text-lg);line-height:var(--tw-leading,var(--tw-text-lg--line-height))}.tw\\:text-sm{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:text-sm\\/relaxed{font-size:var(--tw-text-sm);line-height:var(--tw-leading-relaxed)}.tw\\:text-xl{font-size:var(--tw-text-xl);line-height:var(--tw-leading,var(--tw-text-xl--line-height))}.tw\\:text-xs{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:text-\\[0\\.8rem\\]{font-size:.8rem}.tw\\:leading-6{--tw-leading:calc(calc(var(--spacing)) * 6);line-height:calc(calc(var(--spacing)) * 6)}.tw\\:leading-loose{--tw-leading:var(--tw-leading-loose);line-height:var(--tw-leading-loose)}.tw\\:leading-none{--tw-leading:1;line-height:1}.tw\\:leading-relaxed{--tw-leading:var(--tw-leading-relaxed);line-height:var(--tw-leading-relaxed)}.tw\\:leading-snug{--tw-leading:var(--tw-leading-snug);line-height:var(--tw-leading-snug)}.tw\\:leading-tight{--tw-leading:var(--tw-leading-tight);line-height:var(--tw-leading-tight)}.tw\\:font-bold{--tw-font-weight:var(--tw-font-weight-bold);font-weight:var(--tw-font-weight-bold)}.tw\\:font-extrabold{--tw-font-weight:var(--tw-font-weight-extrabold);font-weight:var(--tw-font-weight-extrabold)}.tw\\:font-medium{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:font-normal{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:font-semibold{--tw-font-weight:var(--tw-font-weight-semibold);font-weight:var(--tw-font-weight-semibold)}.tw\\:tracking-tight{--tw-tracking:var(--tw-tracking-tight);letter-spacing:var(--tw-tracking-tight)}.tw\\:tracking-wider{--tw-tracking:var(--tw-tracking-wider);letter-spacing:var(--tw-tracking-wider)}.tw\\:tracking-widest{--tw-tracking:var(--tw-tracking-widest);letter-spacing:var(--tw-tracking-widest)}.tw\\:text-balance{text-wrap:balance}.tw\\:text-nowrap{text-wrap:nowrap}.tw\\:break-words{overflow-wrap:break-word}.tw\\:text-clip{text-overflow:clip}.tw\\:text-ellipsis{text-overflow:ellipsis}.tw\\:whitespace-normal{white-space:normal}.tw\\:whitespace-nowrap{white-space:nowrap}.tw\\:whitespace-pre{white-space:pre}.tw\\:whitespace-pre-line{white-space:pre-line}.tw\\:whitespace-pre-wrap{white-space:pre-wrap}.tw\\:\\[color\\:blue\\]{color:#00f}.tw\\:text-accent-foreground{color:var(--accent-foreground)}.tw\\:text-amber-600{color:var(--tw-color-amber-600)}.tw\\:text-background{color:var(--background)}.tw\\:text-blue-400{color:var(--tw-color-blue-400)}.tw\\:text-blue-500{color:var(--tw-color-blue-500)}.tw\\:text-blue-600{color:var(--tw-color-blue-600)}.tw\\:text-blue-800{color:var(--tw-color-blue-800)}.tw\\:text-card-foreground{color:var(--card-foreground)}.tw\\:text-current{color:currentColor}.tw\\:text-destructive{color:var(--destructive)}.tw\\:text-foreground{color:var(--foreground)}.tw\\:text-foreground\\!{color:var(--foreground)!important}.tw\\:text-foreground\\/30{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/30{color:color-mix(in oklab, var(--foreground) 30%, transparent)}}.tw\\:text-foreground\\/50{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/50{color:color-mix(in oklab, var(--foreground) 50%, transparent)}}.tw\\:text-foreground\\/60{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/60{color:color-mix(in oklab, var(--foreground) 60%, transparent)}}.tw\\:text-foreground\\/70{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-foreground\\/70{color:color-mix(in oklab, var(--foreground) 70%, transparent)}}.tw\\:text-gray-300{color:var(--tw-color-gray-300)}.tw\\:text-gray-500{color:var(--tw-color-gray-500)}.tw\\:text-gray-600{color:var(--tw-color-gray-600)}.tw\\:text-gray-700{color:var(--tw-color-gray-700)}.tw\\:text-gray-800{color:var(--tw-color-gray-800)}.tw\\:text-green-600{color:var(--tw-color-green-600)}.tw\\:text-green-700{color:var(--tw-color-green-700)}.tw\\:text-green-800{color:var(--tw-color-green-800)}.tw\\:text-inherit{color:inherit}.tw\\:text-muted-foreground,.tw\\:text-muted-foreground\\/50{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-muted-foreground\\/50{color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.tw\\:text-orange-800{color:var(--tw-color-orange-800)}.tw\\:text-popover-foreground{color:var(--popover-foreground)}.tw\\:text-primary{color:var(--primary)}.tw\\:text-primary-foreground{color:var(--primary-foreground)}.tw\\:text-purple-900{color:var(--tw-color-purple-900)}.tw\\:text-red-500{color:var(--tw-color-red-500)}.tw\\:text-red-600{color:var(--tw-color-red-600)}.tw\\:text-red-700{color:var(--tw-color-red-700)}.tw\\:text-red-800{color:var(--tw-color-red-800)}.tw\\:text-rose-600{color:var(--tw-color-rose-600)}.tw\\:text-secondary-foreground{color:var(--secondary-foreground)}.tw\\:text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.tw\\:text-sidebar-foreground,.tw\\:text-sidebar-foreground\\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:text-sidebar-foreground\\/70{color:color-mix(in oklab, var(--sidebar-foreground) 70%, transparent)}}.tw\\:text-sky-600{color:var(--tw-color-sky-600)}.tw\\:text-slate-900{color:var(--tw-color-slate-900)}.tw\\:text-teal-600{color:var(--tw-color-teal-600)}.tw\\:text-white{color:var(--tw-color-white)}.tw\\:text-yellow-400{color:var(--tw-color-yellow-400)}.tw\\:text-yellow-600{color:var(--tw-color-yellow-600)}.tw\\:text-yellow-700{color:var(--tw-color-yellow-700)}.tw\\:capitalize{text-transform:capitalize}.tw\\:uppercase{text-transform:uppercase}.tw\\:italic{font-style:italic}.tw\\:tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tw\\:line-through{text-decoration-line:line-through}.tw\\:underline{text-decoration-line:underline}.tw\\:decoration-destructive{-webkit-text-decoration-color:var(--destructive);-webkit-text-decoration-color:var(--destructive);text-decoration-color:var(--destructive)}.tw\\:underline-offset-4{text-underline-offset:4px}.tw\\:opacity-0{opacity:0}.tw\\:opacity-40{opacity:.4}.tw\\:opacity-50{opacity:.5}.tw\\:opacity-60{opacity:.6}.tw\\:opacity-100{opacity:1}.tw\\:bg-blend-color{background-blend-mode:color}.tw\\:shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-\\[0_0_0_1px_var\\(--sidebar-border\\)\\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-border));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-none\\!{--tw-shadow:0 0 #0000!important;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)!important}.tw\\:shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:ring-background{--tw-ring-color:var(--background)}.tw\\:ring-foreground\\/10{--tw-ring-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:ring-foreground\\/10{--tw-ring-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}.tw\\:ring-primary{--tw-ring-color:var(--primary)}.tw\\:ring-ring\\/50{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:ring-ring\\/50{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.tw\\:ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:ring-offset-background{--tw-ring-offset-color:var(--background)}.tw\\:ring-offset-white{--tw-ring-offset-color:var(--tw-color-white)}.tw\\:outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:outline-hidden{outline-offset:2px;outline:2px solid #0000}}.tw\\:drop-shadow-sm{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#00000026));--tw-drop-shadow:drop-shadow(var(--tw-drop-shadow-sm));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.tw\\:transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[color\\,box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[left\\,right\\,width\\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[margin\\,opacity\\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[width\\,height\\,padding\\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-\\[width\\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:transition-none{transition-property:none}.tw\\:duration-100{--tw-duration:.1s;transition-duration:.1s}.tw\\:duration-200{--tw-duration:.2s;transition-duration:.2s}.tw\\:ease-linear{--tw-ease:linear;transition-timing-function:linear}.tw\\:prose-quoteless :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before,.tw\\:prose-quoteless :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.tw\\:outline-none{--tw-outline-style:none;outline-style:none}.tw\\:select-none{-webkit-user-select:none;user-select:none}.tw\\:\\[unicode-bidi\\:plaintext\\]{unicode-bidi:plaintext}.tw\\:group-focus-within\\/menu-item\\:opacity-100:is(:where(.tw\\:group\\/menu-item):focus-within *){opacity:1}@media (hover:hover){.tw\\:group-hover\\:visible:is(:where(.tw\\:group):hover *){visibility:visible}.tw\\:group-hover\\:hidden:is(:where(.tw\\:group):hover *){display:none}.tw\\:group-hover\\:opacity-100:is(:where(.tw\\:group):hover *),.tw\\:group-hover\\/menu-item\\:opacity-100:is(:where(.tw\\:group\\/menu-item):hover *){opacity:1}}.tw\\:group-focus\\/context-menu-item\\:text-accent-foreground:is(:where(.tw\\:group\\/context-menu-item):focus *),.tw\\:group-focus\\/dropdown-menu-item\\:text-accent-foreground:is(:where(.tw\\:group\\/dropdown-menu-item):focus *),.tw\\:group-focus\\/menubar-item\\:text-accent-foreground:is(:where(.tw\\:group\\/menubar-item):focus *){color:var(--accent-foreground)}.tw\\:group-has-disabled\\/field\\:opacity-50:is(:where(.tw\\:group\\/field):has(:disabled) *){opacity:.5}.tw\\:group-has-data-\\[sidebar\\=menu-action\\]\\/menu-item\\:pe-8:is(:where(.tw\\:group\\/menu-item):has([data-sidebar=menu-action]) *){padding-inline-end:calc(calc(var(--spacing)) * 8)}.tw\\:group-has-data-\\[size\\=lg\\]\\/avatar-group\\:size-10:is(:where(.tw\\:group\\/avatar-group):has([data-size=lg]) *){width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:group-has-data-\\[size\\=sm\\]\\/avatar-group\\:size-6:is(:where(.tw\\:group\\/avatar-group):has([data-size=sm]) *){width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:group-has-data-\\[slot\\=command-shortcut\\]\\/command-item\\:hidden:is(:where(.tw\\:group\\/command-item):has([data-slot=command-shortcut]) *){display:none}.tw\\:group-has-\\[\\>input\\]\\/input-group\\:pt-2:is(:where(.tw\\:group\\/input-group):has(>input) *){padding-top:calc(calc(var(--spacing)) * 2)}.tw\\:group-has-\\[\\>input\\]\\/input-group\\:pb-2:is(:where(.tw\\:group\\/input-group):has(>input) *){padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:group-has-\\[\\>svg\\]\\/alert\\:col-start-2:is(:where(.tw\\:group\\/alert):has(>svg) *){grid-column-start:2}.tw\\:group-data-\\[checked\\=true\\]\\/command-item\\:opacity-100:is(:where(.tw\\:group\\/command-item)[data-checked=true] *){opacity:1}.tw\\:group-data-\\[collapsible\\=icon\\]\\:-mt-8:is(:where(.tw\\:group)[data-collapsible=icon] *){margin-top:calc(calc(var(--spacing)) * -8)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:hidden:is(:where(.tw\\:group)[data-collapsible=icon] *){display:none}.tw\\:group-data-\\[collapsible\\=icon\\]\\:size-8\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(calc(var(--spacing)) * 8)!important;height:calc(calc(var(--spacing)) * 8)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\(--sidebar-width-icon\\):is(:where(.tw\\:group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\)\\]:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(calc(var(--spacing)) * 4)))}.tw\\:group-data-\\[collapsible\\=icon\\]\\:w-\\[calc\\(var\\(--sidebar-width-icon\\)\\+\\(--spacing\\(4\\)\\)\\+2px\\)\\]:is(:where(.tw\\:group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(calc(var(--spacing)) * 4)) + 2px)}.tw\\:group-data-\\[collapsible\\=icon\\]\\:overflow-hidden:is(:where(.tw\\:group)[data-collapsible=icon] *){overflow:hidden}.tw\\:group-data-\\[collapsible\\=icon\\]\\:p-0\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){padding:calc(calc(var(--spacing)) * 0)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:p-2\\!:is(:where(.tw\\:group)[data-collapsible=icon] *){padding:calc(calc(var(--spacing)) * 2)!important}.tw\\:group-data-\\[collapsible\\=icon\\]\\:opacity-0:is(:where(.tw\\:group)[data-collapsible=icon] *){opacity:0}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:right-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width) * -1)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:left-\\[calc\\(var\\(--sidebar-width\\)\\*-1\\)\\]:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width) * -1)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:w-0:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){width:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:translate-x-0:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:group-data-\\[disabled\\=true\\]\\:pointer-events-none:is(:where(.tw\\:group)[data-disabled=true] *){pointer-events:none}.tw\\:group-data-\\[disabled\\=true\\]\\:opacity-50:is(:where(.tw\\:group)[data-disabled=true] *),.tw\\:group-data-\\[disabled\\=true\\]\\/input-group\\:opacity-50:is(:where(.tw\\:group\\/input-group)[data-disabled=true] *){opacity:.5}.tw\\:group-data-\\[side\\=primary\\]\\:-right-4:is(:where(.tw\\:group)[data-side=primary] *){right:calc(calc(var(--spacing)) * -4)}.tw\\:group-data-\\[side\\=primary\\]\\:border-e:is(:where(.tw\\:group)[data-side=primary] *){border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.tw\\:group-data-\\[side\\=secondary\\]\\:left-0:is(:where(.tw\\:group)[data-side=secondary] *){left:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-\\[side\\=secondary\\]\\:rotate-180:is(:where(.tw\\:group)[data-side=secondary] *){rotate:180deg}.tw\\:group-data-\\[side\\=secondary\\]\\:border-s:is(:where(.tw\\:group)[data-side=secondary] *){border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:group-data-\\[size\\=default\\]\\/avatar\\:size-2\\.5:is(:where(.tw\\:group\\/avatar)[data-size=default] *){width:calc(calc(var(--spacing)) * 2.5);height:calc(calc(var(--spacing)) * 2.5)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:size-4:is(:where(.tw\\:group\\/switch)[data-size=default] *){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[size\\=lg\\]\\/avatar\\:size-3:is(:where(.tw\\:group\\/avatar)[data-size=lg] *){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=sm] *){width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:text-xs:is(:where(.tw\\:group\\/avatar)[data-size=sm] *){font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:p-3:is(:where(.tw\\:group\\/card)[data-size=sm] *){padding:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:px-3:is(:where(.tw\\:group\\/card)[data-size=sm] *){padding-inline:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:text-sm:is(:where(.tw\\:group\\/card)[data-size=sm] *){font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:size-3:is(:where(.tw\\:group\\/switch)[data-size=sm] *){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:rounded-none:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *){border-radius:0}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:px-2:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *){padding-inline:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[variant\\=floating\\]\\:rounded-lg:is(:where(.tw\\:group)[data-variant=floating] *){border-radius:var(--radius)}.tw\\:group-data-\\[variant\\=floating\\]\\:shadow-sm:is(:where(.tw\\:group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=floating\\]\\:ring-1:is(:where(.tw\\:group)[data-variant=floating] *){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=floating\\]\\:ring-sidebar-border:is(:where(.tw\\:group)[data-variant=floating] *){--tw-ring-color:var(--sidebar-border)}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *){background-color:#0000}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:mx-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){margin-inline:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:mt-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){margin-top:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:h-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){height:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:w-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){width:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=bottom\\]\\/drawer-content\\:text-center:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=bottom] *){text-align:center}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:my-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){margin-block:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:me-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){margin-inline-end:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:h-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){height:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=left\\]\\/drawer-content\\:w-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=left] *){width:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:my-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){margin-block:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:ms-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){margin-inline-start:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:h-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){height:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=right\\]\\/drawer-content\\:w-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=right] *){width:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:mx-auto:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){margin-inline:auto}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:mb-4:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:block:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){display:block}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:h-1\\.5:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){height:calc(calc(var(--spacing)) * 1.5)}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:w-\\[100px\\]:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){width:100px}.tw\\:group-data-\\[vaul-drawer-direction\\=top\\]\\/drawer-content\\:text-center:is(:where(.tw\\:group\\/drawer-content)[data-vaul-drawer-direction=top] *){text-align:center}.tw\\:group-data-selected\\/command-item\\:text-foreground:is(:where(.tw\\:group\\/command-item):where([data-selected=true]) *){color:var(--foreground)}.tw\\:group-data-horizontal\\/tabs\\:h-8:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *){height:calc(calc(var(--spacing)) * 8)}.tw\\:group-data-vertical\\/tabs\\:h-fit:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){height:fit-content}.tw\\:group-data-vertical\\/tabs\\:w-full:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){width:100%}.tw\\:group-data-vertical\\/tabs\\:flex-col:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){flex-direction:column}.tw\\:group-data-vertical\\/tabs\\:justify-start:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *){justify-content:flex-start}@media (hover:hover){.tw\\:peer-hover\\/menu-button\\:text-sidebar-accent-foreground:is(:where(.tw\\:peer\\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}.tw\\:peer-focus\\:group-hover\\:text-blue-500:is(:where(.tw\\:peer):focus~*):is(:where(.tw\\:group):hover *){color:var(--tw-color-blue-500)}}.tw\\:peer-disabled\\:cursor-not-allowed:is(:where(.tw\\:peer):disabled~*){cursor:not-allowed}.tw\\:peer-disabled\\:opacity-50:is(:where(.tw\\:peer):disabled~*){opacity:.5}.tw\\:peer-data-\\[size\\=default\\]\\/menu-button\\:top-1\\.5:is(:where(.tw\\:peer\\/menu-button)[data-size=default]~*){top:calc(calc(var(--spacing)) * 1.5)}.tw\\:peer-data-\\[size\\=lg\\]\\/menu-button\\:top-2\\.5:is(:where(.tw\\:peer\\/menu-button)[data-size=lg]~*){top:calc(calc(var(--spacing)) * 2.5)}.tw\\:peer-data-\\[size\\=sm\\]\\/menu-button\\:top-1:is(:where(.tw\\:peer\\/menu-button)[data-size=sm]~*){top:calc(calc(var(--spacing)) * 1)}.tw\\:peer-data-active\\/menu-button\\:text-sidebar-accent-foreground:is(:is(:where(.tw\\:peer\\/menu-button):where([data-state=active]),:where(.tw\\:peer\\/menu-button):where([data-active]:not([data-active=false])))~*){color:var(--sidebar-accent-foreground)}.tw\\:file\\:inline-flex::file-selector-button{display:inline-flex}.tw\\:file\\:h-6::file-selector-button{height:calc(calc(var(--spacing)) * 6)}.tw\\:file\\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.tw\\:file\\:bg-transparent::file-selector-button{background-color:#0000}.tw\\:file\\:text-sm::file-selector-button{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:file\\:font-medium::file-selector-button{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:file\\:text-foreground::file-selector-button{color:var(--foreground)}.tw\\:placeholder\\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.tw\\:placeholder\\:text-slate-400::placeholder{color:var(--tw-color-slate-400)}.tw\\:before\\:absolute:before{content:var(--tw-content);position:absolute}.tw\\:before\\:top-0\\.5:before{content:var(--tw-content);top:calc(calc(var(--spacing)) * .5)}.tw\\:before\\:left-0:before{content:var(--tw-content);left:calc(calc(var(--spacing)) * 0)}.tw\\:before\\:block:before{content:var(--tw-content);display:block}.tw\\:before\\:hidden:before{content:var(--tw-content);display:none}.tw\\:before\\:h-4:before{content:var(--tw-content);height:calc(calc(var(--spacing)) * 4)}.tw\\:before\\:w-4:before{content:var(--tw-content);width:calc(calc(var(--spacing)) * 4)}.tw\\:before\\:cursor-pointer:before{content:var(--tw-content);cursor:pointer}.tw\\:before\\:rounded:before{content:var(--tw-content);border-radius:.25rem}.tw\\:before\\:border:before{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.tw\\:before\\:border-primary:before{content:var(--tw-content);border-color:var(--primary)}.tw\\:before\\:bg-primary:before{content:var(--tw-content);background-color:var(--primary)}.tw\\:before\\:bg-cover:before{content:var(--tw-content);background-size:cover}.tw\\:before\\:bg-no-repeat:before{content:var(--tw-content);background-repeat:no-repeat}.tw\\:before\\:content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.tw\\:before\\:content-\\[\\\\\\"\\\\\\"\\]:before{--tw-content:\\"\\";content:var(--tw-content)}.tw\\:after\\:absolute:after{content:var(--tw-content);position:absolute}.tw\\:after\\:-inset-2:after{content:var(--tw-content);inset:calc(calc(var(--spacing)) * -2)}.tw\\:after\\:inset-0:after{content:var(--tw-content);inset:calc(calc(var(--spacing)) * 0)}.tw\\:after\\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(calc(var(--spacing)) * -3)}.tw\\:after\\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * -2)}.tw\\:after\\:inset-y-0:after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:after\\:start-1\\/2:after{content:var(--tw-content);inset-inline-start:50%}.tw\\:after\\:top-\\[6px\\]:after{content:var(--tw-content);top:6px}.tw\\:after\\:right-\\[7px\\]:after{content:var(--tw-content);right:7px}.tw\\:after\\:left-\\[7px\\]:after{content:var(--tw-content);left:7px}.tw\\:after\\:block:after{content:var(--tw-content);display:block}.tw\\:after\\:hidden:after{content:var(--tw-content);display:none}.tw\\:after\\:h-0\\.5:after{content:var(--tw-content);height:calc(calc(var(--spacing)) * .5)}.tw\\:after\\:h-\\[6px\\]:after{content:var(--tw-content);height:6px}.tw\\:after\\:w-1:after{content:var(--tw-content);width:calc(calc(var(--spacing)) * 1)}.tw\\:after\\:w-\\[2px\\]:after{content:var(--tw-content);width:2px}.tw\\:after\\:w-\\[3px\\]:after{content:var(--tw-content);width:3px}.tw\\:after\\:-translate-x-1\\/2:after{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:after\\:rotate-45:after{content:var(--tw-content);rotate:45deg}.tw\\:after\\:cursor-pointer:after{content:var(--tw-content);cursor:pointer}.tw\\:after\\:rounded-full:after{content:var(--tw-content);border-radius:3.40282e38px}.tw\\:after\\:border:after{content:var(--tw-content);border-style:var(--tw-border-style);border-width:1px}.tw\\:after\\:border-t-0:after{content:var(--tw-content);border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:after\\:border-r-2:after{content:var(--tw-content);border-right-style:var(--tw-border-style);border-right-width:2px}.tw\\:after\\:border-b-2:after{content:var(--tw-content);border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.tw\\:after\\:border-l-0:after{content:var(--tw-content);border-left-style:var(--tw-border-style);border-left-width:0}.tw\\:after\\:border-solid:after{content:var(--tw-content);--tw-border-style:solid;border-style:solid}.tw\\:after\\:border-border:after{content:var(--tw-content);border-color:var(--border)}.tw\\:after\\:border-white:after{content:var(--tw-content);border-color:var(--tw-color-white)}.tw\\:after\\:bg-foreground:after{content:var(--tw-content);background-color:var(--foreground)}.tw\\:after\\:bg-muted:after{content:var(--tw-content);background-color:var(--muted)}.tw\\:after\\:opacity-0:after{content:var(--tw-content);opacity:0}.tw\\:after\\:mix-blend-darken:after{content:var(--tw-content);mix-blend-mode:darken}.tw\\:after\\:transition-opacity:after{content:var(--tw-content);transition-property:opacity;transition-timing-function:var(--tw-ease,var(--tw-default-transition-timing-function));transition-duration:var(--tw-duration,var(--tw-default-transition-duration))}.tw\\:after\\:content-\\[\\"\\"\\]:after{--tw-content:"";content:var(--tw-content)}.tw\\:after\\:content-\\[\\\\\\"\\\\\\"\\]:after{--tw-content:\\"\\";content:var(--tw-content)}.tw\\:group-data-\\[collapsible\\=offcanvas\\]\\:after\\:start-full:is(:where(.tw\\:group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);inset-inline-start:100%}.tw\\:group-data-horizontal\\/tabs\\:after\\:inset-x-0:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-horizontal\\/tabs\\:after\\:bottom-\\[-5px\\]:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);bottom:-5px}.tw\\:group-data-horizontal\\/tabs\\:after\\:h-0\\.5:is(:where(.tw\\:group\\/tabs):where([data-orientation=horizontal]) *):after{content:var(--tw-content);height:calc(calc(var(--spacing)) * .5)}.tw\\:group-data-vertical\\/tabs\\:after\\:inset-y-0:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:group-data-vertical\\/tabs\\:after\\:-end-1:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);inset-inline-end:calc(calc(var(--spacing)) * -1)}.tw\\:group-data-vertical\\/tabs\\:after\\:w-0\\.5:is(:where(.tw\\:group\\/tabs):where([data-orientation=vertical]) *):after{content:var(--tw-content);width:calc(calc(var(--spacing)) * .5)}.tw\\:first\\:mt-0:first-child{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:last\\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:even\\:bg-muted:nth-child(2n){background-color:var(--muted)}.tw\\:focus-within\\:ring-2:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-within\\:ring-ring:focus-within{--tw-ring-color:var(--ring)}.tw\\:focus-within\\:ring-offset-1:focus-within{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}@media (hover:hover){.tw\\:hover\\:-mt-4:hover{margin-top:calc(calc(var(--spacing)) * -4)}.tw\\:hover\\:cursor-pointer:hover{cursor:pointer}.tw\\:hover\\:bg-accent:hover,.tw\\:hover\\:bg-accent\\/30:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-accent\\/30:hover{background-color:color-mix(in oklab, var(--accent) 30%, transparent)}}.tw\\:hover\\:bg-accent\\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-accent\\/80:hover{background-color:color-mix(in oklab, var(--accent) 80%, transparent)}}.tw\\:hover\\:bg-blue-600:hover{background-color:var(--tw-color-blue-600)}.tw\\:hover\\:bg-destructive\\/20:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-destructive\\/20:hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:hover\\:bg-gray-50:hover{background-color:var(--tw-color-gray-50)}.tw\\:hover\\:bg-input:hover{background-color:var(--input)}.tw\\:hover\\:bg-muted:hover,.tw\\:hover\\:bg-muted\\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-muted\\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:hover\\:bg-muted\\/80:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-muted\\/80:hover{background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.tw\\:hover\\:bg-primary\\/10:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/10:hover{background-color:color-mix(in oklab, var(--primary) 10%, transparent)}}.tw\\:hover\\:bg-primary\\/70:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/70:hover{background-color:color-mix(in oklab, var(--primary) 70%, transparent)}}.tw\\:hover\\:bg-primary\\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-primary\\/90:hover{background-color:color-mix(in oklab, var(--primary) 90%, transparent)}}.tw\\:hover\\:bg-red-500:hover{background-color:var(--tw-color-red-500)}.tw\\:hover\\:bg-secondary:hover,.tw\\:hover\\:bg-secondary\\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.tw\\:hover\\:bg-secondary\\/80:hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.tw\\:hover\\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.tw\\:hover\\:bg-transparent:hover{background-color:#0000}.tw\\:hover\\:text-foreground:hover{color:var(--foreground)}.tw\\:hover\\:text-muted-foreground:hover{color:var(--muted-foreground)}.tw\\:hover\\:text-primary-foreground:hover{color:var(--primary-foreground)}.tw\\:hover\\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.tw\\:hover\\:underline:hover{text-decoration-line:underline}.tw\\:hover\\:opacity-80:hover{opacity:.8}.tw\\:hover\\:opacity-100:hover{opacity:1}.tw\\:hover\\:shadow-\\[0_0_0_1px_var\\(--sidebar-accent\\)\\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,var(--sidebar-accent));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:ring-3:hover{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:hover\\:group-data-\\[collapsible\\=offcanvas\\]\\:bg-sidebar:hover:is(:where(.tw\\:group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.tw\\:hover\\:after\\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.tw\\:focus\\:relative:focus{position:relative}.tw\\:focus\\:z-10:focus{z-index:10}.tw\\:focus\\:bg-accent:focus{background-color:var(--accent)}.tw\\:focus\\:bg-muted:focus{background-color:var(--muted)}.tw\\:focus\\:text-accent-foreground:focus{color:var(--accent-foreground)}.tw\\:focus\\:text-foreground:focus{color:var(--foreground)}.tw\\:focus\\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus\\:ring-ring:focus{--tw-ring-color:var(--ring)}.tw\\:focus\\:ring-offset-1:focus{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:focus\\:ring-offset-background:focus{--tw-ring-offset-color:var(--background)}.tw\\:focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}:is(.tw\\:focus\\:\\*\\*\\:text-accent-foreground:focus *),:is(.tw\\:not-data-\\[variant\\=destructive\\]\\:focus\\:\\*\\*\\:text-accent-foreground:not([data-variant=destructive]):focus *){color:var(--accent-foreground)}.tw\\:focus-visible\\:relative:focus-visible{position:relative}.tw\\:focus-visible\\:z-10:focus-visible{z-index:10}.tw\\:focus-visible\\:border-destructive\\/40:focus-visible{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:border-destructive\\/40:focus-visible{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:focus-visible\\:border-ring:focus-visible{border-color:var(--ring)}.tw\\:focus-visible\\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-3:focus-visible,.tw\\:focus-visible\\:ring-\\[3px\\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:focus-visible\\:ring-\\[color\\:hsl\\(240\\,5\\%\\,64\\.9\\%\\)\\]:focus-visible{--tw-ring-color:#a1a1aa}.tw\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:ring-destructive\\/20:focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:focus-visible\\:ring-ring:focus-visible,.tw\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:focus-visible\\:ring-ring\\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:focus-visible\\:ring-slate-400:focus-visible{--tw-ring-color:var(--tw-color-slate-400)}.tw\\:focus-visible\\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.tw\\:focus-visible\\:outline-hidden:focus-visible{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tw\\:focus-visible\\:outline-hidden:focus-visible{outline-offset:2px;outline:2px solid #0000}}.tw\\:focus-visible\\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.tw\\:focus-visible\\:outline-ring:focus-visible{outline-color:var(--ring)}.tw\\:focus-visible\\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}:is(.tw\\:\\*\\:focus-visible\\:relative>*):focus-visible{position:relative}:is(.tw\\:\\*\\:focus-visible\\:z-10>*):focus-visible{z-index:10}.tw\\:active\\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.tw\\:active\\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.tw\\:active\\:ring-3:active{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:active\\:not-aria-\\[haspopup\\]\\:translate-y-px:active:not([aria-haspopup]){--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:active\\:not-aria-\\[haspopup\\]\\:transform-\\[translateY\\(1px\\)\\]:active:not([aria-haspopup]){transform:translateY(1px)}.tw\\:disabled\\:pointer-events-none:disabled{pointer-events:none}.tw\\:disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.tw\\:disabled\\:bg-input\\/50:disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:disabled\\:bg-input\\/50:disabled{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:disabled\\:bg-transparent:disabled{background-color:#0000}.tw\\:disabled\\:opacity-50:disabled{opacity:.5}:where([data-side=bottom]) .tw\\:in-data-\\[side\\=bottom\\]\\:translate-y-\\[calc\\(-50\\%-1px\\)\\]{--tw-translate-y:calc(-50% - 1px);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=bottom]) .tw\\:in-data-\\[side\\=bottom\\]\\:\\[clip-path\\:polygon\\(100\\%_0\\,100\\%_100\\%\\,0_100\\%\\)\\]{clip-path:polygon(100% 0,100% 100%,0 100%)}:where([data-side=primary]) .tw\\:in-data-\\[side\\=primary\\]\\:cursor-w-resize{cursor:w-resize}:where([data-side=secondary]) .tw\\:in-data-\\[side\\=secondary\\]\\:cursor-e-resize{cursor:e-resize}:where([data-side=top]) .tw\\:in-data-\\[side\\=top\\]\\:translate-y-\\[calc\\(-50\\%-1px\\)\\]{--tw-translate-y:calc(-50% - 1px);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=top]) .tw\\:in-data-\\[side\\=top\\]\\:\\[clip-path\\:polygon\\(100\\%_0\\,100\\%_100\\%\\,0_100\\%\\)\\]{clip-path:polygon(100% 0,100% 100%,0 100%)}:where([data-slot=button-group]) .tw\\:in-data-\\[slot\\=button-group\\]\\:rounded-lg{border-radius:var(--radius)}:where([data-slot=combobox-content]) .tw\\:in-data-\\[slot\\=combobox-content\\]\\:focus-within\\:border-inherit:focus-within{border-color:inherit}:where([data-slot=combobox-content]) .tw\\:in-data-\\[slot\\=combobox-content\\]\\:focus-within\\:ring-0:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:where([data-slot=dialog-content]) .tw\\:in-data-\\[slot\\=dialog-content\\]\\:rounded-lg\\!{border-radius:var(--radius)!important}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/20{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/20{background-color:color-mix(in oklab, var(--background) 20%, transparent)}}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:text-background{color:var(--background)}:where([data-slot=tooltip-content]) .tw\\:in-data-\\[slot\\=tooltip-content\\]\\:text-destructive{color:var(--destructive)}.tw\\:has-disabled\\:bg-input\\/50:has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-disabled\\:bg-input\\/50:has(:disabled){background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:has-disabled\\:opacity-50:has(:disabled){opacity:.5}.tw\\:has-aria-expanded\\:bg-muted\\/50:has([aria-expanded=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-aria-expanded\\:bg-muted\\/50:has([aria-expanded=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-1:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1)}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-1\\.5:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-end\\]\\:pe-2:has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:has-data-\\[icon\\=inline-end\\]\\:pe-1\\.5:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-end]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-1:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-1\\.5:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[icon\\=inline-start\\]\\:ps-2:has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[spacing\\=0\\]\\/toggle-group\\:has-data-\\[icon\\=inline-start\\]\\:ps-1\\.5:is(:where(.tw\\:group\\/toggle-group)[data-spacing="0"] *):has([data-icon=inline-start]){padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[slot\\=alert-action\\]\\:relative:has([data-slot=alert-action]){position:relative}.tw\\:has-data-\\[slot\\=alert-action\\]\\:pe-18:has([data-slot=alert-action]){padding-inline-end:calc(calc(var(--spacing)) * 18)}.tw\\:has-data-\\[slot\\=card-action\\]\\:grid-cols-\\[1fr_auto\\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.tw\\:has-data-\\[slot\\=card-description\\]\\:grid-rows-\\[auto_auto\\]:has([data-slot=card-description]){grid-template-rows:auto auto}.tw\\:has-data-\\[slot\\=card-footer\\]\\:pb-0:has([data-slot=card-footer]){padding-bottom:calc(calc(var(--spacing)) * 0)}.tw\\:has-data-\\[slot\\=kbd\\]\\:pe-0:has([data-slot=kbd]){padding-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:has-data-\\[slot\\=kbd\\]\\:pe-1\\.5:has([data-slot=kbd]){padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-data-\\[variant\\=inset\\]\\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:border-ring:has([data-slot=input-group-control]:focus-visible){border-color:var(--ring)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-3:has([data-slot=input-group-control]:focus-visible){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-\\[\\[data-slot\\=input-group-control\\]\\:focus-visible\\]\\:ring-ring\\/50:has([data-slot=input-group-control]:focus-visible){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:border-destructive:has([data-slot][aria-invalid=true]){border-color:var(--destructive)}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-3:has([data-slot][aria-invalid=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/20:has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:h-auto:has(>[data-align=block-end]){height:auto}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:flex-col:has(>[data-align=block-end]){flex-direction:column}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:h-auto:has(>[data-align=block-start]){height:auto}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:flex-col:has(>[data-align=block-start]){flex-direction:column}.tw\\:has-\\[\\>\\[data-slot\\=button-group\\]\\]\\:gap-2:has(>[data-slot=button-group]){gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>button\\]\\:ms-\\[-0\\.3rem\\]:has(>button){margin-inline-start:-.3rem}.tw\\:has-\\[\\>button\\]\\:me-\\[-0\\.3rem\\]:has(>button){margin-inline-end:-.3rem}.tw\\:has-\\[\\>img\\]\\:grid-cols-\\[auto_1fr\\]:has(>img){grid-template-columns:auto 1fr}.tw\\:has-\\[\\>img\\]\\:gap-x-2:has(>img){column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>img\\:first-child\\]\\:pt-0:has(>img:first-child){padding-top:calc(calc(var(--spacing)) * 0)}.tw\\:has-\\[\\>kbd\\]\\:ms-\\[-0\\.15rem\\]:has(>kbd){margin-inline-start:-.15rem}.tw\\:has-\\[\\>kbd\\]\\:me-\\[-0\\.15rem\\]:has(>kbd){margin-inline-end:-.15rem}.tw\\:has-\\[\\>svg\\]\\:grid-cols-\\[auto_1fr\\]:has(>svg){grid-template-columns:auto 1fr}.tw\\:has-\\[\\>svg\\]\\:gap-x-2:has(>svg){column-gap:calc(calc(var(--spacing)) * 2)}.tw\\:has-\\[\\>svg\\]\\:p-0:has(>svg){padding:calc(calc(var(--spacing)) * 0)}.tw\\:has-\\[\\>textarea\\]\\:h-auto:has(>textarea){height:auto}.tw\\:aria-disabled\\:pointer-events-none[aria-disabled=true]{pointer-events:none}.tw\\:aria-disabled\\:opacity-50[aria-disabled=true]{opacity:.5}.tw\\:aria-expanded\\:bg-muted[aria-expanded=true]{background-color:var(--muted)}.tw\\:aria-expanded\\:bg-secondary[aria-expanded=true]{background-color:var(--secondary)}.tw\\:aria-expanded\\:text-foreground[aria-expanded=true]{color:var(--foreground)}.tw\\:aria-expanded\\:text-secondary-foreground[aria-expanded=true]{color:var(--secondary-foreground)}.tw\\:aria-expanded\\:opacity-100[aria-expanded=true]{opacity:1}.tw\\:aria-invalid\\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.tw\\:aria-invalid\\:ring-0[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:aria-invalid\\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:aria-invalid\\:ring-destructive\\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:aria-invalid\\:aria-checked\\:border-primary[aria-invalid=true][aria-checked=true]{border-color:var(--primary)}.tw\\:aria-pressed\\:bg-muted[aria-pressed=true]{background-color:var(--muted)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:h-px[aria-orientation=horizontal]{height:1px}.tw\\:aria-\\[orientation\\=horizontal\\]\\:w-full[aria-orientation=horizontal]{width:100%}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:start-0[aria-orientation=horizontal]:after{content:var(--tw-content);inset-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:h-1[aria-orientation=horizontal]:after{content:var(--tw-content);height:calc(calc(var(--spacing)) * 1)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:w-full[aria-orientation=horizontal]:after{content:var(--tw-content);width:100%}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:translate-x-0[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:aria-\\[orientation\\=horizontal\\]\\:after\\:-translate-y-1\\/2[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:aria-\\[orientation\\=vertical\\]\\:flex-col[aria-orientation=vertical]{flex-direction:column}.tw\\:data-inset\\:ps-7[data-inset]{padding-inline-start:calc(calc(var(--spacing)) * 7)}.tw\\:data-placeholder\\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.tw\\:data-quiet-focus\\:focus-visible\\:border-transparent[data-quiet-focus]:focus-visible{border-color:#0000}.tw\\:data-quiet-focus\\:focus-visible\\:ring-0[data-quiet-focus]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-quiet-focus\\:focus-visible\\:outline-none[data-quiet-focus]:focus-visible{--tw-outline-style:none;outline-style:none}.tw\\:data-\\[align-trigger\\=false\\]\\:min-w-36[data-align-trigger=false]{min-width:calc(calc(var(--spacing)) * 36)}.tw\\:data-\\[align-trigger\\=true\\]\\:min-w-\\(--radix-select-trigger-width\\)[data-align-trigger=true]{min-width:var(--radix-select-trigger-width)}.tw\\:data-\\[align-trigger\\=true\\]\\:animate-none[data-align-trigger=true]{animation:none}.tw\\:data-\\[disabled\\=true\\]\\:pointer-events-none[data-disabled=true]{pointer-events:none}.tw\\:data-\\[disabled\\=true\\]\\:opacity-50[data-disabled=true]{opacity:.5}.tw\\:data-\\[position\\=popper\\]\\:h-\\(--radix-select-trigger-height\\)[data-position=popper]{height:var(--radix-select-trigger-height)}.tw\\:data-\\[position\\=popper\\]\\:w-full[data-position=popper]{width:100%}.tw\\:data-\\[position\\=popper\\]\\:min-w-\\(--radix-select-trigger-width\\)[data-position=popper]{min-width:var(--radix-select-trigger-width)}.tw\\:data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=bottom\\]\\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.tw\\:data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=left\\]\\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.tw\\:data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=right\\]\\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.tw\\:data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:data-\\[side\\=top\\]\\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.tw\\:data-\\[size\\=default\\]\\:h-8[data-size=default]{height:calc(calc(var(--spacing)) * 8)}.tw\\:data-\\[size\\=default\\]\\:h-\\[18\\.4px\\][data-size=default]{height:18.4px}.tw\\:data-\\[size\\=default\\]\\:w-\\[32px\\][data-size=default]{width:32px}.tw\\:data-\\[size\\=lg\\]\\:size-10[data-size=lg]{width:calc(calc(var(--spacing)) * 10);height:calc(calc(var(--spacing)) * 10)}.tw\\:data-\\[size\\=md\\]\\:text-sm[data-size=md]{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:data-\\[size\\=sm\\]\\:size-6[data-size=sm]{width:calc(calc(var(--spacing)) * 6);height:calc(calc(var(--spacing)) * 6)}.tw\\:data-\\[size\\=sm\\]\\:h-7[data-size=sm]{height:calc(calc(var(--spacing)) * 7)}.tw\\:data-\\[size\\=sm\\]\\:h-\\[14px\\][data-size=sm]{height:14px}.tw\\:data-\\[size\\=sm\\]\\:w-\\[24px\\][data-size=sm]{width:24px}.tw\\:data-\\[size\\=sm\\]\\:gap-3[data-size=sm]{gap:calc(calc(var(--spacing)) * 3)}.tw\\:data-\\[size\\=sm\\]\\:rounded-\\[min\\(var\\(--tw-radius-md\\)\\,10px\\)\\][data-size=sm]{border-radius:min(var(--tw-radius-md), 10px)}.tw\\:data-\\[size\\=sm\\]\\:py-3[data-size=sm]{padding-block:calc(calc(var(--spacing)) * 3)}.tw\\:data-\\[size\\=sm\\]\\:text-xs[data-size=sm]{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}.tw\\:data-\\[size\\=sm\\]\\:has-data-\\[slot\\=card-footer\\]\\:pb-0[data-size=sm]:has([data-slot=card-footer]){padding-bottom:calc(calc(var(--spacing)) * 0)}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-item]:focus{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-item]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:data-highlighted\\:bg-foreground\\/10 *)[data-slot$=-item][data-highlighted]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-item\\]\\:data-highlighted\\:bg-foreground\\/10 *)[data-slot$=-item][data-highlighted]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-separator\\]\\:bg-foreground\\/5 *)[data-slot$=-separator]{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-separator\\]\\:bg-foreground\\/5 *)[data-slot$=-separator]{background-color:color-mix(in oklab, var(--foreground) 5%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-trigger]:focus{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:focus\\:bg-foreground\\/10 *)[data-slot$=-trigger]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)}}:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:aria-expanded\\:bg-foreground\\/10\\! *)[data-slot$=-trigger][aria-expanded=true]{background-color:var(--foreground)!important}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[slot\\$\\=-trigger\\]\\:aria-expanded\\:bg-foreground\\/10\\! *)[data-slot$=-trigger][aria-expanded=true]{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)!important}}:is(.tw\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\:data-\\[slot\\=alert-description\\]\\:text-destructive\\/90>*)[data-slot=alert-description]{color:color-mix(in oklab, var(--destructive) 90%, transparent)}}:is(.tw\\:\\*\\:data-\\[slot\\=avatar\\]\\:ring-2>*)[data-slot=avatar]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.tw\\:\\*\\:data-\\[slot\\=avatar\\]\\:ring-background>*)[data-slot=avatar]{--tw-ring-color:var(--background)}:is(.tw\\:\\*\\:data-\\[slot\\=input-group-addon\\]\\:ps-2\\!>*)[data-slot=input-group-addon]{padding-inline-start:calc(calc(var(--spacing)) * 2)!important}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:relative *)[data-slot=kbd]{position:relative}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:isolate *)[data-slot=kbd]{isolation:isolate}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:z-50 *)[data-slot=kbd]{z-index:50}:is(.tw\\:\\*\\*\\:data-\\[slot\\=kbd\\]\\:rounded-sm *)[data-slot=kbd]{border-radius:calc(var(--radius) * .6)}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:flex>*)[data-slot=select-value]{display:flex}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:flex-1>*)[data-slot=select-value]{flex:1}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:items-center>*)[data-slot=select-value]{align-items:center}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:gap-1\\.5>*)[data-slot=select-value]{gap:calc(calc(var(--spacing)) * 1.5)}:is(.tw\\:\\*\\:data-\\[slot\\=select-value\\]\\:text-start>*)[data-slot=select-value]{text-align:start}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-s-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:first-child{border-start-start-radius:var(--radius);border-end-start-radius:var(--radius)}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:first\\:rounded-t-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-e-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"]:last-child{border-start-end-radius:var(--radius);border-end-end-radius:var(--radius)}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:last\\:rounded-b-lg:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"]:last-child{border-bottom-right-radius:var(--radius);border-bottom-left-radius:var(--radius)}.tw\\:data-\\[state\\=active\\]\\:bg-background[data-state=active]{background-color:var(--background)}.tw\\:data-\\[state\\=active\\]\\:text-foreground[data-state=active]{color:var(--foreground)}.tw\\:data-\\[state\\=active\\]\\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-\\[state\\=closed\\]\\:overflow-hidden[data-state=closed]{overflow:hidden}.tw\\:data-\\[state\\=delayed-open\\]\\:animate-in[data-state=delayed-open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-\\[state\\=delayed-open\\]\\:fade-in-0[data-state=delayed-open]{--tw-enter-opacity:0}.tw\\:data-\\[state\\=delayed-open\\]\\:zoom-in-95[data-state=delayed-open]{--tw-enter-scale:.95}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-approved\\)\\][data-state=on]{background-color:var(--inv-soft-approved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-unapproved\\)\\][data-state=on]{background-color:var(--inv-soft-unapproved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-soft-unknown\\)\\][data-state=on]{background-color:var(--inv-soft-unknown)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-approved\\)\\][data-state=on]{background-color:var(--inv-vivid-approved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-unapproved\\)\\][data-state=on]{background-color:var(--inv-vivid-unapproved)}.tw\\:data-\\[state\\=on\\]\\:bg-\\[var\\(--inv-vivid-unknown\\)\\][data-state=on]{background-color:var(--inv-vivid-unknown)}.tw\\:data-\\[state\\=on\\]\\:bg-muted[data-state=on]{background-color:var(--muted)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-approved\\)\\][data-state=on]{color:var(--inv-icon-approved)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-unapproved\\)\\][data-state=on]{color:var(--inv-icon-unapproved)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-icon-unknown\\)\\][data-state=on]{color:var(--inv-icon-unknown)}.tw\\:data-\\[state\\=on\\]\\:text-\\[var\\(--inv-on\\)\\][data-state=on]{color:var(--inv-on)}.tw\\:data-\\[state\\=on\\]\\:text-foreground[data-state=on]{color:var(--foreground)}.tw\\:data-\\[state\\=open\\]\\:bg-accent[data-state=open]{background-color:var(--accent)}.tw\\:data-\\[state\\=open\\]\\:bg-muted[data-state=open]{background-color:var(--muted)}.tw\\:data-\\[state\\=open\\]\\:text-foreground[data-state=open]{color:var(--foreground)}.tw\\:data-\\[state\\=selected\\]\\:bg-muted[data-state=selected]{background-color:var(--muted)}.tw\\:data-\\[variant\\=destructive\\]\\:text-destructive[data-variant=destructive]{color:var(--destructive)}:is(:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:\\*\\*\\:text-accent-foreground\\! *)[data-variant=destructive] *),:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:text-accent-foreground\\! *)[data-variant=destructive]{color:var(--accent-foreground)!important}.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.tw\\:data-\\[variant\\=destructive\\]\\:focus\\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-foreground\\/10\\! *)[data-variant=destructive]:focus{background-color:var(--foreground)!important}@supports (color:color-mix(in lab, red, red)){:is(.tw\\:\\*\\*\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-foreground\\/10\\! *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--foreground) 10%, transparent)!important}}.tw\\:data-\\[variant\\=line\\]\\:rounded-none[data-variant=line]{border-radius:0}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-s-0:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:border-t-0:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]{border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:group-data-horizontal\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-s:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=horizontal]) *)[data-spacing="0"][data-variant=outline]:first-child{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.tw\\:group-data-vertical\\/toggle-group\\:data-\\[spacing\\=0\\]\\:data-\\[variant\\=outline\\]\\:first\\:border-t:is(:where(.tw\\:group\\/toggle-group):where([data-orientation=vertical]) *)[data-spacing="0"][data-variant=outline]:first-child{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:inset-x-0[data-vaul-drawer-direction=bottom]{inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:bottom-0[data-vaul-drawer-direction=bottom]{bottom:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:mt-24[data-vaul-drawer-direction=bottom]{margin-top:calc(calc(var(--spacing)) * 24)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:max-h-\\[80vh\\][data-vaul-drawer-direction=bottom]{max-height:80vh}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:rounded-t-xl[data-vaul-drawer-direction=bottom]{border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=bottom\\]\\:border-t[data-vaul-drawer-direction=bottom]{border-top-style:var(--tw-border-style);border-top-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:inset-y-0[data-vaul-drawer-direction=left]{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:left-0[data-vaul-drawer-direction=left]{left:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:w-3\\/4[data-vaul-drawer-direction=left]{width:75%}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:flex-row[data-vaul-drawer-direction=left]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:rounded-r-xl[data-vaul-drawer-direction=left]{border-top-right-radius:calc(var(--radius) * 1.4);border-bottom-right-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:border-r[data-vaul-drawer-direction=left]{border-right-style:var(--tw-border-style);border-right-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=left\\/right\\]\\:flex-row[data-vaul-drawer-direction=left\\/right]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:inset-y-0[data-vaul-drawer-direction=right]{inset-block:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:right-0[data-vaul-drawer-direction=right]{right:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:w-3\\/4[data-vaul-drawer-direction=right]{width:75%}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:flex-row[data-vaul-drawer-direction=right]{flex-direction:row}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:rounded-l-xl[data-vaul-drawer-direction=right]{border-top-left-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:border-l[data-vaul-drawer-direction=right]{border-left-style:var(--tw-border-style);border-left-width:1px}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:inset-x-0[data-vaul-drawer-direction=top]{inset-inline:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:top-0[data-vaul-drawer-direction=top]{top:calc(calc(var(--spacing)) * 0)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:mb-24[data-vaul-drawer-direction=top]{margin-bottom:calc(calc(var(--spacing)) * 24)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:max-h-\\[80vh\\][data-vaul-drawer-direction=top]{max-height:80vh}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:rounded-b-xl[data-vaul-drawer-direction=top]{border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}.tw\\:data-\\[vaul-drawer-direction\\=top\\]\\:border-b[data-vaul-drawer-direction=top]{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}@supports ((-webkit-backdrop-filter:var(--tw)) or (backdrop-filter:var(--tw))){.tw\\:supports-backdrop-filter\\:backdrop-blur-xs{--tw-backdrop-blur:blur(var(--tw-blur-xs));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}}@media (min-width:40rem){.tw\\:sm\\:flex{display:flex}.tw\\:sm\\:max-w-sm{max-width:var(--tw-container-sm)}.tw\\:sm\\:flex-row{flex-direction:row}.tw\\:sm\\:justify-end{justify-content:flex-end}.tw\\:sm\\:p-8{padding:calc(calc(var(--spacing)) * 8)}.tw\\:sm\\:text-start{text-align:start}.tw\\:data-\\[vaul-drawer-direction\\=left\\]\\:sm\\:max-w-sm[data-vaul-drawer-direction=left],.tw\\:data-\\[vaul-drawer-direction\\=right\\]\\:sm\\:max-w-sm[data-vaul-drawer-direction=right]{max-width:var(--tw-container-sm)}}@media (min-width:48rem){.tw\\:md\\:block{display:block}.tw\\:md\\:flex{display:flex}.tw\\:md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:md\\:gap-0\\.5{gap:calc(calc(var(--spacing)) * .5)}.tw\\:md\\:text-start{text-align:start}.tw\\:md\\:text-sm{font-size:var(--tw-text-sm);line-height:var(--tw-leading,var(--tw-text-sm--line-height))}.tw\\:md\\:text-pretty{text-wrap:pretty}.tw\\:md\\:opacity-0{opacity:0}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:m-2:is(:where(.tw\\:peer)[data-variant=inset]~*){margin:calc(calc(var(--spacing)) * 2)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:ms-0:is(:where(.tw\\:peer)[data-variant=inset]~*){margin-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:rounded-xl:is(:where(.tw\\:peer)[data-variant=inset]~*){border-radius:calc(var(--radius) * 1.4)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:shadow-sm:is(:where(.tw\\:peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:md\\:peer-data-\\[variant\\=inset\\]\\:peer-data-\\[state\\=collapsed\\]\\:ms-2:is(:where(.tw\\:peer)[data-variant=inset]~*):is(:where(.tw\\:peer)[data-state=collapsed]~*){margin-inline-start:calc(calc(var(--spacing)) * 2)}.tw\\:md\\:after\\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.tw\\:lg\\:flex{display:flex}.tw\\:lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}:where(.tw\\:lg\\:space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(calc(var(--spacing)) * 8) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(calc(var(--spacing)) * 8) * calc(1 - var(--tw-space-x-reverse)))}.tw\\:lg\\:text-5xl{font-size:var(--tw-text-5xl);line-height:var(--tw-leading,var(--tw-text-5xl--line-height))}}@media (min-width:48rem){@media (min-width:64rem){.tw\\:md\\:lg\\:hidden{display:none}}}@media (min-width:80rem){.tw\\:xl\\:auto-cols-fr{grid-auto-columns:minmax(0,1fr)}.tw\\:xl\\:grid-flow-col{grid-auto-flow:column}.tw\\:xl\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.tw\\:xl\\:grid-cols-none{grid-template-columns:none}.tw\\:xl\\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}}@container search not (min-width:7rem){.tw\\:\\@max-\\[7rem\\]\\/search\\:hidden{display:none}.tw\\:\\@max-\\[7rem\\]\\/search\\:ps-3{padding-inline-start:calc(calc(var(--spacing)) * 3)}}@container search not (min-width:4rem){.tw\\:\\@max-\\[4rem\\]\\/search\\:hidden{display:none}.tw\\:\\@max-\\[4rem\\]\\/search\\:pe-3{padding-inline-end:calc(calc(var(--spacing)) * 3)}}@container search not (min-width:3rem){.tw\\:\\@max-\\[3rem\\]\\/search\\:ps-0{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\@max-\\[3rem\\]\\/search\\:pe-0{padding-inline-end:calc(calc(var(--spacing)) * 0)}}@container (min-width:24rem){.tw\\:\\@sm\\:basis-auto{flex-basis:auto}}.tw\\:ltr\\:left-2:where(:dir(ltr),[dir=ltr],[dir=ltr] *){left:calc(calc(var(--spacing)) * 2)}.tw\\:ltr\\:-translate-x-1\\/2:where(:dir(ltr),[dir=ltr],[dir=ltr] *){--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:right-2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){right:calc(calc(var(--spacing)) * 2)}.tw\\:rtl\\:flex:where(:dir(rtl),[dir=rtl],[dir=rtl] *){display:flex}.tw\\:rtl\\:-translate-x-px:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:translate-x-1\\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:translate-x-px:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:after\\:translate-x-1\\/2:where(:dir(rtl),[dir=rtl],[dir=rtl] *):after{content:var(--tw-content);--tw-translate-x:calc(1 / 2 * 100%);translate:var(--tw-translate-x) var(--tw-translate-y)}:where([data-side=primary]) .tw\\:rtl\\:in-data-\\[side\\=primary\\]\\:cursor-e-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:e-resize}:where([data-side=secondary]) .tw\\:rtl\\:in-data-\\[side\\=secondary\\]\\:cursor-w-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:w-resize}.tw\\:rtl\\:aria-\\[orientation\\=horizontal\\]\\:after\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[aria-orientation=horizontal]:after{content:var(--tw-content);--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:data-\\[side\\=left\\]\\:translate-x-1:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[data-side=left]{--tw-translate-x:calc(calc(var(--spacing)) * 1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:data-\\[side\\=right\\]\\:-translate-x-1:where(:dir(rtl),[dir=rtl],[dir=rtl] *)[data-side=right]{--tw-translate-x:calc(calc(var(--spacing)) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:border-input:is(.dark *){border-color:var(--input)}.tw\\:dark\\:bg-destructive\\/20:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:bg-destructive\\/20:is(.dark *){background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:dark\\:bg-input\\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:bg-input\\/30:is(.dark *){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:dark\\:bg-transparent:is(.dark *){background-color:#0000}.tw\\:dark\\:text-amber-400:is(.dark *){color:var(--tw-color-amber-400)}.tw\\:dark\\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.tw\\:dark\\:text-rose-400:is(.dark *){color:var(--tw-color-rose-400)}.tw\\:dark\\:text-sky-400:is(.dark *){color:var(--tw-color-sky-400)}.tw\\:dark\\:text-teal-400:is(.dark *){color:var(--tw-color-teal-400)}.tw\\:dark\\:after\\:mix-blend-lighten:is(.dark *):after{content:var(--tw-content);mix-blend-mode:lighten}@media (hover:hover){.tw\\:dark\\:hover\\:bg-blue-500:is(.dark *):hover{background-color:var(--tw-color-blue-500)}.tw\\:dark\\:hover\\:bg-destructive\\/30:is(.dark *):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-destructive\\/30:is(.dark *):hover{background-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.tw\\:dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-input\\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--input) 50%, transparent)}}.tw\\:dark\\:hover\\:bg-muted\\/50:is(.dark *):hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:hover\\:bg-muted\\/50:is(.dark *):hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:dark\\:hover\\:text-foreground:is(.dark *):hover{color:var(--foreground)}}.tw\\:dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:focus-visible\\:ring-destructive\\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:disabled\\:bg-input\\/80:is(.dark *):disabled{background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:disabled\\:bg-input\\/80:is(.dark *):disabled{background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:dark\\:disabled\\:bg-transparent:is(.dark *):disabled{background-color:#0000}:where([data-slot=tooltip-content]) .tw\\:dark\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/10:is(.dark *){background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){:where([data-slot=tooltip-content]) .tw\\:dark\\:in-data-\\[slot\\=tooltip-content\\]\\:bg-background\\/10:is(.dark *){background-color:color-mix(in oklab, var(--background) 10%, transparent)}}.tw\\:dark\\:has-disabled\\:bg-input\\/80:is(.dark *):has(:disabled){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:has-disabled\\:bg-input\\/80:is(.dark *):has(:disabled){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:has-\\[\\[data-slot\\]\\[aria-invalid\\=true\\]\\]\\:ring-destructive\\/40:is(.dark *):has([data-slot][aria-invalid=true]){--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:aria-invalid\\:border-destructive\\/50:is(.dark *)[aria-invalid=true]{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:aria-invalid\\:border-destructive\\/50:is(.dark *)[aria-invalid=true]{border-color:color-mix(in oklab, var(--destructive) 50%, transparent)}}.tw\\:dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:aria-invalid\\:ring-destructive\\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.tw\\:dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-\\[variant\\=destructive\\]\\:focus\\:bg-destructive\\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:data-open\\:animate-in:where([data-state=open]),.tw\\:data-open\\:animate-in:where([data-open]:not([data-open=false])){animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-open\\:bg-accent:where([data-state=open]),.tw\\:data-open\\:bg-accent:where([data-open]:not([data-open=false])){background-color:var(--accent)}.tw\\:data-open\\:text-accent-foreground:where([data-state=open]),.tw\\:data-open\\:text-accent-foreground:where([data-open]:not([data-open=false])){color:var(--accent-foreground)}.tw\\:data-open\\:fade-in-0:where([data-state=open]),.tw\\:data-open\\:fade-in-0:where([data-open]:not([data-open=false])){--tw-enter-opacity:0}.tw\\:data-open\\:zoom-in-95:where([data-state=open]),.tw\\:data-open\\:zoom-in-95:where([data-open]:not([data-open=false])){--tw-enter-scale:.95}@media (hover:hover){:is(.tw\\:data-open\\:hover\\:bg-sidebar-accent:where([data-state=open]),.tw\\:data-open\\:hover\\:bg-sidebar-accent:where([data-open]:not([data-open=false]))):hover{background-color:var(--sidebar-accent)}:is(.tw\\:data-open\\:hover\\:text-sidebar-accent-foreground:where([data-state=open]),.tw\\:data-open\\:hover\\:text-sidebar-accent-foreground:where([data-open]:not([data-open=false]))):hover{color:var(--sidebar-accent-foreground)}}.tw\\:data-closed\\:animate-out:where([data-state=closed]),.tw\\:data-closed\\:animate-out:where([data-closed]:not([data-closed=false])){animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.tw\\:data-closed\\:fade-out-0:where([data-state=closed]),.tw\\:data-closed\\:fade-out-0:where([data-closed]:not([data-closed=false])){--tw-exit-opacity:0}.tw\\:data-closed\\:zoom-out-95:where([data-state=closed]),.tw\\:data-closed\\:zoom-out-95:where([data-closed]:not([data-closed=false])){--tw-exit-scale:.95}.tw\\:data-checked\\:border-primary:where([data-state=checked]),.tw\\:data-checked\\:border-primary:where([data-checked]:not([data-checked=false])){border-color:var(--primary)}.tw\\:data-checked\\:bg-primary:where([data-state=checked]),.tw\\:data-checked\\:bg-primary:where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.tw\\:data-checked\\:text-primary-foreground:where([data-state=checked]),.tw\\:data-checked\\:text-primary-foreground:where([data-checked]:not([data-checked=false])){color:var(--primary-foreground)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=checked]),.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=checked]),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:translate-x-\\[calc\\(100\\%-2px\\)\\]:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x:calc(100% - 2px);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=checked]),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-checked]:not([data-checked=false])),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=checked]),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-checked\\:-translate-x-\\[calc\\(100\\%-2px\\)\\]:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-checked]:not([data-checked=false])){--tw-translate-x:calc(calc(100% - 2px) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:data-checked\\:bg-primary:is(.dark *):where([data-state=checked]),.tw\\:dark\\:data-checked\\:bg-primary:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary)}.tw\\:dark\\:data-checked\\:bg-primary-foreground:is(.dark *):where([data-state=checked]),.tw\\:dark\\:data-checked\\:bg-primary-foreground:is(.dark *):where([data-checked]:not([data-checked=false])){background-color:var(--primary-foreground)}.tw\\:data-unchecked\\:bg-input:where([data-state=unchecked]),.tw\\:data-unchecked\\:bg-input:where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=unchecked]),.tw\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=unchecked]),.tw\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:translate-x-0:is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-state=unchecked]),.tw\\:rtl\\:group-data-\\[size\\=default\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=default] *):where([data-unchecked]:not([data-unchecked=false])),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-state=unchecked]),.tw\\:rtl\\:group-data-\\[size\\=sm\\]\\/switch\\:data-unchecked\\:-translate-x-0:where(:dir(rtl),[dir=rtl],[dir=rtl] *):is(:where(.tw\\:group\\/switch)[data-size=sm] *):where([data-unchecked]:not([data-unchecked=false])){--tw-translate-x:calc(calc(var(--spacing)) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.tw\\:dark\\:data-unchecked\\:bg-foreground:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-foreground:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--foreground)}.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-state=unchecked]),.tw\\:dark\\:data-unchecked\\:bg-input\\/80:is(.dark *):where([data-unchecked]:not([data-unchecked=false])){background-color:color-mix(in oklab, var(--input) 80%, transparent)}}.tw\\:data-selected\\:bg-muted:where([data-selected=true]),.tw\\:data-selected\\:bg-muted\\/50:where([data-selected=true]){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:bg-muted\\/50:where([data-selected=true]){background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.tw\\:data-selected\\:bg-primary:where([data-selected=true]){background-color:var(--primary)}.tw\\:data-selected\\:bg-transparent:where([data-selected=true]){background-color:#0000}.tw\\:data-selected\\:text-foreground:where([data-selected=true]){color:var(--foreground)}.tw\\:data-selected\\:text-inherit:where([data-selected=true]){color:inherit}.tw\\:data-selected\\:text-muted-foreground\\/50:where([data-selected=true]){color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:text-muted-foreground\\/50:where([data-selected=true]){color:color-mix(in oklab, var(--muted-foreground) 50%, transparent)}}.tw\\:data-selected\\:text-primary-foreground:where([data-selected=true]){color:var(--primary-foreground)}.tw\\:data-selected\\:ring-2:where([data-selected=true]){--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:data-selected\\:ring-primary-foreground\\/70:where([data-selected=true]){--tw-ring-color:var(--primary-foreground)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:ring-primary-foreground\\/70:where([data-selected=true]){--tw-ring-color:color-mix(in oklab, var(--primary-foreground) 70%, transparent)}}.tw\\:data-selected\\:ring-ring\\/50:where([data-selected=true]){--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.tw\\:data-selected\\:ring-ring\\/50:where([data-selected=true]){--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.tw\\:data-selected\\:ring-inset:where([data-selected=true]){--tw-ring-inset:inset}@media (forced-colors:active){.tw\\:forced-colors\\:data-selected\\:outline-2:where([data-selected=true]){outline-style:var(--tw-outline-style);outline-width:2px}.tw\\:forced-colors\\:data-selected\\:-outline-offset-2:where([data-selected=true]){outline-offset:calc(2px * -1)}.tw\\:forced-colors\\:data-selected\\:outline-\\[color\\:Highlight\\]:where([data-selected=true]){outline-color:highlight}}.tw\\:data-disabled\\:pointer-events-none:where([data-disabled=true]),.tw\\:data-disabled\\:pointer-events-none:where([data-disabled]:not([data-disabled=false])){pointer-events:none}.tw\\:data-disabled\\:cursor-not-allowed:where([data-disabled=true]),.tw\\:data-disabled\\:cursor-not-allowed:where([data-disabled]:not([data-disabled=false])){cursor:not-allowed}.tw\\:data-disabled\\:opacity-50:where([data-disabled=true]),.tw\\:data-disabled\\:opacity-50:where([data-disabled]:not([data-disabled=false])){opacity:.5}.tw\\:data-active\\:bg-background:where([data-state=active]),.tw\\:data-active\\:bg-background:where([data-active]:not([data-active=false])){background-color:var(--background)}.tw\\:data-active\\:bg-sidebar-accent:where([data-state=active]),.tw\\:data-active\\:bg-sidebar-accent:where([data-active]:not([data-active=false])){background-color:var(--sidebar-accent)}.tw\\:data-active\\:font-medium:where([data-state=active]),.tw\\:data-active\\:font-medium:where([data-active]:not([data-active=false])){--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}.tw\\:data-active\\:text-foreground:where([data-state=active]),.tw\\:data-active\\:text-foreground:where([data-active]:not([data-active=false])){color:var(--foreground)}.tw\\:data-active\\:text-sidebar-accent-foreground:where([data-state=active]),.tw\\:data-active\\:text-sidebar-accent-foreground:where([data-active]:not([data-active=false])){color:var(--sidebar-accent-foreground)}.tw\\:group-data-\\[variant\\=default\\]\\/tabs-list\\:data-active\\:shadow-sm:is(:where(.tw\\:group\\/tabs-list)[data-variant=default] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=default\\]\\/tabs-list\\:data-active\\:shadow-sm:is(:where(.tw\\:group\\/tabs-list)[data-variant=default] *):where([data-active]:not([data-active=false])){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:shadow-none:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:shadow-none:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}:is(.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:after\\:opacity-100:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:after\\:opacity-100:is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false]))):after{content:var(--tw-content);opacity:1}.tw\\:dark\\:data-active\\:border-input:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:border-input:is(.dark *):where([data-active]:not([data-active=false])){border-color:var(--input)}.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:var(--input)}@supports (color:color-mix(in lab, red, red)){.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:bg-input\\/30:is(.dark *):where([data-active]:not([data-active=false])){background-color:color-mix(in oklab, var(--input) 30%, transparent)}}.tw\\:dark\\:data-active\\:text-foreground:is(.dark *):where([data-state=active]),.tw\\:dark\\:data-active\\:text-foreground:is(.dark *):where([data-active]:not([data-active=false])){color:var(--foreground)}.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:border-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:border-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){border-color:#0000}.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-state=active]),.tw\\:dark\\:group-data-\\[variant\\=line\\]\\/tabs-list\\:data-active\\:bg-transparent:is(.dark *):is(:where(.tw\\:group\\/tabs-list)[data-variant=line] *):where([data-active]:not([data-active=false])){background-color:#0000}.tw\\:data-horizontal\\:mx-px:where([data-orientation=horizontal]){margin-inline:1px}.tw\\:data-horizontal\\:h-1:where([data-orientation=horizontal]){height:calc(calc(var(--spacing)) * 1)}.tw\\:data-horizontal\\:h-full:where([data-orientation=horizontal]){height:100%}.tw\\:data-horizontal\\:h-px:where([data-orientation=horizontal]){height:1px}.tw\\:data-horizontal\\:w-auto:where([data-orientation=horizontal]){width:auto}.tw\\:data-horizontal\\:w-full:where([data-orientation=horizontal]){width:100%}.tw\\:data-horizontal\\:flex-col:where([data-orientation=horizontal]){flex-direction:column}.tw\\:data-vertical\\:my-px:where([data-orientation=vertical]){margin-block:1px}.tw\\:data-vertical\\:h-auto:where([data-orientation=vertical]){height:auto}.tw\\:data-vertical\\:h-full:where([data-orientation=vertical]){height:100%}.tw\\:data-vertical\\:min-h-40:where([data-orientation=vertical]){min-height:calc(calc(var(--spacing)) * 40)}.tw\\:data-vertical\\:w-1:where([data-orientation=vertical]){width:calc(calc(var(--spacing)) * 1)}.tw\\:data-vertical\\:w-auto:where([data-orientation=vertical]){width:auto}.tw\\:data-vertical\\:w-full:where([data-orientation=vertical]){width:100%}.tw\\:data-vertical\\:w-px:where([data-orientation=vertical]){width:1px}.tw\\:data-vertical\\:flex-col:where([data-orientation=vertical]){flex-direction:column}.tw\\:data-vertical\\:items-stretch:where([data-orientation=vertical]){align-items:stretch}.tw\\:data-vertical\\:self-stretch:where([data-orientation=vertical]){align-self:stretch}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:mt-0 [data-lexical-editor=true]>blockquote{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:border-s-0 [data-lexical-editor=true]>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:ps-0 [data-lexical-editor=true]>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:font-normal [data-lexical-editor=true]>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:text-foreground [data-lexical-editor=true]>blockquote{color:var(--foreground)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\"true\\"\\]\\>blockquote\\]\\:not-italic [data-lexical-editor=true]>blockquote{font-style:normal}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:mt-0 [data-lexical-editor=\\"true\\"]>blockquote{margin-top:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:border-s-0 [data-lexical-editor=\\"true\\"]>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:ps-0 [data-lexical-editor=\\"true\\"]>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:font-normal [data-lexical-editor=\\"true\\"]>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:text-foreground [data-lexical-editor=\\"true\\"]>blockquote{color:var(--foreground)}.tw\\:\\[\\&_\\[data-lexical-editor\\=\\\\\\"true\\\\\\"\\]\\>blockquote\\]\\:not-italic [data-lexical-editor=\\"true\\"]>blockquote{font-style:normal}.tw\\:\\[\\&_a\\]\\:underline a{text-decoration-line:underline}.tw\\:\\[\\&_a\\]\\:underline-offset-3 a{text-underline-offset:3px}@media (hover:hover){.tw\\:\\[\\&_a\\]\\:hover\\:text-foreground a:hover{color:var(--foreground)}}.tw\\:\\[\\&_p\\]\\:my-0 p{margin-block:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&_p\\:not\\(\\:last-child\\)\\]\\:mb-4 p:not(:last-child){margin-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_s\\]\\:text-destructive s{color:var(--destructive)}.tw\\:\\[\\&_s\\]\\:line-through s{text-decoration-line:line-through}.tw\\:\\[\\&_svg\\]\\:pointer-events-none svg{pointer-events:none}.tw\\:\\[\\&_svg\\]\\:size-4 svg{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_svg\\]\\:shrink-0 svg{flex-shrink:0}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3\\.5 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&_svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4 svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&_tr\\]\\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.tw\\:\\[\\&_tr\\:last-child\\]\\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.tw\\:\\[\\&_u\\]\\:font-semibold u{--tw-font-weight:var(--tw-font-weight-semibold);font-weight:var(--tw-font-weight-semibold)}.tw\\:\\[\\&_u\\]\\:text-success-foreground u{color:var(--success-foreground)}.tw\\:\\[\\&_u\\]\\:no-underline u{text-decoration-line:none}.tw\\:\\[\\&\\:has\\(\\[role\\=checkbox\\]\\)\\]\\:pe-0:has([role=checkbox]){padding-inline-end:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\.border-b\\]\\:pb-2.border-b{padding-bottom:calc(calc(var(--spacing)) * 2)}.tw\\:\\[\\.border-b\\]\\:pb-4.border-b{padding-bottom:calc(calc(var(--spacing)) * 4)}.tw\\:group-data-\\[size\\=sm\\]\\/card\\:\\[\\.border-b\\]\\:pb-3:is(:where(.tw\\:group\\/card)[data-size=sm] *).border-b{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:\\[\\.border-t\\]\\:pt-2.border-t{padding-top:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:px-2 *)[cmdk-group-heading]{padding-inline:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:py-1\\.5 *)[cmdk-group-heading]{padding-block:calc(calc(var(--spacing)) * 1.5)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-xs *)[cmdk-group-heading]{font-size:var(--tw-text-xs);line-height:var(--tw-leading,var(--tw-text-xs--line-height))}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:font-medium *)[cmdk-group-heading]{--tw-font-weight:var(--tw-font-weight-medium);font-weight:var(--tw-font-weight-medium)}:is(.tw\\:\\*\\*\\:\\[\\[cmdk-group-heading\\]\\]\\:text-muted-foreground *)[cmdk-group-heading]{color:var(--muted-foreground)}:is(.tw\\:\\*\\:\\[a\\]\\:underline>*):is(a){text-decoration-line:underline}:is(.tw\\:\\*\\:\\[a\\]\\:underline-offset-3>*):is(a){text-underline-offset:3px}@media (hover:hover){.tw\\:\\[a\\]\\:hover\\:bg-destructive\\/20:is(a):hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-destructive\\/20:is(a):hover{background-color:color-mix(in oklab, var(--destructive) 20%, transparent)}}.tw\\:\\[a\\]\\:hover\\:bg-muted:is(a):hover{background-color:var(--muted)}.tw\\:\\[a\\]\\:hover\\:bg-primary\\/80:is(a):hover{background-color:var(--primary)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-primary\\/80:is(a):hover{background-color:color-mix(in oklab, var(--primary) 80%, transparent)}}.tw\\:\\[a\\]\\:hover\\:bg-secondary\\/80:is(a):hover{background-color:var(--secondary)}@supports (color:color-mix(in lab, red, red)){.tw\\:\\[a\\]\\:hover\\:bg-secondary\\/80:is(a):hover{background-color:color-mix(in oklab, var(--secondary) 80%, transparent)}}.tw\\:\\[a\\]\\:hover\\:text-muted-foreground:is(a):hover{color:var(--muted-foreground)}:is(.tw\\:\\*\\:\\[a\\]\\:hover\\:text-foreground>*):is(a):hover{color:var(--foreground)}}:is(.tw\\:\\*\\:\\[img\\]\\:row-span-2>*):is(img){grid-row:span 2/span 2}:is(.tw\\:\\*\\:\\[img\\]\\:translate-y-0\\.5>*):is(img){--tw-translate-y:calc(calc(var(--spacing)) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.tw\\:\\*\\:\\[img\\]\\:text-current>*):is(img){color:currentColor}:is(.tw\\:\\*\\:\\[img\\:first-child\\]\\:rounded-t-xl>*):is(img:first-child){border-top-left-radius:calc(var(--radius) * 1.4);border-top-right-radius:calc(var(--radius) * 1.4)}:is(.tw\\:\\*\\:\\[img\\:last-child\\]\\:rounded-b-xl>*):is(img:last-child){border-bottom-right-radius:calc(var(--radius) * 1.4);border-bottom-left-radius:calc(var(--radius) * 1.4)}:is(.tw\\:\\*\\:\\[img\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>*):is(img:not([class*=size-])){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:flex>*):is(span):last-child{display:flex}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:items-center>*):is(span):last-child{align-items:center}:is(.tw\\:\\*\\:\\[span\\]\\:last\\:gap-2>*):is(span):last-child{gap:calc(calc(var(--spacing)) * 2)}:is(.tw\\:\\*\\:\\[svg\\]\\:row-span-2>*):is(svg){grid-row:span 2/span 2}:is(.tw\\:\\*\\:\\[svg\\]\\:translate-y-0\\.5>*):is(svg){--tw-translate-y:calc(calc(var(--spacing)) * .5);translate:var(--tw-translate-x) var(--tw-translate-y)}:is(.tw\\:\\*\\:\\[svg\\]\\:text-current>*):is(svg){color:currentColor}:is(.tw\\:focus\\:\\*\\:\\[svg\\]\\:text-accent-foreground:focus>*):is(svg){color:var(--accent-foreground)}:is(.tw\\:data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)}:is(.tw\\:data-\\[variant\\=destructive\\]\\:\\*\\:\\[svg\\]\\:text-destructive\\![data-variant=destructive]>*):is(svg){color:var(--destructive)!important}:is(.tw\\:data-selected\\:\\*\\:\\[svg\\]\\:text-foreground:where([data-selected=true])>*):is(svg){color:var(--foreground)}:is(.tw\\:\\*\\:\\[svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>*):is(svg:not([class*=size-])){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-s-none>:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:rounded-t-none>:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-s-0>:not(:first-child){border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:first-child\\)\\]\\:border-t-0>:not(:first-child){border-top-style:var(--tw-border-style);border-top-width:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-e-none>:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.tw\\:\\[\\&\\>\\*\\:not\\(\\:last-child\\)\\]\\:rounded-b-none>:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.tw\\:has-\\[select\\[aria-hidden\\=true\\]\\:last-child\\]\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:last-of-type\\]\\:rounded-e-lg:has(:is(select[aria-hidden=true]:last-child))>[data-slot=select-trigger]:last-of-type{border-start-end-radius:var(--radius);border-end-end-radius:var(--radius)}.tw\\:\\[\\&\\>\\[data-slot\\=select-trigger\\]\\:not\\(\\[class\\*\\=w-\\]\\)\\]\\:w-fit>[data-slot=select-trigger]:not([class*=w-]){width:fit-content}.tw\\:\\[\\&\\>\\[data-slot\\]\\:not\\(\\:has\\(\\~\\[data-slot\\]\\)\\)\\]\\:rounded-e-lg\\!>[data-slot]:not(:has(~[data-slot])){border-start-end-radius:var(--radius)!important;border-end-end-radius:var(--radius)!important}.tw\\:\\[\\&\\>\\[data-slot\\]\\:not\\(\\:has\\(\\~\\[data-slot\\]\\)\\)\\]\\:rounded-b-lg\\!>[data-slot]:not(:has(~[data-slot])){border-bottom-right-radius:var(--radius)!important;border-bottom-left-radius:var(--radius)!important}.tw\\:\\[\\&\\>a\\]\\:underline>a{text-decoration-line:underline}.tw\\:\\[\\&\\>a\\]\\:underline-offset-4>a{text-underline-offset:4px}.tw\\:\\[\\&\\>a\\:hover\\]\\:text-primary>a:hover{color:var(--primary)}.tw\\:\\[\\&\\>blockquote\\]\\:my-0>blockquote{margin-block:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:border-s-0>blockquote{border-inline-start-style:var(--tw-border-style);border-inline-start-width:0}.tw\\:\\[\\&\\>blockquote\\]\\:p-0>blockquote{padding:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:ps-0>blockquote{padding-inline-start:calc(calc(var(--spacing)) * 0)}.tw\\:\\[\\&\\>blockquote\\]\\:font-normal>blockquote{--tw-font-weight:var(--tw-font-weight-normal);font-weight:var(--tw-font-weight-normal)}.tw\\:\\[\\&\\>blockquote\\]\\:text-foreground>blockquote{color:var(--foreground)}.tw\\:\\[\\&\\>blockquote\\]\\:not-italic>blockquote{font-style:normal}.tw\\:\\[\\&\\>input\\]\\:flex-1>input{flex:1}.tw\\:has-\\[\\>\\[data-align\\=block-end\\]\\]\\:\\[\\&\\>input\\]\\:pt-3:has(>[data-align=block-end])>input{padding-top:calc(calc(var(--spacing)) * 3)}.tw\\:has-\\[\\>\\[data-align\\=block-start\\]\\]\\:\\[\\&\\>input\\]\\:pb-3:has(>[data-align=block-start])>input{padding-bottom:calc(calc(var(--spacing)) * 3)}.tw\\:has-\\[\\>\\[data-align\\=inline-end\\]\\]\\:\\[\\&\\>input\\]\\:pe-1\\.5:has(>[data-align=inline-end])>input{padding-inline-end:calc(calc(var(--spacing)) * 1.5)}.tw\\:has-\\[\\>\\[data-align\\=inline-start\\]\\]\\:\\[\\&\\>input\\]\\:ps-1\\.5:has(>[data-align=inline-start])>input{padding-inline-start:calc(calc(var(--spacing)) * 1.5)}.tw\\:\\[\\&\\>kbd\\]\\:rounded-\\[calc\\(var\\(--radius\\)-5px\\)\\]>kbd{border-radius:calc(var(--radius) - 5px)}.tw\\:\\[\\&\\>li\\]\\:mt-2>li{margin-top:calc(calc(var(--spacing)) * 2)}.tw\\:\\[\\&\\>span\\:last-child\\]\\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tw\\:\\[\\&\\>svg\\]\\:pointer-events-none>svg{pointer-events:none}.tw\\:\\[\\&\\>svg\\]\\:hidden>svg{display:none}.tw\\:\\[\\&\\>svg\\]\\:size-3\\!>svg{width:calc(calc(var(--spacing)) * 3)!important;height:calc(calc(var(--spacing)) * 3)!important}.tw\\:\\[\\&\\>svg\\]\\:size-3\\.5>svg{width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&\\>svg\\]\\:size-4>svg{width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>svg\\]\\:shrink-0>svg{flex-shrink:0}.tw\\:\\[\\&\\>svg\\]\\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.tw\\:group-has-data-\\[size\\=lg\\]\\/avatar-group\\:\\[\\&\\>svg\\]\\:size-5:is(:where(.tw\\:group\\/avatar-group):has([data-size=lg]) *)>svg{width:calc(calc(var(--spacing)) * 5);height:calc(calc(var(--spacing)) * 5)}.tw\\:group-has-data-\\[size\\=sm\\]\\/avatar-group\\:\\[\\&\\>svg\\]\\:size-3:is(:where(.tw\\:group\\/avatar-group):has([data-size=sm]) *)>svg{width:calc(calc(var(--spacing)) * 3);height:calc(calc(var(--spacing)) * 3)}.tw\\:group-data-\\[size\\=default\\]\\/avatar\\:\\[\\&\\>svg\\]\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=default] *)>svg,.tw\\:group-data-\\[size\\=lg\\]\\/avatar\\:\\[\\&\\>svg\\]\\:size-2:is(:where(.tw\\:group\\/avatar)[data-size=lg] *)>svg{width:calc(calc(var(--spacing)) * 2);height:calc(calc(var(--spacing)) * 2)}.tw\\:group-data-\\[size\\=sm\\]\\/avatar\\:\\[\\&\\>svg\\]\\:hidden:is(:where(.tw\\:group\\/avatar)[data-size=sm] *)>svg,.tw\\:\\[\\&\\>svg\\:last-child\\]\\:hidden>svg:last-child{display:none}.tw\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-3\\.5>svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 3.5);height:calc(calc(var(--spacing)) * 3.5)}.tw\\:\\[\\&\\>svg\\:not\\(\\[class\\*\\=size-\\]\\)\\]\\:size-4>svg:not([class*=size-]){width:calc(calc(var(--spacing)) * 4);height:calc(calc(var(--spacing)) * 4)}.tw\\:\\[\\&\\>tr\\]\\:last\\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.tw\\:\\[\\&\\[align\\=center\\]\\]\\:text-center[align=center]{text-align:center}.tw\\:\\[\\&\\[align\\=right\\]\\]\\:text-right[align=right]{text-align:right}.tw\\:\\[\\&\\[aria-orientation\\=horizontal\\]\\>div\\]\\:rotate-90[aria-orientation=horizontal]>div{rotate:90deg}[data-side=primary][data-collapsible=offcanvas] .tw\\:\\[\\[data-side\\=primary\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-end-2{inset-inline-end:calc(calc(var(--spacing)) * -2)}[data-side=primary][data-state=collapsed] .tw\\:\\[\\[data-side\\=primary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize{cursor:e-resize}[data-side=primary][data-state=collapsed] .tw\\:rtl\\:\\[\\[data-side\\=primary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:w-resize}[data-side=secondary][data-collapsible=offcanvas] .tw\\:\\[\\[data-side\\=secondary\\]\\[data-collapsible\\=offcanvas\\]_\\&\\]\\:-start-2{inset-inline-start:calc(calc(var(--spacing)) * -2)}[data-side=secondary][data-state=collapsed] .tw\\:\\[\\[data-side\\=secondary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-w-resize{cursor:w-resize}[data-side=secondary][data-state=collapsed] .tw\\:rtl\\:\\[\\[data-side\\=secondary\\]\\[data-state\\=collapsed\\]_\\&\\]\\:cursor-e-resize:where(:dir(rtl),[dir=rtl],[dir=rtl] *){cursor:e-resize}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-cyrillic-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-cyrillic-wght-normal.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-greek-wght-normal.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-vietnamese-wght-normal.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(./files/ibm-plex-sans-latin-wght-normal.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.light,:root{--radius:.625rem;--spacing:.25rem;--background:oklch(100% 0 0);--foreground:oklch(13.71% .036 258.53);--card:oklch(100% 0 0);--card-foreground:oklch(13.71% .036 258.53);--popover:oklch(98.43% .0018 248.56);--popover-foreground:oklch(13.71% .036 258.53);--primary:oklch(20.79% .0399 265.73);--primary-foreground:oklch(98.38% .0036 248.23);--secondary:oklch(95.89% .011 248.06);--secondary-foreground:oklch(20.79% .0399 265.73);--muted:oklch(95.89% .011 248.06);--muted-foreground:oklch(55.47% .0408 257.45);--accent:oklch(95.89% .011 248.06);--accent-foreground:oklch(20.79% .0399 265.73);--destructive:oklch(63.69% .2077 25.32);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(62.7% .194 149.214);--diff-deleted:oklch(57.7% .245 27.325);--warning:oklch(84% .16 84);--warning-foreground:oklch(28% .07 46);--border:oklch(92.9% .0127 255.58);--input:oklch(92.9% .0127 255.58);--ring:oklch(13.71% .036 258.53);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.43% .0018 248.56);--sidebar-foreground:oklch(13.71% .036 258.53);--sidebar-primary:oklch(20.79% .0399 265.73);--sidebar-primary-foreground:oklch(98.38% .0036 248.23);--sidebar-accent:oklch(95.89% .011 248.06);--sidebar-accent-foreground:oklch(20.79% .0399 265.73);--sidebar-border:oklch(92.9% .0127 255.58);--sidebar-ring:oklch(13.71% .036 258.53)}.dark{--background:oklch(13.71% .036 258.53);--foreground:oklch(98.38% .0036 248.23);--card:oklch(13.71% .036 258.53);--card-foreground:oklch(98.38% .0036 248.23);--popover:oklch(13.71% .036 258.53);--popover-foreground:oklch(98.38% .0036 248.23);--primary:oklch(98.38% .0036 248.23);--primary-foreground:oklch(20.79% .0399 265.73);--secondary:oklch(28% .037 259.98);--secondary-foreground:oklch(98.38% .0036 248.23);--muted:oklch(28% .037 259.98);--muted-foreground:oklch(71.07% .0351 256.8);--accent:oklch(28% .037 259.98);--accent-foreground:oklch(98.38% .0036 248.23);--destructive:oklch(39.6% .1331 25.71);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(79.2% .209 151.711);--diff-deleted:oklch(70.4% .191 22.216);--warning:oklch(41% .11 46);--warning-foreground:oklch(99% .02 95);--border:oklch(44.54% .0374 257.3);--input:oklch(44.54% .0374 257.3);--ring:oklch(86.88% .0199 252.89);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(13.71% .036 258.53);--sidebar-foreground:oklch(71.07% .0351 256.8);--sidebar-primary:oklch(98.38% .0036 248.23);--sidebar-primary-foreground:oklch(20.79% .0399 265.73);--sidebar-accent:oklch(28% .037 259.98);--sidebar-accent-foreground:oklch(71.07% .0351 256.8);--sidebar-border:oklch(28% .037 259.98);--sidebar-ring:oklch(86.88% .0199 252.89)}.paratext-light{--background:oklch(100% 0 0);--foreground:oklch(15.3% .006 107.1);--card:oklch(100% 0 0);--card-foreground:oklch(15.3% .006 107.1);--popover:oklch(100% 0 0);--popover-foreground:oklch(15.3% .006 107.1);--primary:oklch(55.5% .163 48.998);--primary-foreground:oklch(98.7% .022 95.277);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.6% .005 106.5);--muted-foreground:oklch(58% .031 107.3);--accent:oklch(96.6% .005 106.5);--accent-foreground:oklch(22.8% .013 107.4);--destructive:oklch(57.7% .245 27.325);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(62.7% .194 149.214);--diff-deleted:oklch(57.7% .245 27.325);--warning:oklch(84% .16 84);--warning-foreground:oklch(28% .07 46);--border:oklch(93% .007 106.5);--input:oklch(93% .007 106.5);--ring:oklch(73.7% .021 106.9);--chart-1:oklch(88% .011 106.6);--chart-2:oklch(58% .031 107.3);--chart-3:oklch(46.6% .025 107.3);--chart-4:oklch(39.4% .023 107.4);--chart-5:oklch(28.6% .016 107.4);--sidebar:oklch(98.8% .003 106.5);--sidebar-foreground:oklch(15.3% .006 107.1);--sidebar-primary:oklch(66.6% .179 58.318);--sidebar-primary-foreground:oklch(98.7% .022 95.277);--sidebar-accent:oklch(96.6% .005 106.5);--sidebar-accent-foreground:oklch(22.8% .013 107.4);--sidebar-border:oklch(93% .007 106.5);--sidebar-ring:oklch(73.7% .021 106.9)}.paratext-dark{--background:oklch(15.3% .006 107.1);--foreground:oklch(98.8% .003 106.5);--card:oklch(22.8% .013 107.4);--card-foreground:oklch(98.8% .003 106.5);--popover:oklch(22.8% .013 107.4);--popover-foreground:oklch(98.8% .003 106.5);--primary:oklch(47.3% .137 46.201);--primary-foreground:oklch(98.7% .022 95.277);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(28.6% .016 107.4);--muted-foreground:oklch(73.7% .021 106.9);--accent:oklch(28.6% .016 107.4);--accent-foreground:oklch(98.8% .003 106.5);--destructive:oklch(70.4% .191 22.216);--destructive-foreground:oklch(98.38% .0036 248.23);--success-foreground:oklch(79.2% .209 151.711);--diff-deleted:oklch(70.4% .191 22.216);--warning:oklch(41% .11 46);--warning-foreground:oklch(99% .02 95);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(58% .031 107.3);--chart-1:oklch(88% .011 106.6);--chart-2:oklch(58% .031 107.3);--chart-3:oklch(46.6% .025 107.3);--chart-4:oklch(39.4% .023 107.4);--chart-5:oklch(28.6% .016 107.4);--sidebar:oklch(22.8% .013 107.4);--sidebar-foreground:oklch(98.8% .003 106.5);--sidebar-primary:oklch(76.9% .188 70.08);--sidebar-primary-foreground:oklch(27.9% .077 45.635);--sidebar-accent:oklch(28.6% .016 107.4);--sidebar-accent-foreground:oklch(98.8% .003 106.5);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(58% .031 107.3)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:" ";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:" ";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0));filter:blur(var(--tw-enter-blur,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0));filter:blur(var(--tw-exit-blur,0))}} `,"after-all"); //# sourceMappingURL=index.cjs.map diff --git a/lib/platform-bible-react/dist/index.cjs.map b/lib/platform-bible-react/dist/index.cjs.map index 499f93fac5e..6a4b013986c 100644 --- a/lib/platform-bible-react/dist/index.cjs.map +++ b/lib/platform-bible-react/dist/index.cjs.map @@ -1 +1 @@ -{"version":3,"file":"index.cjs","sources":["../src/components/shadcn-ui/textarea.tsx","../src/components/shared/book-item.component.tsx","../src/utils/keyboard.util.ts","../src/context/shrink-step.context.ts","../src/hooks/use-interaction-modality.hook.ts","../src/components/advanced/toolbar-compound-label/toolbar-compound-label.component.tsx","../src/components/shared/book-item.utils.ts","../src/components/advanced/recent-searches.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.navigation.ts","../src/components/advanced/book-chapter-control/book-chapter-control.utils.ts","../src/components/advanced/book-chapter-control/numbered-item-grid.component.tsx","../src/components/advanced/book-chapter-control/chapter-grid.component.tsx","../src/components/advanced/book-chapter-control/verse-grid.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.component.tsx","../src/components/advanced/book-chapter-control/book-chapter-control.types.ts","../src/components/basics/combo-box.component.tsx","../src/components/basics/chapter-range-selector.component.tsx","../src/components/advanced/book-selector.component.tsx","../../../node_modules/@lexical/react/LexicalComposerContext.prod.mjs","../../../node_modules/@lexical/react/LexicalComposer.prod.mjs","../../../node_modules/@lexical/react/LexicalOnChangePlugin.prod.mjs","../src/components/advanced/editor/themes/editor-theme.ts","../src/components/advanced/editor/nodes.ts","../../../node_modules/react-error-boundary/dist/react-error-boundary.js","../../../node_modules/@lexical/react/LexicalErrorBoundary.prod.mjs","../../../node_modules/@lexical/react/useLexicalEditable.prod.mjs","../../../node_modules/@lexical/selection/LexicalSelection.prod.mjs","../../../node_modules/@lexical/utils/LexicalUtils.prod.mjs","../../../node_modules/@lexical/extension/LexicalExtension.prod.mjs","../../../node_modules/@lexical/react/LexicalReactProviderExtension.prod.mjs","../../../node_modules/@lexical/text/LexicalText.prod.mjs","../../../node_modules/@lexical/dragon/LexicalDragon.prod.mjs","../../../node_modules/@lexical/react/LexicalRichTextPlugin.prod.mjs","../../../node_modules/@lexical/react/LexicalAutoFocusPlugin.prod.mjs","../../../node_modules/@lexical/react/LexicalClearEditorPlugin.prod.mjs","../../../node_modules/@lexical/react/LexicalContentEditable.prod.mjs","../src/components/advanced/editor/editor-ui/content-editable.tsx","../src/components/advanced/editor/context/toolbar-context.tsx","../src/components/advanced/editor/editor-hooks/use-modal.tsx","../src/components/advanced/editor/plugins/toolbar/toolbar-plugin.tsx","../src/components/advanced/editor/editor-hooks/use-update-toolbar.ts","../src/components/advanced/editor/plugins/toolbar/font-format-toolbar-plugin.tsx","../src/components/advanced/editor/plugins.tsx","../src/components/advanced/editor/editor.tsx","../src/components/advanced/editor/editor-utils.ts","../src/components/basics/cancel-accept-buttons.component.tsx","../src/components/advanced/comment-list/conflict-note-card.types.ts","../src/components/advanced/comment-list/comment-list.utils.ts","../src/components/advanced/comment-editor/comment-editor.component.tsx","../src/components/advanced/comment-editor/comment-editor.types.ts","../src/components/advanced/comment-list/comment-list.types.ts","../src/components/shadcn-ui/card.tsx","../src/components/basics/disabled-tooltip-wrapper.component.tsx","../src/components/shadcn-ui/avatar.tsx","../src/components/advanced/comment-list/comment-item.component.tsx","../src/components/advanced/comment-list/resolve-check-button.component.tsx","../src/components/advanced/comment-list/comment-thread.component.tsx","../src/components/advanced/comment-list/conflict-diff.tsx","../src/components/advanced/comment-list/conflict-note-card.component.tsx","../src/components/advanced/comment-list/conflict-thread-summary.component.tsx","../src/components/advanced/comment-list/use-conflict-resolution.hook.ts","../src/components/advanced/comment-list/conflict-thread.component.tsx","../src/components/advanced/comment-list/comment-list.component.tsx","../src/components/advanced/content-zoom-root.component.tsx","../src/components/advanced/data-table/data-table-column-toggle.component.tsx","../src/components/shadcn-ui/select.tsx","../src/components/advanced/data-table/data-table-pagination.component.tsx","../src/components/advanced/data-table/data-table.component.tsx","../src/components/advanced/extension-marketplace/markdown-renderer.component.tsx","../src/components/basics/error-dump.component.tsx","../src/components/advanced/error-popover.component.tsx","../src/components/advanced/extension-marketplace/filter-dropdown.component.tsx","../src/components/advanced/extension-marketplace/more-info.component.tsx","../src/components/advanced/extension-marketplace/version-history.component.tsx","../src/components/advanced/extension-marketplace/footer.component.tsx","../src/components/advanced/filter.component.tsx","../src/components/basics/undo-redo-buttons.component.tsx","../src/components/basics/editor-keyboard-shortcuts.component.tsx","../src/components/advanced/footnote-editor/footnote-caller-dropdown.component.tsx","../src/components/advanced/footnote-editor/footnote-type-dropdown.component.tsx","../src/components/advanced/marker-menu.component.tsx","../src/components/advanced/footnote-editor/footnote-editor.utils.ts","../src/components/advanced/footnote-editor/footnote-editor.component.tsx","../src/components/advanced/footnote-editor/footnote-editor.types.ts","../src/components/advanced/footnotes/footnote-item.component.tsx","../src/components/advanced/footnotes/footnote-list.component.tsx","../src/components/advanced/inventory/occurrences-table.component.tsx","../src/components/shadcn-ui/checkbox.tsx","../src/components/advanced/inventory/inventory-columns.tsx","../src/components/advanced/inventory/inventory-utils.ts","../src/components/advanced/inventory/inventory.component.tsx","../src/components/shadcn-ui/sidebar.tsx","../src/components/advanced/settings-components/settings-sidebar.component.tsx","../src/components/advanced/settings-components/settings-sidebar-content-search.component.tsx","../src/components/advanced/scripture-results-viewer/scripture-results-viewer.component.tsx","../src/components/advanced/scope-selector/select-books-picker.component.tsx","../src/components/basics/disabled-action-tooltip.component.tsx","../src/components/advanced/scope-selector/section-button.component.tsx","../src/components/advanced/scope-selector/select-books.component.tsx","../src/components/advanced/scope-selector/select-books.types.ts","../src/components/advanced/scope-selector/scope-selector.component.tsx","../src/components/advanced/scroll-group-selector.component.tsx","../src/components/advanced/settings-components/settings-list.component.tsx","../src/components/advanced/menus/menu.util.ts","../src/components/advanced/menus/menu-icon.component.tsx","../src/components/advanced/menus/tab-dropdown-menu.component.tsx","../src/hooks/use-shrink-step.hook.ts","../src/components/advanced/tab-toolbar/tab-toolbar-container.component.tsx","../src/components/advanced/tab-toolbar/tab-toolbar.component.tsx","../src/components/advanced/tab-toolbar/tab-floating-menu.component.tsx","../src/components/basics/tabs-vertical.tsx","../src/components/advanced/tab-navigation-content-search.component.tsx","../src/components/shadcn-ui/menubar.tsx","../src/components/advanced/menus/platform-menubar.component.tsx","../src/components/advanced/toolbar.component.tsx","../src/components/advanced/ui-language-selector.component.tsx","../src/components/advanced/interface-language-picker/interface-language-picker.component.tsx","../src/components/basics/smart-label.component.tsx","../src/components/basics/checkbox-group.component.tsx","../src/components/basics/destructive-key-confirmation.component.tsx","../src/components/basics/results-card.component.tsx","../src/components/basics/text-field.component.tsx","../src/components/basics/wizard-stepper/wizard-stepper.component.tsx","../src/components/shadcn-ui/context-menu.tsx","../src/components/shadcn-ui/drawer.tsx","../src/components/shadcn-ui/progress.tsx","../src/components/shadcn-ui/sonner.tsx","../src/components/shadcn-ui/slider.tsx","../src/components/shadcn-ui/switch.tsx","../src/components/shadcn-ui/tabs.tsx","../src/hooks/use-event.hook.ts","../src/hooks/use-event-async.hook.ts","../src/hooks/use-promise.hook.ts","../src/hooks/use-retryable-promise.hook.ts","../src/hooks/use-stylesheet.hook.ts","../src/hooks/use-extra-valid-markers.hook.ts","../src/hooks/use-view-visibility.hook.ts","../src/hooks/use-run-when-visible.hook.ts","../src/hooks/use-tab-icon-selection.hook.ts","../src/context/shrink-step-override.component.tsx","../src/components/tooltip-delay.ts"],"sourcesContent":["import React from 'react';\n\nimport { cn } from '@/utils/shadcn-ui/utils';\n\n// CUSTOM: Added TSDoc with link to shadcn/ui documentation for this component\n/**\n * Displays a form textarea or a component that looks like a textarea. This component is from Shadcn\n * UI.\n *\n * @see Shadcn UI Documentation: {@link https://ui.shadcn.com/docs/components/textarea}\n */\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n \n );\n}\n\nexport { Textarea };\n","import { CommandItem } from '@/components/shadcn-ui/command';\nimport { getLocalizedBookId, getLocalizedBookName } from '@/components/shared/book.utils';\nimport { LIST_ITEM_KEYBOARD_FOCUS_RING } from '@/utils/focus.util';\nimport { cn } from '@/utils/shadcn-ui/utils';\nimport { Canon } from '@sillsdev/scripture';\nimport { Check } from 'lucide-react';\nimport { Section } from 'platform-bible-utils';\nimport { MouseEvent, Ref, useMemo, useRef } from 'react';\n\ntype BookItemProps = {\n /** Forwarded to the underlying CommandItem (a ` ` rendered by cmdk). */\n ref?: Ref\n }\n />\n );\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/editor/context/toolbar-context.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\n'use client';\n\nimport { createContext, ReactNode, useContext, useMemo } from 'react';\nimport { LexicalEditor } from 'lexical';\n\nconst Context = createContext<\n | {\n activeEditor: LexicalEditor;\n $updateToolbar: () => void;\n blockType: string;\n setBlockType: (blockType: string) => void;\n showModal: (title: string, showModal: (onClose: () => void) => ReactNode) => void;\n }\n | undefined\n>(undefined);\n\nexport function ToolbarContext({\n activeEditor,\n $updateToolbar,\n blockType,\n setBlockType,\n showModal,\n children,\n}: {\n activeEditor: LexicalEditor;\n $updateToolbar: () => void;\n blockType: string;\n setBlockType: (blockType: string) => void;\n showModal: (title: string, showModal: (onClose: () => void) => ReactNode) => void;\n children: ReactNode;\n}) {\n const contextValue = useMemo(\n () => ({\n activeEditor,\n $updateToolbar,\n blockType,\n setBlockType,\n showModal,\n }),\n [activeEditor, $updateToolbar, blockType, setBlockType, showModal],\n );\n\n return;\n /** The book ID (e.g., 'GEN', 'EXO') */\n bookId: string;\n /** Whether this book is currently selected */\n isSelected?: boolean;\n /** Callback function to handle book selection/deselection */\n onSelect?: (bookId: string) => void;\n /** Optional custom mouse down handler */\n onMouseDown?: (e: MouseEvent) => void;\n /** The section this book belongs to */\n section: Section;\n /** Additional CSS classes for the wrapper CommandItem */\n className?: string;\n /** Whether to show the check icon (for multiselect mode) */\n showCheck?: boolean;\n /**\n * Optional map of localized book IDs/short names and full names. Key is the (English) book ID,\n * value contains localized versions of the ID and full book name\n */\n localizedBookNames?: Map ;\n /** Value to use for Command component matching */\n commandValue?: string;\n /**\n * When true, the item paints no keyboard focus ring even while cmdk still marks it\n * `data-selected`. Set it while a control outside the list holds focus, so the list and that\n * control never show a focus indicator at the same time — two at once leave the user no way to\n * tell which surface the next keystroke reaches.\n *\n * Suppresses the paint, not the state: cmdk keeps its highlighted item, so the ring returns to\n * exactly where the user left it. Clearing the highlight instead would hand it to cmdk's\n * select-first-item fallback, which moves it rather than removing it.\n */\n suppressKeyboardHighlight?: boolean;\n /** When true, renders the item as disabled: suppresses onSelect and dims the visuals. */\n disabled?: boolean;\n /**\n * Short localized label naming why this item is greyed (e.g. \"Not in project\"). Passing a value\n * renders the item greyed but fully selectable — the state for an item that is reachable yet\n * outside the current context, such as a book present in an open resource but not in the active\n * project.\n *\n * Distinct from `disabled`, which also suppresses selection; `disabled` takes precedence and a\n * disabled item is never additionally dimmed. The label renders as visible text beside the book\n * id, so the greying is never a colour-only signal and stays readable while the row is\n * highlighted — the state and its explanation are one prop precisely so they cannot drift apart.\n *\n * An empty string counts as no reason, so the item renders undimmed. Callers resolving this from\n * a localized string should fall back with `||` rather than `??`, since `??` passes an empty\n * translation through and would silently drop the dimming.\n */\n dimmedReason?: string;\n /**\n * Complete localized sentence describing why this item is greyed, e.g. \"Hebrews is not in this\n * project\" — used as the item's accessible name so a screen reader hears a full sentence rather\n * than the bare `dimmedReason` label. Resolve it from a localized template that places the book\n * name itself (`formatReplacementString`) rather than concatenating around a fragment, so\n * translations control word order and punctuation.\n *\n * Ignored unless `dimmedReason` is also set. Falls back to `dimmedReason` when absent.\n */\n dimmedDescription?: string;\n};\n\n/**\n * A reusable component that represents a single book item in book selectors. The component shows\n * the book's localized name, its ID, and visually indicates its testament (OT/NT/DC/Extra) through\n * color coding.\n *\n * For simple selection, use the `onSelect` prop. For complex interactions (like shift-click range\n * selection), implement custom `onSelect` and `onMouseDown` handlers that manage the logic\n * externally.\n */\nexport function BookItem({\n ref,\n bookId,\n isSelected,\n onSelect,\n onMouseDown,\n section,\n className,\n showCheck = false,\n localizedBookNames,\n commandValue,\n suppressKeyboardHighlight = false,\n disabled = false,\n dimmedReason,\n dimmedDescription,\n}: BookItemProps) {\n const isMouseClick = useRef(false);\n\n const handleSelect = () => {\n if (disabled) return;\n if (!isMouseClick.current) {\n onSelect?.(bookId);\n }\n // Reset the mouse flag after a short delay\n setTimeout(() => {\n isMouseClick.current = false;\n }, 100);\n };\n\n const handleMouseDown = (e: MouseEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n isMouseClick.current = true;\n\n if (onMouseDown) {\n onMouseDown(e);\n } else {\n // If no custom mouse handler, fall back to calling onSelect\n onSelect?.(bookId);\n }\n };\n\n const bookDisplayName = useMemo(\n () => getLocalizedBookName(bookId, localizedBookNames),\n [bookId, localizedBookNames],\n );\n\n const bookDisplayId = useMemo(\n () => getLocalizedBookId(bookId, localizedBookNames),\n [bookId, localizedBookNames],\n );\n\n const isDimmed = !!dimmedReason && !disabled;\n // Built from the same localized values the row renders, not from the English canon name, so a\n // localized name is never announced next to an English one. Both fall back to English when the\n // caller passes no localized names, so the undimmed case is unchanged.\n const baseAriaLabel = `${bookDisplayName} (${bookDisplayId})`;\n // A dimmed row announces the caller's whole localized sentence instead of this name plus an\n // appended fragment: the qualifier's position, punctuation, and any inflection of the book name\n // belong to the translation, not to string concatenation here.\n const ariaLabel = isDimmed\n ? dimmedDescription || `${baseAriaLabel}, ${dimmedReason}`\n : baseAriaLabel;\n\n const commandItem = (\n svg:last-child]:hidden',\n className,\n disabled && 'tw:cursor-not-allowed tw:opacity-50',\n // Mirrors NumberedItemGrid's dimmed-vs-disabled split — same tokens, so chapter/verse cells\n // and book rows grey identically inside one popover: dimmed is presentation only, so it\n // never sets aria-disabled or blocks onSelect, and it yields to disabled. Restated under\n // data-selected so a dimmed row keeps its dimming while the keyboard highlight is on it,\n // rather than losing it to the suppression rule above.\n isDimmed &&\n 'tw:bg-muted/50 tw:text-muted-foreground/50 tw:data-selected:bg-muted/50 tw:data-selected:text-muted-foreground/50',\n )}\n >\n {showCheck && (\n \n );\n\n return (\n\n )}\n {bookDisplayName}\n {isDimmed && (\n // Visible rather than hover-only: cmdk never moves DOM focus onto an item (the input keeps\n // it and highlights via data-selected), so a tooltip would never open for a keyboard user.\n // Rendered text also survives the highlight, which recolours the row.\n {dimmedReason}\n )}\n \n {bookDisplayId}\n \n \n {commandItem}\n\n );\n}\n","/**\n * Shared keyboard primitives for components that implement their own keyboard navigation. Generic,\n * reusable key helpers belong here — arrow-key constants and guards, character classification — so\n * components don't each re-declare inline `'ArrowUp'` string literals and ad-hoc regexes.\n * Component-specific navigation math (2D grid arithmetic, for instance) belongs with that\n * component; the building blocks below are deliberately domain-agnostic.\n */\n\n/** The four keyboard arrow keys, matching `KeyboardEvent.key` values. */\nexport const ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'] as const;\n\n/** A keyboard `event.key` value for one of the four arrow keys. */\nexport type ArrowKey = (typeof ARROW_KEYS)[number];\n\n/**\n * Type guard narrowing an arbitrary keyboard `event.key` string to an {@link ArrowKey}, so callers\n * can hand `event.key` to arrow-key-typed helpers without a type assertion.\n */\nexport function isArrowKey(key: string): key is ArrowKey {\n return ARROW_KEYS.some((arrowKey) => arrowKey === key);\n}\n\n/**\n * Classifies a keyboard `event.key` as a single letter and/or digit. Used by components that route\n * typed characters into a search input while focus is elsewhere.\n *\n * Letters are matched script-agnostically (`\\p{L}`), so a translator typing Cyrillic, Greek,\n * Hebrew, or Devanagari reaches the search box the same way a Latin-script user does. Digits stay\n * ASCII on purpose: the Scripture reference parser only understands ASCII digits, so classifying\n * e.g. Arabic-Indic numerals as digits would route keystrokes into a query that cannot be parsed.\n *\n * @param key The keyboard `event.key` value.\n * @returns `isLetter` and `isDigit`, both false for named keys like `'Enter'` or `'ArrowUp'`.\n */\nexport function getKeyCharacterType(key: string) {\n const isLetter = /^\\p{L}$/u.test(key);\n const isDigit = /^[0-9]$/.test(key);\n return { isLetter, isDigit };\n}\n","import { createContext, useContext } from 'react';\n\n/**\n * Named shrink steps, ordered widest to narrowest. Consumers compare against these (`step >=\n * SHRINK_STEP.MINIMUM`), so the ascending order is part of the contract.\n *\n * Not every surface uses all four. `BookChapterControl` walks the whole ladder, while a control\n * with only one shorter form — the project selector, the paragraph style label — reads a single\n * boundary (`step >= SHRINK_STEP.MINIMUM`) and ignores the rest.\n */\nexport const SHRINK_STEP = Object.freeze({\n /** Full labels. */\n WIDE: 0,\n /** Abbreviated primary label form. */\n TIGHT: 1,\n /** Secondary field clipped with an ellipsis — CSS does this on its own. */\n TIGHTER: 2,\n /** Secondary field dropped entirely; primary field alone. */\n MINIMUM: 3,\n});\n\n/**\n * The shrink step published by the nearest toolbar root.\n *\n * Deliberately defaults to `SHRINK_STEP.WIDE` rather than throwing the way `useMenuContext` does:\n * every component that reads this is also usable standalone (a `BookChapterControl` in a dialog, a\n * story, a test), and those must keep rendering their full-width form when no toolbar is above\n * them.\n */\nexport const ShrinkStepContext = createContext(SHRINK_STEP.WIDE);\n\n/**\n * Reads the shrink step published by the nearest toolbar root.\n *\n * The value is resolved at the position of the component that calls this. A component that\n * _renders_ the provider sits above it and will always read the default — so anything that needs\n * the real step must be a child of the toolbar, not the thing that builds it.\n *\n * @returns The current step, or `SHRINK_STEP.WIDE` when there is no provider.\n */\nexport function useShrinkStepValue(): number {\n return useContext(ShrinkStepContext);\n}\n\n/**\n * A shrink step forced from outside, overriding what a toolbar would measure from its own width.\n *\n * Separate from {@link ShrinkStepContext} because the two answer different questions. A toolbar\n * _publishes_ to `ShrinkStepContext` and cannot read its own value back, and that context defaults\n * to `SHRINK_STEP.WIDE` rather than being unset — so a publisher reading it could never tell \"no\n * one is overriding me\" from \"someone is overriding me with the widest step\". This context is\n * `undefined` until something sets it, which is the distinction a publisher needs.\n *\n * Set it with {@link ShrinkStepOverride} rather than reaching for the provider directly.\n */\nexport const ShrinkStepOverrideContext = createContext (undefined);\n\n/**\n * Reads a shrink step forced from outside, if any.\n *\n * Toolbars that measure their own width call this and prefer its value over their measurement, so\n * stories and tests can pin a step in an environment with no layout engine. Components that only\n * _read_ a step have no use for this — they call {@link useShrinkStepValue} instead.\n *\n * @returns The overriding step, or `undefined` when nothing is overriding.\n */\nexport function useShrinkStepOverride(): number | undefined {\n return useContext(ShrinkStepOverrideContext);\n}\n","import { useEffect } from 'react';\nimport { trackInteractionModality } from '@/utils/focus.util';\n\n/**\n * Starts the document-wide tracking that `getLastInteractionModality` reads, for a component whose\n * behavior depends on whether the user last used the pointer or the keyboard.\n *\n * The underlying registration is idempotent, so calling this from several components costs one pair\n * of document listeners in total. It exists so that no consumer has to decide where to put the\n * call: registering from an effect keeps render pure, and the listeners are in place long before\n * any interaction can reach the component that mounted them.\n */\nexport function useInteractionModality() {\n useEffect(() => {\n trackInteractionModality();\n }, []);\n}\n","import { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { cn } from '@/utils/shadcn-ui/utils';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/shadcn-ui/tooltip';\nimport { useTruncationTooltip } from '@/hooks/use-truncation-tooltip.hook';\nimport { getLastInteractionModality } from '@/utils/focus.util';\nimport { useInteractionModality } from '@/hooks/use-interaction-modality.hook';\n\nexport type ToolbarCompoundLabelProps = {\n /** The field that identifies the item — a book abbreviation, project short name, marker code. */\n primary: ReactNode;\n /** The field that gives way first: clipped with an ellipsis, then dropped entirely. */\n secondary?: ReactNode;\n /**\n * Text placed between the two fields. Rendered as a real text node, so it survives into\n * `textContent` where a CSS `gap` would not — assertions and screen readers both read it.\n */\n separator?: string;\n /**\n * Render `secondary` before `primary`, for labels that read that way round — a project selector\n * shows `Translation Project 1 (TP1)`, full name first, short name last.\n */\n secondaryFirst?: boolean;\n /** Whether the secondary field is rendered at all. Defaults to `true`. */\n showSecondary?: boolean;\n /**\n * Whether what is rendered is only part of {@link ToolbarCompoundLabelProps.fullText}, so the\n * tooltip should open on hover even though nothing is visibly clipped. Set this when the primary\n * field is an abbreviation — `GEN` for `Genesis` — which CSS cannot detect.\n *\n * Defaults to true whenever the secondary field has been dropped.\n */\n isPartial?: boolean;\n /** The complete label. Shown in the tooltip whenever the rendered form is not the whole thing. */\n fullText: string;\n /** Additional classes for the label row. */\n className?: string;\n};\n\n/**\n * A two-field toolbar label that degrades predictably as its slot narrows: the secondary field\n * clips with an ellipsis, then disappears, leaving the primary field alone. A tooltip carries the\n * complete text whenever what is rendered is not all of it.\n *\n * The ellipsis step needs no JavaScript. Both fields can shrink, but the secondary is weighted to\n * absorb ~all of it, so it clips to nothing before the primary gives up a character — and the\n * primary keeps an ellipsis of its own rather than being cut mid-glyph by the trigger's\n * `overflow-hidden`. Only the abbreviation and dropped steps need the caller to say so.\n */\nexport function ToolbarCompoundLabel({\n primary,\n secondary,\n separator = ' ',\n secondaryFirst = false,\n showSecondary = true,\n isPartial,\n fullText,\n className,\n}: ToolbarCompoundLabelProps) {\n // Opens only when a field's text actually overflows its box, so a label that fits gets no\n // redundant tooltip. Both fields are watched: the secondary is weighted to give way first, but\n // once it has nothing left the primary is what clips, and that is exactly when the full text is\n // most worth offering.\n const {\n ref: secondaryRef,\n open: isSecondaryClipHovered,\n onPointerEnter: onSecondaryClipPointerEnter,\n onPointerLeave: onSecondaryClipPointerLeave,\n } = useTruncationTooltip ();\n const {\n ref: primaryRef,\n open: isPrimaryClipHovered,\n onPointerEnter: onPrimaryClipPointerEnter,\n onPointerLeave: onPrimaryClipPointerLeave,\n } = useTruncationTooltip ();\n\n // An abbreviated or dropped field is incomplete without being measurably clipped, so hover alone\n // has to open the tooltip. Same two-source pattern `project-selector.component.tsx` uses.\n const [isIncompleteHovered, setIsIncompleteHovered] = useState(false);\n\n // Keyboard reveal. These labels render inside a button or select trigger, so focus lands on that\n // ancestor and never on the span below — a React `onFocus` here would not fire. Without this the\n // shortened text is a pointer-only affordance: a keyboard user tabbing to an abbreviated\n // reference has no way at all to see what it stands for.\n const [isFocusRevealed, setIsFocusRevealed] = useState(false);\n const rootRef = useRef (\n // React's ref API requires `null` as the initial value for DOM refs.\n // eslint-disable-next-line no-null/no-null\n null,\n );\n\n const isSecondaryRendered = showSecondary && secondary !== undefined;\n const isShowingPartialLabel = isPartial ?? (secondary !== undefined && !showSecondary);\n\n useInteractionModality();\n\n useEffect(() => {\n const focusable = rootRef.current?.closest('button, [role=\"combobox\"], [tabindex]');\n if (!focusable) return undefined;\n\n const isClipped = (element: HTMLSpanElement | null) =>\n !!element && element.scrollWidth > element.clientWidth;\n\n const reveal = () => {\n // Only a keyboard arrival reveals — see `getLastInteractionModality`. A pointer user who just\n // dismissed a menu gets focus back without asking for an explanation of a label they can see.\n if (getLastInteractionModality() === 'pointer') return;\n // Same two sources as hover: a label that is short by construction, or one CSS has clipped.\n // Anything that already reads in full needs no tooltip on focus either.\n if (isShowingPartialLabel || isClipped(primaryRef.current) || isClipped(secondaryRef.current))\n setIsFocusRevealed(true);\n };\n const hide = () => setIsFocusRevealed(false);\n\n focusable.addEventListener('focus', reveal);\n focusable.addEventListener('blur', hide);\n return () => {\n focusable.removeEventListener('focus', reveal);\n focusable.removeEventListener('blur', hide);\n };\n }, [isShowingPartialLabel, primaryRef, secondaryRef]);\n\n const handlePointerEnter = useCallback(() => {\n if (isShowingPartialLabel) setIsIncompleteHovered(true);\n onPrimaryClipPointerEnter();\n if (isSecondaryRendered) onSecondaryClipPointerEnter();\n }, [\n isShowingPartialLabel,\n isSecondaryRendered,\n onPrimaryClipPointerEnter,\n onSecondaryClipPointerEnter,\n ]);\n\n // Wired to both pointer-leave and pointer-down. The press case is not redundant: these labels sit\n // inside popover and select triggers, and without it the tooltip stays open on top of the popover\n // the click just opened, because the pointer never \"leaves\".\n const closeTooltip = useCallback(() => {\n setIsIncompleteHovered(false);\n setIsFocusRevealed(false);\n onPrimaryClipPointerLeave();\n onSecondaryClipPointerLeave();\n }, [onPrimaryClipPointerLeave, onSecondaryClipPointerLeave]);\n\n // The open state is latched at event time, so a label that grows back to its full form while the\n // tooltip is up would otherwise keep showing a tooltip that now just repeats what is on screen.\n // Widening is exactly when that happens: the shrink step drops and `showSecondary` flips back on\n // under a pointer or focus that never moved.\n useEffect(() => {\n if (!isShowingPartialLabel) setIsIncompleteHovered(false);\n }, [isShowingPartialLabel]);\n\n const primaryNode = (\n \n {primary}\n \n );\n\n const secondaryNode = isSecondaryRendered ? (\n // Weighted to absorb essentially all of the shrinking, so the primary field only starts losing\n // characters once this one has none left.\n \n {secondary}\n \n ) : undefined;\n\n const [first, second] = secondaryFirst\n ? [secondaryNode, primaryNode]\n : [primaryNode, secondaryNode];\n\n return (\n // Nested TooltipProviders are harmless in Radix, so carrying our own means this works in any\n // host, including toolbars that never set one up.\n \n {/* `onOpenChange` is what makes this dismissable. A controlled Radix tooltip routes every\n close it decides on — Escape, an outside pointer press — through this callback, so\n without it the tooltip's own dismiss handler is a no-op AND its dismissable layer still\n calls `preventDefault()` on that Escape, swallowing the keypress from whatever popover\n sits underneath. Only closes are honoured; opening stays ours to decide. */}\n \n );\n}\n\nexport default ToolbarCompoundLabel;\n","import {\n ALL_ENGLISH_BOOK_NAMES,\n getLocalizedBookId,\n getLocalizedBookName,\n} from '@/components/shared/book.utils';\n\n/**\n * Builds the cmdk `CommandItem` value for a book row. Localized parts are included when they are\n * available because cmdk filters book rows by their value, so a query typed in the user's language\n * has to be able to match.\n *\n * Deliberately carries no chapter: a book row names a book and nothing more. Appending a chapter\n * here would spell a string {@link parseChapterFromItemValue} has to read as a chapter cell, which\n * is exactly the confusion the round-trip check there exists to prevent.\n */\nexport function generateCommandValue(\n bookId: string,\n localizedBookNames?: Map{\n if (!isOpen) closeTooltip();\n }}\n >\n \n\n \n {first}\n {/* Only between two rendered fields — never leading or trailing, which is what a\n naive \"is there a second slot\" check produces once one field is dropped. */}\n {first && second && (\n \n {separator}\n \n )}\n {second}\n \n \n{fullText} \n,\n): string {\n return `${bookId} ${ALL_ENGLISH_BOOK_NAMES[bookId]}${localizedBookNames ? ` ${getLocalizedBookId(bookId, localizedBookNames)} ${getLocalizedBookName(bookId, localizedBookNames)}` : ''}`;\n}\n\n/**\n * Builds the cmdk `CommandItem` value for one cell of the chapter grid.\n *\n * The format is deliberately **not** localized. The chapter grid renders its `CommandItem value`\n * from this function and `BookChapterControl` sets its controlled `commandValue` from it, so both\n * sides must produce byte-identical strings for cmdk to find the item to highlight. Localized parts\n * — which `generateCommandValue` adds for book rows, because cmdk filters those — would break the\n * match as soon as `localizedBookNames` is supplied.\n */\nexport function chapterItemValue(bookId: string, chapter: number): string {\n return `${bookId} ${ALL_ENGLISH_BOOK_NAMES[bookId] || ''} ${chapter}`;\n}\n\n/** Builds the cmdk `CommandItem` value for one cell of the verse grid. @see chapterItemValue */\nexport function verseItemValue(bookId: string, chapterNum: number, verse: number): string {\n return `${chapterItemValue(bookId, chapterNum)}:${verse}`;\n}\n\n/**\n * Reads the chapter number back out of a {@link chapterItemValue}, or `undefined` when the value\n * does not identify a chapter cell (a book row, or a verse cell — a verse value ends in digits too,\n * so the colon has to be excluded explicitly).\n *\n * Ending in digits is not sufficient evidence: several canon books have English names that end in a\n * number (`PS2` → \"Psalm 151\", `PS3` → \"Psalms 152-155\"), so a plain trailing-number match reads a\n * book row for one of those as a chapter cell. The candidate is therefore round-tripped through\n * {@link chapterItemValue} and only accepted when it reproduces the value byte for byte.\n */\nexport function parseChapterFromItemValue(value: string): number | undefined {\n if (value.includes(':')) return undefined;\n const match = /(\\d+)$/.exec(value);\n if (!match) return undefined;\n const chapter = parseInt(match[1], 10);\n const firstSpaceIndex = value.indexOf(' ');\n if (firstSpaceIndex < 0) return undefined;\n const bookId = value.slice(0, firstSpaceIndex);\n return value === chapterItemValue(bookId, chapter) ? chapter : undefined;\n}\n\n/**\n * Reads the verse number back out of a {@link verseItemValue}, or `undefined` when the value does\n * not identify a verse cell.\n *\n * The part before the colon has to be a chapter cell for the whole value to be a verse cell, so\n * this inherits {@link parseChapterFromItemValue}'s round-trip check.\n */\nexport function parseVerseFromItemValue(value: string): number | undefined {\n const match = /:(\\d+)$/.exec(value);\n if (!match) return undefined;\n const chapterPart = value.slice(0, value.length - match[0].length);\n if (parseChapterFromItemValue(chapterPart) === undefined) return undefined;\n return parseInt(match[1], 10);\n}\n\n/**\n * Value for the top-match row's `CommandItem`. It is a fixed sentinel rather than a\n * reference-shaped string so it can never collide with a chapter or verse cell's value, and so\n * parsing it yields neither a chapter nor a verse.\n */\nexport const TOP_MATCH_ITEM_VALUE = 'top-match';\n","import { Clock } from 'lucide-react';\nimport { useId, useRef, useState } from 'react';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuTrigger,\n} from '@/components/shadcn-ui/dropdown-menu';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/shadcn-ui/tooltip';\nimport { resolveLocalizedString } from '@/utils/localization.util';\nimport { cn } from '@/utils/shadcn-ui/utils';\n\nconst DEFAULT_ARIA_LABEL = 'Show recent searches';\nconst DEFAULT_GROUP_HEADING = 'Recent';\n\n/** Interface defining the properties for the RecentSearches component */\nexport interface RecentSearchesProps {\n /** Array of recent search items */\n recentSearches: T[];\n /** Callback when a recent search item is selected */\n onSearchItemSelect: (item: T) => void;\n /** Function to render each search item as a string for display */\n renderItem?: (item: T) => string;\n /** Function to create a unique key for each item */\n getItemKey?: (item: T) => string;\n /**\n * Accessible name for the trigger button, which is also rendered as the button's visible tooltip\n * text. Write it as user-visible microcopy (sentence case), not as a screen-reader-only phrase.\n *\n * Passing an empty string suppresses the tooltip AND leaves the icon-only button without an\n * accessible name, so prefer omitting the prop — which falls back to a sensible default — over\n * passing `''`.\n *\n * A value that is still a raw `%localization_key%` is treated as not-yet-localized and falls back\n * to the default, so a key can never reach the screen as tooltip text.\n */\n ariaLabel?: string;\n /**\n * Heading for the recent searches list. Rendered as the list's visible heading and used as its\n * accessible name, so a screen reader announces what the list is rather than a bare \"menu\". Falls\n * back to the default when omitted or still a raw `%localization_key%`.\n */\n groupHeading?: string;\n /** Optional ID for the dropdown menu content for accessibility */\n id?: string;\n /** Class name for styling the `DropdownMenuItem` for each recent search result */\n classNameForItems?: string;\n /**\n * Class name for the trigger button. Defaults to absolute positioning inside an input field. Pass\n * a custom value to render the button standalone (e.g. `\"tw:h-9 tw:w-9\"`)\n */\n buttonClassName?: string;\n /** Variant for the trigger button. Defaults to `\"ghost\"` */\n buttonVariant?: ButtonProps['variant'];\n /** Controlled open state of the dropdown menu. If provided, the component becomes controlled. */\n open?: boolean;\n /** Called when the open state changes. Required when `open` is provided. */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * Generic component that displays a button to show recent searches in a dropdown menu. Only renders\n * if there are recent searches available. Works with any data type T.\n */\nexport default function RecentSearches ({\n recentSearches,\n onSearchItemSelect,\n renderItem = (item) => String(item),\n getItemKey = (item) => String(item),\n ariaLabel,\n groupHeading,\n id,\n classNameForItems,\n buttonClassName = 'tw:absolute tw:end-0 tw:top-0 tw:h-full tw:px-3 tw:py-2',\n buttonVariant = 'ghost',\n open: openProp,\n onOpenChange,\n}: RecentSearchesProps ) {\n const [isOpenInternal, setIsOpenInternal] = useState(false);\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const headingId = useId();\n // Set while the list is closing, so the focus Radix restores to the trigger is not mistaken for\n // the user pointing at it. Read and cleared once, by the very next open request.\n const isRestoringFocusFromListRef = useRef(false);\n const isControlled = openProp !== undefined;\n const isOpen = isControlled ? openProp : isOpenInternal;\n // An empty string is a deliberate \"no label\" (documented on the prop), so only `undefined` and a\n // raw localization key fall back.\n const resolvedAriaLabel =\n ariaLabel === '' ? '' : resolveLocalizedString(ariaLabel, DEFAULT_ARIA_LABEL);\n const resolvedGroupHeading = resolveLocalizedString(groupHeading, DEFAULT_GROUP_HEADING);\n\n const setIsOpen = (value: boolean) => {\n if (!value) {\n // Radix hands focus back to this trigger as the list closes, and `TooltipTrigger` reads any\n // focus as a reason to open. The pointer is wherever the user clicked — a row of the list, or\n // outside it — and never on the button, so no `pointerleave` would ever arrive to close that\n // tooltip again: it would sit over the search input beside it until the button happened to\n // blur. Mark the close so the restore is ignored, and shut any tooltip that is already up.\n isRestoringFocusFromListRef.current = true;\n setIsTooltipOpen(false);\n }\n if (!isControlled) setIsOpenInternal(value);\n onOpenChange?.(value);\n };\n\n const handleTooltipOpenChange = (value: boolean) => {\n if (value && isRestoringFocusFromListRef.current) {\n // One-shot: a later hover or Tab is a real request and opens normally.\n isRestoringFocusFromListRef.current = false;\n return;\n }\n setIsTooltipOpen(value);\n };\n\n if (recentSearches.length === 0) {\n return undefined;\n }\n\n // Radix closes the list itself when an item is selected, which already routes through `setIsOpen`\n // and reports the close once. Closing it again here would report it twice per selection.\n const handleSearchItemSelect = (item: T) => {\n onSearchItemSelect(item);\n };\n\n const button = (\n \n );\n\n // `modal={false}` because Radix menus default to modal, which traps focus and sets\n // `pointer-events: none` on the body for as long as the list is open. This list opens beside a\n // search input the user is still working in — usually inside another popover — so the\n // surrounding controls have to stay clickable.\n return (\n \n {/* This component is exported standalone and may be rendered anywhere, so it carries its\n own TooltipProvider rather than assuming a host tree already has one. */}\n \n );\n}\n\n/** Generic hook for managing recent searches state and operations. */\nexport function useRecentSearches\n {resolvedAriaLabel ? (\n \n {/* `aria-labelledby` rather than a bare heading: Radix's menu label is a plain `div` that\n nothing references, so without this the list announces as an unnamed menu of N items and\n a screen-reader user is never told these are recent searches. */}\n\n \n ) : (\n\n \n{button} \n{resolvedAriaLabel} \n{button} \n )}\nevent.stopPropagation()}\n >\n \n{resolvedGroupHeading} \n {recentSearches.map((item) => (\nhandleSearchItemSelect(item)}\n className={cn('tw:flex tw:items-center', classNameForItems)}\n >\n \n ))}\n\n {renderItem(item)}\n (\n recentSearches: T[],\n setRecentSearches: (items: T[]) => void,\n areItemsEqual: (a: T, b: T) => boolean = (a, b) => a === b,\n maxItems: number = 15,\n) {\n return (item: T) => {\n // Add the current item to recent searches, moving it to the top if it already exists\n const recentSearchesWithoutCurrent = recentSearches.filter(\n (existingItem) => !areItemsEqual(existingItem, item),\n );\n const updatedRecentSearches = [item, ...recentSearchesWithoutCurrent.slice(0, maxItems - 1)];\n setRecentSearches(updatedRecentSearches);\n };\n}\n","import { Direction } from '@/utils/dir-helper.util';\nimport { SerializedVerseRef } from '@sillsdev/scripture';\nimport { ChevronDown, ChevronsLeft, ChevronsRight, ChevronUp } from 'lucide-react';\nimport { ComponentType, useCallback, useMemo } from 'react';\nimport { compareScrRefs, LanguageStrings } from 'platform-bible-utils';\nimport { resolveLocalizedString } from '@/utils/localization.util';\nimport {\n getNextChapterRef,\n getNextVerseRef,\n getPreviousChapterRef,\n getPreviousVerseRef,\n} from 'platform-bible-utils/experimental';\n\nexport interface QuickNavButton {\n onClick: () => void;\n disabled?: boolean;\n title: string;\n icon: ComponentType<{ className?: string }>;\n group: 'chapter' | 'verse';\n}\n\n/** Whether stepping to `newRef` would do nothing: there is no target, or it equals `scrRef`. */\nfunction isNoOpNavigation(\n scrRef: SerializedVerseRef,\n newRef: SerializedVerseRef | undefined,\n): boolean {\n return !newRef || compareScrRefs(scrRef, newRef) === 0;\n}\n\nexport function useQuickNavButtons(\n scrRef: SerializedVerseRef,\n availableBooks: string[],\n direction: Direction,\n handleSubmit: (scrRef: SerializedVerseRef) => void,\n localizedStrings?: LanguageStrings,\n): QuickNavButton[] {\n // The buttons pass availableBooks (so navigation honors books-present and rolls across book\n // boundaries the way the keyboard commands do) but intentionally pass no ScriptureBounds — there\n // is no versification source here, so verse navigation keeps its pre-versification\n // floor-at-0 / unbounded-increment behavior within a book. Making the buttons versification-aware\n // to match the keyboard commands is tracked in PT-4379.\n //\n // Each target ref is computed once and reused for both the click handler and the disabled state,\n // so the button is disabled exactly when the step would be a no-op (no target, or the same ref).\n const previousChapterRef = useMemo(\n () => getPreviousChapterRef(scrRef, availableBooks),\n [scrRef, availableBooks],\n );\n const nextChapterRef = useMemo(\n () => getNextChapterRef(scrRef, availableBooks),\n [scrRef, availableBooks],\n );\n const previousVerseRef = useMemo(\n () => getPreviousVerseRef(scrRef, availableBooks),\n [scrRef, availableBooks],\n );\n const nextVerseRef = useMemo(\n () => getNextVerseRef(scrRef, availableBooks),\n [scrRef, availableBooks],\n );\n\n const submitIfChanged = useCallback(\n (newRef: SerializedVerseRef | undefined) => {\n if (newRef) handleSubmit(newRef);\n },\n [handleSubmit],\n );\n\n return useMemo(() => {\n return [\n {\n onClick: () => submitIfChanged(previousChapterRef),\n disabled: isNoOpNavigation(scrRef, previousChapterRef),\n title: resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_previousChapter%'],\n 'Previous chapter',\n ),\n icon: direction === 'ltr' ? ChevronsLeft : ChevronsRight,\n group: 'chapter' as const,\n },\n {\n onClick: () => submitIfChanged(nextChapterRef),\n disabled: isNoOpNavigation(scrRef, nextChapterRef),\n title: resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_nextChapter%'],\n 'Next chapter',\n ),\n icon: direction === 'ltr' ? ChevronsRight : ChevronsLeft,\n group: 'chapter' as const,\n },\n {\n onClick: () => submitIfChanged(previousVerseRef),\n disabled: isNoOpNavigation(scrRef, previousVerseRef),\n title: resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_previousVerse%'],\n 'Previous verse',\n ),\n icon: ChevronUp,\n group: 'verse' as const,\n },\n {\n onClick: () => submitIfChanged(nextVerseRef),\n disabled: isNoOpNavigation(scrRef, nextVerseRef),\n title: resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_nextVerse%'],\n 'Next verse',\n ),\n icon: ChevronDown,\n group: 'verse' as const,\n },\n ];\n }, [\n scrRef,\n direction,\n submitIfChanged,\n previousChapterRef,\n previousVerseRef,\n nextVerseRef,\n nextChapterRef,\n localizedStrings,\n ]);\n}\n","import { Canon, SerializedVerseRef } from '@sillsdev/scripture';\nimport { getChaptersForBook, Section } from 'platform-bible-utils';\nimport { ALL_ENGLISH_BOOK_NAMES, doesBookMatchQuery } from '@/components/shared/book.utils';\nimport { ArrowKey } from '@/utils/keyboard.util';\nimport { Direction } from '@/utils/dir-helper.util';\nimport { BookWithOptionalChapterAndVerse } from './book-chapter-control.types';\n\n// Smart parsing regex patterns\nexport const SCRIPTURE_REGEX_PATTERNS = {\n // Matches start of string (`^`), one or more non-colon/space words, optionally followed by space and more words (`([^:\\s]+(?:\\s+[^:\\s]+)*)`), end of string (`$`), case-insensitive (`i`)\n BOOK_ONLY: /^([^:\\s]+(?:\\s+[^:\\s]+)*)$/i,\n // Same as above, but followed by a space and a chapter number (`\\s+(\\d+)`)\n BOOK_CHAPTER: /^([^:\\s]+(?:\\s+[^:\\s]+)*)\\s+(\\d+)$/i,\n // Same as above, but followed by a colon and optionally a verse number (`:(\\d*)`)\n BOOK_CHAPTER_VERSE: /^([^:\\s]+(?:\\s+[^:\\s]+)*)\\s+(\\d+):(\\d*)$/i,\n} as const;\n\nexport const SEARCH_QUERY_FORMATS = [\n SCRIPTURE_REGEX_PATTERNS.BOOK_ONLY,\n SCRIPTURE_REGEX_PATTERNS.BOOK_CHAPTER,\n SCRIPTURE_REGEX_PATTERNS.BOOK_CHAPTER_VERSE,\n];\n\n/**\n * Returns true if the query contains a chapter-verse separator (`:`) following a chapter number.\n * Used to decide whether to switch to verse selection when the user is typing.\n */\nexport function hasChapterVerseSeparator(query: string): boolean {\n return SCRIPTURE_REGEX_PATTERNS.BOOK_CHAPTER_VERSE.test(query.trim());\n}\n\n/** Returns true if `bookId` appears strictly before `lowerBound.book` in canon order. */\nexport function isBookBefore(bookId: string, lowerBound: SerializedVerseRef): boolean {\n return Canon.bookIdToNumber(bookId) < Canon.bookIdToNumber(lowerBound.book);\n}\n\n/**\n * Returns true if the chapter in `bookId` is strictly before `lowerBound`. Chapters in books\n * earlier than `lowerBound.book` are treated as before. Chapters in later books are never before.\n */\nexport function isChapterBefore(\n bookId: string,\n chapterNum: number,\n lowerBound: SerializedVerseRef,\n): boolean {\n const bookCmp = Canon.bookIdToNumber(bookId) - Canon.bookIdToNumber(lowerBound.book);\n if (bookCmp < 0) return true;\n if (bookCmp > 0) return false;\n return chapterNum < lowerBound.chapterNum;\n}\n\n/**\n * Returns true if the verse in `bookId` / `chapterNum` is strictly before `lowerBound`. Verses in\n * earlier books or earlier chapters of the same book are treated as before.\n */\nexport function isVerseBefore(\n bookId: string,\n chapterNum: number,\n verseNum: number,\n lowerBound: SerializedVerseRef,\n): boolean {\n const bookCmp = Canon.bookIdToNumber(bookId) - Canon.bookIdToNumber(lowerBound.book);\n if (bookCmp < 0) return true;\n if (bookCmp > 0) return false;\n if (chapterNum < lowerBound.chapterNum) return true;\n if (chapterNum > lowerBound.chapterNum) return false;\n return verseNum < lowerBound.verseNum;\n}\n\nexport function fetchEndChapter(bookId: string) {\n // getChaptersForBook returns -1 if not found in scrBookData\n // scrBookData only includes OT and NT, so all DC will return -1\n return getChaptersForBook(Canon.bookIdToNumber(bookId));\n}\n\nexport function calculateTopMatch(\n query: string,\n availableBooks: string[],\n localizedBookNames?: Map ,\n): BookWithOptionalChapterAndVerse | undefined {\n if (!query.trim() || availableBooks.length === 0) return undefined;\n\n // First try smart parsing with regex patterns\n const topMatch = SEARCH_QUERY_FORMATS.reduce(\n (result: BookWithOptionalChapterAndVerse | undefined, format) => {\n if (result) return result;\n\n const matches = format.exec(query.trim());\n if (matches) {\n const [book, chapter = undefined, verse = undefined] = matches.slice(1);\n\n let validBookId: string | undefined;\n\n // Match for partial book name or id\n\n const allPotentialMatches = availableBooks.filter((bookId) => {\n return doesBookMatchQuery(bookId, book, localizedBookNames);\n });\n\n // Only create a topMatch if exactly one book could match\n if (allPotentialMatches.length === 1) {\n [validBookId] = allPotentialMatches;\n }\n\n // Match for exact book id (English or localized)\n // This is only performed when a chapter number is provided, to prevent edge cases where\n // a search for e.g. `jud` would generate a top match for 'Jude', even though 'Judges' would\n // also be a valid match\n if (!validBookId && chapter) {\n // Check exact English book ID\n if (Canon.isBookIdValid(book)) {\n const bookIdUpperCase = book.toUpperCase();\n if (availableBooks.includes(bookIdUpperCase)) {\n validBookId = bookIdUpperCase;\n }\n }\n\n // Check exact localized book ID\n if (!validBookId && localizedBookNames) {\n const matchingLocalizedBookId = Array.from(localizedBookNames.entries()).find(\n ([, localizedBook]) => localizedBook.localizedId.toLowerCase() === book.toLowerCase(),\n );\n if (matchingLocalizedBookId && availableBooks.includes(matchingLocalizedBookId[0])) {\n [validBookId] = matchingLocalizedBookId;\n }\n }\n }\n\n // Match for exact full book name (English or localized)\n // This is only performed when a chapter number is provided, to prevent edge cases where\n // a search for e.g. `john` only matches `John` but not `1 John`, `2 John` and `3 John`\n if (!validBookId && chapter) {\n // Check exact English book name\n const getBookIdFromEnglishName = (bookName: string): string | undefined => {\n return Object.keys(ALL_ENGLISH_BOOK_NAMES).find(\n (bookId) => ALL_ENGLISH_BOOK_NAMES[bookId].toLowerCase() === bookName.toLowerCase(),\n );\n };\n\n const matchingBookIdForFullName = getBookIdFromEnglishName(book);\n if (matchingBookIdForFullName && availableBooks.includes(matchingBookIdForFullName)) {\n validBookId = matchingBookIdForFullName;\n }\n\n // Check exact localized book name\n if (!validBookId && localizedBookNames) {\n const matchingLocalizedBookName = Array.from(localizedBookNames.entries()).find(\n ([, localizedBook]) =>\n localizedBook.localizedName.toLowerCase() === book.toLowerCase(),\n );\n if (\n matchingLocalizedBookName &&\n availableBooks.includes(matchingLocalizedBookName[0])\n ) {\n [validBookId] = matchingLocalizedBookName;\n }\n }\n }\n\n if (validBookId) {\n let chapterNum = chapter ? parseInt(chapter, 10) : undefined;\n if (chapterNum && chapterNum > fetchEndChapter(validBookId))\n chapterNum = Math.max(fetchEndChapter(validBookId), 1);\n const verseNum = verse ? parseInt(verse, 10) : undefined;\n\n return {\n book: validBookId,\n chapterNum,\n verseNum,\n };\n }\n }\n\n return undefined;\n },\n undefined,\n );\n\n if (topMatch) return topMatch;\n\n return undefined;\n}\n\n/** Grouped and flattened book lists a `BookChapterControl` renders. */\nexport type BookChapterControlBookLists = {\n /** The active project's books, grouped by section — what the control browses by default. */\n projectBooksBySection: Record ;\n /** Every reachable book, grouped by section — what searching spans. */\n reachableBooksBySection: Record ;\n /**\n * `reachableBooksBySection` flattened — the candidate list for searching, top-match parsing, and\n * quick navigation. Searching spans this list whether or not the widened list is on screen, so a\n * book in an open resource is findable by name without expanding first; every match it surfaces\n * is still rendered greyed and labelled, so search never presents one as a project book.\n * Deliberately the flattened GROUPED list rather than the raw reachable ids: section grouping\n * drops the peripheral ids no section claims (FRT, BAK, OTH, INT, CNC, GLO, TDX, NDX) and orders\n * DC/Extra differently from raw canon order, so the raw list would offer callers books they have\n * never been offered.\n */\n reachableBooks: string[];\n /**\n * `projectBooksBySection` flattened — the navigation universe while the list is collapsed. Only\n * the project's books, so quick navigation stays inside the books the user has opted into.\n */\n projectBooks: string[];\n /** Reachable books the project does not have. These render greyed but stay selectable. */\n booksOutsideProject: ReadonlySet ;\n};\n\n/**\n * Groups book ids into the sections the control renders. Ids no section claims — the peripheral\n * ones (FRT, BAK, OTH, INT, CNC, GLO, TDX, NDX) — are dropped, which is what keeps the control from\n * offering a book it cannot browse to.\n *\n * Deliberately NOT built on `getSectionForBook`, despite answering a similar question: that\n * function classifies a book already known to belong to a section and throws otherwise, and it\n * tests Extra with `Canon.isExtraMaterial`, which claims all eight peripheral ids. Routing this\n * through it would turn front and back matter into browsable Extra books and throw on anything else\n * — the opposite of the filtering this exists to do. `Canon.extraBooks()` is the narrow membership\n * test that keeps peripheral ids out.\n *\n * @param bookIds Book ids to group, in the order they should appear within their section\n */\nexport function groupBooksBySection(bookIds: readonly string[]): Record {\n return {\n [Section.OT]: bookIds.filter((bookId) => Canon.isBookOT(bookId)),\n [Section.NT]: bookIds.filter((bookId) => Canon.isBookNT(bookId)),\n [Section.DC]: bookIds.filter((bookId) => Canon.isBookDC(bookId)),\n [Section.Extra]: bookIds.filter((bookId) => Canon.extraBooks().includes(bookId)),\n };\n}\n\n/**\n * Derives every book list the control renders from the two inputs that determine them.\n *\n * Purely a function of its inputs: a book is reachable only if the caller passes it. A caller that\n * wants the book of the current reference reachable while the project lacks it must include that\n * book in `additionalBookIds`.\n *\n * @param projectBookIds Books the active project has\n * @param additionalBookIds Books reachable elsewhere, e.g. present in an open resource. Ids the\n * project already has are ignored — this arrives from a public callback that may include them.\n */\nexport function deriveBookChapterControlBookLists(\n projectBookIds: readonly string[],\n additionalBookIds: readonly string[],\n): BookChapterControlBookLists {\n const projectBookIdSet = new Set(projectBookIds);\n const extraBookIds = additionalBookIds.filter((bookId) => !projectBookIdSet.has(bookId));\n const extraBookIdSet = new Set(extraBookIds);\n\n // Canon-ordered so an extra book lands among its neighbours instead of after the project's books.\n // Ordered from `Canon.allBookIds` rather than `ALL_BOOK_IDS` so the widened list is always a\n // superset of the project's books: `ALL_BOOK_IDS` drops the ids the Canon library marks obsolete\n // (JSA, JDB, TBS, SST, DNT, BLT, 3ES), which a project's `booksPresent` can still claim and which\n // the collapsed list therefore offers. An obsolete book reachable through an open resource is\n // offered for the same reason - a book present in an open scripture stays browsable.\n // The fast path preserves the caller's array when nothing widens the list.\n const reachableBookIds =\n extraBookIdSet.size === 0\n ? projectBookIds\n : Canon.allBookIds.filter(\n (bookId) => projectBookIdSet.has(bookId) || extraBookIdSet.has(bookId),\n );\n\n const reachableBooksBySection = groupBooksBySection(reachableBookIds);\n const reachableBooks = Object.values(reachableBooksBySection).flat();\n\n const projectBooksBySection = groupBooksBySection(projectBookIds);\n\n return {\n projectBooksBySection,\n reachableBooksBySection,\n reachableBooks,\n // Grouped and flattened like `reachableBooks`, so it inherits the same peripheral-id exclusion.\n projectBooks: Object.values(projectBooksBySection).flat(),\n // Derived from the grouped-and-flattened list, so a peripheral id that grouping dropped can\n // never be marked dimmed for a list it is not part of.\n booksOutsideProject: new Set(reachableBooks.filter((bookId) => !projectBookIdSet.has(bookId))),\n };\n}\n\n/**\n * Number of columns in the chapter and verse grids. Drives both the arrow-key arithmetic in\n * {@link computeTargetGridItem} and the grids' rendered `gridTemplateColumns`, so the two cannot\n * drift out of sync and leave arrow navigation landing on the wrong cell.\n */\nexport const GRID_COLUMNS = 6;\n\n/** In a right-to-left grid the horizontal arrows point at the opposite neighbour. */\nfunction mirrorHorizontalKey(key: ArrowKey): ArrowKey {\n if (key === 'ArrowLeft') return 'ArrowRight';\n if (key === 'ArrowRight') return 'ArrowLeft';\n return key;\n}\n\n/**\n * Computes where the highlight moves when an arrow key is pressed in a numbered grid — the chapter\n * grid and the verse grid share this arithmetic.\n *\n * Horizontal movement wraps around the whole grid; vertical movement clamps at the first and last\n * item, so a partial last row can be reached from any column above it.\n *\n * @param current The currently highlighted item, 1-based. Callers seed a valid highlight when a\n * grid becomes visible, so an out-of-range value here means the seed did not happen; the helper\n * lands on the first item rather than moving from an unknown position.\n * @param key The arrow key that was pressed.\n * @param max The number of items in the grid. Values of 0 or less mean the count is unknown (the\n * Scripture data returns -1 for books it has no chapter count for), and the highlight is left\n * alone.\n * @param direction Layout direction. In `'rtl'` the horizontal arrows are mirrored so they follow\n * what the user sees; the vertical arrows are unaffected.\n * @returns The item the highlight should move to, 1-based.\n */\nexport function computeTargetGridItem({\n current,\n key,\n max,\n direction = 'ltr',\n}: {\n current: number;\n key: ArrowKey;\n max: number;\n direction?: Direction;\n}): number {\n if (max <= 0) return current;\n if (current < 1 || current > max) return 1;\n\n const effectiveKey = direction === 'rtl' ? mirrorHorizontalKey(key) : key;\n\n switch (effectiveKey) {\n case 'ArrowLeft':\n return current > 1 ? current - 1 : max;\n case 'ArrowRight':\n return current < max ? current + 1 : 1;\n case 'ArrowUp':\n return Math.max(1, current - GRID_COLUMNS);\n case 'ArrowDown':\n return Math.min(max, current + GRID_COLUMNS);\n default:\n return current;\n }\n}\n","import { CommandGroup, CommandItem } from '@/components/shadcn-ui/command';\nimport { LIST_ITEM_KEYBOARD_FOCUS_RING } from '@/utils/focus.util';\nimport { cn } from '@/utils/shadcn-ui/utils';\nimport { GRID_COLUMNS } from './book-chapter-control.utils';\n\nexport interface NumberedItemGridProps {\n /** Number of items to render (1..count, inclusive). Returns null if count <= 0. */\n count: number;\n /**\n * Builds the cmdk `value` for item `n`. Whatever steers the highlight must produce a\n * byte-identical string, so build it with the shared helpers in `book-item.utils` —\n * `chapterItemValue` / `verseItemValue` — rather than composing the format here.\n */\n valueBuilder: (n: number) => string;\n /** Callback when item `n` is selected (only fires when not disabled). */\n onSelect: (n: number) => void;\n /** Returns the `ref` callback for item `n` (used for keyboard navigation). */\n itemRef: (n: number) => (element: HTMLDivElement | null) => void;\n /** Whether item `n` is disabled (not selectable). Defaults to false. */\n isDisabled?: (n: number) => boolean;\n /** Whether item `n` should be visually dimmed. Defaults to false. */\n isDimmed?: (n: number) => boolean;\n /** Whether item `n` is the currently-selected item (highlighted). Defaults to false. */\n isSelected?: (n: number) => boolean;\n /**\n * When true, cells paint no keyboard focus ring even while cmdk still marks one `data-selected`.\n * Set it while a control outside the grid holds focus, so the grid and that control never show a\n * focus indicator at the same time. Suppresses the paint, not the state — see the matching prop\n * on `BookItem`.\n */\n suppressKeyboardHighlight?: boolean;\n /** Optional additional class name applied to the grid wrapper. */\n className?: string;\n}\n\n/**\n * Internal helper that renders a grid of numbered cmdk `CommandItem`s for use by `ChapterGrid` and\n * `VerseGrid`. Encapsulates the shared layout, Tailwind classes, and disabled / dimmed / selected\n * state styling so the two public components only need to supply the per-item differences.\n *\n * Not part of the public `platform-bible-react` API.\n */\nexport function NumberedItemGrid({\n count,\n valueBuilder,\n onSelect,\n itemRef,\n isDisabled,\n isDimmed,\n isSelected,\n suppressKeyboardHighlight = false,\n className,\n}: NumberedItemGridProps) {\n if (count <= 0) return undefined;\n\n return (\n \n {/* Column count is read from the shared constant rather than taken as a prop: the arrow-key\n arithmetic in `computeTargetGridItem` reads the same constant, and a per-instance override\n here would let the rendered layout and the keyboard arithmetic disagree — arrows would\n land on the wrong cell with nothing to catch it. */}\n \n );\n}\n\nexport default NumberedItemGrid;\n","import { chapterItemValue } from '@/components/shared/book-item.utils';\nimport { fetchEndChapter } from './book-chapter-control.utils';\nimport { NumberedItemGrid } from './numbered-item-grid.component';\n\nexport interface ChapterGridProps {\n /** The book ID to render chapters for */\n bookId: string;\n /** Current scripture reference for highlighting */\n scrRef: { book: string; chapterNum: number };\n /** Callback when a chapter is selected */\n onChapterSelect: (chapter: number) => void;\n /** Function to set chapter refs for keyboard navigation */\n setChapterRef: (chapter: number) => (element: HTMLDivElement | null) => void;\n /** Optional function to determine if a chapter should be dimmed */\n isChapterDimmed?: (chapter: number) => boolean;\n /** Optional function to determine if a chapter should be disabled (not selectable). */\n isChapterDisabled?: (chapter: number) => boolean;\n /** Forwarded to `NumberedItemGrid` — see `suppressKeyboardHighlight` there. */\n suppressKeyboardHighlight?: boolean;\n /** Optional additional class name for styling */\n className?: string;\n}\n\n/**\n * Renders a grid of chapter numbers for a given book, with highlighting for the current chapter and\n * optional dimmed chapters based on state logic.\n */\nexport function ChapterGrid({\n bookId,\n scrRef,\n onChapterSelect,\n setChapterRef,\n isChapterDimmed,\n isChapterDisabled,\n suppressKeyboardHighlight,\n className,\n}: ChapterGridProps) {\n if (!bookId) return undefined;\n\n return (\n\n {Array.from({ length: count }, (_, i) => i + 1).map((n) => {\n const disabled = isDisabled?.(n) ?? false;\n return (\n\n{\n if (disabled) return;\n onSelect(n);\n }}\n ref={itemRef(n)}\n disabled={disabled}\n aria-disabled={disabled || undefined}\n className={cn(\n 'tw:h-8 tw:w-8 tw:cursor-pointer tw:justify-center tw:rounded-md tw:text-center tw:text-sm',\n // Hide CommandItem's own trailing check icon (a multiselect affordance this grid\n // doesn't use) and give cells pointer feedback distinct from the keyboard focus ring.\n 'tw:[&>svg]:hidden tw:hover:bg-muted',\n !suppressKeyboardHighlight && LIST_ITEM_KEYBOARD_FOCUS_RING,\n // cmdk highlights the focused cell with its own data-selected background/text; this\n // grid shows keyboard focus with the ring above instead, so neutralize that here.\n // The selected-cell rule below re-asserts its own colors under data-selected so the\n // current chapter/verse keeps its highlight even while the keyboard focus is on it.\n 'tw:data-selected:bg-transparent tw:data-selected:text-inherit',\n {\n // The keyboard ring switches to `ring-primary-foreground` on this cell. The shared\n // `ring-ring/50` composites to within ~0.04 lightness of `bg-primary`, which makes\n // the ring all but invisible on exactly the cell the highlight is seeded onto when\n // the popover opens. `primary-foreground` is the token already guaranteed to read\n // against `primary`. `cn` merges away the earlier ring color, so this wins by\n // argument order rather than by CSS output order.\n //\n // Hover keeps the filled treatment (`bg-primary`) instead of taking the shared\n // `hover:bg-muted` above. This cell's text is `primary-foreground` — near-white,\n // chosen to read against the fill — so swapping the fill for a pale muted\n // background on hover leaves near-white text on a near-white ground and the\n // current chapter all but disappears under the pointer. `/90` keeps the pointer\n // feedback that hover owes the user without touching the contrast.\n 'tw:bg-primary tw:text-primary-foreground tw:hover:bg-primary/90 tw:data-selected:bg-primary tw:data-selected:text-primary-foreground tw:data-selected:ring-primary-foreground/70':\n isSelected?.(n) ?? false,\n },\n {\n // Same tokens as BookItem, so book rows and chapter/verse cells grey identically\n // inside one popover. Restated under data-selected so a dimmed cell keeps its\n // dimming while the keyboard highlight is on it, rather than losing it to the\n // suppression rule above.\n 'tw:bg-muted/50 tw:text-muted-foreground/50 tw:data-selected:bg-muted/50 tw:data-selected:text-muted-foreground/50':\n (isDimmed?.(n) ?? false) && !disabled,\n },\n disabled && 'tw:cursor-not-allowed tw:opacity-40',\n )}\n >\n {n}\n \n );\n })}\nchapterItemValue(bookId, chapter)}\n onSelect={onChapterSelect}\n itemRef={setChapterRef}\n isDisabled={isChapterDisabled}\n isDimmed={isChapterDimmed}\n isSelected={(chapter) => bookId === scrRef.book && chapter === scrRef.chapterNum}\n suppressKeyboardHighlight={suppressKeyboardHighlight}\n className={className}\n />\n );\n}\n","import { verseItemValue } from '@/components/shared/book-item.utils';\nimport { NumberedItemGrid } from './numbered-item-grid.component';\n\nexport interface VerseGridProps {\n /** The book ID the verses belong to */\n bookId: string;\n /** The chapter number the verses belong to */\n chapterNum: number;\n /** The number of verses to render (from 1 to endVerse, inclusive) */\n endVerse: number;\n /** Current scripture reference for highlighting */\n scrRef: { book: string; chapterNum: number; verseNum: number };\n /** Callback when a verse is selected */\n onVerseSelect: (verse: number) => void;\n /** Function to set verse refs for keyboard navigation */\n setVerseRef: (verse: number) => (element: HTMLDivElement | null) => void;\n /** Optional function to determine if a verse should be dimmed */\n isVerseDimmed?: (verse: number) => boolean;\n /** Optional function to determine if a verse should be disabled (not selectable). */\n isVerseDisabled?: (verse: number) => boolean;\n /** Forwarded to `NumberedItemGrid` — see `suppressKeyboardHighlight` there. */\n suppressKeyboardHighlight?: boolean;\n /** Optional additional class name for styling */\n className?: string;\n}\n\n/**\n * Renders a grid of verse numbers for a given book and chapter, with highlighting for the current\n * verse and optional dimmed verses based on state logic.\n */\nexport function VerseGrid({\n bookId,\n chapterNum,\n endVerse,\n scrRef,\n onVerseSelect,\n setVerseRef,\n isVerseDimmed,\n isVerseDisabled,\n suppressKeyboardHighlight,\n className,\n}: VerseGridProps) {\n if (!bookId || endVerse <= 0) return undefined;\n\n return (\n verseItemValue(bookId, chapterNum, verse)}\n onSelect={onVerseSelect}\n itemRef={setVerseRef}\n isDisabled={isVerseDisabled}\n isDimmed={isVerseDimmed}\n isSelected={(verse) =>\n bookId === scrRef.book && chapterNum === scrRef.chapterNum && verse === scrRef.verseNum\n }\n suppressKeyboardHighlight={suppressKeyboardHighlight}\n className={className}\n />\n );\n}\n\nexport default VerseGrid;\n","import { BookItem } from '@/components/shared/book-item.component';\nimport { Button } from '@/components/shadcn-ui/button';\nimport { ButtonGroup, ButtonGroupSeparator } from '@/components/shadcn-ui/button-group';\nimport {\n Command,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/shadcn-ui/tooltip';\nimport { Direction, readDirection } from '@/utils/dir-helper.util';\nimport { getKeyCharacterType, isArrowKey } from '@/utils/keyboard.util';\nimport { resolveLocalizedString } from '@/utils/localization.util';\nimport { cn } from '@/utils/shadcn-ui/utils';\nimport { SerializedVerseRef } from '@sillsdev/scripture';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\nimport { IconSelector } from '@tabler/icons-react';\nimport {\n formatReplacementString,\n formatScrRef,\n getSectionForBook,\n Section,\n} from 'platform-bible-utils';\nimport {\n getSectionLongName,\n getLocalizedBookName,\n getLocalizedBookId,\n ALL_BOOK_IDS,\n doesBookMatchQuery,\n} from '@/components/shared/book.utils';\nimport {\n Fragment,\n KeyboardEvent,\n useCallback,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { SHRINK_STEP, useShrinkStepValue } from '@/context/shrink-step.context';\nimport { ToolbarCompoundLabel } from '@/components/advanced/toolbar-compound-label/toolbar-compound-label.component';\nimport {\n chapterItemValue,\n generateCommandValue,\n parseChapterFromItemValue,\n parseVerseFromItemValue,\n TOP_MATCH_ITEM_VALUE,\n verseItemValue,\n} from '@/components/shared/book-item.utils';\nimport RecentSearches from '../recent-searches.component';\nimport { useQuickNavButtons } from './book-chapter-control.navigation';\nimport { BookChapterControlProps, ViewMode } from './book-chapter-control.types';\nimport {\n calculateTopMatch,\n deriveBookChapterControlBookLists,\n computeTargetGridItem,\n fetchEndChapter,\n groupBooksBySection,\n hasChapterVerseSeparator,\n isBookBefore,\n isChapterBefore,\n isVerseBefore,\n} from './book-chapter-control.utils';\nimport { ChapterGrid } from './chapter-grid.component';\nimport { VerseGrid } from './verse-grid.component';\n\n/**\n * Elements that can hold a tab stop. Deliberately narrower than `getFocusableElements` in\n * `focus.util`: that answers \"can this be focused at all\", which includes the back button this\n * control keeps out of the tab order on purpose, and it also filters on rendered geometry — which\n * jsdom reports as zero for everything, so Tab handling built on it could not be tested. Every\n * element inside an open popover is rendered, so `tabindex` alone is the right question here.\n */\nconst TAB_STOP_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]';\n\n/** The tab stops inside `container`, in document order. */\nfunction getTabStops(container: HTMLElement): HTMLElement[] {\n return Array.from(container.querySelectorAll (TAB_STOP_SELECTOR)).filter(\n (element) => element.tabIndex >= 0,\n );\n}\n\n/**\n * `BookChapterControl` is a component that provides an interactive UI for selecting book chapters.\n * It allows users to input a search query to find specific books and chapters, navigate through\n * options with keyboard interactions, and submit selections. The component handles various\n * interactions such as opening and closing the dropdown menu, filtering book lists based on search\n * input, and managing highlighted selections. It also integrates with external handlers for\n * submitting selected references and retrieving active book IDs.\n */\nexport function BookChapterControl({\n scrRef,\n handleSubmit,\n className,\n getActiveBookIds,\n getAdditionalBookIds,\n localizedBookNames,\n localizedStrings,\n recentSearches,\n onAddRecentSearch,\n id,\n getEndVerse,\n disableReferencesUpTo,\n submitKeys,\n triggerContent,\n triggerVariant = 'outline',\n showTriggerChevron = false,\n onOpenChange,\n onCloseAutoFocus,\n modal = false,\n align = 'center',\n ref,\n disabled,\n}: BookChapterControlProps) {\n const direction: Direction = readDirection();\n\n const shrinkStep = useShrinkStepValue();\n\n // Indicates if the Command popover is open or not\n const [isCommandOpen, setIsCommandOpen] = useState(false);\n // The value of the Command, mainly needed for reliable keyboard navigation\n const [commandValue, setCommandValue] = useState('');\n // The value of the Input inside the Command\n const [inputValue, setInputValue] = useState('');\n // The current view mode (books or chapters)\n const [viewMode, setViewMode] = useState ('books');\n // The book currently selected for chapter view, if any\n const [selectedBookForChaptersView, setSelectedBookForChaptersView] = useState<\n string | undefined\n >(undefined);\n // The book/chapter currently selected for verse view, if any\n const [selectedBookForVersesView, setSelectedBookForVersesView] = useState (\n undefined,\n );\n const [selectedChapterForVersesView, setSelectedChapterForVersesView] = useState<\n number | undefined\n >(undefined);\n const [isCommandListHidden, setIsCommandListHidden] = useState(false);\n // Whether the book list is expanded past the active project's books. Governs browsing only —\n // searching always spans every reachable book.\n const [isShowingMoreBooks, setIsShowingMoreBooks] = useState(false);\n // Whether a control in the books-view header (a quick-nav arrow, the recent-searches trigger)\n // rather than the search input holds focus. Those controls draw their own focus ring, so the\n // list below must stop drawing one: two focus indicators at once leave the user no way to tell\n // which surface the next keystroke reaches.\n const [isHeaderControlFocused, setIsHeaderControlFocused] = useState(false);\n // Whether the books view's preview grid has taken over the keyboard from the search input. The\n // vertical arrows are the only way in — they are never caret keys — and editing the query is the\n // way back out. Until then the caret keeps the horizontal arrows, so a user typing a reference\n // can still move through what they typed. See `handleCommandKeyDown`.\n const [hasPreviewGridKeyboardControl, setHasPreviewGridKeyboardControl] = useState(false);\n\n // Reference to the PopoverTrigger button. Used by `onPointerDownOutside` to detect\n // clicks on our own trigger while the popover is open — see that handler for the full\n // story. `null` is React's canonical \"not yet attached\" ref value; there's no undefined\n // equivalent in the DOM/ref API.\n // eslint-disable-next-line no-null/no-null\n const triggerRef = useRef (null);\n // Set in `onPointerDownOutside` when we detect a click on our trigger while the popover\n // is open. Consumed in Button's `onClick` to call `event.preventDefault()` before Radix's\n // own `onOpenToggle` handler runs — `composeEventHandlers` skips `onOpenToggle` when\n // `defaultPrevented` is true, so the popover stays closed instead of toggling back open.\n const justClosedByTriggerRef = useRef(false);\n // Reference to the Command component\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const commandRef = useRef (undefined!);\n // Reference to the Input component inside the Command\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const commandInputRef = useRef (undefined!);\n // Reference to the CommandList inside the Command\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const commandListRef = useRef (undefined!);\n // Reference to the selected book item in the CommandList\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n const selectedBookItemRef = useRef (undefined!);\n // References to the chapters that are shown as CommandItems\n const chapterRefs = useRef >({});\n // References to the verses that are shown as CommandItems\n const verseRefs = useRef >({});\n\n // Wrapper function to handle submit and add to recent searches\n const handleSubmitAndAddToRecent = useCallback(\n (newScrRef: SerializedVerseRef) => {\n handleSubmit(newScrRef);\n if (onAddRecentSearch) {\n onAddRecentSearch(newScrRef);\n }\n },\n [handleSubmit, onAddRecentSearch],\n );\n\n // #region Available books, filtering and top match logic\n\n const activeBookIds = useMemo(() => {\n return getActiveBookIds ? getActiveBookIds() : ALL_BOOK_IDS;\n }, [getActiveBookIds]);\n\n // Books offered beyond the active project. Ignored when there is no project list to be outside of\n // (no getActiveBookIds means the control already offers the whole canon).\n const additionalBookIds = useMemo(\n () => (getActiveBookIds && getAdditionalBookIds ? getAdditionalBookIds() : []),\n [getActiveBookIds, getAdditionalBookIds],\n );\n\n const {\n projectBooksBySection,\n reachableBooksBySection,\n reachableBooks,\n projectBooks,\n booksOutsideProject,\n } = useMemo(\n () => deriveBookChapterControlBookLists(activeBookIds, additionalBookIds),\n [activeBookIds, additionalBookIds],\n );\n\n // Deliberately the boolean and not `scrRef` or the set it comes from: handleOpenChange closes\n // over this and its identity feeds useImperativeHandle, so depending on either of those would\n // re-register the consumer's imperative handle on every reference change. Depending on the\n // boolean re-registers only when the current book actually crosses in or out of the project.\n const isCurrentBookOutsideProject = booksOutsideProject.has(scrRef.book);\n\n // Filter books based on search input\n const filteredBooksByType = useMemo(() => {\n if (!inputValue.trim())\n return isShowingMoreBooks ? reachableBooksBySection : projectBooksBySection;\n\n // Searching always spans every reachable book, whatever the toggle says\n return groupBooksBySection(\n reachableBooks.filter((bookId) => doesBookMatchQuery(bookId, inputValue, localizedBookNames)),\n );\n }, [\n projectBooksBySection,\n reachableBooksBySection,\n reachableBooks,\n isShowingMoreBooks,\n inputValue,\n localizedBookNames,\n ]);\n\n // Get the current top match\n const topMatch = useMemo(\n () => calculateTopMatch(inputValue, reachableBooks, localizedBookNames),\n [inputValue, reachableBooks, localizedBookNames],\n );\n\n // The reference the top-match row shows, and the one selecting that row submits. Both read this\n // single value so the row can never submit something other than what it displays. The highlighted\n // preview cell is the more specific of the two sources — the user moved the highlight there — so\n // it wins over the chapter/verse parsed out of the typed query.\n const topMatchReference = useMemo((): SerializedVerseRef | undefined => {\n if (!topMatch) return undefined;\n // Only a highlight on this book's own grid refines the reference. A value left over from an\n // earlier query names another book's cell, and mixing it in would compose a reference that was\n // never on screen.\n const highlight = commandValue.startsWith(`${topMatch.book} `) ? commandValue : '';\n const highlightedVerse = parseVerseFromItemValue(highlight);\n const highlightedChapter = parseChapterFromItemValue(highlight);\n // A value cannot name both a chapter cell and a verse cell, so no case-split on which kind of\n // highlight is present is needed: whichever one the value is, the other parse yields\n // `undefined` and falls through.\n return {\n book: topMatch.book,\n chapterNum: highlightedChapter ?? topMatch.chapterNum ?? 1,\n verseNum: highlightedVerse ?? topMatch.verseNum ?? 1,\n };\n }, [topMatch, commandValue]);\n\n // Surface open/close transitions to the parent. Fires only on the true boolean flip, not on\n // internal back-navigation (verses → chapters → books) which is handled without closing the\n // popover. Skip the initial mount run so callers don't see a spurious `onOpenChange(false)`\n // before any interaction — that phantom close has tripped parent focus-restore logic.\n const didMountRef = useRef(false);\n useEffect(() => {\n if (!didMountRef.current) {\n didMountRef.current = true;\n return;\n }\n onOpenChange?.(isCommandOpen);\n }, [isCommandOpen, onOpenChange]);\n\n // #endregion\n\n // #region Submitting references\n\n const handleTopMatchSelect = useCallback(() => {\n if (!topMatchReference) return;\n if (\n disableReferencesUpTo &&\n isVerseBefore(\n topMatchReference.book,\n topMatchReference.chapterNum,\n topMatchReference.verseNum,\n disableReferencesUpTo,\n )\n ) {\n return;\n }\n handleSubmitAndAddToRecent(topMatchReference);\n setIsCommandOpen(false);\n setInputValue('');\n setCommandValue(''); // Reset command value\n }, [handleSubmitAndAddToRecent, topMatchReference, disableReferencesUpTo]);\n\n const handleVerseSelect = useCallback(\n (verseNumber: number) => {\n const bookId = selectedBookForVersesView ?? topMatch?.book;\n const chapterNum = selectedChapterForVersesView ?? topMatch?.chapterNum;\n if (!bookId || !chapterNum) return;\n\n handleSubmitAndAddToRecent({\n book: bookId,\n chapterNum,\n verseNum: verseNumber,\n });\n // Don't reset view / selection state here — `handleOpenChange(true)` does that\n // when the popover reopens. Resetting now causes a flicker: the popover's fade-out\n // animation would otherwise render the book list for a frame before unmounting.\n setIsCommandOpen(false);\n },\n [handleSubmitAndAddToRecent, selectedBookForVersesView, selectedChapterForVersesView, topMatch],\n );\n\n const handleBookSelect = useCallback(\n (bookId: string) => {\n if (disableReferencesUpTo && isBookBefore(bookId, disableReferencesUpTo)) return;\n // Check if book has chapters - if not, submit immediately\n const endChapter = fetchEndChapter(bookId);\n if (endChapter <= 1) {\n handleSubmitAndAddToRecent({\n book: bookId,\n chapterNum: 1,\n verseNum: 1,\n });\n setIsCommandOpen(false);\n setInputValue('');\n return;\n }\n\n // Book has multiple chapters - transition to chapter view\n setSelectedBookForChaptersView(bookId);\n setViewMode('chapters');\n },\n [handleSubmitAndAddToRecent, disableReferencesUpTo],\n );\n\n const handleChapterSelect = useCallback(\n (chapterNumber: number) => {\n // Determine which book we're selecting a chapter for\n const bookId = viewMode === 'chapters' ? selectedBookForChaptersView : topMatch?.book;\n if (!bookId) return;\n\n // If verse selection is enabled and the chapter has multiple verses, transition to verse view\n if (getEndVerse) {\n const endVerse = getEndVerse(bookId, chapterNumber);\n if (endVerse > 1) {\n setSelectedBookForVersesView(bookId);\n setSelectedChapterForVersesView(chapterNumber);\n setViewMode('verses');\n setCommandValue('');\n return;\n }\n }\n\n handleSubmitAndAddToRecent({\n book: bookId,\n chapterNum: chapterNumber,\n verseNum: 1,\n });\n // See `handleVerseSelect` — skip the view/selection reset to avoid a flicker\n // back to the book list during the popover's fade-out animation.\n setIsCommandOpen(false);\n },\n [handleSubmitAndAddToRecent, viewMode, selectedBookForChaptersView, topMatch, getEndVerse],\n );\n\n const handleRecentItemSelect = useCallback(\n (item: SerializedVerseRef) => {\n handleSubmitAndAddToRecent(item);\n setIsCommandOpen(false);\n setInputValue('');\n },\n [handleSubmitAndAddToRecent],\n );\n\n // #endregion\n\n // #region Navigation and view changes\n\n // Hook that provides navigation buttons for quick chapter/verse navigation\n // The collapsed list is the books the user has opted into, so quick navigation stays inside them\n // until the list is expanded.\n const quickNavButtons = useQuickNavButtons(\n scrRef,\n isShowingMoreBooks ? reachableBooks : projectBooks,\n direction,\n handleSubmit,\n localizedStrings,\n );\n\n // Editing the query hands the keyboard back to the text: the user is typing a reference again,\n // so the horizontal arrows have to be able to reach what they typed.\n const handleInputValueChange = useCallback((nextInputValue: string) => {\n setInputValue(nextInputValue);\n setHasPreviewGridKeyboardControl(false);\n }, []);\n\n const handleBackToBooks = useCallback(() => {\n setViewMode('books');\n setSelectedBookForChaptersView(undefined);\n setSelectedBookForVersesView(undefined);\n setSelectedChapterForVersesView(undefined);\n // The books view is reached with the caret back in the search input, so the preview grid starts\n // without the keyboard however the user left it last time.\n setHasPreviewGridKeyboardControl(false);\n\n // Focus the search input when returning to book view\n setTimeout(() => {\n commandInputRef.current?.focus();\n }, 0);\n }, []);\n\n const handleBackToChapters = useCallback(() => {\n // Preserve selectedBookForChaptersView for the chapter view; reset verse state\n const previouslySelectedBook = selectedBookForVersesView;\n setSelectedBookForVersesView(undefined);\n setSelectedChapterForVersesView(undefined);\n\n if (previouslySelectedBook) {\n setSelectedBookForChaptersView(previouslySelectedBook);\n setViewMode('chapters');\n setCommandValue('');\n } else {\n handleBackToBooks();\n }\n }, [selectedBookForVersesView, handleBackToBooks]);\n\n // Reset view state when popover opens. Close requests always close the popover —\n // `Escape`, outside-click, and any other Radix-initiated dismiss route through here and\n // the user expects them to dismiss the whole picker. Stepping back through views is the\n // back button's job; trying to double-duty dismiss as \"go up one level\" silently rewinds\n // the user's selection when Radix fires a close for a transient reason (focus blip, click\n // in a non-item padding area, etc.).\n const handleOpenChange = useCallback(\n (shouldCommandBeOpen: boolean) => {\n setIsCommandOpen(shouldCommandBeOpen);\n if (shouldCommandBeOpen) {\n setViewMode('books');\n setSelectedBookForChaptersView(undefined);\n setSelectedBookForVersesView(undefined);\n setSelectedChapterForVersesView(undefined);\n setInputValue('');\n setHasPreviewGridKeyboardControl(false);\n setIsHeaderControlFocused(false);\n // Seed, don't force: the list opens expanded when the current book is outside the project so\n // that book is visible, and the toggle still collapses from there.\n setIsShowingMoreBooks(isCurrentBookOutsideProject);\n }\n },\n [isCurrentBookOutsideProject],\n );\n\n // `disabled` on the trigger button only prevents OPENING the popover — it does not affect one\n // that is already open, which would otherwise keep accepting input and submit a reference for a\n // control the UI reports as non-interactive (e.g. the toolbar's navigation target disappearing\n // mid-interaction). Close it when the control becomes disabled.\n useEffect(() => {\n if (disabled) handleOpenChange(false);\n }, [disabled, handleOpenChange]);\n\n // Imperative `open()` goes through handleOpenChange (not setIsCommandOpen directly) so the\n // deferred view-state reset runs: the control deliberately leaves stale chapters/verses view\n // state behind on close (see handleVerseSelect / handleChapterSelect) and only resets it when\n // the popover opens. Callers like the Ctrl+B command can't know what view the control was last\n // left in, and CommandInput only renders in 'books' view — without the reset, focus would no-op.\n //\n // Focusing the search input is driven by this request counter (each `open()` call increments\n // it) rather than a `setTimeout` so the focus effect below runs after the commit that actually\n // rendered the popover's books-view CommandInput, even if that render takes longer than a tick.\n const [focusSearchInputRequestId, setFocusSearchInputRequestId] = useState(0);\n\n useEffect(() => {\n if (focusSearchInputRequestId === 0) return;\n commandInputRef.current?.focus();\n }, [focusSearchInputRequestId]);\n\n useImperativeHandle(\n ref,\n () => ({\n open: () => {\n // Match the trigger button: a disabled control cannot be opened imperatively either\n if (disabled) return;\n handleOpenChange(true);\n setFocusSearchInputRequestId((requestId) => requestId + 1);\n },\n }),\n [handleOpenChange, disabled],\n );\n\n // #endregion\n\n // #region Helper functions and variables\n\n const { otLong, ntLong, dcLong, extraLong } = {\n otLong: localizedStrings?.['%scripture_section_ot_long%'],\n ntLong: localizedStrings?.['%scripture_section_nt_long%'],\n dcLong: localizedStrings?.['%scripture_section_dc_long%'],\n extraLong: localizedStrings?.['%scripture_section_extra_long%'],\n };\n\n const getSectionLabel = useCallback(\n (section: Section): string => {\n return getSectionLongName(section, otLong, ntLong, dcLong, extraLong);\n },\n [otLong, ntLong, dcLong, extraLong],\n );\n\n const doesChapterMatch = useCallback(\n (chapter: number) => {\n if (!topMatch) return false;\n return !!topMatch.chapterNum && !chapter.toString().includes(topMatch.chapterNum.toString());\n },\n [topMatch],\n );\n\n /** The complete reference. Rendered at the widest step, and carried in the tooltip at every step. */\n const currentDisplayValue = useMemo(\n () =>\n formatScrRef(\n scrRef,\n localizedBookNames ? getLocalizedBookName(scrRef.book, localizedBookNames) : 'English',\n ),\n [scrRef, localizedBookNames],\n );\n\n /**\n * The book in whichever form the current step calls for: spelled out when there is room, the\n * abbreviated id from step 1 on. Both helpers already handle the no-localization fallback\n * (`Canon.bookIdToEnglishName` / the uppercase id), so this needs no new data and no new\n * localized strings.\n */\n const bookLabel = useMemo(\n () =>\n shrinkStep >= SHRINK_STEP.TIGHT\n ? getLocalizedBookId(scrRef.book, localizedBookNames)\n : getLocalizedBookName(scrRef.book, localizedBookNames),\n [scrRef.book, localizedBookNames, shrinkStep],\n );\n\n const chapterVerseLabel = `${scrRef.chapterNum}:${scrRef.verseNum}`;\n\n const setChapterRef = useCallback((chapter: number) => {\n return (element: HTMLDivElement | null) => {\n chapterRefs.current[chapter] = element;\n };\n }, []);\n\n const setVerseRef = useCallback((verse: number) => {\n return (element: HTMLDivElement | null) => {\n verseRefs.current[verse] = element;\n };\n }, []);\n\n // Whether the current input contains a chapter-verse separator (colon)\n const hasVerseSeparatorInInput = useMemo(\n () => hasChapterVerseSeparator(inputValue),\n [inputValue],\n );\n\n // Whether we should show a verse grid for the current top match\n const shouldShowVerseGridForTopMatch = useMemo(() => {\n if (!getEndVerse || !topMatch || !topMatch.chapterNum) return false;\n if (!hasVerseSeparatorInInput) return false;\n return getEndVerse(topMatch.book, topMatch.chapterNum) > 0;\n }, [getEndVerse, topMatch, hasVerseSeparatorInInput]);\n\n // Only offer the expansion while browsing: searching already spans every reachable book, so the\n // control would sit there doing nothing.\n // `!isCommandListHidden` because the toggle governs that list: quick navigation hides it while\n // leaving viewMode 'books', and a control offering to expand a list that is not on screen does\n // nothing a user can see.\n const canShowMoreBooksToggle =\n viewMode === 'books' &&\n !isCommandListHidden &&\n !inputValue.trim() &&\n booksOutsideProject.size > 0;\n\n const isBookDisabled = useCallback(\n (bookId: string) =>\n disableReferencesUpTo ? isBookBefore(bookId, disableReferencesUpTo) : false,\n [disableReferencesUpTo],\n );\n\n const makeIsChapterDisabled = useCallback(\n (bookId: string) => (chapter: number) =>\n disableReferencesUpTo ? isChapterBefore(bookId, chapter, disableReferencesUpTo) : false,\n [disableReferencesUpTo],\n );\n\n const makeIsVerseDisabled = useCallback(\n (bookId: string, chapterNum: number) => (verse: number) =>\n disableReferencesUpTo\n ? isVerseBefore(bookId, chapterNum, verse, disableReferencesUpTo)\n : false,\n [disableReferencesUpTo],\n );\n\n // `||`, not `??`, throughout: an absent translation can come back as an empty string, which `??`\n // would pass straight through as a blank label. `||` falls back to the English text instead.\n // A key with no entry at all resolves to the key itself, which is truthy and so renders raw as\n // `%key%`; that case is guarded by `book-chapter-control-localization.test.ts`, which fails if any\n // key in `BOOK_CHAPTER_CONTROL_STRING_KEYS` lacks an English value.\n const selectChapterTitle = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_selectChapter%'],\n 'Select chapter',\n );\n const selectVerseTitle = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_selectVerse%'],\n 'Select verse',\n );\n const backLabel =\n viewMode === 'verses'\n ? resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_backToChapters%'],\n 'Back to chapters',\n )\n : resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_backToBooks%'],\n 'Back to books',\n );\n const bookNotInProjectLabel = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_bookNotInProject%'],\n 'Not in project',\n );\n const bookNotInProjectDescriptionTemplate = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_bookNotInProjectDescription%'],\n '{book} is not in this project',\n );\n // A localized template that places the book itself, rather than appending the short label to a\n // name here: word order, punctuation, and any inflection of the name belong to the translation.\n // Substitutes the same `Name (ID)` form BookItem announces for an undimmed row, so the id is not\n // dropped from a dimmed row's accessible name and both read alike.\n const getBookNotInProjectDescription = useCallback(\n (bookId: string) =>\n formatReplacementString(bookNotInProjectDescriptionTemplate, {\n book: `${getLocalizedBookName(bookId, localizedBookNames)} (${getLocalizedBookId(\n bookId,\n localizedBookNames,\n )})`,\n }),\n [bookNotInProjectDescriptionTemplate, localizedBookNames],\n );\n const showMoreBooksLabel = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_showMoreBooks%'],\n 'Show more books',\n );\n const showProjectBooksOnlyLabel = resolveLocalizedString(\n localizedStrings?.['%webView_bookChapterControl_showProjectBooksOnly%'],\n 'Show project books only',\n );\n\n // #endregion\n\n // #region Keyboard handling\n\n // Handle keyboard navigation for CommandInput\n const handleInputKeyDown = useCallback(\n (event: KeyboardEvent ) => {\n // Override default Home and End key behavior to work normally for cursor movement.\n // Default behavior was to jump to the start/end of the list of items in the Command\n if (event.key === 'Home' || event.key === 'End') {\n event.stopPropagation(); // Prevent Command component from handling these\n }\n\n // Callers can declare extra submit keys (e.g. space and `-` for range pickers). We\n // only submit when the typed input resolves to a fully-qualified reference (book\n // AND chapter AND verse) — a partial match like \"GEN\" or \"GEN 1\" would be ambiguous\n // as an auto-complete from a separator keystroke, so we leave those for the user to\n // finish. When we do submit, consume the keystroke so the character doesn't end up\n // in the input after the popover closes.\n if (\n submitKeys &&\n submitKeys.includes(event.key) &&\n topMatch &&\n topMatch.chapterNum !== undefined &&\n topMatch.verseNum !== undefined\n ) {\n event.preventDefault();\n event.stopPropagation();\n handleTopMatchSelect();\n }\n },\n [submitKeys, topMatch, handleTopMatchSelect],\n );\n\n // Grid-aware keyboard navigation using Command's controlled value\n const handleCommandKeyDown = useCallback(\n (event: KeyboardEvent ) => {\n if (event.ctrlKey) return;\n\n const eventTarget = event.target instanceof HTMLElement ? event.target : undefined;\n\n // The recent-searches list portals out to `body`, but it stays a React child of this popover,\n // so its keydowns still arrive at this capture-phase handler — ahead of the list's own\n // bubble-phase navigation. Not one of them is ours to claim: while that list is open it owns\n // every key the user presses, and taking arrows or Enter here would leave it unnavigable and\n // submit a reference out from under it. Both roles matter, because the list is focused in two\n // stages: Radix focuses the CONTENT (`role=\"menu\"`) when it opens and only moves focus onto a\n // row (`role=\"menuitem\"`) once the user arrows.\n //\n // Asking only \"is this inside a menu?\" is not enough, because THIS PICKER can itself live\n // inside one: `ScopeSelector`'s Navigate footer renders it in a `DropdownMenuItem` and\n // portals its popover into the `DropdownMenuContent` (`PopoverPortalContainerProvider`, a\n // pattern `popover.tsx` documents). Every keystroke in the grid would then have `role=\"menu\"`\n // as an ancestor, and this bail would disable the whole control there. So the question is\n // whether the keystroke landed OUTSIDE the cmdk surface this handler drives.\n const isInOwnCommandSurface = !!eventTarget && !!commandRef.current?.contains(eventTarget);\n if (!isInOwnCommandSurface && eventTarget?.closest('[role=\"menu\"], [role=\"menuitem\"]'))\n return;\n\n // Tab keeps focus inside the picker instead of dismissing it. Radix closes a non-modal\n // popover as soon as focus leaves it, and the chapter and verse views offer no tab stop of\n // their own — the back button is deliberately out of the tab order — so every Tab there lands\n // outside and takes the whole picker down, dropping the user back to the trigger with their\n // book and chapter choice discarded. Cycle through the current view's own stops instead (the\n // books view has the search input, the recent-searches trigger, the quick-nav arrows and the\n // show-more toggle) and swallow the key outright when the view has none. Escape still\n // dismisses, so this traps Tab rather than the user.\n if (event.key === 'Tab') {\n const tabStops = commandRef.current ? getTabStops(commandRef.current) : [];\n if (tabStops.length === 0) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n const lastStop = tabStops[tabStops.length - 1];\n const edge = event.shiftKey ? tabStops[0] : lastStop;\n if (document.activeElement === edge) {\n event.preventDefault();\n event.stopPropagation();\n (event.shiftKey ? lastStop : tabStops[0]).focus();\n }\n return;\n }\n\n const { isLetter, isDigit } = getKeyCharacterType(event.key);\n\n // Enter / Space pick the highlighted chapter / verse. cmdk binds Enter natively on\n // the Command root, but a grid picker reads more like \"activate the focused cell\"\n // than an input form, so we centralize both keys here and let the `data-selected`\n // item drive the submit. When focus is on a natively interactive element (the back\n // button), yield: the browser's own activation (click on Enter keydown / Space\n // keyup) should run the button's `onClick`, not submit a grid cell. We still\n // `stopPropagation` so cmdk's Enter handler doesn't ALSO fire in parallel and\n // submit the highlighted chapter while the back button is being pressed.\n if (\n (viewMode === 'chapters' || viewMode === 'verses') &&\n (event.key === ' ' || event.key === 'Enter')\n ) {\n const isTargetInteractive = !!eventTarget?.closest(\n 'button, a, input, select, textarea, [role=\"button\"]',\n );\n if (isTargetInteractive) {\n // Don't preventDefault — browser-native activation (Enter → click, Space →\n // click on keyup) must still reach the button's onClick.\n event.stopPropagation();\n return;\n }\n // Activate the highlighted cell by calling the same handler its onSelect would, using the\n // item number we already hold in `commandValue`. Reading cmdk's private DOM attributes\n // (`cmdk-item`, `data-selected`, `data-disabled`) and synthesizing a click would tie\n // activation to library internals that nothing of ours pins.\n const activation = (() => {\n if (viewMode === 'verses') {\n const bookId = selectedBookForVersesView;\n const chapterNum = selectedChapterForVersesView;\n const verse = parseVerseFromItemValue(commandValue);\n if (!bookId || !chapterNum || verse === undefined) return undefined;\n return {\n isDisabled: makeIsVerseDisabled(bookId, chapterNum)(verse),\n activate: () => handleVerseSelect(verse),\n };\n }\n const bookId = selectedBookForChaptersView;\n const chapter = parseChapterFromItemValue(commandValue);\n if (!bookId || chapter === undefined) return undefined;\n return {\n isDisabled: makeIsChapterDisabled(bookId)(chapter),\n activate: () => handleChapterSelect(chapter),\n };\n })();\n\n if (activation) {\n event.preventDefault();\n event.stopPropagation();\n // Skip activation when the cell is disabled, checking the same predicate the grid\n // renders it with — activation has no DOM node here to read a disabled state from.\n if (!activation.isDisabled) activation.activate();\n return;\n }\n }\n\n // Enter over a top match submits the reference its row displays. The preview grid owns the\n // highlight, so cmdk would otherwise dispatch Enter at the highlighted cell — which knows\n // only a chapter and would drop the verse the user typed. Space is deliberately not included:\n // the books view is a text field, where a space is a character.\n //\n // `!isCommandListHidden` for the same reason the arrow branch below checks it: quick\n // navigation unmounts the list, taking the top-match row with it, while `topMatch` still\n // reflects the stale query. Submitting it there would silently undo the quick-nav step the\n // user just took, with nothing on screen that named the reference being submitted.\n if (viewMode === 'books' && topMatch && !isCommandListHidden && event.key === 'Enter') {\n // The header's own controls (quick navigation, the recent-searches trigger) keep their\n // activation, and so does any input that isn't this picker's search box. The\n // recent-searches list itself never gets this far — the portalled-menu bail at the top of\n // this handler returns before any of these branches run.\n //\n // Excluding the search box is load-bearing, not a special case: it is itself an `input`, so\n // without this it would match the selector below and Enter — the normal way to commit a\n // typed reference — would never submit anything. The chapters/verses branch above needs no\n // such exclusion because the search box is not rendered in those views.\n const isTargetInteractive =\n eventTarget !== commandInputRef.current &&\n !!eventTarget?.closest('button, a, input, select, textarea, [role=\"button\"]');\n if (!isTargetInteractive) {\n event.preventDefault();\n event.stopPropagation();\n handleTopMatchSelect();\n return;\n }\n }\n\n // Letter / digit keys in chapter or verse view do nothing: the filter input isn't\n // visible there, so forwarding keystrokes to it would silently exit the grid\n // (jumping back to the book list and typing into the hidden input). Users stay\n // on the current page; Backspace is the explicit way back.\n if ((viewMode === 'chapters' || viewMode === 'verses') && (isLetter || isDigit)) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n\n // Backspace steps back one level: verses to chapters, chapters to books. This is the\n // keyboard counterpart to the header's back button, which is deliberately out of the tab\n // order, so it is the only way a keyboard user leaves a grid without committing a reference.\n if (event.key === 'Backspace' && (viewMode === 'chapters' || viewMode === 'verses')) {\n event.preventDefault();\n event.stopPropagation();\n if (viewMode === 'verses') handleBackToChapters();\n else handleBackToBooks();\n return;\n }\n\n // Narrows `event.key` to `ArrowKey` for `computeTargetGridItem` below, and leaves every\n // non-arrow key to cmdk.\n if (!isArrowKey(event.key)) return;\n\n // Quick navigation hides the whole list, and with it the top-match row and the preview grid\n // this handler would be steering. There is nothing on screen for an arrow to move, so\n // claiming one would swallow the keystroke — denying it both to cmdk and to the quick-nav\n // buttons' own focus-restore. The `fetchEndChapter(...) > 1` conjunct in the grid resolver\n // below exists for the same reason; this is the other half of \"is a grid actually rendered\".\n if (isCommandListHidden) return;\n\n // In the books view the search input keeps focus, so a horizontal arrow is first of all a\n // caret key: it belongs to the grid only once the caret has nowhere left to go in that\n // direction — the same rule a combobox uses, and the same reasoning that forwards Home and End\n // to the input. Claiming it unconditionally freezes the caret mid-query AND quietly retargets\n // what Enter submits, because the top-match row prefers the highlighted cell over the parsed\n // query: pressing ArrowLeft to edit the verse in \"mat 12:15\" would step the highlight to 14\n // and submit a verse that was never typed. The dedicated chapter and verse views render no\n // input and take all four arrows.\n //\n // Once the user has stepped into the preview grid, though, they are navigating cells and the\n // whole grid answers to the arrows. Leaving the horizontal pair on the caret strands them\n // there: able to move the highlight down a row but never back along one. The vertical arrows\n // are the way in (they were never caret keys) and editing the query is the way out, so the\n // caret is never taken away from someone who is still typing.\n if (\n viewMode === 'books' &&\n !hasPreviewGridKeyboardControl &&\n (event.key === 'ArrowLeft' || event.key === 'ArrowRight')\n ) {\n // Only when the caret is actually IN the input. An `` keeps its selection offsets\n // after blur, so reading them unconditionally would yield the key to a caret that cannot\n // move — and cmdk binds no horizontal arrows on the Command root, so the keystroke would do\n // nothing at all.\n const input = eventTarget === commandInputRef.current ? commandInputRef.current : undefined;\n const caretStart = input?.selectionStart ?? 0;\n const caretEnd = input?.selectionEnd ?? 0;\n // Which arrow walks toward the start of the text is a property of the layout, not of the\n // key: in a right-to-left field the leftmost character is the LAST one.\n const isTowardTextStart =\n direction === 'rtl' ? event.key === 'ArrowRight' : event.key === 'ArrowLeft';\n const canCaretMove =\n !!input &&\n (caretStart !== caretEnd ||\n (isTowardTextStart ? caretStart > 0 : caretEnd < input.value.length));\n if (canCaretMove) return;\n }\n\n // Shift+arrow is a selection gesture, not a navigation one: in the search box it extends the\n // text selection, and the grid has no notion of a range. Leave it to whatever has focus.\n if (event.shiftKey) return;\n\n // Arrows aimed at a focused header control belong to that control — the quick-nav buttons use\n // ArrowUp / ArrowDown to hand focus back to the search input. The books view's preview grid is\n // steered from the input and never holds focus itself, so it has no claim on those.\n if (\n viewMode === 'books' &&\n eventTarget !== commandInputRef.current &&\n eventTarget?.closest('button, a, [role=\"button\"]')\n )\n return;\n\n // Chapters and verses differ only in where the item count comes from and how an item's\n // cmdk value is spelled. Everything else — reading the current highlight, computing the\n // target, writing it back, scrolling it into view — is identical, so it lives in one place\n // and a fix cannot land in only one grid.\n //\n // Select by the grid that is actually rendered, not by view mode: the books view shows a\n // VERSE preview grid whenever the query carries a chapter-verse separator, and driving that\n // with chapter arithmetic writes a value no verse cell can match, blanking the highlight.\n const grid = (() => {\n const versePreviewInBooksView =\n viewMode === 'books' && topMatch && shouldShowVerseGridForTopMatch && topMatch.chapterNum\n ? { bookId: topMatch.book, chapterNum: topMatch.chapterNum }\n : undefined;\n const verseTarget =\n viewMode === 'verses'\n ? { bookId: selectedBookForVersesView, chapterNum: selectedChapterForVersesView }\n : versePreviewInBooksView;\n\n if (verseTarget) {\n const { bookId, chapterNum } = verseTarget;\n if (!bookId || !chapterNum || !getEndVerse) return undefined;\n return {\n max: getEndVerse(bookId, chapterNum),\n current: parseVerseFromItemValue(commandValue) ?? 0,\n buildValue: (item: number) => verseItemValue(bookId, chapterNum, item),\n refs: verseRefs,\n // In books view focus stays on the CommandInput so the user can keep typing; only\n // the dedicated grid views pull focus off the back button.\n takeFocus: viewMode === 'verses',\n };\n }\n\n // The books view renders its chapter preview only for books with more than one chapter, so\n // a single-chapter top match (Jude, Obadiah, Philemon, 2-3 John) has no grid to drive. Claim\n // the keystroke there and it would write a chapter value no rendered item carries, blanking\n // the highlight; let it fall through to cmdk so the list stays navigable instead.\n if (\n viewMode === 'chapters' ||\n (viewMode === 'books' && topMatch && fetchEndChapter(topMatch.book) > 1)\n ) {\n const bookId = viewMode === 'chapters' ? selectedBookForChaptersView : topMatch?.book;\n if (!bookId) return undefined;\n return {\n max: fetchEndChapter(bookId),\n current: parseChapterFromItemValue(commandValue) ?? 0,\n buildValue: (item: number) => chapterItemValue(bookId, item),\n refs: chapterRefs,\n takeFocus: viewMode === 'chapters',\n };\n }\n return undefined;\n })();\n\n if (!grid) return;\n\n // A non-positive count means the Scripture data has no chapter/verse count for this book\n // (deuterocanonical books come back as -1). Navigating with it produces a highlight value\n // no grid cell can match, which silently blanks the highlight.\n if (grid.max <= 0) return;\n\n // The grid is taking this key, so from here it owns the keyboard and the horizontal arrows\n // follow the vertical ones into it. Set before the clamp below, because entering the grid is\n // the point even on the press that cannot move the highlight — in a single-row grid\n // (Lamentations has five chapters) ArrowDown has nowhere to go, and a user who could not get\n // the arrows to follow would have no way in at all. Only the books view tracks this; the\n // dedicated grid views have no caret competing for the keys.\n if (viewMode === 'books') setHasPreviewGridKeyboardControl(true);\n\n if (grid.takeFocus) {\n // Arrow keys drive the grid now — pull focus off the back button (the only natively\n // focusable element in these views) so its focus ring doesn't compete with the grid's\n // highlight. The Command root carries tabIndex={-1} from cmdk, so it is a valid focus\n // target and PopoverContent's capture-phase key handling keeps working.\n commandRef.current?.focus();\n }\n\n const target = computeTargetGridItem({\n current: grid.current,\n key: event.key,\n max: grid.max,\n direction,\n });\n\n // An arrow key aimed at the grid belongs to the grid even when the highlight does not move.\n // The Command root navigates with `loop`, so releasing a clamped keystroke to it would wrap\n // the highlight to the opposite edge — precisely what clamping exists to prevent.\n event.preventDefault();\n event.stopPropagation();\n\n if (target === grid.current) return;\n\n setCommandValue(grid.buildValue(target));\n\n const targetElement = grid.refs.current[target];\n if (targetElement) targetElement.scrollIntoView({ block: 'nearest', behavior: 'smooth' });\n },\n [\n viewMode,\n topMatch,\n shouldShowVerseGridForTopMatch,\n isCommandListHidden,\n hasPreviewGridKeyboardControl,\n direction,\n handleBackToBooks,\n handleBackToChapters,\n handleChapterSelect,\n handleTopMatchSelect,\n handleVerseSelect,\n makeIsChapterDisabled,\n makeIsVerseDisabled,\n selectedBookForChaptersView,\n selectedBookForVersesView,\n selectedChapterForVersesView,\n getEndVerse,\n commandValue,\n ],\n );\n\n const handleQuickNavButtonKeyDown = useCallback((event: KeyboardEvent ) => {\n if (event.shiftKey || event.key === 'Tab' || event.key === ' ') return;\n\n // Enter must activate the focused quick-nav button the way any other button\n // would. The browser turns keydown Enter into a click automatically, but cmdk's\n // onKeyDown on the Command root (an ancestor) would fire next and call\n // `event.preventDefault()` in its Enter branch — canceling that click synthesis\n // and submitting the highlighted book list item instead of running the\n // quick-nav handler. Stop propagation here (button onKeyDown runs before the\n // ancestor's) so cmdk never sees the Enter. Do NOT preventDefault — that's\n // what the browser uses to produce the click on the button.\n if (event.key === 'Enter') {\n event.stopPropagation();\n return;\n }\n\n // Up / Down signal the user wants to walk the book list. cmdk's arrow-key\n // handler on the Command root takes care of moving the `data-selected`\n // highlight (the keydown keeps bubbling up past us to reach it), but the\n // quick-nav button's focus ring would otherwise linger and compete with\n // the cmdk highlight. Pull focus to the search input — the visual focus\n // state that a user expects to see during book-list navigation.\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n commandInputRef.current?.focus();\n return;\n }\n\n const { isLetter, isDigit } = getKeyCharacterType(event.key);\n\n if (isLetter || isDigit) {\n event.preventDefault();\n\n setInputValue((prevValue) => prevValue + event.key);\n commandInputRef.current?.focus();\n\n setIsCommandListHidden(false);\n }\n }, []);\n\n // #endregion\n\n // #region Auto-scroll\n\n // Auto-scroll to currently selected book when dropdown opens in book view\n useLayoutEffect(() => {\n const scrollTimeout = setTimeout(() => {\n if (\n isCommandOpen &&\n viewMode === 'books' &&\n commandListRef.current &&\n selectedBookItemRef.current\n ) {\n const listElement = commandListRef.current;\n const itemElement = selectedBookItemRef.current;\n\n // Calculate scroll position to center the selected item\n const itemOffsetTop = itemElement.offsetTop;\n const listHeight = listElement.clientHeight;\n const itemHeight = itemElement.clientHeight;\n const scrollPosition = itemOffsetTop - listHeight / 2 + itemHeight / 2;\n\n listElement.scrollTo({\n top: Math.max(0, scrollPosition),\n behavior: 'smooth',\n });\n\n // Set the selected book as the active item for keyboard navigation\n setCommandValue(generateCommandValue(scrRef.book));\n }\n }, 0);\n\n return () => {\n clearTimeout(scrollTimeout);\n };\n }, [isCommandOpen, viewMode, inputValue, topMatch, scrRef.book]);\n\n // Auto-scroll to appropriate chapter\n useLayoutEffect(() => {\n if (viewMode === 'chapters' && selectedBookForChaptersView) {\n // Check if we're entering chapter view for the currently selected book\n const isCurrentlySelectedBook = selectedBookForChaptersView === scrRef.book;\n const initialChapter = isCurrentlySelectedBook ? scrRef.chapterNum : 1;\n\n // Seed commandValue to the starting chapter so arrow-key navigation has a concrete\n // starting point (see handleCommandKeyDown) and cmdk visibly highlights that chapter\n // even when focus is pinned on the PopoverContent wrapper by Radix's FocusScope in\n // modal mode.\n setCommandValue(chapterItemValue(selectedBookForChaptersView, initialChapter));\n\n // Reset scroll position to top, except when viewing the currently selected book\n setTimeout(() => {\n if (commandListRef.current) {\n if (isCurrentlySelectedBook) {\n // Scroll to the currently selected chapter\n const targetElement = chapterRefs.current[scrRef.chapterNum];\n if (targetElement) {\n targetElement.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n } else {\n // Reset to top for other books\n commandListRef.current.scrollTo({ top: 0 });\n }\n }\n\n // Ensure Command component has focus for keyboard navigation\n if (commandRef.current) {\n commandRef.current.focus();\n }\n }, 0);\n }\n }, [viewMode, selectedBookForChaptersView, topMatch, scrRef.book, scrRef.chapterNum]);\n\n // Auto-scroll to appropriate verse\n useLayoutEffect(() => {\n if (\n viewMode === 'verses' &&\n selectedBookForVersesView &&\n selectedChapterForVersesView !== undefined\n ) {\n const isCurrentlySelectedChapter =\n selectedBookForVersesView === scrRef.book &&\n selectedChapterForVersesView === scrRef.chapterNum;\n const initialVerse = isCurrentlySelectedChapter ? scrRef.verseNum : 1;\n\n // Seed commandValue so arrow-key navigation has a concrete starting verse and cmdk\n // highlights it when focus is pinned on the PopoverContent wrapper (modal FocusScope).\n setCommandValue(\n verseItemValue(selectedBookForVersesView, selectedChapterForVersesView, initialVerse),\n );\n\n setTimeout(() => {\n if (commandListRef.current) {\n if (isCurrentlySelectedChapter) {\n const targetElement = verseRefs.current[scrRef.verseNum];\n if (targetElement) {\n targetElement.scrollIntoView({ block: 'center', behavior: 'smooth' });\n }\n } else {\n commandListRef.current.scrollTo({ top: 0 });\n }\n }\n if (commandRef.current) {\n commandRef.current.focus();\n }\n }, 0);\n }\n }, [\n viewMode,\n selectedBookForVersesView,\n selectedChapterForVersesView,\n scrRef.book,\n scrRef.chapterNum,\n scrRef.verseNum,\n ]);\n\n // Identity of the reference the preview grid is seeded from. Built out of the parsed reference\n // and the kind of grid on screen, so it changes exactly when a fresh seed is wanted — editing\n // the query to a different reference — and not when the highlight merely moves.\n const previewSeedKey = topMatch\n ? `${topMatch.book} ${topMatch.chapterNum ?? ''} ${topMatch.verseNum ?? ''} ${shouldShowVerseGridForTopMatch}`\n : '';\n const seededPreviewKeyRef = useRef('');\n // The cmdk value of the preview cell the highlight last named.\n const highlightedPreviewCellRef = useRef('');\n\n // The preview grid the books view renders under the top-match row, or `undefined` when there is\n // none on screen. Both the seeding effect below and the controlled-value handler read this, so\n // they cannot disagree about whether a grid exists to hold the highlight.\n const previewGrid = useMemo(() => {\n if (viewMode !== 'books' || !topMatch || isCommandListHidden) return undefined;\n\n const { book, chapterNum, verseNum } = topMatch;\n if (shouldShowVerseGridForTopMatch && chapterNum && getEndVerse) {\n return {\n max: getEndVerse(book, chapterNum),\n initial:\n verseNum ??\n (book === scrRef.book && chapterNum === scrRef.chapterNum ? scrRef.verseNum : 1),\n parse: parseVerseFromItemValue,\n buildValue: (item: number) => verseItemValue(book, chapterNum, item),\n };\n }\n // A single-chapter book renders no chapter preview, so there is no cell for a seed to land on;\n // writing one would blank the highlight instead of placing it.\n const endChapter = fetchEndChapter(book);\n if (endChapter <= 1) return undefined;\n return {\n max: endChapter,\n initial: chapterNum ?? (book === scrRef.book ? scrRef.chapterNum : 1),\n parse: parseChapterFromItemValue,\n buildValue: (item: number) => chapterItemValue(book, item),\n };\n }, [\n viewMode,\n topMatch,\n isCommandListHidden,\n shouldShowVerseGridForTopMatch,\n getEndVerse,\n scrRef.book,\n scrRef.chapterNum,\n scrRef.verseNum,\n ]);\n\n // The books view shows a chapter (or verse) preview grid under the top-match row. Seed its\n // highlight the same way the chapters and verses views seed theirs, so every grid surface obeys\n // the same rule: exactly one cell is highlighted for as long as the grid is on screen, and arrow\n // keys only ever move it.\n //\n // Seeding is still an effect rather than part of the value handler above, because a fresh\n // reference arrives as a render (the query changed), not as a value request from cmdk. Running it\n // in a LAYOUT effect keeps the seed in the same commit, so no frame is ever painted with the\n // highlight off the grid. A new parsed reference seeds afresh; a highlight the user moved\n // survives.\n useLayoutEffect(() => {\n if (viewMode !== 'books' || !topMatch || !previewGrid || previewGrid.max <= 0) {\n seededPreviewKeyRef.current = '';\n return;\n }\n\n const { max, initial, parse, buildValue } = previewGrid;\n // Only a value this grid actually renders can carry the highlight, so anything out of range or\n // belonging to another book counts as \"off the grid\".\n const cellNamedBy = (value: string) => {\n const item = parse(value);\n return item !== undefined && item >= 1 && item <= max && value === buildValue(item)\n ? item\n : undefined;\n };\n\n if (seededPreviewKeyRef.current !== previewSeedKey) {\n seededPreviewKeyRef.current = previewSeedKey;\n const seeded = buildValue(Math.min(Math.max(initial, 1), max));\n highlightedPreviewCellRef.current = seeded;\n setCommandValue(seeded);\n return;\n }\n\n if (cellNamedBy(commandValue) !== undefined) {\n highlightedPreviewCellRef.current = commandValue;\n return;\n }\n\n setCommandValue(\n cellNamedBy(highlightedPreviewCellRef.current) !== undefined\n ? highlightedPreviewCellRef.current\n : buildValue(Math.min(Math.max(initial, 1), max)),\n );\n }, [viewMode, topMatch, previewGrid, previewSeedKey, commandValue]);\n\n // #endregion\n\n return (\n \n \n );\n}\n\nexport default BookChapterControl;\n","import { SerializedVerseRef } from '@sillsdev/scripture';\nimport { LanguageStrings } from 'platform-bible-utils';\nimport { ComponentPropsWithoutRef, ReactNode, Ref } from 'react';\nimport { ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\n/**\n * Object containing all keys used for localization in the BookChapterControl component. If you're\n * using this component in an extension, you can pass it into the useLocalizedStrings hook to easily\n * obtain the localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_CHAPTER_CONTROL_STRING_KEYS = Object.freeze([\n '%scripture_section_ot_long%',\n '%scripture_section_nt_long%',\n '%scripture_section_dc_long%',\n '%scripture_section_extra_long%',\n '%history_recent%',\n '%history_recentSearches_ariaLabel%',\n '%webView_bookChapterControl_bookNotInProject%',\n '%webView_bookChapterControl_bookNotInProjectDescription%',\n '%webView_bookChapterControl_selectChapter%',\n '%webView_bookChapterControl_selectVerse%',\n '%webView_bookChapterControl_showMoreBooks%',\n '%webView_bookChapterControl_showProjectBooksOnly%',\n '%webView_bookChapterControl_previousChapter%',\n '%webView_bookChapterControl_nextChapter%',\n '%webView_bookChapterControl_previousVerse%',\n '%webView_bookChapterControl_nextVerse%',\n '%webView_bookChapterControl_backToBooks%',\n '%webView_bookChapterControl_backToChapters%',\n] as const);\n\n/** Type definition for the localized strings used in the BookChapterControl component */\nexport type BookChapterControlLocalizedStrings = {\n [localizedKey in (typeof BOOK_CHAPTER_CONTROL_STRING_KEYS)[number]]?: string;\n};\n\nexport type BookWithOptionalChapterAndVerse = Omit\n \n \nevent.stopPropagation()}\n // Close-on-trigger-click while open: Radix's built-in DismissableLayer prevents\n // dismissal when the pointer target is the trigger (it treats that as \"user intends\n // to toggle, let the trigger's own onClick handle it\"). But in our controlled\n // Popover the trigger's `onOpenToggle` calls `onOpenChange(!open)` — by the time\n // the click fires, React may have already re-rendered with `open=false` (from a\n // prior close), so `!open = true` and the popover reopens. We intercept here:\n // close the popover early (before Radix's own dismiss path) and set\n // `justClosedByTriggerRef` so the trigger's `onClick` can call `preventDefault()`\n // which makes Radix's `composeEventHandlers` skip `onOpenToggle` entirely.\n //\n // Guard with `isCommandOpen`: PopoverContent stays mounted during the fade-out\n // animation after close, so this handler still fires for trigger clicks made while\n // the popover is animating out. Treating those as \"close\" would set the\n // `justClosedByTriggerRef` interlock and block the legitimate reopen click. Only\n // intercept when the popover is logically open.\n onPointerDownOutside={(event) => {\n const { target } = event;\n if (\n isCommandOpen &&\n triggerRef.current &&\n target instanceof Node &&\n triggerRef.current.contains(target)\n ) {\n // Mark that we're closing due to a trigger click so the subsequent `click`\n // event on the button (which would reopen the popover via Radix's\n // `onOpenToggle`) can be blocked. See `justClosedByTriggerRef`.\n justClosedByTriggerRef.current = true;\n handleOpenChange(false);\n }\n }}\n onCloseAutoFocus={onCloseAutoFocus}\n >\n \n\n \n\n {/* Header: Input (with quick nav buttons) for book view, fixed header for chapter view */}\n {viewMode === 'books' ? (\n \n{\n setIsHeaderControlFocused(event.target !== commandInputRef.current);\n }}\n onBlur={(event) => {\n // Moving between two buttons in this row fires a blur before the next focus.\n // Ignore it while focus is still landing inside the row, so the ring does not\n // flicker back on between the quick-nav arrows.\n if (event.currentTarget.contains(event.relatedTarget)) return;\n setIsHeaderControlFocused(false);\n }}\n >\n\n ) : (\n\n\n {/* Navigation buttons for previous/next chapter/verse. `ButtonGroup` (rather than a\n plain flex row) supplies the `role=\"group\"` that names these four as one control\n and matches NavigationHistoryButtons, the neighbouring toolbar control. `gap-1`\n overrides the group's default flush-edge packing, which would run the ghost\n buttons together. A separator marks each change of `group`, so chapter and verse\n controls stay visually distinct. */}\n {/* `h-8.5` on the buttons and `translate-y-px` here are tuned against the\n `CommandInput` beside them, which InputGroup fixes at `h-8`, in this `items-end`\n row — change them together if that height changes. */}\nsetIsCommandListHidden(false)}\n className={recentSearches && recentSearches.length > 0 ? 'tw:pe-8!' : ''}\n // Picker semantics: with nothing typed, Space picks the highlighted book (the\n // Enter UX). Neither of this control's own Space handlers covers that state —\n // `handleInputKeyDown` claims a key only for a FULLY-qualified `submitKeys`\n // match (an empty input has no top match at all), and the `data-selected` grid\n // pick in `handleCommandKeyDown` is gated on the chapters and verses views,\n // while this input exists only in the books view. Space is still an ordinary\n // character once anything is typed, so \"1 Samuel\" stays searchable.\n spaceSelectsHighlightedItem\n />\n {recentSearches && recentSearches.length > 0 && (\n formatScrRef(verseRef, 'English')}\n getItemKey={(verseRef) =>\n `${verseRef.book}-${verseRef.chapterNum}-${verseRef.verseNum}`\n }\n ariaLabel={localizedStrings?.['%history_recentSearches_ariaLabel%']}\n groupHeading={localizedStrings?.['%history_recent%']}\n buttonClassName=\"tw:absolute tw:end-1 tw:top-1\"\n />\n )}\n \n {quickNavButtons.map(\n (\n { onClick, disabled: isQuickNavDisabled, title, icon: Icon, group },\n index,\n ) => {\n const quickNavButton = (\n \n );\n\n return (\n // Keyed by position, not by `title`: the titles are localized, so they all\n // change together the moment the strings resolve or the UI language does.\n // Keying on them would remount all four buttons at that instant, dropping\n // focus off whichever one the user was on and destroying an open tooltip.\n // The set is fixed in size and order, so the index is stable.\n // eslint-disable-next-line react/no-array-index-key\n \n\n {index > 0 && group !== quickNavButtons[index - 1].group && (\n \n );\n },\n )}\n\n )}\n {isQuickNavDisabled ? (\n // A disabled Button carries `pointer-events: none` from its own base\n // variants, so it is not hit-tested: neither a Radix tooltip nor a\n // `title` ON THE BUTTON can ever fire. These arrows come back disabled\n // at the edges of the canon — Genesis 1:1 is the default state of a\n // freshly opened project — which is exactly where a user asks what the\n // button was for. The wrapper is still hit-tested, so the native\n // tooltip it carries is the one hover explanation available here.\n \n {quickNavButton}\n \n ) : (\n \n \n )}\n{quickNavButton} \n{title} \n\n\n )}\n\n {/** Body */}\n {!isCommandListHidden && (\n\n \n {viewMode === 'chapters' && selectedBookForChaptersView && (\n \n {getLocalizedBookName(selectedBookForChaptersView, localizedBookNames)}\n \n )}\n {viewMode === 'verses' &&\n selectedBookForVersesView &&\n selectedChapterForVersesView !== undefined && (\n \n {`${getLocalizedBookName(selectedBookForVersesView, localizedBookNames)} ${selectedChapterForVersesView}`}\n \n )}\n \n {viewMode === 'verses' ? selectVerseTitle : selectChapterTitle}\n \n\n \n \n{backLabel} \n\n {/** Book list mode (also used in case of top matches) */}\n {viewMode === 'books' && (\n <>\n {/* Book List - Show when we don't have a top match */}\n {!topMatch &&\n Object.entries(filteredBooksByType).map(([type, books]) => {\n if (books.length === 0) return undefined;\n\n return (\n // We are mapping over filteredBooksByType, which uses Section as key type\n // eslint-disable-next-line no-type-assertion/no-type-assertion\n \n )}\n\n {/* Outside CommandList on purpose: inside it, cmdk would register this as an option —\n arrow-navigable and matched by typing — instead of a control. */}\n {canShowMoreBooksToggle && (\n\n {books.map((bookId) => (\n \n );\n })}\n\n {/* Top match scripture reference */}\n {topMatch && topMatchReference && (\n\n handleBookSelect(selectedBookId)\n }\n section={getSectionForBook(bookId)}\n commandValue={generateCommandValue(bookId)}\n suppressKeyboardHighlight={isHeaderControlFocused}\n ref={bookId === scrRef.book ? selectedBookItemRef : undefined}\n localizedBookNames={localizedBookNames}\n disabled={isBookDisabled(bookId)}\n dimmedReason={\n booksOutsideProject.has(bookId)\n ? bookNotInProjectLabel\n : undefined\n }\n dimmedDescription={\n booksOutsideProject.has(bookId)\n ? getBookNotInProjectDescription(bookId)\n : undefined\n }\n />\n ))}\n \n \n )}\n\n {/* Verse selector - when chapter-verse separator is present in the input */}\n {topMatch &&\n shouldShowVerseGridForTopMatch &&\n topMatch.chapterNum &&\n getEndVerse && (\n // No heading over this grid: the top-match row sits directly above it and\n // already names the book and the reference the grid is refining, so a\n // heading here only repeated the book back to the user one line later. The\n // dedicated verses view still carries one, because there it is the only\n // thing naming the book.\nsvg:last-child]:hidden\"\n >\n \n {formatScrRef(\n topMatchReference,\n getLocalizedBookName(topMatch.book, localizedBookNames),\n )}\n \n \n {getLocalizedBookId(topMatch.book, localizedBookNames)}\n \n \n\n )}\n\n {/* Chapter Selector - Show when we have a top match without a verse separator */}\n {topMatch &&\n !shouldShowVerseGridForTopMatch &&\n fetchEndChapter(topMatch.book) > 1 && (\n // No heading here either, for the same reason as the verse preview above:\n // the top-match row directly above already names the book.\n \n )}\n >\n )}\n\n {/* Basic chapter view mode */}\n {viewMode === 'chapters' && selectedBookForChaptersView && (\n \n )}\n\n {/* Verse view mode */}\n {viewMode === 'verses' &&\n selectedBookForVersesView &&\n selectedChapterForVersesView !== undefined &&\n getEndVerse && (\n \n )}\n \n \n\n )}\n&\n Partial >;\n\nexport type ViewMode = 'books' | 'chapters' | 'verses';\n\n/**\n * Imperative handle for controlling a {@link BookChapterControl} from outside React — e.g. the\n * `platform.openBookChapterControl` command opening it in response to Ctrl+B\n *\n * @experimental This export is unstable and may change shape or disappear without notice\n */\nexport type BookChapterControlHandle = {\n /**\n * Opens the reference dropdown and focuses its search input, ready for typing. No-op while the\n * control is disabled.\n */\n open: () => void;\n};\n\nexport type BookChapterControlProps = {\n /** The current scripture reference */\n scrRef: SerializedVerseRef;\n /** Callback to handle the submission of a selected reference */\n handleSubmit: (scrRef: SerializedVerseRef) => void;\n /** Optional additional class name for styling */\n className?: string;\n /** Callback to retrieve book IDs that are available in the current context */\n getActiveBookIds?: () => string[];\n /**\n * Optional callback returning book ids that exist outside the active project — e.g. books present\n * in an open resource. They are hidden from the default list, revealed by the \"show more books\"\n * control, and always searchable; those not also returned by `getActiveBookIds` render dimmed but\n * remain selectable.\n *\n * Ignored unless `getActiveBookIds` is also passed: without a project list the control already\n * offers the whole canon, so there is nothing left for this to add.\n *\n * WARNING: MUST BE STABLE - const or wrapped in useState, useMemo, etc. The reference must not be\n * updated every render\n */\n getAdditionalBookIds?: () => string[];\n /**\n * Optional map of localized book IDs/short names and full names. The key is the standard book ID\n * (e.g., \"2CH\"), the value contains a localized version of the ID and related book name (e.g. {\n * localizedId: '2CR', localizedName: '2 Crónicas' })\n */\n localizedBookNames?: Map ;\n /** Optional localized strings for the component */\n localizedStrings?: LanguageStrings;\n /** Array of recent scripture references for quick access */\n recentSearches?: SerializedVerseRef[];\n /** Callback to add a new recent scripture reference */\n onAddRecentSearch?: (scrRef: SerializedVerseRef) => void;\n /** Optional ID for the popover content for accessibility */\n id?: string;\n /**\n * Optional callback returning the number of verses for a given book and chapter. When provided,\n * the control enables verse selection: clicking a chapter transitions to a verse selection\n * sub-screen, and typing a reference with a chapter:verse separator shows a verse grid. When\n * omitted, the control selects `verseNum: 1` after a chapter is chosen (current behavior).\n */\n getEndVerse?: (bookId: string, chapterNum: number) => number;\n /**\n * Optional lower bound. When provided, any reference that comes strictly before this one in canon\n * order is disabled in the UI (books, chapters, and verses). Used to prevent selecting an \"end\"\n * reference that precedes a \"start\" reference (e.g., in a range picker).\n */\n disableReferencesUpTo?: SerializedVerseRef;\n /**\n * Optional list of extra keys that submit the currently-matched reference from the search input\n * (in addition to `Enter`, which always submits). When one of these keys is pressed while the\n * typed input resolves to a valid top-match reference, that match is submitted and the key is\n * consumed (not inserted into the input). Intended for flows where a \"separator\" keystroke\n * implies completion — e.g. a range picker that uses space or `-` to confirm the start of a range\n * and advance to the end.\n */\n submitKeys?: readonly string[];\n /**\n * Optional override for the contents of the trigger button. When provided, this replaces the\n * default current-reference label (`\"MAT 5:3\"`) rendered inside the button — useful when the\n * current reference is already shown elsewhere and the trigger only needs an icon (e.g. an inline\n * \"change reference\" affordance). The Button itself is still the PopoverTrigger; only its inner\n * content is swapped.\n */\n triggerContent?: ReactNode;\n /**\n * Optional Button variant applied to the trigger. Defaults to `\"outline\"` (the standard inline\n * picker look); pass `\"ghost\"` when the control is embedded in a menu / list where a bordered\n * button would feel out of place.\n */\n triggerVariant?: ButtonProps['variant'];\n /**\n * Set to `true` to render an up-down chevron indicator at the end of the trigger, signaling that\n * it opens a picker. Defaults to `false` (no chevron) — most existing embeddings show the current\n * reference alone and don't need one.\n */\n showTriggerChevron?: boolean;\n /**\n * Optional callback fired whenever the control's popover open state changes. Useful when the\n * parent needs to react to the picker opening or closing — e.g. dimming a sibling control while\n * this one is active. Internal back-navigation within the popover (verses → chapters → books)\n * does not toggle this: only true open/close transitions do.\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Optional handler forwarded to the underlying Radix `Popover.Content`. Fires as the popover\n * closes and decides where focus should land next — by default Radix returns focus to the trigger\n * button. Call `event.preventDefault()` and focus a different element when the trigger isn't the\n * right landing spot (e.g. the picker is nested inside a DropdownMenuItem and focus should return\n * to the menu item so arrow-key navigation continues to work).\n */\n onCloseAutoFocus?: ComponentPropsWithoutRef ['onCloseAutoFocus'];\n /**\n * Optional flag forwarded to the underlying Radix `Popover.Root`. Defaults to `false`. Set to\n * `true` when the control is opened from inside another focus-trapping primitive (a Radix Dialog\n * or DropdownMenu) — the transient focus blip that happens when the picker transitions between\n * book/chapter/verse views would otherwise collide with the outer scope's focus trap and dismiss\n * the popover. Modal mode gives the popover its own FocusScope that pauses the outer scope while\n * it's open, avoiding the collision.\n */\n modal?: boolean;\n /**\n * Optional alignment for the popover relative to its trigger along the cross-axis. Forwarded to\n * the underlying Radix `Popover.Content`. Defaults to `\"center\"`. Use `\"start\"` when the control\n * sits on the right edge of a constrained container (e.g. the second picker in a range dialog) to\n * keep the popover anchored to the trigger's leading edge rather than spilling off-screen.\n */\n align?: ComponentPropsWithoutRef ['align'];\n /**\n * Ref that receives a {@link BookChapterControlHandle} for imperative control\n *\n * @experimental This property is unstable and may change shape or disappear without notice\n */\n ref?: Ref ;\n /**\n * When true, the control is disabled (e.g. no target to navigate): the trigger button cannot be\n * clicked, an already-open dropdown closes, and the imperative\n * {@link BookChapterControlHandle.open} is a no-op\n */\n disabled?: boolean;\n};\n","import { type CSSProperties, type ComponentProps, ReactNode, useState } from 'react';\nimport { Check, ChevronDown } from 'lucide-react';\nimport { cn } from '@/utils/shadcn-ui/utils';\nimport { Button, ButtonProps } from '@/components/shadcn-ui/button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/shadcn-ui/popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/shadcn-ui/command';\n\nexport type ComboBoxLabelOption = { label: string; secondaryLabel?: string };\nexport type ComboBoxOption = string | number | ComboBoxLabelOption;\n\n/** Represents a group of options with an optional heading */\nexport type ComboBoxGroup = {\n /** The heading text for this group of options */\n groupHeading: string;\n /** The options within this group */\n options: readonly T[];\n};\n\nexport type ComboBoxProps = {\n /** Optional unique identifier */\n id?: string;\n /**\n * List of available options for the dropdown menu. Can be either:\n *\n * - A flat array of options (single group, no heading)\n * - An array of group objects. Each group has a heading and an array of options\n */\n options?: readonly T[] | readonly ComboBoxGroup [];\n /** @deprecated 3 December 2024. Renamed to `buttonClassName` */\n className?: string;\n /** Additional css classes to help with unique styling of the combo box button */\n buttonClassName?: string;\n /** Additional css classes to help with unique styling of the combo box popover */\n popoverContentClassName?: string;\n /**\n * Additional inline styles for the combo box popover. Use for z-index overrides instead of\n * className to avoid being overridden by PopoverContent's inline default z-index.\n */\n popoverContentStyle?: CSSProperties;\n /**\n * The selected value that the combo box currently holds. Must be shallow equal to one of the\n * options entries.\n */\n value?: T;\n /** Triggers when content of textfield is changed */\n onChange?: (newValue: T) => void;\n /** Used to determine the string value for a given option. */\n getOptionLabel?: (option: T) => string;\n /**\n * Used to determine the string value to display on the button for the selected value. If not\n * provided, falls back to `getOptionLabel`.\n */\n getButtonLabel?: (option: T) => string;\n /** Icon to be displayed on the trigger */\n icon?: ReactNode;\n /** Text displayed on button if `value` is undefined */\n buttonPlaceholder?: string;\n /** Placeholder text for text field */\n textPlaceholder?: string;\n /** Text to display when no options match input */\n commandEmptyMessage?: string;\n /** Variant of button */\n buttonVariant?: ButtonProps['variant'];\n /** Control how the popover menu should be aligned. Defaults to start */\n alignDropDown?: 'start' | 'center' | 'end';\n /** Optional boolean to set if trigger should be disabled */\n isDisabled?: boolean;\n /** Optional aria-label for the trigger button for accessibility */\n ariaLabel?: string;\n} & ComponentProps ;\n\nfunction getOptionLabelDefault(option: ComboBoxOption): string {\n if (typeof option === 'string') {\n return option;\n }\n if (typeof option === 'number') {\n return option.toString();\n }\n return option.label;\n}\n\n/**\n * Autocomplete input and command palette with a list of suggestions.\n *\n * Thanks to Shadcn for heavy inspiration and documentation\n * https://ui.shadcn.com/docs/components/combobox\n */\nexport function ComboBox ({\n id,\n options = [],\n className,\n buttonClassName,\n popoverContentClassName,\n popoverContentStyle,\n value,\n onChange = () => {},\n getOptionLabel = getOptionLabelDefault,\n getButtonLabel,\n icon = undefined,\n buttonPlaceholder = '',\n textPlaceholder = '',\n commandEmptyMessage = 'No option found',\n buttonVariant = 'outline',\n alignDropDown = 'start',\n isDisabled = false,\n ariaLabel,\n ...props\n}: ComboBoxProps ) {\n const [open, setOpen] = useState(false);\n\n const buttonLabel = getButtonLabel ?? getOptionLabel;\n\n const isGroupedOptions = (\n groupOptions: readonly T[] | readonly ComboBoxGroup [],\n ): groupOptions is readonly ComboBoxGroup [] => {\n return Boolean(\n groupOptions.length > 0 &&\n typeof groupOptions[0] === 'object' &&\n 'options' in groupOptions[0],\n );\n };\n\n const renderCommandItem = (option: T, groupHeading?: string) => {\n const optionLabel = getOptionLabel(option);\n const secondaryLabel =\n typeof option === 'object' && 'secondaryLabel' in option ? option.secondaryLabel : undefined;\n\n const key = `${groupHeading ?? ''}${optionLabel}${secondaryLabel ?? ''}`;\n\n return (\n {\n onChange(option);\n setOpen(false);\n }}\n className=\"tw:gap-1.5!\"\n >\n \n );\n };\n\n return (\n\n \n {optionLabel}\n {secondaryLabel && · {secondaryLabel}}\n \n \n \n );\n}\n\nexport default ComboBox;\n","import { ComboBox } from '@/components/basics/combo-box.component';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { useMemo } from 'react';\n\nexport type ChapterRangeSelectorProps = {\n /** The selected start chapter */\n startChapter: number;\n /** The selected end chapter */\n endChapter: number;\n /** Callback function to handle the selection of the start chapter */\n handleSelectStartChapter: (chapter: number) => void;\n /** Callback function to handle the selection of the end chapter */\n handleSelectEndChapter: (chapter: number) => void;\n /** Flag to disable the component */\n isDisabled?: boolean;\n /** The total number of chapters available */\n chapterCount: number;\n};\n\n/**\n * ChapterRangeSelector is a component that provides a UI for selecting a range of chapters. It\n * consists of two combo boxes for selecting the start and end chapters. The component ensures that\n * the selected start chapter is always less than or equal to the end chapter, and vice versa.\n *\n * @deprecated Jul 18 2025. This component is no longer supported or tested. Use of this component\n * is discouraged and it may be removed in the future.\n * @param {ChapterRangeSelectorProps} props - The props for the component.\n */\n\nexport function ChapterRangeSelector({\n startChapter,\n endChapter,\n handleSelectStartChapter,\n handleSelectEndChapter,\n isDisabled = false,\n chapterCount,\n}: ChapterRangeSelectorProps) {\n const chapterOptions = useMemo(\n () => Array.from({ length: chapterCount }, (_, index) => index + 1),\n [chapterCount],\n );\n\n const onChangeStartChapter = (value: number) => {\n handleSelectStartChapter(value);\n if (value > endChapter) {\n handleSelectEndChapter(value);\n }\n };\n\n const onChangeEndChapter = (value: number) => {\n handleSelectEndChapter(value);\n if (value < startChapter) {\n handleSelectStartChapter(value);\n }\n };\n\n return (\n <>\n \n\n \n \n\n \n\n \n\n {commandEmptyMessage} \n\n {isGroupedOptions(options) ? (\n options.map((group) => (\n \n\n {group.options.map((option) => renderCommandItem(option, group.groupHeading))}\n \n ))\n ) : (\n{options.map((option) => renderCommandItem(option))} \n )}\noption.toString()}\n value={startChapter}\n />\n\n \n option.toString()}\n value={endChapter}\n />\n >\n );\n}\n\nexport default ChapterRangeSelector;\n","import { Button } from '@/components/shadcn-ui/button';\nimport { Label } from '@/components/shadcn-ui/label';\nimport { RadioGroup, RadioGroupItem } from '@/components/shadcn-ui/radio-group';\nimport { Canon } from '@sillsdev/scripture';\nimport { LocalizedStringValue } from 'platform-bible-utils';\nimport { useState } from 'react';\nimport {\n ChapterRangeSelector,\n ChapterRangeSelectorProps,\n} from '../basics/chapter-range-selector.component';\n\n/** Enumeration of possible book selection modes */\nexport enum BookSelectionMode {\n CurrentBook = 'current book',\n ChooseBooks = 'choose books',\n}\n\nexport namespace BookSelectionMode {\n /** @deprecated Use BookSelectionMode.CurrentBook instead. */\n export const CURRENT_BOOK: BookSelectionMode = BookSelectionMode.CurrentBook;\n /** @deprecated Use BookSelectionMode.ChooseBooks instead. */\n export const CHOOSE_BOOKS: BookSelectionMode = BookSelectionMode.ChooseBooks;\n}\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component\n */\nexport const BOOK_SELECTOR_STRING_KEYS = Object.freeze([\n '%webView_bookSelector_currentBook%',\n '%webView_bookSelector_choose%',\n '%webView_bookSelector_chooseBooks%',\n] as const);\n\nexport type BookSelectorLocalizedStrings = {\n [localizedBookSelectorKey in (typeof BOOK_SELECTOR_STRING_KEYS)[number]]?: LocalizedStringValue;\n};\n\n/**\n * Gets the localized value for the provided key\n *\n * @param strings Object containing localized string\n * @param key Key for a localized string\n * @returns The localized value for the provided key, if available. Returns the key if no localized\n * value is available\n */\nconst localizeString = (\n strings: BookSelectorLocalizedStrings,\n key: keyof BookSelectorLocalizedStrings,\n) => {\n return strings[key] ?? key;\n};\n\ntype BookSelectorProps = ChapterRangeSelectorProps & {\n handleBookSelectionModeChange: (newMode: BookSelectionMode) => void;\n currentBookName: string;\n onSelectBooks: () => void;\n selectedBookIds: string[];\n localizedStrings: BookSelectorLocalizedStrings;\n};\n\n/**\n * BookSelector is a component that provides an interactive UI for selecting books. It can be set to\n * either allow the user to select a single book or to choose multiple books. In the former case, it\n * will display the range of chapters in the selected book, and in the latter case it will display a\n * list of the selected books.\n *\n * @deprecated Jul 18 2025. This component is no longer supported or tested and will be removed in a\n * later version. To let users select books, use the `SelectBooks` component instead (or\n * `ScopeSelector` to combine scope and book selection).\n * @param {BookSelectorProps} props\n * @param {function} props.handleBookSelectionModeChange - Callback function to handle changes in\n * book selection mode.\n * @param {string} props.currentBookName - The name of the currently selected book.\n * @param {function} props.onSelectBooks - Callback function to handle book selection.\n * @param {string[]} props.selectedBookIds - An array of book IDs that have been selected.\n * @param {BookSelectorLocalizedStrings} props.localizedStrings - Object containing localized\n * strings for the component.\n */\nexport function BookSelector({\n handleBookSelectionModeChange,\n currentBookName,\n onSelectBooks,\n selectedBookIds,\n chapterCount,\n endChapter,\n handleSelectEndChapter,\n startChapter,\n handleSelectStartChapter,\n localizedStrings,\n}: BookSelectorProps) {\n const currentBookText = localizeString(localizedStrings, '%webView_bookSelector_currentBook%');\n const chooseText = localizeString(localizedStrings, '%webView_bookSelector_choose%');\n const chooseBooksText = localizeString(localizedStrings, '%webView_bookSelector_chooseBooks%');\n\n const [bookSelectionMode, setBookSelectionMode] = useState (\n BookSelectionMode.CurrentBook,\n );\n\n const onSelectionModeChange = (newMode: BookSelectionMode) => {\n setBookSelectionMode(newMode);\n handleBookSelectionModeChange(newMode);\n };\n\n return (\n onSelectionModeChange(value as BookSelectionMode)}\n >\n \n );\n}\n\nexport default BookSelector;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createContext as n,useContext as e}from\"react\";const r=n(null);function t(n,e){let r=null;return null!=n&&(r=n[1]),{getTheme:function(){return null!=e?e:null!=r?r.getTheme():null}}}function o(){const n=e(r);return null==n&&function(n,...e){const r=new URL(\"https://lexical.dev/docs/error\"),t=new URLSearchParams;t.append(\"code\",n);for(const n of e)t.append(\"v\",n);throw r.search=t.toString(),Error(`Minified Lexical error #${n}; visit ${r.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}(8),n}export{r as LexicalComposerContext,t as createLexicalComposerContext,o as useLexicalComposerContext};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{createLexicalComposerContext as e,LexicalComposerContext as t}from\"@lexical/react/LexicalComposerContext\";import{createEditor as o,$getRoot as n,$createParagraphNode as i,$getSelection as r,HISTORY_MERGE_TAG as a}from\"lexical\";import{useLayoutEffect as c,useEffect as l,useMemo as d}from\"react\";import{jsx as s}from\"react/jsx-runtime\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,u=m?c:l,p={tag:a};function f({initialConfig:a,children:c}){const l=d(()=>{const{theme:t,namespace:c,nodes:l,onError:d,editorState:s,html:u}=a,f=e(null,t),E=o({editable:a.editable,html:u,namespace:c,nodes:l,onError:e=>d(e,E),theme:t});return function(e,t){if(null===t)return;if(void 0===t)e.update(()=>{const t=n();if(t.isEmpty()){const o=i();t.append(o);const n=m?document.activeElement:null;(null!==r()||null!==n&&n===e.getRootElement())&&o.select()}},p);else if(null!==t)switch(typeof t){case\"string\":{const o=e.parseEditorState(t);e.setEditorState(o,p);break}case\"object\":e.setEditorState(t,p);break;case\"function\":e.update(()=>{n().isEmpty()&&t(e)},p)}}(E,s),[E,f]},[]);return u(()=>{const e=a.editable,[t]=l;t.setEditable(void 0===e||e)},[]),s(t.Provider,{value:l,children:c})}export{f as LexicalComposer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{HISTORY_MERGE_TAG as t}from\"lexical\";import{useLayoutEffect as o,useEffect as i}from\"react\";const r=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?o:i;function n({ignoreHistoryMergeTagChange:o=!0,ignoreSelectionChange:i=!1,onChange:n}){const[a]=e();return r(()=>{if(n)return a.registerUpdateListener(({editorState:e,dirtyElements:r,dirtyLeaves:d,prevEditorState:s,tags:c})=>{i&&0===r.size&&0===d.size||o&&c.has(t)||s.isEmpty()||n(e,a,c)})},[a,o,i,n]),null}export{n as OnChangePlugin};\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure. Also,\n * modifications have been made to integrate with our codebase.\n *\n * Original file location: src/components/editor/themes/editor-theme.ts\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { EditorThemeClasses } from 'lexical';\n\nimport './editor-theme.css';\n\nexport const editorTheme: EditorThemeClasses = {\n ltr: 'tw:text-left',\n rtl: 'tw:text-right',\n heading: {\n h1: 'tw:scroll-m-20 tw:text-4xl tw:font-extrabold tw:tracking-tight tw:lg:text-5xl',\n h2: 'tw:scroll-m-20 tw:border-b tw:pb-2 tw:text-3xl tw:font-semibold tw:tracking-tight tw:first:mt-0',\n h3: 'tw:scroll-m-20 tw:text-2xl tw:font-semibold tw:tracking-tight',\n h4: 'tw:scroll-m-20 tw:text-xl tw:font-semibold tw:tracking-tight',\n h5: 'tw:scroll-m-20 tw:text-lg tw:font-semibold tw:tracking-tight',\n h6: 'tw:scroll-m-20 tw:text-base tw:font-semibold tw:tracking-tight',\n },\n paragraph: 'tw:outline-hidden',\n quote: 'tw:mt-6 tw:border-l-2 tw:pl-6 tw:italic',\n link: 'tw:text-blue-600 tw:hover:underline tw:hover:cursor-pointer',\n list: {\n checklist: 'tw:relative',\n listitem: 'tw:mx-8',\n listitemChecked:\n 'tw:relative tw:mx-2 tw:px-6 tw:list-none tw:outline-hidden tw:line-through tw:before:content-[\"\"] tw:before:w-4 tw:before:h-4 tw:before:top-0.5 tw:before:left-0 tw:before:cursor-pointer tw:before:block tw:before:bg-cover tw:before:absolute tw:before:border tw:before:border-primary tw:before:rounded tw:before:bg-primary tw:before:bg-no-repeat tw:after:content-[\"\"] tw:after:cursor-pointer tw:after:border-white tw:after:border-solid tw:after:absolute tw:after:block tw:after:top-[6px] tw:after:w-[3px] tw:after:left-[7px] tw:after:right-[7px] tw:after:h-[6px] tw:after:rotate-45 tw:after:border-r-2 tw:after:border-b-2 tw:after:border-l-0 tw:after:border-t-0',\n listitemUnchecked:\n 'tw:relative tw:mx-2 tw:px-6 tw:list-none tw:outline-hidden tw:before:content-[\"\"] tw:before:w-4 tw:before:h-4 tw:before:top-0.5 tw:before:left-0 tw:before:cursor-pointer tw:before:block tw:before:bg-cover tw:before:absolute tw:before:border tw:before:border-primary tw:before:rounded',\n nested: {\n listitem: 'tw:list-none tw:before:hidden tw:after:hidden',\n },\n ol: 'tw:m-0 tw:p-0 tw:list-decimal tw:[&>li]:mt-2',\n olDepth: [\n 'tw:list-outside tw:!list-decimal',\n 'tw:list-outside tw:!list-[upper-roman]',\n 'tw:list-outside tw:!list-[lower-roman]',\n 'tw:list-outside tw:!list-[upper-alpha]',\n 'tw:list-outside tw:!list-[lower-alpha]',\n ],\n ul: 'tw:m-0 tw:p-0 tw:list-outside tw:[&>li]:mt-2',\n ulDepth: [\n 'tw:list-outside tw:!list-disc',\n 'tw:list-outside tw:!list-disc',\n 'tw:list-outside tw:!list-disc',\n 'tw:list-outside tw:!list-disc',\n 'tw:list-outside tw:!list-disc',\n ],\n },\n hashtag: 'tw:text-blue-600 tw:bg-blue-100 tw:rounded-md tw:px-1',\n text: {\n bold: 'tw:font-bold',\n code: 'tw:bg-gray-100 tw:p-1 tw:rounded-md',\n italic: 'tw:italic',\n strikethrough: 'tw:line-through',\n subscript: 'tw:sub',\n superscript: 'tw:sup',\n underline: 'tw:underline',\n underlineStrikethrough: 'tw:underline tw:line-through',\n },\n image: 'tw:relative tw:inline-block tw:user-select-none tw:cursor-default editor-image',\n inlineImage:\n 'tw:relative tw:inline-block tw:user-select-none tw:cursor-default inline-editor-image',\n keyword: 'tw:text-purple-900 tw:font-bold',\n code: 'EditorTheme__code',\n codeHighlight: {\n atrule: 'EditorTheme__tokenAttr',\n attr: 'EditorTheme__tokenAttr',\n boolean: 'EditorTheme__tokenProperty',\n builtin: 'EditorTheme__tokenSelector',\n cdata: 'EditorTheme__tokenComment',\n char: 'EditorTheme__tokenSelector',\n class: 'EditorTheme__tokenFunction',\n 'class-name': 'EditorTheme__tokenFunction',\n comment: 'EditorTheme__tokenComment',\n constant: 'EditorTheme__tokenProperty',\n deleted: 'EditorTheme__tokenProperty',\n doctype: 'EditorTheme__tokenComment',\n entity: 'EditorTheme__tokenOperator',\n function: 'EditorTheme__tokenFunction',\n important: 'EditorTheme__tokenVariable',\n inserted: 'EditorTheme__tokenSelector',\n keyword: 'EditorTheme__tokenAttr',\n namespace: 'EditorTheme__tokenVariable',\n number: 'EditorTheme__tokenProperty',\n operator: 'EditorTheme__tokenOperator',\n prolog: 'EditorTheme__tokenComment',\n property: 'EditorTheme__tokenProperty',\n punctuation: 'EditorTheme__tokenPunctuation',\n regex: 'EditorTheme__tokenVariable',\n selector: 'EditorTheme__tokenSelector',\n string: 'EditorTheme__tokenSelector',\n symbol: 'EditorTheme__tokenProperty',\n tag: 'EditorTheme__tokenProperty',\n url: 'EditorTheme__tokenOperator',\n variable: 'EditorTheme__tokenVariable',\n },\n characterLimit: 'tw:!bg-destructive/50',\n table: 'EditorTheme__table tw:w-fit tw:overflow-scroll tw:border-collapse',\n tableCell:\n 'EditorTheme__tableCell tw:w-24 tw:relative tw:border tw:px-4 tw:py-2 tw:text-left tw:[&[align=center]]:text-center tw:[&[align=right]]:text-right',\n tableCellActionButton:\n 'EditorTheme__tableCellActionButton tw:bg-background tw:block tw:border-0 tw:rounded-2xl tw:w-5 tw:h-5 tw:text-foreground tw:cursor-pointer',\n tableCellActionButtonContainer:\n 'EditorTheme__tableCellActionButtonContainer tw:block tw:right-1 tw:top-1.5 tw:absolute tw:z-10 tw:w-5 tw:h-5',\n tableCellEditing: 'EditorTheme__tableCellEditing tw:rounded-sm tw:shadow-sm',\n tableCellHeader:\n 'EditorTheme__tableCellHeader tw:bg-muted tw:border tw:px-4 tw:py-2 tw:text-left tw:font-bold tw:[&[align=center]]:text-center tw:[&[align=right]]:text-right',\n tableCellPrimarySelected:\n 'EditorTheme__tableCellPrimarySelected tw:border tw:border-primary tw:border-solid tw:block tw:h-[calc(100%-2px)] tw:w-[calc(100%-2px)] tw:absolute tw:-left-[1px] tw:-top-[1px] tw:z-10 ',\n tableCellResizer:\n 'EditorTheme__tableCellResizer tw:absolute tw:-right-1 tw:h-full tw:w-2 tw:cursor-ew-resize tw:z-10 tw:top-0',\n tableCellSelected: 'EditorTheme__tableCellSelected tw:bg-muted',\n tableCellSortedIndicator:\n 'EditorTheme__tableCellSortedIndicator tw:block tw:opacity-50 tw:absolute tw:bottom-0 tw:left-0 tw:w-full tw:h-1 tw:bg-muted',\n tableResizeRuler:\n 'EditorTheme__tableCellResizeRuler tw:block tw:absolute tw:w-[1px] tw:h-full tw:bg-primary tw:top-0',\n tableRowStriping: 'EditorTheme__tableRowStriping tw:m-0 tw:border-t tw:p-0 tw:even:bg-muted',\n tableSelected: 'EditorTheme__tableSelected tw:ring-2 tw:ring-primary tw:ring-offset-2',\n tableSelection: 'EditorTheme__tableSelection tw:bg-transparent',\n layoutItem: 'tw:border tw:border-dashed tw:px-4 tw:py-2',\n layoutContainer: 'tw:grid tw:gap-2.5 tw:my-2.5 tw:mx-0',\n autocomplete: 'tw:text-muted-foreground',\n blockCursor: '',\n embedBlock: {\n base: 'tw:user-select-none',\n focus: 'tw:ring-2 tw:ring-primary tw:ring-offset-2',\n },\n hr: 'tw:p-0.5 tw:border-none tw:my-1 tw:mx-0 tw:cursor-pointer tw:after:content-[\"\"] tw:after:block tw:after:h-0.5 tw:after:bg-muted tw:selected:ring-2 tw:selected:ring-primary tw:selected:ring-offset-2 tw:selected:user-select-none',\n indent: '[--lexical-indent-base-value:40px]',\n mark: '',\n markOverlap: '',\n};\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/blocks/editor-00/nodes.ts\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { HeadingNode, QuoteNode } from '@lexical/rich-text';\nimport { Klass, LexicalNode, LexicalNodeReplacement, ParagraphNode, TextNode } from 'lexical';\n\nexport const nodes: ReadonlyArray\n\n\n\n\n\n \n\n \n \n\n\n \n\n\n\n \n \n\n \n | LexicalNodeReplacement> = [\n HeadingNode,\n ParagraphNode,\n TextNode,\n QuoteNode,\n];\n","'use client';\nimport { createContext, Component, createElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback !== undefined) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{ErrorBoundary as r}from\"react-error-boundary\";import{jsx as o}from\"react/jsx-runtime\";function n({children:n,onError:e}){return o(r,{fallback:o(\"div\",{style:{border:\"1px solid #f00\",color:\"#f00\",padding:\"8px\"},children:\"An error was thrown.\"}),onError:e,children:n})}export{n as LexicalErrorBoundary};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t,useMemo as i,useState as r,useRef as o}from\"react\";const c=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function u(e){return{initialValueFn:()=>e.isEditable(),subscribe:n=>e.registerEditableListener(n)}}function a(){return function(n){const[t]=e(),u=i(()=>n(t),[t,n]),[a,l]=r(()=>u.initialValueFn()),d=o(a);return c(()=>{const{initialValueFn:e,subscribe:n}=u,t=e();return d.current!==t&&(d.current=t,l(t)),n(e=>{d.current=e,l(e)})},[u,n]),a}(u)}export{a as useLexicalEditable};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$isTextNode as e,$getEditor as t,$isRootNode as n,$getSelection as o,$isRangeSelection as l,$caretRangeFromSelection as r,$isTokenOrSegmented as s,$isElementNode as i,$getCharacterOffsets as c,$cloneWithPropertiesEphemeral as f,$getNodeByKey as u,$getPreviousSelection as g,$createTextNode as a,$createRangeSelection as d,$findMatchingParent as p,INTERNAL_$isBlock as h,$setSelection as y,$caretFromPoint as m,$isExtendableTextPointCaret as S,$extendCaretToRange as x,$isChildCaret as T,$isDecoratorNode as N,$isRootOrShadowRoot as w,$hasAncestor as C,$isLeafNode as v}from\"lexical\";export{$cloneWithProperties,$selectAll}from\"lexical\";function K(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of t)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const E=new Map;function P(e){let t=e;for(;null!=t;){if(t.nodeType===Node.TEXT_NODE)return t;t=t.firstChild}return null}function k(e){const t=e.parentNode;if(null==t)throw new Error(\"Should never happen\");return[t,Array.from(t.childNodes).indexOf(e)]}function I(t,n,o,l,r){const s=n.getKey(),i=l.getKey(),c=document.createRange();let f=t.getElementByKey(s),u=t.getElementByKey(i),g=o,a=r;if(e(n)&&(f=P(f)),e(l)&&(u=P(u)),void 0===n||void 0===l||null===f||null===u)return null;\"BR\"===f.nodeName&&([f,g]=k(f)),\"BR\"===u.nodeName&&([u,a]=k(u));const d=f.firstChild;f===u&&null!=d&&\"BR\"===d.nodeName&&0===g&&0===a&&(a=1);try{c.setStart(f,g),c.setEnd(u,a)}catch(e){return null}return!c.collapsed||g===a&&s===i||(c.setStart(u,a),c.setEnd(f,g)),c}function B(e,t){const n=e.getRootElement();if(null===n)return[];const o=n.getBoundingClientRect(),l=getComputedStyle(n),r=parseFloat(l.paddingLeft)+parseFloat(l.paddingRight),s=Array.from(t.getClientRects());let i,c=s.length;s.sort((e,t)=>{const n=e.top-t.top;return Math.abs(n)<=3?e.left-t.left:n});for(let e=0;e t.top&&i.left+i.width>t.left,l=t.width+r===o.width;n||l?(s.splice(e--,1),c--):i=t}return s}function F(e){const t={};if(!e)return t;const n=e.split(\";\");for(const e of n)if(\"\"!==e){const[n,o]=e.split(/:([^]+)/);n&&o&&(t[n.trim()]=o.trim())}return t}function b(e){let t=E.get(e);return void 0===t&&(t=F(e),E.set(e,t)),t}function z(e){let t=\"\";for(const n in e)n&&(t+=`${n}: ${e[n]};`);return t}function R(e){const n=t().getElementByKey(e.getKey());if(null===n)return null;const o=n.ownerDocument.defaultView;return null===o?null:o.getComputedStyle(n)}function O(e){return R(n(e)?e:e.getParentOrThrow())}function A(e){const t=O(e);return null!==t&&\"rtl\"===t.direction}function M(e,t,n=\"self\"){const o=e.getStartEndPoints();if(t.isSelected(e)&&!s(t)&&null!==o){const[l,r]=o,s=e.isBackward(),i=l.getNode(),u=r.getNode(),g=t.is(i),a=t.is(u);if(g||a){const[o,l]=c(e),r=i.is(u),g=t.is(s?u:i),a=t.is(s?i:u);let d,p=0;if(r)p=o>l?l:o,d=o>l?o:l;else if(g){p=s?l:o,d=void 0}else if(a){p=0,d=s?o:l}const h=t.__text.slice(p,d);h!==t.__text&&(\"clone\"===n&&(t=f(t)),t.__text=h)}}return t}function _(e){if(\"text\"===e.type)return e.offset===e.getNode().getTextContentSize();const t=e.getNode();return i(t)||K(177),e.offset===t.getChildrenSize()}function L(t,o,r){let s=o.getNode(),c=r;if(i(s)){const e=s.getDescendantByIndex(o.offset);null!==e&&(s=e)}for(;c>0&&null!==s;){if(i(s)){const e=s.getLastDescendant();null!==e&&(s=e)}let r=s.getPreviousSibling(),f=0;if(null===r){let e=s.getParentOrThrow(),t=e.getPreviousSibling();for(;null===t;){if(e=e.getParent(),null===e){r=null;break}t=e.getPreviousSibling()}null!==e&&(f=e.isInline()?0:2,r=t)}let d=s.getTextContent();\"\"===d&&i(s)&&!s.isInline()&&(d=\"\\n\\n\");const p=d.length;if(!e(s)||c>=p){const e=s.getParent();s.remove(),null==e||0!==e.getChildrenSize()||n(e)||e.remove(),c-=p+f,s=r}else{const n=s.getKey(),r=t.getEditorState().read(()=>{const t=u(n);return e(t)&&t.isSimpleText()?t.getTextContent():null}),i=p-c,f=d.slice(0,i);if(null!==r&&r!==d){const e=g();let t=s;if(s.isSimpleText())s.setTextContent(r);else{const e=a(r);s.replace(e),t=e}if(l(e)&&e.isCollapsed()){const n=e.anchor.offset;t.select(n,n)}}else if(s.isSimpleText()){const e=o.key===n;let t=o.offset;t (\"function\"==typeof l?e[n]=l(o[n],t):null===l?delete e[n]:e[n]=l,e),{...o}),s=z(r);l(t)||e(t)?t.setStyle(s):t.setTextStyle(s),E.set(s,r)}function U(e,t){if(l(e)&&e.isCollapsed()){D(e,t);const n=e.anchor.getNode();i(n)&&n.isEmpty()&&D(n,t)}j(e=>{D(e,t)});const n=e.getNodes();if(n.length>0){const e=new Set;for(const o of n){if(!i(o)||!o.canBeEmpty()||0!==o.getChildrenSize())continue;const n=o.getKey();e.has(n)||(e.add(n),D(o,t))}}}function j(t){const n=o();if(!n)return;const i=new Map,c=e=>i.get(e.getKey())||[0,e.getTextContentSize()];if(l(n))for(const e of r(n).getTextSlices())e&&i.set(e.caret.origin.getKey(),e.getSliceIndices());const f=n.getNodes();for(const n of f){if(!e(n)||!n.canHaveFormat())continue;const[o,l]=c(n);if(l!==o)if(s(n)||0===o&&l===n.getTextContentSize())t(n);else{t(n.splitText(o,l)[0===o?0:1])}}l(n)&&\"text\"===n.anchor.type&&\"text\"===n.focus.type&&n.anchor.key===n.focus.key&&H(n)}function H(e){if(e.isBackward()){const{anchor:t,focus:n}=e,{key:o,offset:l,type:r}=t;t.set(n.key,n.offset,n.type),n.set(o,l,r)}}function V(e,t){const n=e.getFormatType(),o=e.getIndent();n!==t.getFormatType()&&t.setFormat(n),o!==t.getIndent()&&t.setIndent(o)}function W(e,t,n=V){if(null===e)return;const l=e.getStartEndPoints(),r=new Map;let s=null;if(l){const[e,t]=l;s=d(),s.anchor.set(e.key,e.offset,e.type),s.focus.set(t.key,t.offset,t.type);const n=p(e.getNode(),h),o=p(t.getNode(),h);i(n)&&r.set(n.getKey(),n),i(o)&&r.set(o.getKey(),o)}for(const t of e.getNodes())if(i(t)&&h(t))r.set(t.getKey(),t);else if(null===l){const e=p(t,h);i(e)&&r.set(e.getKey(),e)}for(const[e,o]of r){const l=t();n(o,l),o.replace(l,!0),s&&(e===s.anchor.key&&s.anchor.set(l.getKey(),s.anchor.offset,s.anchor.type),e===s.focus.key&&s.focus.set(l.getKey(),s.focus.offset,s.focus.type))}s&&e.is(o())&&y(s)}function X(e){return e.getNode().isAttached()}function q(e){let t=e;for(;null!==t&&!w(t);){const e=t.getLatest(),n=t.getParent();0===e.getChildrenSize()&&t.remove(!0),t=n}}function G(e,t,n=null){const o=e.getStartEndPoints(),l=o?o[0]:null,r=e.getNodes(),s=r.length;if(null!==l&&(0===s||1===s&&\"element\"===l.type&&0===l.getNode().getChildrenSize())){const e=\"text\"===l.type?l.getNode().getParentOrThrow():l.getNode(),o=e.getChildren();let r=t();return r.setFormat(e.getFormatType()),r.setIndent(e.getIndent()),o.forEach(e=>r.append(e)),n&&(r=n.append(r)),void e.replace(r)}let i=null,c=[];for(let o=0;o {t.append(e),p.add(e.getKey()),i(e)&&e.getChildrenKeys().forEach(e=>p.add(e))}),q(l)}}else if(d.has(n.getKey())){i(n)||K(179);const e=o();e.setFormat(n.getFormatType()),e.setIndent(n.getIndent()),f.push(e),n.remove(!0)}}if(null!==r)for(let e=0;e=0;e--){const t=f[e];u.insertAfter(t)}else{const e=u.getFirstChild();if(i(e)&&(u=e),null===e)if(r)u.append(r);else for(let e=0;e =0;e--){const t=f[e];u.insertAfter(t),h=t}const m=g();l(m)&&X(m.anchor)&&X(m.focus)?y(m.clone()):null!==h?h.selectEnd():e.dirty=!0}function Q(e){const t=Y(e);return null!==t&&\"vertical-rl\"===t.writingMode}function Y(e){const t=e.anchor.getNode();return i(t)?R(t):O(t)}function Z(e,t){let n=Q(e)?!t:t;te(e)&&(n=!n);const o=m(e.focus,n?\"previous\":\"next\");if(S(o))return!1;for(const e of x(o)){if(T(e))return!e.origin.isInline();if(!i(e.origin)){if(N(e.origin))return!0;break}}return!1}function ee(e,t,n,o){e.modify(t?\"extend\":\"move\",n,o)}function te(e){const t=Y(e);return null!==t&&\"rtl\"===t.direction}function ne(e,t,n){const o=te(e);let l;l=Q(e)||o?!n:n,ee(e,t,l,\"character\")}function oe(e,t,n){const o=b(e.getStyle());return null!==o&&o[t]||n}function le(t,n,o=\"\"){let r=null;const s=t.getNodes(),i=t.anchor,c=t.focus,f=t.isBackward(),u=f?c.getNode():i.getNode(),g=f?i.getNode():c.getNode(),a=f?c.offset:i.offset,d=f?i.offset:c.offset;if(l(t)&&t.isCollapsed()&&\"\"!==t.style){const e=b(t.style);if(null!==e&&n in e)return e[n]}for(let t=0;t c.length;)s.pop();d&&o(s)}function a(){i=null,r=null,null!==l&&l.disconnect(),l=null,u.remove();for(const t of s)t.remove();s=[]}u.style.position=\"relative\";const f=e.registerRootListener(function n(){const o=e.getRootElement();if(null===o)return a();const s=o.parentElement;if(!t(s))return a();a(),r=o,i=s,l=new MutationObserver(t=>{const o=e.getRootElement(),l=o&&o.parentElement;if(o!==r||l!==i)return n();for(const e of t)if(!u.contains(e.target))return c()}),l.observe(s,q),c()});return()=>{f(),a()}}function Q(t,e,n){if(\"text\"!==t.type&&r(e)){const o=e.getDOMSlot(n);return[o.element,o.getFirstChildOffset()+t.offset]}return[i(n)||n,t.offset]}function X(t){for(const e of t){const t=e.style;\"Highlight\"!==t.background&&(t.background=\"Highlight\"),\"HighlightText\"!==t.color&&(t.color=\"HighlightText\"),t.marginTop!==G(-1.5)&&(t.marginTop=G(-1.5)),t.paddingTop!==G(4)&&(t.paddingTop=G(4)),t.paddingBottom!==G(0)&&(t.paddingBottom=G(0))}}function Y(t,r=X){let i=null,l=null,s=null,u=null,c=null,a=null,f=()=>{};function d(e){e.read(()=>{const e=n();if(!o(e))return i=null,s=null,u=null,a=null,f(),void(f=()=>{});const[d,g]=function(t){const e=t.getStartEndPoints();return t.isBackward()?[e[1],e[0]]:e}(e),p=d.getNode(),m=p.getKey(),h=d.offset,v=g.getNode(),y=v.getKey(),w=g.offset,x=t.getElementByKey(m),E=t.getElementByKey(y),S=null===i||x!==l||h!==s||m!==i.getKey(),C=null===u||E!==c||w!==a||y!==u.getKey();if((S||C)&&null!==x&&null!==E){const e=function(t,e,n,o,r,i,l){const s=(t._window?t._window.document:document).createRange();return s.setStart(...Q(e,n,o)),s.setEnd(...Q(r,i,l)),s}(t,d,p,x,g,v,E);f(),f=J(t,e,r)}i=p,l=x,s=h,u=v,c=E,a=w})}return d(t.getEditorState()),e(t.registerUpdateListener(({editorState:t})=>d(t)),()=>{f()})}function Z(t,e){let n=null;const o=()=>{const o=getSelection(),r=o&&o.anchorNode,i=t.getRootElement();null!==r&&null!==i&&i.contains(r)?null!==n&&(n(),n=null):null===n&&(n=Y(t,e))};return t.registerRootListener(t=>{if(t){const e=t.ownerDocument;return e.addEventListener(\"selectionchange\",o),o(),()=>{null!==n&&n(),e.removeEventListener(\"selectionchange\",o)}}})}const tt=F,et=$,nt=j,ot=V,rt=O,it=W,lt=U,st=D,ut=H,ct=z;function at(t,e){for(const n of e)if(t.type.startsWith(n))return!0;return!1}function ft(t,e){const n=t[Symbol.iterator]();return new Promise((t,o)=>{const r=[],i=()=>{const{done:l,value:s}=n.next();if(l)return t(r);const u=new FileReader;u.addEventListener(\"error\",o),u.addEventListener(\"load\",()=>{const t=u.result;\"string\"==typeof t&&r.push({file:s,result:t}),i()}),at(s,e)?u.readAsDataURL(s):i()};i()})}function dt(t,e){return Array.from(mt(t,e))}function gt(t){return t?t.getAdjacentCaret():null}function pt(t,e){return Array.from(Et(t,e))}function mt(t,e){return vt(\"next\",t,e)}function ht(t,e){const n=a(c(t,e));return n&&n[0]}function vt(t,e,n){const o=x(),i=e||o,s=r(i)?l(i,t):c(i,t),f=wt(i),d=n?S(u(c(n,t)))||ht(n,t):ht(i,t);let g=f;return M({hasNext:t=>null!==t,initial:s,map:t=>({depth:g,node:t.origin}),step:t=>{if(t.isSameNodeCaret(d))return null;C(t)&&g++;const e=a(t);return!e||e[0].isSameNodeCaret(d)?null:(g+=e[1],e[0])}})}function yt(t){const e=a(c(t,\"next\"));return e&&[e[0].origin,e[1]]}function wt(t){let e=-1;for(let n=t;null!==n;n=n.getParent())e++;return e}function xt(t){const e=u(c(t,\"previous\")),n=a(e,\"root\");return n&&n[0].origin}function Et(t,e){return vt(\"previous\",t,e)}function St(t,e){let n=t;for(;null!=n;){if(n instanceof e)return n;n=n.getParent()}return null}function Ct(t){const e=s(t,t=>r(t)&&!t.isInline());return r(e)||k(4,t.__key),e}function At(t,e,n,o){const r=t=>t instanceof e;return t.registerNodeTransform(e,t=>{const e=(t=>{const e=t.getChildren();for(let t=0;t r(t)&&!t.isInline());if(null===u)continue;const c=u.getKey();u.canIndent()&&!i.has(c)&&(i.add(c),t(u))}return i.size>0}function _t(t,e){l(t,\"next\").insert(e)}let Kt=!(st||!et)&&void 0;function kt(t,e=!1){let n=1;if(function(){if(void 0===Kt){const t=document.createElement(\"div\");t.style.cssText=\"position: absolute; opacity: 0; width: 100px; left: -1000px;\",document.body.appendChild(t);const e=t.getBoundingClientRect();t.style.setProperty(\"zoom\",\"2\"),Kt=t.getBoundingClientRect().width===e.width,document.body.removeChild(t)}return Kt}()||e)for(;t;)n*=Number(window.getComputedStyle(t).getPropertyValue(\"zoom\")),t=t.parentElement;return n}function $t(t){return null!==t._parentEditor}function It(t,e){return Ot(t,e,null)}function Ot(t,e,n){let o=!1;for(const i of Ht(t))e(i)?null!==n&&n(i):(o=!0,r(i)&&Ot(i,e,n||(t=>i.insertAfter(t))),i.remove());return o}function Dt(t,e){const n=[],o=Array.from(t).reverse();for(let t=o.pop();void 0!==t;t=o.pop())if(e(t))n.push(t);else if(r(t))for(const e of Ht(t))o.push(e);return n}function Ft(t){return jt(l(t,\"next\"))}function Ht(t){return jt(l(t,\"previous\"))}function jt(t){return M({hasNext:T,initial:t.getAdjacentCaret(),map:t=>t.origin.getLatest(),step:t=>t.getAdjacentCaret()})}function zt(t){R(c(t,\"next\")).splice(1,t.getChildren())}function Ut(t){const e=e=>B(e,t),n=(e,n)=>_(e,t,n);return{$get:e,$set:n,accessors:[e,n],makeGetterMethod:()=>function(){return e(this)},makeSetterMethod:()=>function(t){return n(this,t)},stateConfig:t}}export{Dt as $descendantsMatching,dt as $dfs,mt as $dfsIterator,Tt as $filter,Ft as $firstToLastIterator,gt as $getAdjacentCaret,wt as $getDepth,Ct as $getNearestBlockElementAncestorOrThrow,St as $getNearestNodeOfType,xt as $getNextRightPreorderNode,yt as $getNextSiblingOrParentSibling,Bt as $handleIndentAndOutdent,_t as $insertFirst,Pt as $insertNodeIntoLeaf,bt as $insertNodeToNearestRoot,Lt as $insertNodeToNearestRootAtCaret,$t as $isEditorIsNestedEditor,Ht as $lastToFirstIterator,Nt as $restoreEditorState,pt as $reverseDfs,Et as $reverseDfsIterator,It as $unwrapAndFilterDescendants,zt as $unwrapNode,Rt as $wrapNodeInElement,tt as CAN_USE_BEFORE_INPUT,et as CAN_USE_DOM,nt as IS_ANDROID,ot as IS_ANDROID_CHROME,rt as IS_APPLE,it as IS_APPLE_WEBKIT,lt as IS_CHROME,st as IS_FIREFOX,ut as IS_IOS,ct as IS_SAFARI,kt as calculateZoomLevel,at as isMimeType,Ut as makeStateWrapper,Y as markSelection,ft as mediaFileReader,Mt as objectKlassEquals,J as positionNodeOnRange,At as registerNestedElementResolver,Z as selectionAlwaysOnDisplay};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as t,safeCast as e,CLEAR_EDITOR_COMMAND as n,COMMAND_PRIORITY_EDITOR as i,$getRoot as o,$getSelection as s,$createParagraphNode as r,$isRangeSelection as c,FORMAT_TEXT_COMMAND as a,$isNodeSelection as d,COMMAND_PRIORITY_LOW as u,DecoratorNode as f,$getState as l,toggleTextFormatType as h,$setState as g,TEXT_TYPE_TO_FORMAT as p,createState as m,shallowMergeConfig as v,RootNode as x,TextNode as E,LineBreakNode as y,TabNode as S,ParagraphNode as b,$isEditorState as w,HISTORY_MERGE_TAG as N,createEditor as O,mergeRegister as R,$getNodeByKey as C,$create as D,CLICK_COMMAND as F,isDOMNode as M,$getNodeFromDOMNode as I,addClassNamesToElement as _,createCommand as P,$createNodeSelection as A,$setSelection as j,removeClassNamesFromElement as k,$getEditor as $,KEY_TAB_COMMAND as K,OUTDENT_CONTENT_COMMAND as z,INDENT_CONTENT_COMMAND as L,INSERT_TAB_COMMAND as U,COMMAND_PRIORITY_CRITICAL as T,$isBlockElementNode as B,$createRangeSelection as W,$normalizeSelection__EXPERIMENTAL as G}from\"lexical\";export{configExtension,declarePeerDependency,defineExtension,safeCast,shallowMergeConfig}from\"lexical\";import{$insertNodeToNearestRoot as V,selectionAlwaysOnDisplay as Z,$handleIndentAndOutdent as J,$getNearestBlockElementAncestorOrThrow as H}from\"@lexical/utils\";const q=Symbol.for(\"preact-signals\");function Q(){if(it>1)return void it--;let t,e=!1;for(!function(){let t=nt;for(nt=void 0;void 0!==t;)t.S.v===t.v&&(t.S.i=t.i),t=t.o}();void 0!==tt;){let n=tt;for(tt=void 0,ot++;void 0!==n;){const i=n.u;if(n.u=void 0,n.f&=-3,!(8&n.f)&&ft(n))try{n.c()}catch(n){e||(t=n,e=!0)}n=i}}if(ot=0,it--,e)throw t}function X(t){if(it>0)return t();rt=++st,it++;try{return t()}finally{Q()}}let Y,tt;function et(t){const e=Y;Y=void 0;try{return t()}finally{Y=e}}let nt,it=0,ot=0,st=0,rt=0,ct=0;function at(t){if(void 0===Y)return;let e=t.n;return void 0===e||e.t!==Y?(e={i:0,S:t,p:Y.s,n:void 0,t:Y,e:void 0,x:void 0,r:e},void 0!==Y.s&&(Y.s.n=e),Y.s=e,t.n=e,32&Y.f&&t.S(e),e):-1===e.i?(e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=Y.s,e.n=void 0,Y.s.n=e,Y.s=e),e):void 0}function dt(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function ut(t,e){return new dt(t,e)}function ft(t){for(let e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function lt(t){for(let e=t.s;void 0!==e;e=e.n){const n=e.S.n;if(void 0!==n&&(e.r=n),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function ht(t){let e,n=t.s;for(;void 0!==n;){const t=n.p;-1===n.i?(n.S.U(n),void 0!==t&&(t.n=n.n),void 0!==n.n&&(n.n.p=t)):e=n,n.S.n=n.r,void 0!==n.r&&(n.r=void 0),n=t}t.s=e}function gt(t,e){dt.call(this,void 0),this.x=t,this.s=void 0,this.g=ct-1,this.f=4,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function pt(t,e){return new gt(t,e)}function mt(t){const e=t.m;if(t.m=void 0,\"function\"==typeof e){it++;const n=Y;Y=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,vt(t),e}finally{Y=n,Q()}}}function vt(t){for(let e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,mt(t)}function xt(t){if(Y!==this)throw new Error(\"Out-of-order effect\");ht(this),Y=t,this.f&=-2,8&this.f&&vt(this),Q()}function Et(t,e){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=null==e?void 0:e.name}function yt(t,e){const n=new Et(t,e);try{n.c()}catch(t){throw n.d(),t}const i=n.d.bind(n);return i[Symbol.dispose]=i,i}function St(t,e={}){const n={};for(const i in t){const o=e[i],s=ut(void 0===o?t[i]:o);n[i]=s}return n}dt.prototype.brand=q,dt.prototype.h=function(){return!0},dt.prototype.S=function(t){const e=this.t;e!==t&&void 0===t.e&&(t.x=e,this.t=t,void 0!==e?e.e=t:et(()=>{var t;null==(t=this.W)||t.call(this)}))},dt.prototype.U=function(t){if(void 0!==this.t){const e=t.e,n=t.x;void 0!==e&&(e.x=n,t.e=void 0),void 0!==n&&(n.e=e,t.x=void 0),t===this.t&&(this.t=n,void 0===n&&et(()=>{var t;null==(t=this.Z)||t.call(this)}))}},dt.prototype.subscribe=function(t){return yt(()=>{const e=this.value,n=Y;Y=void 0;try{t(e)}finally{Y=n}},{name:\"sub\"})},dt.prototype.valueOf=function(){return this.value},dt.prototype.toString=function(){return this.value+\"\"},dt.prototype.toJSON=function(){return this.value},dt.prototype.peek=function(){const t=Y;Y=void 0;try{return this.value}finally{Y=t}},Object.defineProperty(dt.prototype,\"value\",{get(){const t=at(this);return void 0!==t&&(t.i=this.i),this.v},set(t){if(t!==this.v){if(ot>100)throw new Error(\"Cycle detected\");!function(t){0!==it&&0===ot&&t.l!==rt&&(t.l=rt,nt={S:t,v:t.v,i:t.i,o:nt})}(this),this.v=t,this.i++,ct++,it++;try{for(let t=this.t;void 0!==t;t=t.x)t.t.N()}finally{Q()}}}}),gt.prototype=new dt,gt.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===ct)return!0;if(this.g=ct,this.f|=1,this.i>0&&!ft(this))return this.f&=-2,!0;const t=Y;try{lt(this),Y=this;const t=this.x();(16&this.f||this.v!==t||0===this.i)&&(this.v=t,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return Y=t,ht(this),this.f&=-2,!0},gt.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(let t=this.s;void 0!==t;t=t.n)t.S.S(t)}dt.prototype.S.call(this,t)},gt.prototype.U=function(t){if(void 0!==this.t&&(dt.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(let t=this.s;void 0!==t;t=t.n)t.S.U(t)}},gt.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let t=this.t;void 0!==t;t=t.x)t.t.N()}},Object.defineProperty(gt.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const t=at(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),Et.prototype.c=function(){const t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();\"function\"==typeof t&&(this.m=t)}finally{t()}},Et.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1,this.f&=-9,mt(this),lt(this),it++;const t=Y;return Y=this,xt.bind(this,t)},Et.prototype.N=function(){2&this.f||(this.f|=2,this.u=tt,tt=this)},Et.prototype.d=function(){this.f|=8,1&this.f||vt(this)},Et.prototype.dispose=function(){this.d()};const bt=t({build:(t,e,n)=>St(e),config:e({defaultSelection:\"rootEnd\",disabled:!1}),name:\"@lexical/extension/AutoFocus\",register(t,e,n){const i=n.getOutput();return yt(()=>i.disabled.value?void 0:t.registerRootListener(e=>{t.focus(()=>{const t=document.activeElement;null===e||null!==t&&e.contains(t)||e.focus({preventScroll:!0})},{defaultSelection:i.defaultSelection.peek()})}))}});function wt(){const t=o(),e=s(),n=r();t.clear(),t.append(n),null!==e&&n.select(),c(e)&&(e.format=0)}function Nt(t,e=wt){return t.registerCommand(n,n=>(t.update(e),!0),i)}const Ot=t({build:(t,e,n)=>St(e),config:e({$onClear:wt}),name:\"@lexical/extension/ClearEditor\",register(t,e,n){const{$onClear:i}=n.getOutput();return yt(()=>Nt(t,i.value))}});function Rt(t){const e=new Set,n=new Set;for(const i of Ct(t)){const t=\"function\"==typeof i?i:i.replace;e.add(t.getType()),n.add(t)}return{nodes:n,types:e}}function Ct(t){return(\"function\"==typeof t.nodes?t.nodes():t.nodes)||[]}const Dt=m(\"format\",{parse:t=>\"number\"==typeof t?t:0});class Ft extends f{$config(){return this.config(\"decorator-text\",{extends:f,stateConfigs:[{flat:!0,stateConfig:Dt}]})}getFormat(){return l(this,Dt)}getFormatFlags(t,e){return h(this.getFormat(),t,e)}hasFormat(t){const e=p[t];return 0!==(this.getFormat()&e)}setFormat(t){return g(this,Dt,t)}toggleFormat(t){const e=this.getFormat(),n=h(e,t,null);return this.setFormat(n)}isInline(){return!0}createDOM(){return document.createElement(\"span\")}updateDOM(){return!1}}function Mt(t){return t instanceof Ft}function It(t,e,n){const i=e.fontWeight,o=e.textDecoration.split(\" \"),s=\"700\"===i||\"bold\"===i,r=o.includes(\"line-through\"),c=\"italic\"===e.fontStyle,a=o.includes(\"underline\"),d=e.verticalAlign;return s&&!t.hasFormat(\"bold\")&&t.toggleFormat(\"bold\"),r&&!t.hasFormat(\"strikethrough\")&&t.toggleFormat(\"strikethrough\"),c&&!t.hasFormat(\"italic\")&&t.toggleFormat(\"italic\"),a&&!t.hasFormat(\"underline\")&&t.toggleFormat(\"underline\"),\"sub\"!==d||t.hasFormat(\"subscript\")||t.toggleFormat(\"subscript\"),\"super\"!==d||t.hasFormat(\"superscript\")||t.toggleFormat(\"superscript\"),n&&!t.hasFormat(n)&&t.toggleFormat(n),t}function _t(t,e,n=At){for(const[i,o]of Object.entries(n))t.hasFormat(o)&&(e=Pt(e,i));return e}function Pt(t,e){const n=document.createElement(e);return n.appendChild(t),n}const At={b:\"bold\",code:\"code\",em:\"italic\",i:\"italic\",mark:\"highlight\",s:\"strikethrough\",strong:\"bold\",sub:\"subscript\",sup:\"superscript\",u:\"underline\"},jt=t({name:\"@lexical/extension/DecoratorText\",nodes:()=>[Ft],register:(t,e,n)=>t.registerCommand(a,t=>{const e=s();if(d(e)||c(e))for(const n of e.getNodes())Mt(n)&&n.toggleFormat(t);return!1},u)});function kt(t,e){let n;return ut(t(),{unwatched(){n&&(n(),n=void 0)},watched(){this.value=t(),n=e(this)}})}const $t=t({build:t=>kt(()=>t.getEditorState(),e=>t.registerUpdateListener(t=>{e.value=t.editorState})),name:\"@lexical/extension/EditorState\"});function Kt(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),i=new URLSearchParams;i.append(\"code\",t);for(const t of e)i.append(\"v\",t);throw n.search=i.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function zt(t,e){if(t&&e&&!Array.isArray(e)&&\"object\"==typeof t&&\"object\"==typeof e){const n=t,i=e;for(const t in i)n[t]=zt(n[t],i[t]);return t}return e}const Lt=0,Ut=1,Tt=2,Bt=3,Wt=4,Gt=5,Vt=6,Zt=7;function Jt(t){return t.id===Lt}function Ht(t){return t.id===Tt}function qt(t){return function(t){return t.id===Ut}(t)||Kt(305,String(t.id),String(Ut)),Object.assign(t,{id:Tt})}const Qt=new Set;class Xt{builder;configs;_dependency;_peerNameSet;extension;state;_signal;constructor(t,e){this.builder=t,this.extension=e,this.configs=new Set,this.state={id:Lt}}mergeConfigs(){let t=this.extension.config||{};const e=this.extension.mergeConfig?this.extension.mergeConfig.bind(this.extension):v;for(const n of this.configs)t=e(t,n);return t}init(t){const e=this.state;Ht(e)||Kt(306,String(e.id));const n={getDependency:this.getInitDependency.bind(this),getDirectDependentNames:this.getDirectDependentNames.bind(this),getPeer:this.getInitPeer.bind(this),getPeerNameSet:this.getPeerNameSet.bind(this)},i={...n,getDependency:this.getDependency.bind(this),getInitResult:this.getInitResult.bind(this),getPeer:this.getPeer.bind(this)},o=function(t,e,n){return Object.assign(t,{config:e,id:Bt,registerState:n})}(e,this.mergeConfigs(),n);let s;this.state=o,this.extension.init&&(s=this.extension.init(t,o.config,n)),this.state=function(t,e,n){return Object.assign(t,{id:Wt,initResult:e,registerState:n})}(o,s,i)}build(t){const e=this.state;let n;e.id!==Wt&&Kt(307,String(e.id),String(Gt)),this.extension.build&&(n=this.extension.build(t,e.config,e.registerState));const i={...e.registerState,getOutput:()=>n,getSignal:this.getSignal.bind(this)};this.state=function(t,e,n){return Object.assign(t,{id:Gt,output:e,registerState:n})}(e,n,i)}register(t,e){this._signal=e;const n=this.state;n.id!==Gt&&Kt(308,String(n.id),String(Gt));const i=this.extension.register&&this.extension.register(t,n.config,n.registerState);return this.state=function(t){return Object.assign(t,{id:Vt})}(n),()=>{const t=this.state;t.id!==Zt&&Kt(309,String(n.id),String(Zt)),this.state=function(t){return Object.assign(t,{id:Gt})}(t),i&&i()}}afterRegistration(t){const e=this.state;let n;return e.id!==Vt&&Kt(310,String(e.id),String(Vt)),this.extension.afterRegistration&&(n=this.extension.afterRegistration(t,e.config,e.registerState)),this.state=function(t){return Object.assign(t,{id:Zt})}(e),n}getSignal(){return void 0===this._signal&&Kt(311),this._signal}getInitResult(){void 0===this.extension.init&&Kt(312,this.extension.name);const t=this.state;return function(t){return t.id>=Wt}(t)||Kt(313,String(t.id),String(Wt)),t.initResult}getInitPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionInitDependency():void 0}getExtensionInitDependency(){const t=this.state;return function(t){return t.id>=Bt}(t)||Kt(314,String(t.id),String(Bt)),{config:t.config}}getPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionDependency():void 0}getInitDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&Kt(315,this.extension.name,t.name),e.getExtensionInitDependency()}getDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&Kt(315,this.extension.name,t.name),e.getExtensionDependency()}getState(){const t=this.state;return function(t){return t.id>=Zt}(t)||Kt(316,String(t.id),String(Zt)),t}getDirectDependentNames(){return this.builder.incomingEdges.get(this.extension.name)||Qt}getPeerNameSet(){let t=this._peerNameSet;return t||(t=new Set((this.extension.peerDependencies||[]).map(([t])=>t)),this._peerNameSet=t),t}getExtensionDependency(){if(!this._dependency){const t=this.state;(function(t){return t.id>=Gt})(t)||Kt(317,this.extension.name),this._dependency={config:t.config,init:t.initResult,output:t.output}}return this._dependency}}const Yt={tag:N};function te(){const t=o();t.isEmpty()&&t.append(r())}const ee=t({config:e({setOptions:Yt,updateOptions:Yt}),init:({$initialEditorState:t=te})=>({$initialEditorState:t,initialized:!1}),afterRegistration(t,{updateOptions:e,setOptions:n},i){const o=i.getInitResult();if(!o.initialized){o.initialized=!0;const{$initialEditorState:i}=o;if(w(i))t.setEditorState(i,n);else if(\"function\"==typeof i)t.update(()=>{i(t)},e);else if(i&&(\"string\"==typeof i||\"object\"==typeof i)){const e=t.parseEditorState(i);t.setEditorState(e,n)}}return()=>{}},name:\"@lexical/extension/InitialState\",nodes:[x,E,y,S,b]}),ne=Symbol.for(\"@lexical/extension/LexicalBuilder\");function ie(...t){return ae.fromExtensions(t).buildEditor()}function oe(){}function se(t){throw t}function re(t){return Array.isArray(t)?t:[t]}const ce=\"0.43.0+prod.esm\";class ae{roots;extensionNameMap;outgoingConfigEdges;incomingEdges;conflicts;_sortedExtensionReps;PACKAGE_VERSION;constructor(t){this.outgoingConfigEdges=new Map,this.incomingEdges=new Map,this.extensionNameMap=new Map,this.conflicts=new Map,this.PACKAGE_VERSION=ce,this.roots=t;for(const e of t)this.addExtension(e)}static fromExtensions(t){const e=[re(ee)];for(const n of t)e.push(re(n));return new ae(e)}static maybeFromEditor(t){const e=t[ne];return e&&(e.PACKAGE_VERSION!==ce&&Kt(292,e.PACKAGE_VERSION,ce),e instanceof ae||Kt(293)),e}static fromEditor(t){const e=ae.maybeFromEditor(t);return void 0===e&&Kt(294),e}constructEditor(){const{$initialEditorState:t,onError:e,...n}=this.buildCreateEditorArgs(),i=Object.assign(O({...n,...e?{onError:t=>{e(t,i)}}:{}}),{[ne]:this});for(const t of this.sortedExtensionReps())t.build(i);return i}buildEditor(){let t=oe;function e(){try{t()}finally{t=oe}}const n=Object.assign(this.constructEditor(),{dispose:e,[Symbol.dispose]:e});return t=R(this.registerEditor(n),()=>n.setRootElement(null)),n}hasExtensionByName(t){return this.extensionNameMap.has(t)}getExtensionRep(t){const e=this.extensionNameMap.get(t.name);if(e)return e.extension!==t&&Kt(295,t.name),e}addEdge(t,e,n){const i=this.outgoingConfigEdges.get(t);i?i.set(e,n):this.outgoingConfigEdges.set(t,new Map([[e,n]]));const o=this.incomingEdges.get(e);o?o.add(t):this.incomingEdges.set(e,new Set([t]))}addExtension(t){void 0!==this._sortedExtensionReps&&Kt(296);const e=re(t),[n]=e;\"string\"!=typeof n.name&&Kt(297,typeof n.name);let i=this.extensionNameMap.get(n.name);if(void 0!==i&&i.extension!==n&&Kt(298,n.name),!i){i=new Xt(this,n),this.extensionNameMap.set(n.name,i);const t=this.conflicts.get(n.name);\"string\"==typeof t&&Kt(299,n.name,t);for(const t of n.conflictsWith||[])this.extensionNameMap.has(t)&&Kt(299,n.name,t),this.conflicts.set(t,n.name);for(const t of n.dependencies||[]){const e=re(t);this.addEdge(n.name,e[0].name,e.slice(1)),this.addExtension(e)}for(const[t,e]of n.peerDependencies||[])this.addEdge(n.name,t,e?[e]:[])}}sortedExtensionReps(){if(this._sortedExtensionReps)return this._sortedExtensionReps;const t=[],e=(n,i)=>{let o=n.state;if(Ht(o))return;const s=n.extension.name;var r;Jt(o)||Kt(300,s,i||\"[unknown]\"),Jt(r=o)||Kt(304,String(r.id),String(Lt)),o=Object.assign(r,{id:Ut}),n.state=o;const c=this.outgoingConfigEdges.get(s);if(c)for(const t of c.keys()){const n=this.extensionNameMap.get(t);n&&e(n,s)}o=qt(o),n.state=o,t.push(n)};for(const t of this.extensionNameMap.values())Jt(t.state)&&e(t);for(const e of t)for(const[t,n]of this.outgoingConfigEdges.get(e.extension.name)||[])if(n.length>0){const e=this.extensionNameMap.get(t);if(e)for(const t of n)e.configs.add(t)}for(const[t,...e]of this.roots)if(e.length>0){const n=this.extensionNameMap.get(t.name);void 0===n&&Kt(301,t.name);for(const t of e)n.configs.add(t)}return this._sortedExtensionReps=t,this._sortedExtensionReps}registerEditor(t){const e=this.sortedExtensionReps(),n=new AbortController,i=[()=>n.abort()],o=n.signal;for(const n of e){const e=n.register(t,o);e&&i.push(e)}for(const n of e){const e=n.afterRegistration(t);e&&i.push(e)}return R(...i)}buildCreateEditorArgs(){const t={},e=new Set,n=new Map,i=new Map,o={},s={},r=this.sortedExtensionReps();for(const c of r){const{extension:r}=c;if(void 0!==r.onError&&(t.onError=r.onError),void 0!==r.disableEvents&&(t.disableEvents=r.disableEvents),void 0!==r.parentEditor&&(t.parentEditor=r.parentEditor),void 0!==r.editable&&(t.editable=r.editable),void 0!==r.namespace&&(t.namespace=r.namespace),void 0!==r.$initialEditorState&&(t.$initialEditorState=r.$initialEditorState),r.nodes)for(const t of Ct(r)){if(\"function\"!=typeof t){const e=n.get(t.replace);e&&Kt(302,r.name,t.replace.name,e.extension.name),n.set(t.replace,c)}e.add(t)}if(r.html){if(r.html.export)for(const[t,e]of r.html.export.entries())i.set(t,e);r.html.import&&Object.assign(o,r.html.import)}r.theme&&zt(s,r.theme)}Object.keys(s).length>0&&(t.theme=s),e.size&&(t.nodes=[...e]);const c=Object.keys(o).length>0,a=i.size>0;(c||a)&&(t.html={},c&&(t.html.import=o),a&&(t.html.export=i));for(const e of r)e.init(t);return t.onError||(t.onError=se),t}}function de(t,e){const n=ae.fromEditor(t).getExtensionRep(e);return void 0===n&&Kt(303,e.name),n.getExtensionDependency()}function ue(t,e){const n=ae.fromEditor(t).extensionNameMap.get(e);return n?n.getExtensionDependency():void 0}function fe(t,e){const n=ue(t,e);return void 0===n&&Kt(291,e),n}const le=new Set,he=t({build(t,e,n){const i=n.getDependency($t).output,o=ut({watchedNodeKeys:new Map}),r=kt(()=>{},()=>yt(()=>{const t=r.peek(),{watchedNodeKeys:e}=o.value;let n,c=!1;i.value.read(()=>{if(s())for(const[i,o]of e.entries()){if(0===o.size){e.delete(i);continue}const s=C(i),r=s&&s.isSelected()||!1;c=c||r!==(!!t&&t.has(i)),r&&(n=n||new Set,n.add(i))}}),!c&&n&&t&&n.size===t.size||(r.value=n)}));return{watchNodeKey:function(t){const e=pt(()=>(r.value||le).has(t)),{watchedNodeKeys:n}=o.peek();let i=n.get(t);const s=void 0!==i;return i=i||new Set,i.add(e),s||(n.set(t,i),o.value={watchedNodeKeys:n}),e}}},dependencies:[$t],name:\"@lexical/extension/NodeSelection\"}),ge=P(\"INSERT_HORIZONTAL_RULE_COMMAND\");class pe extends f{static getType(){return\"horizontalrule\"}static clone(t){return new pe(t.__key)}static importJSON(t){return ve().updateFromJSON(t)}static importDOM(){return{hr:()=>({conversion:me,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(t){const e=document.createElement(\"hr\");return _(e,t.theme.hr),e}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}}function me(){return{node:ve()}}function ve(){return D(pe)}function xe(t){return t instanceof pe}const Ee=t({dependencies:[$t,he],name:\"@lexical/extension/HorizontalRule\",nodes:()=>[pe],register(t,e,n){const{watchNodeKey:o}=n.getDependency(he).output,r=ut({nodeSelections:new Map}),a=t._config.theme.hrSelected??\"selected\";return R(t.registerCommand(ge,t=>{const e=s();if(!c(e))return!1;if(null!==e.focus.getNode()){const t=ve();V(t)}return!0},i),t.registerCommand(F,t=>{if(M(t.target)){const e=I(t.target);if(xe(e))return function(t,e=!1){const n=s(),i=t.isSelected(),o=t.getKey();let r;e&&d(n)?r=n:(r=A(),j(r)),i?r.delete(o):r.add(o)}(e,t.shiftKey),!0}return!1},u),t.registerMutationListener(pe,(e,n)=>{X(()=>{let n=!1;const{nodeSelections:i}=r.peek();for(const[s,r]of e.entries())if(\"destroyed\"===r)i.delete(s),n=!0;else{const e=i.get(s),r=t.getElementByKey(s);e?e.domNode.value=r:(n=!0,i.set(s,{domNode:ut(r),selectedSignal:o(s)}))}n&&(r.value={nodeSelections:i})})}),yt(()=>{const t=[];for(const{domNode:e,selectedSignal:n}of r.value.nodeSelections.values())t.push(yt(()=>{const t=e.value;if(t){n.value?_(t,a):k(t,a)}}));return R(...t)}))}});const ye=t({build:(t,e)=>St({inheritEditableFromParent:e.inheritEditableFromParent}),config:e({$getParentEditor:function(){const t=$();return ae.fromEditor(t),t},inheritEditableFromParent:!1}),init:(t,e,n)=>{const i=e.$getParentEditor();t.parentEditor=i,t.theme=t.theme||i._config.theme},name:\"@lexical/extension/NestedEditor\",register:(t,e,n)=>yt(()=>{const e=t._parentEditor;if(e&&n.getOutput().inheritEditableFromParent.value)return t.setEditable(e.isEditable()),e.registerEditableListener(t.setEditable.bind(t))})}),Se=t({build:(t,e,n)=>St(e),config:e({disabled:!1,onReposition:void 0}),name:\"@lexical/utils/SelectionAlwaysOnDisplay\",register:(t,e,n)=>{const i=n.getOutput();return yt(()=>{if(!i.disabled.value)return Z(t,i.onReposition.value)})}});function be(t){return t.canBeEmpty()}function we(t,e,n=be){return R(t.registerCommand(K,e=>{const n=s();if(!c(n))return!1;e.preventDefault();const i=function(t){if(t.getNodes().filter(t=>B(t)&&t.canIndent()).length>0)return!0;const e=t.anchor,n=t.focus,i=n.isBefore(e)?n:e,o=i.getNode(),s=H(o);if(s.canIndent()){const t=s.getKey();let e=W();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=G(e),e.anchor.is(i))return!0}return!1}(n)?e.shiftKey?z:L:U;return t.dispatchCommand(i,void 0)},i),t.registerCommand(L,()=>{const t=\"number\"==typeof e?e:e?e.peek():null,i=s();if(!c(i))return!1;const o=\"function\"==typeof n?n:n.peek();return J(e=>{if(o(e)){const n=e.getIndent()+1;(!t||n St(e),config:e({$canIndent:be,disabled:!1,maxIndent:null}),name:\"@lexical/extension/TabIndentation\",register(t,e,n){const{disabled:i,maxIndent:o,$canIndent:s}=n.getOutput();return yt(()=>{if(!i.value)return we(t,o,s)})}});export{ve as $createHorizontalRuleNode,Mt as $isDecoratorTextNode,xe as $isHorizontalRuleNode,bt as AutoFocusExtension,Ot as ClearEditorExtension,jt as DecoratorTextExtension,Ft as DecoratorTextNode,$t as EditorStateExtension,Ee as HorizontalRuleExtension,pe as HorizontalRuleNode,ge as INSERT_HORIZONTAL_RULE_COMMAND,ee as InitialStateExtension,ae as LexicalBuilder,ye as NestedEditorExtension,he as NodeSelectionExtension,Se as SelectionAlwaysOnDisplayExtension,Ne as TabIndentationExtension,It as applyFormatFromStyle,_t as applyFormatToDom,X as batch,ie as buildEditorFromExtensions,pt as computed,yt as effect,de as getExtensionDependencyFromEditor,Rt as getKnownTypesAndNodes,ue as getPeerDependencyFromEditor,fe as getPeerDependencyFromEditorOrThrow,St as namedSignals,Nt as registerClearEditor,we as registerTabIndentation,ut as signal,et as untracked,kt as watchedSignal};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as e}from\"lexical\";const r=e({name:\"@lexical/react/ReactProvider\"});export{r as ReactProviderExtension};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$getRoot as t,$isDecoratorNode as e,$isElementNode as n,$isParagraphNode as r,$isTextNode as i,TextNode as o,$createTextNode as l}from\"lexical\";function s(){return t().getTextContent()}function f(t,e=!0){if(t)return!1;let n=s();return e&&(n=n.trim()),\"\"===n}function u(t,e){return()=>f(t,e)}function c(o){if(!f(o,!1))return!1;const l=t().getChildren(),s=l.length;if(s>1)return!1;for(let t=0;t c(t)}function a(t,e){let r=t.getFirstChild(),o=0;t:for(;null!==r;){if(n(r)){const t=r.getFirstChild();if(null!==t){r=t;continue}}else if(i(r)){const t=r.getTextContentSize();if(o+t>e)return{node:r,offset:e-o};o+=t}const t=r.getNextSibling();if(null!==t){r=t;continue}let l=r.getParent();for(;null!==l;){const t=l.getNextSibling();if(null!==t){r=t;continue t}l=l.getParent()}break}return null}function d(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),r=new URLSearchParams;r.append(\"code\",t);for(const t of e)r.append(\"v\",t);throw n.search=r.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function x(t,e,n,r){const s=t=>t instanceof n,f=t=>{const e=l(t.getTextContent());e.setFormat(t.getFormat()),t.replace(e)};return[t.registerNodeTransform(o,t=>{if(!t.isSimpleText())return;let n,o=t.getPreviousSibling(),l=t.getTextContent(),u=t;if(i(o)){const n=o.getTextContent(),r=e(n+l);if(s(o)){if(null===r||0!==(t=>t.getLatest().__mode)(o))return void f(o);{const e=r.end-n.length;if(e>0){const r=n+l.slice(0,e);if(o.select(),o.setTextContent(r),e===l.length)t.remove();else{const n=l.slice(e);t.setTextContent(n)}return}}}else if(null===r||r.start{const n=t.getTextContent(),r=e(n);if(null===r||0!==r.start)return void f(t);if(n.length>r.end)return void t.splitText(r.end);const o=t.getPreviousSibling();i(o)&&o.isTextEntity()&&(f(o),f(t));const l=t.getNextSibling();i(l)&&l.isTextEntity()&&(f(l),s(t)&&f(t))})]}export{c as $canShowPlaceholder,g as $canShowPlaceholderCurry,a as $findTextIntersectionFromCharacters,f as $isRootTextContentEmpty,u as $isRootTextContentEmptyCurry,s as $rootTextContent,x as registerLexicalTextEntity};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{effect as e,namedSignals as t}from\"@lexical/extension\";import{defineExtension as n,safeCast as o,$getSelection as i,$isRangeSelection as a,$isTextNode as r}from\"lexical\";function s(e){const t=window.location.origin,n=n=>{if(n.origin!==t)return;const o=e.getRootElement();if(document.activeElement!==o)return;const s=n.data;if(\"string\"==typeof s){let t;try{t=JSON.parse(s)}catch(e){return}if(t&&\"nuanria_messaging\"===t.protocol&&\"request\"===t.type){const o=t.payload;if(o&&\"makeChanges\"===o.functionId){const t=o.args;if(t){const[o,s,d,c,g]=t;e.update(()=>{const e=i();if(a(e)){const t=e.anchor;let i=t.getNode(),a=0,l=0;if(r(i)&&o>=0&&s>=0&&(a=o,l=o+s,e.setTextNodeRange(i,a,i,l)),a===l&&\"\"===d||(e.insertRawText(d),i=t.getNode()),r(i)){a=c,l=c+g;const t=i.getTextContentSize();a=a>t?t:a,l=l>t?t:l,e.setTextNodeRange(i,a,i,l)}n.stopImmediatePropagation()}})}}}}};return window.addEventListener(\"message\",n,!0),()=>{window.removeEventListener(\"message\",n,!0)}}const d=n({build:(e,n,o)=>t(n),config:o({disabled:\"undefined\"==typeof window}),name:\"@lexical/dragon\",register:(t,n,o)=>e(()=>o.getOutput().disabled.value?void 0:s(t))});export{d as DragonExtension,s as registerDragonSupport};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as r}from\"@lexical/react/LexicalComposerContext\";import{useLexicalEditable as e}from\"@lexical/react/useLexicalEditable\";import{LexicalBuilder as t}from\"@lexical/extension\";import{ReactProviderExtension as o}from\"@lexical/react/ReactProviderExtension\";import{useLayoutEffect as n,useEffect as i,useState as c,useMemo as a,Suspense as l}from\"react\";import{flushSync as s,createPortal as u}from\"react-dom\";import{jsx as d,jsxs as f,Fragment as m}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as p}from\"@lexical/text\";import{mergeRegister as x}from\"@lexical/utils\";import{registerDragonSupport as E}from\"@lexical/dragon\";import{registerRichText as h}from\"@lexical/rich-text\";function g(r,...e){const t=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",r);for(const r of e)o.append(\"v\",r);throw t.search=o.toString(),Error(`Minified Lexical error #${r}; visit ${t.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}const y=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:i;function w({editor:r,ErrorBoundary:e}){return function(r,e){const[t,o]=c(()=>r.getDecorators());return y(()=>r.registerDecoratorListener(r=>{s(()=>{o(r)})}),[r]),i(()=>{o(r.getDecorators())},[r]),a(()=>{const o=[],n=Object.keys(t);for(let i=0;i r._onError(e),children:d(l,{fallback:null,children:t[c]})}),s=r.getElementByKey(c);null!==s&&o.push(u(a,s,c))}return o},[e,t,r])}(r,e)}function v({editor:r,ErrorBoundary:e}){return function(r){const e=t.maybeFromEditor(r);if(e&&e.hasExtensionByName(o.name)){for(const r of[\"@lexical/plain-text\",\"@lexical/rich-text\"])e.hasExtensionByName(r)&&g(320,r);return!0}return!1}(r)?null:d(w,{editor:r,ErrorBoundary:e})}function B(r){return r.getEditorState().read(p(r.isComposing()))}function L({contentEditable:e,placeholder:t=null,ErrorBoundary:o}){const[n]=r();return function(r){y(()=>x(h(r),E(r)),[r])}(n),f(m,{children:[e,d(b,{content:t}),d(v,{editor:n,ErrorBoundary:o})]})}function b({content:t}){const[o]=r(),n=function(r){const[e,t]=c(()=>B(r));return y(()=>{function e(){const e=B(r);t(e)}return e(),x(r.registerUpdateListener(()=>{e()}),r.registerEditableListener(()=>{e()}))},[r]),e}(o),i=e();return n?\"function\"==typeof t?t(i):t:null}export{L as RichTextPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useEffect as t}from\"react\";function o({defaultSelection:o}){const[l]=e();return t(()=>{l.focus(()=>{const e=document.activeElement,t=l.getRootElement();null===t||null!==e&&t.contains(e)||t.focus({preventScroll:!0})},{defaultSelection:o})},[o,l]),null}export{o as AutoFocusPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{registerClearEditor as o}from\"@lexical/extension\";import{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as n,useEffect as t}from\"react\";const i=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?n:t;function r({onClear:n}){const[t]=e();return i(()=>o(t,n),[t,n]),null}export{r as ClearEditorPlugin};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{useLexicalComposerContext as e}from\"@lexical/react/LexicalComposerContext\";import{useLayoutEffect as t,useEffect as i,forwardRef as a,useState as r,useCallback as n,useMemo as o}from\"react\";import{jsx as l,jsxs as d,Fragment as c}from\"react/jsx-runtime\";import{$canShowPlaceholderCurry as s}from\"@lexical/text\";import{mergeRegister as u}from\"@lexical/utils\";const m=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:i;function f({editor:e,ariaActiveDescendant:t,ariaAutoComplete:i,ariaControls:a,ariaDescribedBy:d,ariaErrorMessage:c,ariaExpanded:s,ariaInvalid:u,ariaLabel:f,ariaLabelledBy:b,ariaMultiline:p,ariaOwns:x,ariaRequired:E,autoCapitalize:v,className:w,id:y,role:C=\"textbox\",spellCheck:g=!0,style:L,tabIndex:h,\"data-testid\":D,...I},R){const[k,q]=r(e.isEditable()),z=n(t=>{t&&t.ownerDocument&&t.ownerDocument.defaultView?e.setRootElement(t):e.setRootElement(null)},[e]),A=o(()=>function(...e){return t=>{for(const i of e)\"function\"==typeof i?i(t):null!=i&&(i.current=t)}}(R,z),[z,R]);return m(()=>(q(e.isEditable()),e.registerEditableListener(e=>{q(e)})),[e]),l(\"div\",{\"aria-activedescendant\":k?t:void 0,\"aria-autocomplete\":k?i:\"none\",\"aria-controls\":k?a:void 0,\"aria-describedby\":d,...null!=c?{\"aria-errormessage\":c}:{},\"aria-expanded\":k&&\"combobox\"===C?!!s:void 0,...null!=u?{\"aria-invalid\":u}:{},\"aria-label\":f,\"aria-labelledby\":b,\"aria-multiline\":p,\"aria-owns\":k?x:void 0,\"aria-readonly\":!k||void 0,\"aria-required\":E,autoCapitalize:v,className:w,contentEditable:k,\"data-testid\":D,id:y,ref:A,role:C,spellCheck:g,style:L,tabIndex:h,...I})}const b=a(f);function p(e){return e.getEditorState().read(s(e.isComposing()))}const x=a(E);function E(t,i){const{placeholder:a,...r}=t,[n]=e();return d(c,{children:[l(b,{editor:n,...r,ref:i}),null!=a&&l(v,{editor:n,content:a})]})}function v({content:e,editor:i}){const a=function(e){const[t,i]=r(()=>p(e));return m(()=>{function t(){const t=p(e);i(t)}return t(),u(e.registerUpdateListener(()=>{t()}),e.registerEditableListener(()=>{t()}))},[e]),t}(i),[n,o]=r(i.isEditable());if(t(()=>(o(i.isEditable()),i.registerEditableListener(e=>{o(e)})),[i]),!a)return null;let d=null;return\"function\"==typeof e?d=e(n):null!==e&&(d=e),null===d?null:l(\"div\",{\"aria-hidden\":!0,children:d})}export{x as ContentEditable,b as ContentEditableElement};\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure. Also,\n * modifications have been made to integrate with our codebase.\n *\n * Original file location: src/components/editor/editor-ui/content-editable.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { ReactNode } from 'react';\nimport { ContentEditable as LexicalContentEditable } from '@lexical/react/LexicalContentEditable';\n\ntype Props = {\n placeholder: string;\n className?: string;\n placeholderClassName?: string;\n};\n\nexport function ContentEditable({\n placeholder,\n className,\n placeholderClassName,\n}: Props): ReactNode {\n return (\n \n {placeholder}\n {children} ;\n}\n\nexport function useToolbarContext() {\n const context = useContext(Context);\n if (!context) {\n throw new Error('useToolbarContext must be used within a ToolbarContext provider');\n }\n return context;\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/editor/editor-hooks/use-modal.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { ReactNode, useCallback, useMemo, useState } from 'react';\n\nimport { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/shadcn-ui/dialog';\n\nexport function useEditorModal(): [\n ReactNode | undefined,\n (title: string, showModal: (onClose: () => void) => ReactNode) => void,\n] {\n const [modalContent, setModalContent] = useState<\n | {\n closeOnClickOutside: boolean;\n content: ReactNode;\n title: string;\n }\n | undefined\n >(undefined);\n\n const onClose = useCallback(() => {\n setModalContent(undefined);\n }, []);\n\n const modal = useMemo(() => {\n if (modalContent === undefined) {\n return undefined;\n }\n const { title, content } = modalContent;\n return (\n \n );\n }, [modalContent, onClose]);\n\n const showModal = useCallback(\n (\n title: string,\n getContent: (onClose: () => void) => ReactNode,\n closeOnClickOutside = false,\n ) => {\n setModalContent({\n closeOnClickOutside,\n content: getContent(onClose),\n title,\n });\n },\n [onClose],\n );\n\n return [modal, showModal];\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/editor/plugins/toolbar/toolbar-plugin.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n *\n * Documentation for the Toolbar Plugin-framework:\n * https://shadcn-editor.vercel.app/docs/plugins/toolbar\n */\n\nimport { ReactNode, useEffect, useState } from 'react';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { COMMAND_PRIORITY_CRITICAL, SELECTION_CHANGE_COMMAND } from 'lexical';\n\nimport { ToolbarContext } from '@/components/advanced/editor/context/toolbar-context';\nimport { useEditorModal } from '@/components/advanced/editor/editor-hooks/use-modal';\n\nexport function ToolbarPlugin({\n children,\n}: {\n children: (props: { blockType: string }) => ReactNode;\n}) {\n const [editor] = useLexicalComposerContext();\n\n const [activeEditor, setActiveEditor] = useState(editor);\n const [blockType, setBlockType] = useState('paragraph');\n\n const [modal, showModal] = useEditorModal();\n\n const $updateToolbar = () => {};\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n }, [activeEditor]);\n\n return (\n \n {modal}\n\n {children({ blockType })}\n \n );\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/editor/editor-hooks/use-update-toolbar.ts\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { useEffect } from 'react';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport {\n $getSelection,\n BaseSelection,\n COMMAND_PRIORITY_CRITICAL,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical';\n\nimport { useToolbarContext } from '@/components/advanced/editor/context/toolbar-context';\n\nexport function useUpdateToolbarHandler(callback: (selection: BaseSelection) => void) {\n const [editor] = useLexicalComposerContext();\n const { activeEditor } = useToolbarContext();\n\n useEffect(() => {\n return activeEditor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const selection = $getSelection();\n if (selection) {\n callback(selection);\n }\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n /**\n * We use `editor` (not `activeEditor`) in the dependency array because `activeEditor` can\n * change frequently. Re-registering the command on every `activeEditor` change would be\n * unnecessary. We only need to re-register when the main editor instance or callback changes.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [editor, callback]);\n\n useEffect(() => {\n activeEditor.getEditorState().read(() => {\n const selection = $getSelection();\n if (selection) {\n callback(selection);\n }\n });\n }, [activeEditor, callback]);\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure.\n *\n * Original file location: src/components/editor/plugins/toolbar/font-format-toolbar-plugin.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n *\n * Documentation for this specific plugin:\n * https://shadcn-editor.vercel.app/docs/plugins/toolbar/font-format-toolbar\n */\n\nimport { useCallback, useState } from 'react';\nimport { $isTableSelection } from '@lexical/table';\nimport { $isRangeSelection, BaseSelection, FORMAT_TEXT_COMMAND } from 'lexical';\nimport { BoldIcon, ItalicIcon } from 'lucide-react';\n\nimport { useToolbarContext } from '@/components/advanced/editor/context/toolbar-context';\nimport { useUpdateToolbarHandler } from '@/components/advanced/editor/editor-hooks/use-update-toolbar';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/shadcn-ui/toggle-group';\n\nconst FORMATS = [\n { format: 'bold', icon: BoldIcon, label: 'Bold' },\n { format: 'italic', icon: ItalicIcon, label: 'Italic' },\n // CUSTOM: TJ removed underline and strikethrough as they are not supported by the current comment\n // data conversion and are not in P9 anyway. We can add these back if we ever get this supported.\n /* { format: 'underline', icon: UnderlineIcon, label: 'Underline' },\n { format: 'strikethrough', icon: StrikethroughIcon, label: 'Strikethrough' }, */\n] as const;\n\nexport function FontFormatToolbarPlugin() {\n const { activeEditor } = useToolbarContext();\n const [activeFormats, setActiveFormats] = useState([]);\n\n const $updateToolbar = useCallback((selection: BaseSelection) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n const formats: string[] = [];\n FORMATS.forEach(({ format }) => {\n if (selection.hasFormat(format)) {\n formats.push(format);\n }\n });\n setActiveFormats((prev) => {\n // Only update if formats have changed\n if (prev.length !== formats.length || !formats.every((f) => prev.includes(f))) {\n return formats;\n }\n return prev;\n });\n }\n }, []);\n\n useUpdateToolbarHandler($updateToolbar);\n\n return (\n \n {FORMATS.map(({ format, icon: Icon, label }) => (\n \n );\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure. Also,\n * modifications have been made to integrate with our codebase.\n *\n * Original file location: src/components/blocks/editor-00/plugins.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { ReactNode, useEffect, useState } from 'react';\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';\nimport { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin';\nimport { ClearEditorPlugin } from '@lexical/react/LexicalClearEditorPlugin';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { CLEAR_EDITOR_COMMAND } from 'lexical';\n\nimport { ContentEditable } from '@/components/advanced/editor/editor-ui/content-editable';\nimport { ToolbarPlugin } from '@/components/advanced/editor/plugins/toolbar/toolbar-plugin';\nimport { FontFormatToolbarPlugin } from '@/components/advanced/editor/plugins/toolbar/font-format-toolbar-plugin';\n\nfunction ClearEditorBridge({ onClear }: { onClear?: (clearFn: () => void) => void }) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (onClear) {\n onClear(() => {\n editor.dispatchCommand(CLEAR_EDITOR_COMMAND, undefined);\n });\n }\n }, [editor, onClear]);\n\n return undefined;\n}\n\nexport function Plugins({\n placeholder = 'Start typing ...',\n autoFocus = false,\n onClear,\n actions,\n}: {\n placeholder?: string;\n autoFocus?: boolean;\n onClear?: (clearFn: () => void) => void;\n actions?: ReactNode;\n}) {\n const [, setFloatingAnchorElem] = useState{\n activeEditor.dispatchCommand(FORMAT_TEXT_COMMAND, format);\n }}\n >\n \n ))}\n\n (undefined);\n\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== undefined) {\n setFloatingAnchorElem(_floatingAnchorElem);\n }\n };\n\n return (\n \n {/* toolbar plugins */}\n\n {actions && (\n\n {() => (\n // Sticky, but deliberately with no z-index of its own. `position: sticky` pins relative\n // to the nearest scrolling ancestor, not this element's own overflow — `Plugins` is\n // shared by consumers (e.g. the comments panel's editor, whose scrolling ancestor is the\n // thread list) where the toolbar does need to stay pinned while its container scrolls.\n // With z-index left at its default (auto), this box establishes no stacking level of its\n // own, so a host's positioned chrome with an explicit z-index (e.g. a sticky panel\n // header) paints above it on stacking order rather than losing to it on DOM position.\n \n\n\n\n )}\n\n \n\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n {autoFocus &&\n \n }\n\n \n \n {/* editor plugins */}\n \n {actions}\n\n )}\n \n );\n}\n","/**\n * This file was automatically generated on installation of the Shadcn/Lexical editor. The default\n * location of this file has been changed to integrate better with our project structure. Also,\n * modifications have been made to integrate with our codebase.\n *\n * Original file location: src/components/blocks/editor-00/editor.tsx\n *\n * Shadcn/Lexical Editor Documentation: https://shadcn-editor.vercel.app/docs/\n */\n\nimport { InitialConfigType, LexicalComposer } from '@lexical/react/LexicalComposer';\nimport { OnChangePlugin } from '@lexical/react/LexicalOnChangePlugin';\nimport { EditorState, SerializedEditorState } from 'lexical';\nimport { ReactNode, useCallback, useState } from 'react';\n\nimport { editorTheme } from '@/components/advanced/editor/themes/editor-theme';\nimport { TooltipProvider } from '@/components/shadcn-ui/tooltip';\nimport { cn } from '@/utils/shadcn-ui/utils';\n\nimport { nodes } from './nodes';\nimport { Plugins } from './plugins';\n\nconst editorConfig: InitialConfigType = {\n namespace: 'commentEditor',\n theme: editorTheme,\n nodes,\n onError: (error: Error) => {\n console.error(error);\n },\n};\n\n/**\n * Shadcn UI based Lexical Editor component\n *\n * Documentation: https://shadcn-editor.vercel.app/docs/\n */\nexport function Editor({\n editorState,\n editorSerializedState,\n onChange,\n onSerializedChange,\n placeholder = 'Start typing…',\n autoFocus = false,\n onClear,\n className,\n actions,\n}: {\n editorState?: EditorState;\n editorSerializedState?: SerializedEditorState;\n onChange?: (editorState: EditorState) => void;\n onSerializedChange?: (editorSerializedState: SerializedEditorState) => void;\n placeholder?: string;\n autoFocus?: boolean;\n onClear?: (clearFn: () => void) => void;\n className?: string;\n /**\n * Optional controls rendered inside the editor's bordered box, below the content area — e.g. a\n * comment's assign and submit buttons. Placed after the content in DOM order so tab order runs\n * from the text to the actions.\n */\n actions?: ReactNode;\n}) {\n // `LexicalComposer` reads `initialConfig` only once, at mount (it is genuinely an \"initial\"\n // config, not a controlled prop) — so building it fresh on every render, `JSON.stringify` of\n // `editorSerializedState` included, redoes work whose result is thrown away on every render but\n // the first. `useState`'s lazy initializer runs exactly once (unlike `useMemo`, which React does\n // not guarantee to cache permanently), matching how the value is actually consumed.\n const [initialConfig] = useState(() => ({\n ...editorConfig,\n ...(editorState ? { editorState } : {}),\n ...(editorSerializedState ? { editorState: JSON.stringify(editorSerializedState) } : {}),\n }));\n\n const handleChange = useCallback(\n (latestEditorState: EditorState) => {\n onChange?.(latestEditorState);\n onSerializedChange?.(latestEditorState.toJSON());\n },\n [onChange, onSerializedChange],\n );\n\n return (\n // CUSTOM: Added `className` prop\n \n\n );\n}\n","import { editorTheme } from '@/components/advanced/editor/themes/editor-theme';\nimport { createHeadlessEditor } from '@lexical/headless';\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport {\n $getRoot,\n $insertNodes,\n SerializedEditorState,\n SerializedElementNode,\n SerializedLexicalNode,\n SerializedTextNode,\n} from 'lexical';\nimport React from 'react';\nimport { nodes } from './nodes';\n\n/**\n * Focus a content-editable element within a container and move the cursor to the end\n *\n * @param container - The container element to search within\n * @returns True if a content-editable element was found and focused, false otherwise\n */\nexport function focusContentEditable(container: HTMLElement): boolean {\n const contentEditableField = container.querySelector\n \n\n \n\n\n \n ('[contenteditable=\"true\"]');\n if (!contentEditableField) return false;\n\n contentEditableField.focus();\n\n // Move cursor to the end\n const selection = window.getSelection();\n const range = document.createRange();\n range.selectNodeContents(contentEditableField);\n range.collapse(false); // false = collapse to end\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n return true;\n}\n\n/**\n * Recursively check if any children have meaningful editor content\n *\n * @param children - Array of serialized lexical nodes to check\n * @returns True if any child has content, false otherwise\n */\nfunction doChildrenHaveEditorContent(\n children: (SerializedLexicalNode | SerializedElementNode | SerializedTextNode)[] | undefined,\n): boolean {\n if (!children) return false;\n\n return children.some(\n (child: SerializedLexicalNode | SerializedElementNode | SerializedTextNode) => {\n if (child && 'text' in child && child.text.trim().length > 0) return true;\n\n if (!child || !('children' in child)) return false;\n\n return doChildrenHaveEditorContent(child.children);\n },\n );\n}\n\n/**\n * Check if the editor state has any meaningful content\n *\n * @param editorState - SerializedEditorState to check\n * @returns True if the editor has content, false if it's empty\n */\nexport function hasEditorContent(editorState: SerializedEditorState | undefined): boolean {\n if (!editorState?.root?.children) return false;\n return doChildrenHaveEditorContent(editorState.root.children);\n}\n\n/**\n * Convert HTML string to Lexical SerializedEditorState\n *\n * @param html - HTML string to convert\n * @returns SerializedEditorState that can be used with the Editor component\n */\nexport function htmlToEditorState(html: string): SerializedEditorState {\n if (!html || html.trim() === '') {\n throw new Error('Input HTML is empty');\n }\n\n const editor = createHeadlessEditor({\n namespace: 'EditorUtils',\n theme: editorTheme,\n nodes,\n onError: (error: Error) => {\n console.error(error);\n },\n });\n\n let serializedState: SerializedEditorState | undefined;\n\n editor.update(\n () => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(html, 'text/html');\n const generatedNodes = $generateNodesFromDOM(editor, dom);\n\n $getRoot().clear();\n $insertNodes(generatedNodes);\n },\n {\n discrete: true,\n },\n );\n\n editor.getEditorState().read(() => {\n serializedState = editor.getEditorState().toJSON();\n });\n\n if (!serializedState) {\n throw new Error('Failed to convert HTML to editor state');\n }\n\n return serializedState;\n}\n\n/**\n * Convert Lexical SerializedEditorState to HTML string\n *\n * @param editorState - SerializedEditorState to convert\n * @returns HTML string\n */\nexport function editorStateToHtml(editorState: SerializedEditorState): string {\n const editor = createHeadlessEditor({\n namespace: 'EditorUtils',\n theme: editorTheme,\n nodes,\n onError: (error: Error) => {\n console.error(error);\n },\n });\n\n const parsedEditorState = editor.parseEditorState(JSON.stringify(editorState));\n editor.setEditorState(parsedEditorState);\n\n let html = '';\n\n editor.getEditorState().read(() => {\n html = $generateHtmlFromNodes(editor);\n });\n\n // Clean up the HTML to remove Shadcn/Lexical-specific attributes and simplify structure\n html = html\n // Remove style attributes\n .replace(/\\s+style=\"[^\"]*\"/g, '')\n // Remove all class attributes (including Tailwind classes)\n .replace(/\\s+class=\"[^\"]*\"/g, '')\n // Remove empty spans\n .replace(/(.*?)<\\/span>/g, '$1')\n // Simplify nested bold tags (e.g., text -> text)\n .replace(/]*>(.*?)<\\/strong><\\/b>/g, '$1')\n .replace(/]*>(.*?)<\\/b><\\/strong>/g, '$1')\n // Simplify nested italic tags (e.g., text -> text)\n .replace(/]*>(.*?)<\\/em><\\/i>/g, '$1')\n .replace(/]*>(.*?)<\\/i><\\/em>/g, '$1')\n // Simplify nested underline tags (e.g., text -> text)\n .replace(/]*>(.*?)<\\/span><\\/u>/g, '$1')\n // Simplify nested strikethrough tags (e.g., text->text)\n .replace(/]*>(.*?)<\\/span><\\/s>/g, '$1')\n // Convert all
variants to XML-compatible
for Paratext\n .replace(/
/gi, '
');\n\n return html;\n}\n\n/**\n * Handle keyboard events for editor navigation to prevent parent listbox from intercepting\n * navigation keys. This should be used on a container wrapping the Editor component.\n *\n * @param event - The keyboard event\n * @returns True if the event was handled (and should be stopped from propagating), false otherwise\n */\nexport function handleEditorKeyNavigation(event: React.KeyboardEvent): boolean {\n // Keys that should be kept within the editor for navigation\n const navigationKeys = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Home', 'End'];\n\n if (navigationKeys.includes(event.key)) {\n event.stopPropagation();\n return true;\n }\n\n return false;\n}\n","import { Button } from '@/components/shadcn-ui/button';\nimport { ButtonGroup, ButtonGroupSeparator } from '@/components/shadcn-ui/button-group';\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/shadcn-ui/tooltip';\nimport { Check, X } from 'lucide-react';\n\n/**\n * Object containing all keys used for localization in this component. If you're using this\n * component in an extension, you can pass it into the useLocalizedStrings hook to easily obtain the\n * localized strings and pass them into the localizedStrings prop of this component.\n */\nexport const CANCEL_ACCEPT_BUTTONS_STRING_KEYS = Object.freeze([\n '%cancelButton_tooltip%',\n '%acceptButton_tooltip%',\n] as const);\n\nexport type CancelAcceptButtonsLocalizedStrings = {\n [key in (typeof CANCEL_ACCEPT_BUTTONS_STRING_KEYS)[number]]?: string;\n};\n\nconst localizeString = (\n strings: CancelAcceptButtonsLocalizedStrings,\n key: keyof CancelAcceptButtonsLocalizedStrings,\n) => strings[key] ?? key;\n\nexport type CancelAcceptButtonsProps = {\n /** Function to call when Cancel is clicked. */\n onCancelClick: () => void;\n /** Function to call when Accept is clicked. */\n onAcceptClick: () => void;\n /** Whether the Accept button is enabled. */\n canAccept?: boolean;\n /**\n * Localized strings for button tooltips and aria-labels. Falls back to the key itself if not\n * provided.\n */\n localizedStrings?: CancelAcceptButtonsLocalizedStrings;\n /** CSS class name for the buttons. Defaults to \"tw:h-6 tw:w-6\". */\n className?: string;\n /**\n * Optional context-specific label for the accept button (e.g. \"Save Comment\", \"Save Footnote\").\n * When provided, overrides the generic `%acceptButton_tooltip%` localized string.\n */\n acceptLabel?: string;\n};\n\n/**\n * Cancel and Accept buttons with tooltips in a ButtonGroup. Suitable for use in any editor toolbar.\n * Tooltip text defaults to the localization key if no localized strings are provided.\n */\nexport function CancelAcceptButtons({\n onCancelClick,\n onAcceptClick,\n canAccept = true,\n localizedStrings = {},\n className = 'tw:h-6 tw:w-6',\n acceptLabel,\n}: CancelAcceptButtonsProps) {\n const cancelLocalized = localizeString(localizedStrings, '%cancelButton_tooltip%');\n const acceptLocalized = acceptLabel ?? localizeString(localizedStrings, '%acceptButton_tooltip%');\n\n return (\n \n \n );\n}\n\nexport default CancelAcceptButtons;\n","import { ConflictResolutionOptions, LanguageStrings, LegacyComment } from 'platform-bible-utils';\n\n// Re-export so this module (and the platform-bible-react barrel) stays the import site for the\n// ConflictNoteCard's resolution types. The single definition lives in platform-bible-utils.\nexport type { ConflictResolutionOptions };\n\n/**\n * The conflict card's action state. Extends the backend {@link ConflictResolutionOptions} with a\n * client-only `'loading'` sentinel used while the getConflictResolutionOptions result is in flight,\n * so the card can render a skeleton instead of momentarily flashing the read-only \"resolved\" view.\n * `'loading'` is deliberately NOT part of the platform-bible-utils contract - it never crosses the\n * C#<->TS boundary.\n */\nexport type ConflictCardActions = ConflictResolutionOptions | 'loading';\n\n/**\n * The one conflict type whose root note carries discrete diff/result text and drives the\n * ConflictNoteCard. Shared so the card and the comment thread test the same literal.\n */\nexport const VERSE_TEXT_CONFLICT = 'verseText';\n\n/**\n * The resolution a user picks for a conflict: keep the accepted (winning) side, take the rejected\n * (losing) side, or merge (combine) both sides.\n */\nexport type ConflictResolution = 'accept' | 'reject' | 'merge';\n\n/**\n * How an already-resolved conflict was resolved, derived from the resolution comment's\n * `conflictResolutionAction`:\n *\n * - `'accept'`: resolved by accepting (no text was written); the accepted side stands.\n * - `'reject'`: resolved by rejecting (the rejected side was written into the verse).\n * - `'merged'`: resolved by combining both changes (PT10's \"Combine both changes\" option, or a PT9\n * three-way merge). The card shows the merged verse text (`mergedText`); the outcome itself is\n * stated in prose by CommentItem's resolution-reply banner, not on the card.\n *\n * Distinct from {@link ConflictResolution} (the live accept/reject choice) because it adds the\n * `'merged'` legacy outcome and is only meaningful for a conflict that is already resolved.\n */\nexport type ConflictResolutionOutcome = 'accept' | 'reject' | 'merged';\n\n/**\n * Localization keys used by the ConflictNoteCard. Pass into the useLocalizedStrings hook (in the\n * consuming extension) and forward the result via the localizedStrings prop.\n */\nexport const CONFLICT_NOTE_STRING_KEYS = Object.freeze([\n '%conflict_note_description_verseText%',\n // Accessible name for the resolution radio group (the group has no other visible\n \n\n \n\n \n \n\n \n{cancelLocalized}
\n\n \n \n\n \n\n \n \n\n \n{acceptLocalized}
\n