@anvia/studio 0.7.13 → 0.7.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +13 -1
- package/dist/index.js +43 -7
- package/dist/index.js.map +1 -1
- package/dist/ui/assets/agents-page-nyn87qWN.js +2 -0
- package/dist/ui/assets/agents-page-nyn87qWN.js.map +1 -0
- package/dist/ui/assets/anvia.png +0 -0
- package/dist/ui/assets/evals-page-CrS8Nw5a.js +2 -0
- package/dist/ui/assets/{evals-page-eIWZ_vsI.js.map → evals-page-CrS8Nw5a.js.map} +1 -1
- package/dist/ui/assets/index-D5lHtsjb.js +154 -0
- package/dist/ui/assets/index-D5lHtsjb.js.map +1 -0
- package/dist/ui/assets/index-Dl647xDC.css +1 -0
- package/dist/ui/assets/knowledge-page-bW8GeV7O.js +2 -0
- package/dist/ui/assets/knowledge-page-bW8GeV7O.js.map +1 -0
- package/dist/ui/assets/logo.png +0 -0
- package/dist/ui/assets/mcps-page-CQV4bt_B.js +2 -0
- package/dist/ui/assets/mcps-page-CQV4bt_B.js.map +1 -0
- package/dist/ui/assets/memory-page-BCS0r7-V.js +2 -0
- package/dist/ui/assets/memory-page-BCS0r7-V.js.map +1 -0
- package/dist/ui/assets/pipelines-page-COYYrCkj.js +8 -0
- package/dist/ui/assets/pipelines-page-COYYrCkj.js.map +1 -0
- package/dist/ui/assets/{renderers-CIC1VVRv.js → renderers-m-gqGocU.js} +2 -2
- package/dist/ui/assets/{renderers-CIC1VVRv.js.map → renderers-m-gqGocU.js.map} +1 -1
- package/dist/ui/assets/{sessions-page-UdXui_Zk.js → sessions-page-DozrArmB.js} +2 -2
- package/dist/ui/assets/{sessions-page-UdXui_Zk.js.map → sessions-page-DozrArmB.js.map} +1 -1
- package/dist/ui/assets/status-page-BLRlLRKt.js +2 -0
- package/dist/ui/assets/status-page-BLRlLRKt.js.map +1 -0
- package/dist/ui/assets/tool-runner-BB55tqKT.js +2 -0
- package/dist/ui/assets/tool-runner-BB55tqKT.js.map +1 -0
- package/dist/ui/assets/tools-page-JpNgNaFG.js +2 -0
- package/dist/ui/assets/tools-page-JpNgNaFG.js.map +1 -0
- package/dist/ui/assets/trace-browser-41yNH-qC.js +10 -0
- package/dist/ui/assets/{trace-browser-Dk7nD7KO.js.map → trace-browser-41yNH-qC.js.map} +1 -1
- package/dist/ui/assets/transcript-item-DGNb8jMo.js +3 -0
- package/dist/ui/assets/transcript-item-DGNb8jMo.js.map +1 -0
- package/dist/ui/index.html +12 -7
- package/package.json +4 -4
- package/dist/ui/assets/agents-page-B8Tw2e11.js +0 -2
- package/dist/ui/assets/agents-page-B8Tw2e11.js.map +0 -1
- package/dist/ui/assets/evals-page-eIWZ_vsI.js +0 -2
- package/dist/ui/assets/index-C3lio5tU.css +0 -1
- package/dist/ui/assets/index-CC5mjRie.js +0 -154
- package/dist/ui/assets/index-CC5mjRie.js.map +0 -1
- package/dist/ui/assets/knowledge-page-C6WkzIFh.js +0 -2
- package/dist/ui/assets/knowledge-page-C6WkzIFh.js.map +0 -1
- package/dist/ui/assets/mcps-page-BJ4m_GoP.js +0 -2
- package/dist/ui/assets/mcps-page-BJ4m_GoP.js.map +0 -1
- package/dist/ui/assets/memory-page-BuerJ-04.js +0 -2
- package/dist/ui/assets/memory-page-BuerJ-04.js.map +0 -1
- package/dist/ui/assets/pipelines-page-Dx0uB0Dm.js +0 -8
- package/dist/ui/assets/pipelines-page-Dx0uB0Dm.js.map +0 -1
- package/dist/ui/assets/status-page-DC5pVW4o.js +0 -2
- package/dist/ui/assets/status-page-DC5pVW4o.js.map +0 -1
- package/dist/ui/assets/tools-page-ByKfOqk3.js +0 -2
- package/dist/ui/assets/tools-page-ByKfOqk3.js.map +0 -1
- package/dist/ui/assets/trace-browser-Dk7nD7KO.js +0 -10
- package/dist/ui/assets/transcript-item-DbtXMj-E.js +0 -3
- package/dist/ui/assets/transcript-item-DbtXMj-E.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{i as e,r as t,s as n,t as r}from"./utils-BN2yP0LH.js";import{n as i}from"./format-C9HPGfkW.js";import{t as a}from"./PathIcon-DX1w_Nk9.js";import{F as o,I as s,t as c,z as l}from"./index-D5lHtsjb.js";import{t as u}from"./badge-BH7gz3tB.js";import{i as d,r as f}from"./renderers-m-gqGocU.js";var p=[[`path`,{d:`M4 15L4 19`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`0`}],[`path`,{d:`M12 9L12 19`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`1`}],[`path`,{d:`M22 22L2 22`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`2`}],[`path`,{d:`M20 13L20 19`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`3`}],[`path`,{d:`M5.60009 8.79993C5.23521 8.31419 4.6543 8 4 8C2.89543 8 2 8.89543 2 10C2 11.1046 2.89543 12 4 12C5.10457 12 6 11.1046 6 10C6 9.54973 5.8512 9.13421 5.60009 8.79993ZM5.60009 8.79993L10.3999 5.20007M10.3999 5.20007C10.7648 5.68581 11.3457 6 12 6C12.783 6 13.4609 5.55006 13.7892 4.89462M10.3999 5.20007C10.1488 4.86579 10 4.45027 10 4C10 2.89543 10.8954 2 12 2C13.1046 2 14 2.89543 14 4C14 4.32158 13.9241 4.62543 13.7892 4.89462M13.7892 4.89462L18.2108 7.10538M18.2108 7.10538C18.0759 7.37457 18 7.67842 18 8C18 9.10457 18.8954 10 20 10C21.1046 10 22 9.10457 22 8C22 6.89543 21.1046 6 20 6C19.217 6 18.5391 6.44994 18.2108 7.10538Z`,stroke:`currentColor`,strokeWidth:`1.5`,key:`4`}]],m=[[`path`,{d:`M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`0`}],[`path`,{d:`M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`1`}]],h=[[`path`,{d:`M11 10.6667C11 10.6667 11.75 10.6667 12.5 12C12.5 12 14.8824 8.66667 17 8`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`0`}],[`path`,{d:`M7 11V9C7 5.70017 7 4.05025 8.02513 3.02513C9.05025 2 10.7002 2 14 2C17.2998 2 18.9497 2 19.9749 3.02513C21 4.05025 21 5.70017 21 9V11C21 14.2998 21 15.9497 19.9749 16.9749C18.9497 18 17.2998 18 14 18C10.7002 18 9.05025 18 8.02513 16.9749C7 15.9497 7 14.2998 7 11Z`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`1`}],[`path`,{d:`M3 6V15C3 18.2998 3 19.9497 4.02513 20.9749C5.05025 22 6.70017 22 10 22H17`,stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`1.5`,key:`2`}]],g=n(e(),1),_=t();function v(e){if(e.entry.kind===`reasoning`)return(0,_.jsxs)(`article`,{className:`max-w-205 justify-self-start text-muted-foreground`,"data-entry-id":String(e.entry.entryId),children:[(0,_.jsx)(`div`,{className:`mb-1 text-xs font-semibold uppercase text-muted-foreground`,children:`Reasoning`}),(0,_.jsx)(f,{size:`base`,text:e.entry.text})]});if(e.entry.kind===`tool`)return(0,_.jsx)(A,{entry:e.entry,decidingApprovals:e.decidingApprovals,answeringQuestions:e.answeringQuestions,onApprovalDecision:e.onApprovalDecision,onQuestionAnswer:e.onQuestionAnswer});let t=e.entry.role===`assistant`?e.entry.traceId:void 0,n=e.entry.role===`assistant`&&k(e.entry.text),i=e.entry.role===`assistant`&&`tone`in e.entry&&e.entry.tone===`error`,a=e.entry.role===`assistant`&&`tone`in e.entry&&e.entry.tone===`pending`,o=e.entry.role===`assistant`&&!a&&e.entry.text.trim().length>0;return e.entry.role===`user`?(0,_.jsxs)(`article`,{className:`grid w-fit max-w-[min(64ch,82%)] justify-items-end justify-self-end self-start text-foreground`,"data-entry-id":String(e.entry.entryId),children:[e.entry.text.trim().length===0?null:(0,_.jsx)(`div`,{className:`rounded-2xl bg-muted/55 px-4 py-2.5 shadow-sm shadow-black/[0.04] dark:bg-white/[0.08] dark:shadow-black/20`,children:(0,_.jsx)(f,{size:`base`,text:e.entry.text})}),e.entry.attachments===void 0?null:(0,_.jsx)(O,{attachments:e.entry.attachments})]}):(0,_.jsxs)(`article`,{className:r(`self-start`,n?`w-full max-w-full`:`max-w-[min(82ch,100%)]`,e.entry.role===`assistant`&&r(`justify-self-start text-foreground`,i&&`text-destructive`)),"data-entry-id":String(e.entry.entryId),children:[a?(0,_.jsx)(D,{}):null,e.entry.text.trim().length===0?null:(0,_.jsx)(f,{size:`base`,text:e.entry.text}),o?(0,_.jsx)(y,{metrics:e.metrics,text:e.entry.text,traceId:t,onOpenTrace:e.onOpenTrace}):null]})}function y(e){let[t,n]=(0,g.useState)(!1),r=e.traceId;async function i(){if(!(typeof navigator>`u`||navigator.clipboard===void 0))try{await navigator.clipboard.writeText(e.text),n(!0),window.setTimeout(()=>n(!1),1200)}catch{n(!1)}}return(0,_.jsxs)(`div`,{className:`mt-3 flex min-w-0 items-center gap-1.5`,children:[(0,_.jsx)(s,{"aria-label":t?`Response copied`:`Copy response`,className:`h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground`,title:t?`Copied`:`Copy response`,type:`button`,variant:`ghost`,onClick:()=>void i(),children:(0,_.jsx)(o,{icon:t?h:m,"aria-hidden":`true`})}),(0,_.jsxs)(`div`,{className:`group relative`,children:[(0,_.jsx)(s,{"aria-label":`Response metrics`,className:`h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground`,title:w(e.metrics),type:`button`,variant:`ghost`,children:(0,_.jsx)(o,{icon:p,"aria-hidden":`true`})}),(0,_.jsx)(`div`,{className:`pointer-events-none absolute left-0 top-full z-30 mt-2 hidden w-64 rounded-lg border border-border/90 bg-popover p-3 text-popover-foreground shadow-xl shadow-black/25 group-focus-within:grid group-hover:grid`,role:`tooltip`,children:(0,_.jsx)(b,{metrics:e.metrics})})]}),r===void 0?null:(0,_.jsx)(s,{"aria-label":`Open trace ${r}`,className:`h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground`,title:`Open trace ${r}`,type:`button`,variant:`ghost`,onClick:()=>e.onOpenTrace(r),children:(0,_.jsx)(o,{icon:a,"aria-hidden":`true`})})]})}function b(e){let t=S(e.metrics);return(0,_.jsxs)(`div`,{className:`grid min-w-0 gap-2 text-xs leading-5`,children:[(0,_.jsx)(`div`,{className:`font-semibold text-foreground`,children:`Response metrics`}),(0,_.jsxs)(`div`,{className:`grid min-w-0 gap-1`,children:[(0,_.jsx)(x,{label:`Cost`,value:`Unavailable`}),t.length===0?(0,_.jsx)(`div`,{className:`text-muted-foreground`,children:`No usage metrics yet`}):t.map(e=>(0,_.jsx)(x,{label:e.label,value:e.value},e.label))]})]})}function x(e){return(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,_.jsx)(`span`,{className:`text-muted-foreground`,children:e.label}),(0,_.jsx)(`span`,{className:`shrink-0 font-medium tabular-nums text-foreground`,children:e.value})]})}function S(e){let t=[],n=e?.usage;return n?.totalTokens!==void 0&&t.push({label:`Total`,value:`${T(n.totalTokens)} tokens`}),n?.inputTokens!==void 0&&t.push({label:`Input`,value:T(n.inputTokens)}),n?.outputTokens!==void 0&&t.push({label:`Output`,value:T(n.outputTokens)}),C(t,`Cached`,n,`cachedInputTokens`),C(t,`Cache create`,n,`cacheCreationInputTokens`),e?.durationMs!==void 0&&t.push({label:`Duration`,value:E(e.durationMs)}),t}function C(e,t,n,r){let i=n?.[r];i!==void 0&&i>0&&e.push({label:t,value:T(i)})}function w(e){let t=S(e);return t.length===0?`Cost unavailable. No usage metrics yet.`:[`Cost unavailable`,...t.map(e=>`${e.label}: ${e.value}`)].join(`. `)}function T(e){return e.toLocaleString()}function E(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function D(){return(0,_.jsxs)(`div`,{"aria-label":`Assistant is responding`,className:`inline-flex h-9 min-h-9 items-center gap-2 rounded-xl border border-border/70 bg-muted/35 px-3 text-muted-foreground shadow-sm`,role:`status`,children:[(0,_.jsxs)(`span`,{className:`flex items-center gap-1`,"aria-hidden":`true`,children:[(0,_.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-foreground`}),(0,_.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-foreground [animation-delay:150ms]`}),(0,_.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse rounded-full bg-foreground [animation-delay:300ms]`})]}),(0,_.jsx)(`span`,{className:` text-xs font-semibold uppercase text-muted-foreground`,children:`Thinking`})]})}function O(e){return(0,_.jsx)(`div`,{className:`mt-2 flex max-w-full flex-wrap gap-2`,children:e.attachments.map((e,t)=>{let n=`${e.kind}-${e.name??e.mediaType??t}-${t}`;if(e.kind===`image`){let t=e.url??(e.data===void 0?void 0:`data:${e.mediaType??`image/png`};base64,${e.data}`);return(0,_.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-border/80 bg-card/80`,children:t===void 0?(0,_.jsx)(`div`,{className:`grid h-20 w-24 place-items-center px-2 text-center text-xs text-muted-foreground`,children:`Image`}):(0,_.jsx)(`img`,{alt:e.name??`Attached image`,className:`h-20 w-24 object-cover`,src:t})},n)}return(0,_.jsx)(`span`,{className:`inline-flex max-w-full items-center gap-1.5 rounded-lg border border-border/80 bg-card/80 px-2 py-1 text-xs font-medium text-muted-foreground`,children:(0,_.jsx)(`span`,{className:`min-w-0 truncate`,children:e.name??e.mediaType??`Document`})},n)})})}function k(e){let t=e.split(`
|
|
2
|
+
`);return t.some((e,n)=>{let r=t[n+1];return e.includes(`|`)&&r!==void 0&&/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/.test(r)})}function A(e){let[t,n]=(0,g.useState)(e.entry.approval?.status!==`pending`&&e.entry.question?.status!==`pending`),i=e.entry.approval,a=e.entry.question,c=e.entry.childEvents??[],f=e.entry.args!==void 0||e.entry.result!==void 0||c.length>0||i!==void 0||a!==void 0,p=i?.status===`pending`,m=a?.status===`pending`,h=i!==void 0&&e.decidingApprovals.has(i.id),v=a!==void 0&&e.answeringQuestions.has(a.id);return(0,_.jsxs)(`article`,{className:`w-full justify-self-start overflow-hidden rounded-xl border border-border/80 bg-card/90 text-foreground shadow-sm shadow-black/20`,"data-entry-id":String(e.entry.entryId),children:[(0,_.jsxs)(`div`,{className:r(`flex min-w-0 items-center gap-2 px-3 py-2.5`,!t&&f&&`bg-muted/20`),children:[(0,_.jsxs)(s,{"aria-expanded":!t,className:`h-auto min-h-0 min-w-0 flex-1 justify-between border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit`,type:`button`,variant:`ghost`,onClick:()=>n(e=>!e),children:[(0,_.jsxs)(`span`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(`span`,{className:`grid h-6 w-4 shrink-0 place-items-center text-foreground`,children:(0,_.jsx)(o,{icon:l,className:`h-3.5 w-3.5`,"aria-hidden":`true`})}),(0,_.jsx)(`strong`,{className:`min-w-0 truncate text-sm font-semibold text-foreground`,children:e.entry.toolName})]}),p?null:(0,_.jsx)(`span`,{className:`ml-auto shrink-0 text-xs font-medium text-muted-foreground`,children:t?`Show`:`Hide`})]}),p&&i!==void 0?(0,_.jsx)(I,{disabled:h,onDecision:t=>e.onApprovalDecision(i.id,t)}):null,m?(0,_.jsx)(u,{className:`border-border/70 bg-muted/45 px-1.5 py-0.5 text-xs uppercase text-foreground`,children:`Waiting for input`}):null,p||m?(0,_.jsx)(s,{"aria-expanded":!t,className:`h-7 min-h-7 px-2 text-xs font-medium`,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>n(e=>!e),children:t?`Show`:`Hide`}):null]}),t||!f?null:(0,_.jsxs)(`div`,{className:`grid gap-3 p-3`,children:[i===void 0?null:(0,_.jsx)(F,{approval:i}),a===void 0?null:(0,_.jsx)(M,{disabled:v,question:a,onAnswer:t=>e.onQuestionAnswer(a.id,t)}),a!==void 0||e.entry.args===void 0?null:(0,_.jsx)(d,{title:`Input`,value:e.entry.args}),c.length===0?null:(0,_.jsx)(j,{events:c}),a!==void 0||e.entry.result===void 0?null:(0,_.jsx)(d,{title:`Output`,value:e.entry.result})]})]})}function j(e){return(0,_.jsxs)(`div`,{className:`overflow-hidden rounded-xl border border-border/80 bg-background/65`,children:[(0,_.jsx)(`div`,{className:`bg-muted/20 px-3 py-2 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:`Subagent activity`}),(0,_.jsx)(`div`,{className:`grid gap-3 p-3`,children:e.events.map(e=>{let t=e.agentName??e.agentId;return e.kind===`message`||e.kind===`reasoning`?(0,_.jsxs)(`div`,{className:`grid gap-1 rounded-xl border border-border/80 bg-card/90 p-3`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(u,{className:`border-border bg-muted px-1.5 py-0.5 text-xs uppercase text-muted-foreground`,children:e.kind===`reasoning`?`Reasoning`:`Response`}),(0,_.jsx)(`span`,{className:`min-w-0 truncate text-xs font-semibold text-muted-foreground`,children:t})]}),(0,_.jsx)(f,{size:`base`,text:e.text})]},`${e.kind}-${e.agentId}-${e.text}`):(0,_.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/80 bg-card/90 p-3`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(u,{className:`border-border/70 bg-muted/45 px-1.5 py-0.5 text-xs uppercase text-foreground`,children:`Tool`}),(0,_.jsxs)(`span`,{className:`min-w-0 truncate text-xs font-semibold text-muted-foreground`,children:[t,` / `,e.toolName]})]}),e.args===void 0?null:(0,_.jsx)(d,{title:`Input`,value:e.args}),e.result===void 0?null:(0,_.jsx)(d,{title:`Output`,value:e.result})]},`${e.kind}-${e.agentId}-${e.toolName}-${e.callId??e.args??e.result??``}`)})})]})}function M(e){let[t,n]=(0,g.useState)({}),[r,i]=(0,g.useState)(0),a=e.question.status===`pending`,o=e.question.questions.length,c=e.question.questions.map(e=>{let n=t[e.id],r=n?.customValue?.trim()??``,i=r.length>0?r:n?.answer;return{questionId:e.id,answer:i?.trim()??``,...n?.choice===void 0?{}:{choice:n.choice},...r.length>0?{custom:!0}:{}}}),l=o===0?0:Math.min(r,o-1),u=e.question.questions[l],d=c[l]?.answer??``,f=c.filter(e=>e.answer.length>0).length,p=d.length>0,m=a&&c.every(e=>e.answer.length>0),h=l===0,v=l>=o-1;if(u===void 0)return(0,_.jsx)(`div`,{className:`rounded-xl border border-border bg-background p-4 text-sm font-medium text-muted-foreground`,children:`No questions`});let y=()=>i(e=>Math.max(0,e-1)),b=()=>i(t=>Math.min(e.question.questions.length-1,t+1)),x=(e,t)=>n(n=>({...n,[e]:t}));return(0,_.jsxs)(`div`,{className:`grid gap-3`,children:[(0,_.jsx)(N,{disabled:e.disabled||!a,index:l,total:o,question:u,value:t[u.id],answer:e.question.answers?.find(e=>e.questionId===u.id),onChange:e=>x(u.id,e),...v?{}:{onAdvance:b}},u.id),a?(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3 rounded-xl bg-muted/20 px-3 py-2`,children:[(0,_.jsxs)(`div`,{className:`min-w-0 text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:[f,`/`,o,` answered`]}),(0,_.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[h?null:(0,_.jsx)(s,{type:`button`,variant:`secondary`,onClick:y,children:`Back`}),v?(0,_.jsx)(s,{className:`h-9 min-h-9 px-4`,disabled:e.disabled||!m,type:`button`,onClick:()=>e.onAnswer(c),children:`Submit answers`}):(0,_.jsx)(s,{className:`h-9 min-h-9 px-4`,disabled:e.disabled||!p,type:`button`,onClick:b,children:`Next question`})]})]}):o>1?(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3 rounded-xl bg-muted/20 px-3 py-2`,children:[(0,_.jsx)(`div`,{className:`min-w-0 text-xs font-semibold uppercase tracking-[0.2em] text-foreground`,children:`Answered`}),(0,_.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,_.jsx)(s,{disabled:h,type:`button`,variant:`secondary`,onClick:y,children:`Back`}),(0,_.jsx)(s,{disabled:v,type:`button`,variant:`secondary`,onClick:b,children:`Next`})]})]}):null]})}function N(e){let t=e.answer?.answer,n=P(e.value),i=t===void 0?n.length>0?`Ready`:`Waiting`:`Answered`;return(0,_.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-background/70 p-4`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-4`,children:[(0,_.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,_.jsxs)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:[`Question `,e.index+1,` of `,e.total]}),(0,_.jsx)(`h3`,{className:`m-0 text-base font-semibold leading-7 text-foreground [overflow-wrap:anywhere]`,children:e.question.question})]}),(0,_.jsx)(`span`,{className:r(`shrink-0 text-xs font-semibold uppercase tracking-[0.18em]`,i===`Answered`&&`text-foreground`,i===`Ready`&&`text-foreground`,i===`Waiting`&&`text-muted-foreground`),children:i})]}),t===void 0?null:(0,_.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-muted/45 px-3 py-2 text-sm font-medium text-foreground`,children:t}),t===void 0&&e.question.choices.length>0?(0,_.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.question.choices.map(t=>{let n=e.value?.choice===t.value;return(0,_.jsx)(s,{className:r(`h-8 min-h-8 px-3 text-xs`,n&&`border-foreground/45`),disabled:e.disabled,size:`sm`,type:`button`,variant:n?`default`:`secondary`,onClick:()=>{e.onChange({answer:t.value,choice:t.value,customValue:e.value?.customValue??``}),e.onAdvance?.()},children:t.label},t.value)})}):null,t===void 0?(0,_.jsx)(c,{className:`min-h-24 text-sm`,disabled:e.disabled,placeholder:`Type a custom answer`,rows:3,value:e.value?.customValue??``,onChange:t=>e.onChange({...e.value,customValue:t.currentTarget.value})}):null]})}function P(e){let t=e?.customValue?.trim()??``;return t.length>0?t:e?.answer?.trim()??``}function F(e){return(0,_.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/70 bg-muted/25 px-3 py-2.5`,children:[(0,_.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,_.jsx)(u,{className:r(`border-border/70 bg-background/60 px-1.5 py-0.5 text-xs uppercase text-muted-foreground`,e.approval.status===`approved`&&`text-foreground`,e.approval.status===`rejected`&&`text-destructive`),children:`Approval`}),(0,_.jsx)(`div`,{className:`min-w-0`,children:(0,_.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:i(e.approval)})})]}),e.approval.reason===void 0?null:(0,_.jsx)(`div`,{className:`text-xs font-medium text-muted-foreground [overflow-wrap:anywhere]`,children:e.approval.reason})]})}function I(e){return(0,_.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 rounded-lg border border-border/80 bg-background/55 p-0.5`,children:[(0,_.jsx)(s,{className:`h-7 min-h-7 rounded-md border-0 bg-transparent px-2.5 text-xs text-muted-foreground shadow-none hover:bg-destructive/10 hover:text-destructive`,disabled:e.disabled,size:`sm`,type:`button`,variant:`ghost`,onClick:()=>e.onDecision(!1),children:`Reject`}),(0,_.jsx)(s,{className:`h-7 min-h-7 rounded-md px-2.5 text-xs`,disabled:e.disabled,size:`sm`,type:`button`,onClick:()=>e.onDecision(!0),children:`Approve`})]})}export{v as TranscriptItem};
|
|
3
|
+
//# sourceMappingURL=transcript-item-DGNb8jMo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-item-DGNb8jMo.js","names":[],"sources":["../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/ChartBarLineIcon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/Copy01Icon.js","../../../../../node_modules/.pnpm/@hugeicons+core-free-icons@4.2.2/node_modules/@hugeicons/core-free-icons/dist/esm/CopyCheckIcon.js","../../../src/ui/app/modules/playground/transcript-item.tsx"],"sourcesContent":["const ChartBarLineIcon = [\n [\"path\", { d: \"M4 15L4 19\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M12 9L12 19\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M22 22L2 22\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }],\n [\"path\", { d: \"M20 13L20 19\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"3\" }],\n [\"path\", { d: \"M5.60009 8.79993C5.23521 8.31419 4.6543 8 4 8C2.89543 8 2 8.89543 2 10C2 11.1046 2.89543 12 4 12C5.10457 12 6 11.1046 6 10C6 9.54973 5.8512 9.13421 5.60009 8.79993ZM5.60009 8.79993L10.3999 5.20007M10.3999 5.20007C10.7648 5.68581 11.3457 6 12 6C12.783 6 13.4609 5.55006 13.7892 4.89462M10.3999 5.20007C10.1488 4.86579 10 4.45027 10 4C10 2.89543 10.8954 2 12 2C13.1046 2 14 2.89543 14 4C14 4.32158 13.9241 4.62543 13.7892 4.89462M13.7892 4.89462L18.2108 7.10538M18.2108 7.10538C18.0759 7.37457 18 7.67842 18 8C18 9.10457 18.8954 10 20 10C21.1046 10 22 9.10457 22 8C22 6.89543 21.1046 6 20 6C19.217 6 18.5391 6.44994 18.2108 7.10538Z\", stroke: \"currentColor\", strokeWidth: \"1.5\", key: \"4\" }]\n];\n\nexport { ChartBarLineIcon as default };\n//# sourceMappingURL=ChartBarLineIcon.js.map\n","const Copy01Icon = [\n [\"path\", { d: \"M9 15C9 12.1716 9 10.7574 9.87868 9.87868C10.7574 9 12.1716 9 15 9L16 9C18.8284 9 20.2426 9 21.1213 9.87868C22 10.7574 22 12.1716 22 15V16C22 18.8284 22 20.2426 21.1213 21.1213C20.2426 22 18.8284 22 16 22H15C12.1716 22 10.7574 22 9.87868 21.1213C9 20.2426 9 18.8284 9 16L9 15Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M16.9999 9C16.9975 6.04291 16.9528 4.51121 16.092 3.46243C15.9258 3.25989 15.7401 3.07418 15.5376 2.90796C14.4312 2 12.7875 2 9.5 2C6.21252 2 4.56878 2 3.46243 2.90796C3.25989 3.07417 3.07418 3.25989 2.90796 3.46243C2 4.56878 2 6.21252 2 9.5C2 12.7875 2 14.4312 2.90796 15.5376C3.07417 15.7401 3.25989 15.9258 3.46243 16.092C4.51121 16.9528 6.04291 16.9975 9 16.9999\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }]\n];\n\nexport { Copy01Icon as default };\n//# sourceMappingURL=Copy01Icon.js.map\n","const CopyCheckIcon = [\n [\"path\", { d: \"M11 10.6667C11 10.6667 11.75 10.6667 12.5 12C12.5 12 14.8824 8.66667 17 8\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"0\" }],\n [\"path\", { d: \"M7 11V9C7 5.70017 7 4.05025 8.02513 3.02513C9.05025 2 10.7002 2 14 2C17.2998 2 18.9497 2 19.9749 3.02513C21 4.05025 21 5.70017 21 9V11C21 14.2998 21 15.9497 19.9749 16.9749C18.9497 18 17.2998 18 14 18C10.7002 18 9.05025 18 8.02513 16.9749C7 15.9497 7 14.2998 7 11Z\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"1\" }],\n [\"path\", { d: \"M3 6V15C3 18.2998 3 19.9497 4.02513 20.9749C5.05025 22 6.70017 22 10 22H17\", stroke: \"currentColor\", strokeLinecap: \"round\", strokeLinejoin: \"round\", strokeWidth: \"1.5\", key: \"2\" }]\n];\n\nexport { CopyCheckIcon as default };\n//# sourceMappingURL=CopyCheckIcon.js.map\n","import {\n ChartBarLineIcon,\n Copy01Icon,\n CopyCheckIcon,\n PathIcon,\n Wrench01Icon,\n} from \"@hugeicons/core-free-icons\";\nimport { useState } from \"react\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { Button } from \"../../components/ui/button\";\nimport { StudioIcon } from \"../../components/ui/icon\";\nimport { Textarea } from \"../../components/ui/textarea\";\nimport { cn } from \"../../lib/utils\";\nimport { approvalLabel } from \"../shared/format\";\nimport { MarkdownText, ToolPayload } from \"../shared/renderers\";\nimport type { ToolApproval, ToolMessage, ToolQuestion, TranscriptEntry } from \"../shared/types\";\nimport type { AssistantResponseMetrics, ResponseUsageMetrics } from \"./response-metrics\";\n\nexport function TranscriptItem(props: {\n entry: TranscriptEntry;\n metrics?: AssistantResponseMetrics | undefined;\n decidingApprovals: Set<string>;\n answeringQuestions: Set<string>;\n onApprovalDecision: (approvalId: string, approved: boolean) => void;\n onQuestionAnswer: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n onOpenTrace: (traceId: string) => void;\n}) {\n if (props.entry.kind === \"reasoning\") {\n return (\n <article\n className=\"max-w-205 justify-self-start text-muted-foreground\"\n data-entry-id={String(props.entry.entryId)}\n >\n <div className=\"mb-1 text-xs font-semibold uppercase text-muted-foreground\">Reasoning</div>\n <MarkdownText size=\"base\" text={props.entry.text} />\n </article>\n );\n }\n\n if (props.entry.kind === \"tool\") {\n return (\n <ToolEntry\n entry={props.entry}\n decidingApprovals={props.decidingApprovals}\n answeringQuestions={props.answeringQuestions}\n onApprovalDecision={props.onApprovalDecision}\n onQuestionAnswer={props.onQuestionAnswer}\n />\n );\n }\n\n const traceId = props.entry.role === \"assistant\" ? props.entry.traceId : undefined;\n const hasTable = props.entry.role === \"assistant\" && hasMarkdownTable(props.entry.text);\n const isError =\n props.entry.role === \"assistant\" && \"tone\" in props.entry && props.entry.tone === \"error\";\n const isPending =\n props.entry.role === \"assistant\" && \"tone\" in props.entry && props.entry.tone === \"pending\";\n const showAssistantActions =\n props.entry.role === \"assistant\" && !isPending && props.entry.text.trim().length > 0;\n\n if (props.entry.role === \"user\") {\n return (\n <article\n className=\"grid w-fit max-w-[min(64ch,82%)] justify-items-end justify-self-end self-start text-foreground\"\n data-entry-id={String(props.entry.entryId)}\n >\n {props.entry.text.trim().length === 0 ? null : (\n <div className=\"rounded-2xl bg-muted/55 px-4 py-2.5 shadow-sm shadow-black/[0.04] dark:bg-white/[0.08] dark:shadow-black/20\">\n <MarkdownText size=\"base\" text={props.entry.text} />\n </div>\n )}\n {props.entry.attachments !== undefined ? (\n <MessageAttachments attachments={props.entry.attachments} />\n ) : null}\n </article>\n );\n }\n\n return (\n <article\n className={cn(\n \"self-start\",\n hasTable ? \"w-full max-w-full\" : \"max-w-[min(82ch,100%)]\",\n props.entry.role === \"assistant\" &&\n cn(\"justify-self-start text-foreground\", isError && \"text-destructive\"),\n )}\n data-entry-id={String(props.entry.entryId)}\n >\n {isPending ? <AssistantLoadingIndicator /> : null}\n {props.entry.text.trim().length === 0 ? null : (\n <MarkdownText size=\"base\" text={props.entry.text} />\n )}\n {showAssistantActions ? (\n <AssistantResponseActions\n metrics={props.metrics}\n text={props.entry.text}\n traceId={traceId}\n onOpenTrace={props.onOpenTrace}\n />\n ) : null}\n </article>\n );\n}\n\nfunction AssistantResponseActions(props: {\n metrics?: AssistantResponseMetrics | undefined;\n text: string;\n traceId?: string | undefined;\n onOpenTrace: (traceId: string) => void;\n}) {\n const [copied, setCopied] = useState(false);\n const traceId = props.traceId;\n\n async function copyResponse() {\n if (typeof navigator === \"undefined\" || navigator.clipboard === undefined) {\n return;\n }\n try {\n await navigator.clipboard.writeText(props.text);\n setCopied(true);\n window.setTimeout(() => setCopied(false), 1200);\n } catch {\n setCopied(false);\n }\n }\n\n return (\n <div className=\"mt-3 flex min-w-0 items-center gap-1.5\">\n <Button\n aria-label={copied ? \"Response copied\" : \"Copy response\"}\n className=\"h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground\"\n title={copied ? \"Copied\" : \"Copy response\"}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => void copyResponse()}\n >\n <StudioIcon icon={copied ? CopyCheckIcon : Copy01Icon} aria-hidden=\"true\" />\n </Button>\n <div className=\"group relative\">\n <Button\n aria-label=\"Response metrics\"\n className=\"h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground\"\n title={metricsTitle(props.metrics)}\n type=\"button\"\n variant=\"ghost\"\n >\n <StudioIcon icon={ChartBarLineIcon} aria-hidden=\"true\" />\n </Button>\n <div\n className=\"pointer-events-none absolute left-0 top-full z-30 mt-2 hidden w-64 rounded-lg border border-border/90 bg-popover p-3 text-popover-foreground shadow-xl shadow-black/25 group-focus-within:grid group-hover:grid\"\n role=\"tooltip\"\n >\n <ResponseMetricsTooltip metrics={props.metrics} />\n </div>\n </div>\n {traceId === undefined ? null : (\n <Button\n aria-label={`Open trace ${traceId}`}\n className=\"h-8 min-h-8 w-8 rounded-lg border border-border/70 bg-muted/30 p-0 text-muted-foreground shadow-none hover:border-border hover:bg-muted/55 hover:text-foreground\"\n title={`Open trace ${traceId}`}\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onOpenTrace(traceId)}\n >\n <StudioIcon icon={PathIcon} aria-hidden=\"true\" />\n </Button>\n )}\n </div>\n );\n}\n\nfunction ResponseMetricsTooltip(props: { metrics?: AssistantResponseMetrics | undefined }) {\n const rows = responseMetricRows(props.metrics);\n return (\n <div className=\"grid min-w-0 gap-2 text-xs leading-5\">\n <div className=\"font-semibold text-foreground\">Response metrics</div>\n <div className=\"grid min-w-0 gap-1\">\n <MetricRow label=\"Cost\" value=\"Unavailable\" />\n {rows.length === 0 ? (\n <div className=\"text-muted-foreground\">No usage metrics yet</div>\n ) : (\n rows.map((row) => <MetricRow label={row.label} value={row.value} key={row.label} />)\n )}\n </div>\n </div>\n );\n}\n\nfunction MetricRow(props: { label: string; value: string }) {\n return (\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <span className=\"text-muted-foreground\">{props.label}</span>\n <span className=\"shrink-0 font-medium tabular-nums text-foreground\">{props.value}</span>\n </div>\n );\n}\n\nfunction responseMetricRows(metrics: AssistantResponseMetrics | undefined): Array<{\n label: string;\n value: string;\n}> {\n const rows: Array<{ label: string; value: string }> = [];\n const usage = metrics?.usage;\n if (usage?.totalTokens !== undefined) {\n rows.push({ label: \"Total\", value: `${formatMetricNumber(usage.totalTokens)} tokens` });\n }\n if (usage?.inputTokens !== undefined) {\n rows.push({ label: \"Input\", value: formatMetricNumber(usage.inputTokens) });\n }\n if (usage?.outputTokens !== undefined) {\n rows.push({ label: \"Output\", value: formatMetricNumber(usage.outputTokens) });\n }\n pushOptionalUsageRow(rows, \"Cached\", usage, \"cachedInputTokens\");\n pushOptionalUsageRow(rows, \"Cache create\", usage, \"cacheCreationInputTokens\");\n if (metrics?.durationMs !== undefined) {\n rows.push({ label: \"Duration\", value: formatResponseDuration(metrics.durationMs) });\n }\n return rows;\n}\n\nfunction pushOptionalUsageRow(\n rows: Array<{ label: string; value: string }>,\n label: string,\n usage: ResponseUsageMetrics | undefined,\n key: keyof ResponseUsageMetrics,\n) {\n const value = usage?.[key];\n if (value !== undefined && value > 0) {\n rows.push({ label, value: formatMetricNumber(value) });\n }\n}\n\nfunction metricsTitle(metrics: AssistantResponseMetrics | undefined): string {\n const rows = responseMetricRows(metrics);\n if (rows.length === 0) {\n return \"Cost unavailable. No usage metrics yet.\";\n }\n return [\"Cost unavailable\", ...rows.map((row) => `${row.label}: ${row.value}`)].join(\". \");\n}\n\nfunction formatMetricNumber(value: number): string {\n return value.toLocaleString();\n}\n\nfunction formatResponseDuration(value: number): string {\n if (value < 1000) {\n return `${value}ms`;\n }\n return `${(value / 1000).toFixed(1)}s`;\n}\n\nfunction AssistantLoadingIndicator() {\n return (\n <div\n aria-label=\"Assistant is responding\"\n className=\"inline-flex h-9 min-h-9 items-center gap-2 rounded-xl border border-border/70 bg-muted/35 px-3 text-muted-foreground shadow-sm\"\n role=\"status\"\n >\n <span className=\"flex items-center gap-1\" aria-hidden=\"true\">\n <span className=\"h-1.5 w-1.5 animate-pulse rounded-full bg-foreground\" />\n <span className=\"h-1.5 w-1.5 animate-pulse rounded-full bg-foreground [animation-delay:150ms]\" />\n <span className=\"h-1.5 w-1.5 animate-pulse rounded-full bg-foreground [animation-delay:300ms]\" />\n </span>\n <span className=\" text-xs font-semibold uppercase text-muted-foreground\">Thinking</span>\n </div>\n );\n}\n\nfunction MessageAttachments(props: {\n attachments: NonNullable<Extract<TranscriptEntry, { kind: \"message\" }>[\"attachments\"]>;\n}) {\n return (\n <div className=\"mt-2 flex max-w-full flex-wrap gap-2\">\n {props.attachments.map((attachment, index) => {\n const key = `${attachment.kind}-${attachment.name ?? attachment.mediaType ?? index}-${index}`;\n if (attachment.kind === \"image\") {\n const src =\n attachment.url ??\n (attachment.data === undefined\n ? undefined\n : `data:${attachment.mediaType ?? \"image/png\"};base64,${attachment.data}`);\n return (\n <div\n className=\"overflow-hidden rounded-lg border border-border/80 bg-card/80\"\n key={key}\n >\n {src === undefined ? (\n <div className=\"grid h-20 w-24 place-items-center px-2 text-center text-xs text-muted-foreground\">\n Image\n </div>\n ) : (\n <img\n alt={attachment.name ?? \"Attached image\"}\n className=\"h-20 w-24 object-cover\"\n src={src}\n />\n )}\n </div>\n );\n }\n return (\n <span\n className=\"inline-flex max-w-full items-center gap-1.5 rounded-lg border border-border/80 bg-card/80 px-2 py-1 text-xs font-medium text-muted-foreground\"\n key={key}\n >\n <span className=\"min-w-0 truncate\">\n {attachment.name ?? attachment.mediaType ?? \"Document\"}\n </span>\n </span>\n );\n })}\n </div>\n );\n}\n\nfunction hasMarkdownTable(text: string): boolean {\n const lines = text.split(\"\\n\");\n return lines.some((line, index) => {\n const next = lines[index + 1];\n return (\n line.includes(\"|\") &&\n next !== undefined &&\n /^\\s*\\|?\\s*:?-{3,}:?\\s*(\\|\\s*:?-{3,}:?\\s*)+\\|?\\s*$/.test(next)\n );\n });\n}\n\nfunction ToolEntry(props: {\n entry: ToolMessage;\n decidingApprovals: Set<string>;\n answeringQuestions: Set<string>;\n onApprovalDecision: (approvalId: string, approved: boolean) => void;\n onQuestionAnswer: (\n questionId: string,\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n}) {\n const [collapsed, setCollapsed] = useState(\n props.entry.approval?.status !== \"pending\" && props.entry.question?.status !== \"pending\",\n );\n const approval = props.entry.approval;\n const question = props.entry.question;\n const childEvents = props.entry.childEvents ?? [];\n const hasPayload =\n props.entry.args !== undefined ||\n props.entry.result !== undefined ||\n childEvents.length > 0 ||\n approval !== undefined ||\n question !== undefined;\n const pendingApproval = approval?.status === \"pending\";\n const pendingQuestion = question?.status === \"pending\";\n const deciding = approval !== undefined && props.decidingApprovals.has(approval.id);\n const answering = question !== undefined && props.answeringQuestions.has(question.id);\n\n return (\n <article\n className=\"w-full justify-self-start overflow-hidden rounded-xl border border-border/80 bg-card/90 text-foreground shadow-sm shadow-black/20\"\n data-entry-id={String(props.entry.entryId)}\n >\n <div\n className={cn(\n \"flex min-w-0 items-center gap-2 px-3 py-2.5\",\n !collapsed && hasPayload && \"bg-muted/20\",\n )}\n >\n <Button\n aria-expanded={!collapsed}\n className=\"h-auto min-h-0 min-w-0 flex-1 justify-between border-0 bg-transparent p-0 text-left text-inherit shadow-none hover:bg-transparent hover:text-inherit\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => setCollapsed((current) => !current)}\n >\n <span className=\"flex min-w-0 items-center gap-2\">\n <span className=\"grid h-6 w-4 shrink-0 place-items-center text-foreground\">\n <StudioIcon icon={Wrench01Icon} className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n </span>\n <strong className=\"min-w-0 truncate text-sm font-semibold text-foreground\">\n {props.entry.toolName}\n </strong>\n </span>\n {pendingApproval ? null : (\n <span className=\"ml-auto shrink-0 text-xs font-medium text-muted-foreground\">\n {collapsed ? \"Show\" : \"Hide\"}\n </span>\n )}\n </Button>\n {pendingApproval && approval !== undefined ? (\n <ToolApprovalActions\n disabled={deciding}\n onDecision={(approved) => props.onApprovalDecision(approval.id, approved)}\n />\n ) : null}\n {pendingQuestion ? (\n <Badge className=\"border-border/70 bg-muted/45 px-1.5 py-0.5 text-xs uppercase text-foreground\">\n Waiting for input\n </Badge>\n ) : null}\n {pendingApproval || pendingQuestion ? (\n <Button\n aria-expanded={!collapsed}\n className=\"h-7 min-h-7 px-2 text-xs font-medium\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => setCollapsed((current) => !current)}\n >\n {collapsed ? \"Show\" : \"Hide\"}\n </Button>\n ) : null}\n </div>\n {collapsed || !hasPayload ? null : (\n <div className=\"grid gap-3 p-3\">\n {approval === undefined ? null : <ToolApprovalPanel approval={approval} />}\n {question === undefined ? null : (\n <ToolQuestionPanel\n disabled={answering}\n question={question}\n onAnswer={(answers) => props.onQuestionAnswer(question.id, answers)}\n />\n )}\n {question !== undefined || props.entry.args === undefined ? null : (\n <ToolPayload title=\"Input\" value={props.entry.args} />\n )}\n {childEvents.length === 0 ? null : <ChildAgentActivity events={childEvents} />}\n {question !== undefined || props.entry.result === undefined ? null : (\n <ToolPayload title=\"Output\" value={props.entry.result} />\n )}\n </div>\n )}\n </article>\n );\n}\n\nfunction ChildAgentActivity(props: { events: NonNullable<ToolMessage[\"childEvents\"]> }) {\n return (\n <div className=\"overflow-hidden rounded-xl border border-border/80 bg-background/65\">\n <div className=\"bg-muted/20 px-3 py-2 text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n Subagent activity\n </div>\n <div className=\"grid gap-3 p-3\">\n {props.events.map((event) => {\n const agentLabel = event.agentName ?? event.agentId;\n if (event.kind === \"message\" || event.kind === \"reasoning\") {\n return (\n <div\n className=\"grid gap-1 rounded-xl border border-border/80 bg-card/90 p-3\"\n key={`${event.kind}-${event.agentId}-${event.text}`}\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n <Badge className=\"border-border bg-muted px-1.5 py-0.5 text-xs uppercase text-muted-foreground\">\n {event.kind === \"reasoning\" ? \"Reasoning\" : \"Response\"}\n </Badge>\n <span className=\"min-w-0 truncate text-xs font-semibold text-muted-foreground\">\n {agentLabel}\n </span>\n </div>\n <MarkdownText size=\"base\" text={event.text} />\n </div>\n );\n }\n return (\n <div\n className=\"grid gap-2 rounded-xl border border-border/80 bg-card/90 p-3\"\n key={`${event.kind}-${event.agentId}-${event.toolName}-${event.callId ?? event.args ?? event.result ?? \"\"}`}\n >\n <div className=\"flex min-w-0 items-center gap-2\">\n <Badge className=\"border-border/70 bg-muted/45 px-1.5 py-0.5 text-xs uppercase text-foreground\">\n Tool\n </Badge>\n <span className=\"min-w-0 truncate text-xs font-semibold text-muted-foreground\">\n {agentLabel} / {event.toolName}\n </span>\n </div>\n {event.args === undefined ? null : <ToolPayload title=\"Input\" value={event.args} />}\n {event.result === undefined ? null : (\n <ToolPayload title=\"Output\" value={event.result} />\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nfunction ToolQuestionPanel(props: {\n question: ToolQuestion;\n disabled: boolean;\n onAnswer: (\n answers: Array<{ questionId: string; answer: string; choice?: string; custom?: boolean }>,\n ) => void;\n}) {\n const [values, setValues] = useState<Record<string, QuestionDraft>>({});\n const [activeQuestionIndex, setActiveQuestionIndex] = useState(0);\n const pending = props.question.status === \"pending\";\n const total = props.question.questions.length;\n\n const answers = props.question.questions.map((question) => {\n const draft = values[question.id];\n const customAnswer = draft?.customValue?.trim() ?? \"\";\n const answer = customAnswer.length > 0 ? customAnswer : draft?.answer;\n return {\n questionId: question.id,\n answer: answer?.trim() ?? \"\",\n ...(draft?.choice === undefined ? {} : { choice: draft.choice }),\n ...(customAnswer.length > 0 ? { custom: true } : {}),\n };\n });\n const activeIndex = total === 0 ? 0 : Math.min(activeQuestionIndex, total - 1);\n const activeQuestion = props.question.questions[activeIndex];\n const activeAnswer = answers[activeIndex]?.answer ?? \"\";\n const answeredCount = answers.filter((answer) => answer.answer.length > 0).length;\n const canAdvance = activeAnswer.length > 0;\n const canSubmit = pending && answers.every((answer) => answer.answer.length > 0);\n const firstQuestion = activeIndex === 0;\n const lastQuestion = activeIndex >= total - 1;\n\n if (activeQuestion === undefined) {\n return (\n <div className=\"rounded-xl border border-border bg-background p-4 text-sm font-medium text-muted-foreground\">\n No questions\n </div>\n );\n }\n\n const goPrevious = () => setActiveQuestionIndex((current) => Math.max(0, current - 1));\n const goNext = () =>\n setActiveQuestionIndex((current) => Math.min(props.question.questions.length - 1, current + 1));\n const updateDraft = (questionId: string, value: QuestionDraft) =>\n setValues((current) => ({\n ...current,\n [questionId]: value,\n }));\n\n return (\n <div className=\"grid gap-3\">\n <QuestionPromptControl\n key={activeQuestion.id}\n disabled={props.disabled || !pending}\n index={activeIndex}\n total={total}\n question={activeQuestion}\n value={values[activeQuestion.id]}\n answer={props.question.answers?.find((answer) => answer.questionId === activeQuestion.id)}\n onChange={(value) => updateDraft(activeQuestion.id, value)}\n {...(lastQuestion ? {} : { onAdvance: goNext })}\n />\n {pending ? (\n <div className=\"flex min-w-0 items-center justify-between gap-3 rounded-xl bg-muted/20 px-3 py-2\">\n <div className=\"min-w-0 text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {answeredCount}/{total} answered\n </div>\n <div className=\"flex shrink-0 items-center gap-2\">\n {firstQuestion ? null : (\n <Button type=\"button\" variant=\"secondary\" onClick={goPrevious}>\n Back\n </Button>\n )}\n {lastQuestion ? (\n <Button\n className=\"h-9 min-h-9 px-4\"\n disabled={props.disabled || !canSubmit}\n type=\"button\"\n onClick={() => props.onAnswer(answers)}\n >\n Submit answers\n </Button>\n ) : (\n <Button\n className=\"h-9 min-h-9 px-4\"\n disabled={props.disabled || !canAdvance}\n type=\"button\"\n onClick={goNext}\n >\n Next question\n </Button>\n )}\n </div>\n </div>\n ) : total > 1 ? (\n <div className=\"flex min-w-0 items-center justify-between gap-3 rounded-xl bg-muted/20 px-3 py-2\">\n <div className=\"min-w-0 text-xs font-semibold uppercase tracking-[0.2em] text-foreground\">\n Answered\n </div>\n <div className=\"flex shrink-0 items-center gap-2\">\n <Button disabled={firstQuestion} type=\"button\" variant=\"secondary\" onClick={goPrevious}>\n Back\n </Button>\n <Button disabled={lastQuestion} type=\"button\" variant=\"secondary\" onClick={goNext}>\n Next\n </Button>\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\ntype QuestionDraft = {\n answer?: string;\n choice?: string;\n customValue?: string;\n};\n\nfunction QuestionPromptControl(props: {\n question: ToolQuestion[\"questions\"][number];\n value: QuestionDraft | undefined;\n answer: NonNullable<ToolQuestion[\"answers\"]>[number] | undefined;\n disabled: boolean;\n index: number;\n total: number;\n onChange: (value: QuestionDraft) => void;\n onAdvance?: () => void;\n}) {\n const submittedAnswer = props.answer?.answer;\n const draftAnswer = questionDraftAnswer(props.value);\n const state =\n submittedAnswer !== undefined ? \"Answered\" : draftAnswer.length > 0 ? \"Ready\" : \"Waiting\";\n\n return (\n <section className=\"grid gap-4 rounded-xl border border-border/80 bg-background/70 p-4\">\n <div className=\"flex min-w-0 items-start justify-between gap-4\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n Question {props.index + 1} of {props.total}\n </div>\n <h3 className=\"m-0 text-base font-semibold leading-7 text-foreground [overflow-wrap:anywhere]\">\n {props.question.question}\n </h3>\n </div>\n <span\n className={cn(\n \"shrink-0 text-xs font-semibold uppercase tracking-[0.18em]\",\n state === \"Answered\" && \"text-foreground\",\n state === \"Ready\" && \"text-foreground\",\n state === \"Waiting\" && \"text-muted-foreground\",\n )}\n >\n {state}\n </span>\n </div>\n {submittedAnswer === undefined ? null : (\n <div className=\"rounded-lg border border-border/70 bg-muted/45 px-3 py-2 text-sm font-medium text-foreground\">\n {submittedAnswer}\n </div>\n )}\n {submittedAnswer !== undefined ? null : props.question.choices.length > 0 ? (\n <div className=\"flex flex-wrap gap-2\">\n {props.question.choices.map((choice) => {\n const active = props.value?.choice === choice.value;\n return (\n <Button\n key={choice.value}\n className={cn(\"h-8 min-h-8 px-3 text-xs\", active && \"border-foreground/45\")}\n disabled={props.disabled}\n size=\"sm\"\n type=\"button\"\n variant={active ? \"default\" : \"secondary\"}\n onClick={() => {\n props.onChange({\n answer: choice.value,\n choice: choice.value,\n customValue: props.value?.customValue ?? \"\",\n });\n props.onAdvance?.();\n }}\n >\n {choice.label}\n </Button>\n );\n })}\n </div>\n ) : null}\n {submittedAnswer !== undefined ? null : (\n <Textarea\n className=\"min-h-24 text-sm\"\n disabled={props.disabled}\n placeholder=\"Type a custom answer\"\n rows={3}\n value={props.value?.customValue ?? \"\"}\n onChange={(event) =>\n props.onChange({\n ...props.value,\n customValue: event.currentTarget.value,\n })\n }\n />\n )}\n </section>\n );\n}\n\nfunction questionDraftAnswer(value: QuestionDraft | undefined): string {\n const customAnswer = value?.customValue?.trim() ?? \"\";\n return customAnswer.length > 0 ? customAnswer : (value?.answer?.trim() ?? \"\");\n}\n\nfunction ToolApprovalPanel(props: { approval: ToolApproval }) {\n return (\n <div className=\"grid gap-2 rounded-xl border border-border/70 bg-muted/25 px-3 py-2.5\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Badge\n className={cn(\n \"border-border/70 bg-background/60 px-1.5 py-0.5 text-xs uppercase text-muted-foreground\",\n props.approval.status === \"approved\" && \"text-foreground\",\n props.approval.status === \"rejected\" && \"text-destructive\",\n )}\n >\n Approval\n </Badge>\n <div className=\"min-w-0\">\n <div className=\"text-sm font-medium text-foreground\">{approvalLabel(props.approval)}</div>\n </div>\n </div>\n {props.approval.reason === undefined ? null : (\n <div className=\"text-xs font-medium text-muted-foreground [overflow-wrap:anywhere]\">\n {props.approval.reason}\n </div>\n )}\n </div>\n );\n}\n\nfunction ToolApprovalActions(props: {\n disabled: boolean;\n onDecision: (approved: boolean) => void;\n}) {\n return (\n <div className=\"flex shrink-0 items-center gap-1 rounded-lg border border-border/80 bg-background/55 p-0.5\">\n <Button\n className=\"h-7 min-h-7 rounded-md border-0 bg-transparent px-2.5 text-xs text-muted-foreground shadow-none hover:bg-destructive/10 hover:text-destructive\"\n disabled={props.disabled}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => props.onDecision(false)}\n >\n Reject\n </Button>\n <Button\n className=\"h-7 min-h-7 rounded-md px-2.5 text-xs\"\n disabled={props.disabled}\n size=\"sm\"\n type=\"button\"\n onClick={() => props.onDecision(true)}\n >\n Approve\n </Button>\n </div>\n );\n}\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
|
package/dist/ui/index.html
CHANGED
|
@@ -8,19 +8,24 @@
|
|
|
8
8
|
name="description"
|
|
9
9
|
content="Professional Studio interface for Anvia agents, sessions, tools, knowledge, and traces."
|
|
10
10
|
/>
|
|
11
|
-
<link rel="icon" type="image/png" href="/ui/assets/
|
|
12
|
-
<script type="module" crossorigin src="/ui/assets/index-
|
|
11
|
+
<link rel="icon" type="image/png" href="/ui/assets/anvia.png" />
|
|
12
|
+
<script type="module" crossorigin src="/ui/assets/index-D5lHtsjb.js"></script>
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/ui/assets/utils-BN2yP0LH.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/ui/assets/format-C9HPGfkW.js">
|
|
15
|
-
<link rel="stylesheet" crossorigin href="/ui/assets/index-
|
|
15
|
+
<link rel="stylesheet" crossorigin href="/ui/assets/index-Dl647xDC.css">
|
|
16
16
|
</head>
|
|
17
17
|
<body>
|
|
18
18
|
<div id="anvia-ui" data-ui-path="/ui">
|
|
19
19
|
<main class="shell-loading">
|
|
20
|
-
<div>
|
|
21
|
-
<img
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
<div class="studio-logo-lockup">
|
|
21
|
+
<img
|
|
22
|
+
class="studio-logo-image"
|
|
23
|
+
src="/ui/assets/logo.png"
|
|
24
|
+
alt="Anvia"
|
|
25
|
+
width="984"
|
|
26
|
+
height="206"
|
|
27
|
+
/>
|
|
28
|
+
<span class="studio-logo-badge">Studio</span>
|
|
24
29
|
</div>
|
|
25
30
|
</main>
|
|
26
31
|
</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anvia/studio",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.16",
|
|
4
4
|
"description": "Studio UI and HTTP runtime for Anvia agents.",
|
|
5
5
|
"author": "anvia",
|
|
6
6
|
"maintainer": "Indra Zulfi",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"react-dom": "^19.2.7",
|
|
45
45
|
"react-markdown": "^10.1.0",
|
|
46
46
|
"tailwind-merge": "^3.6.0",
|
|
47
|
-
"@anvia/react": "0.7.
|
|
48
|
-
"@anvia/server": "0.4.
|
|
47
|
+
"@anvia/react": "0.7.8",
|
|
48
|
+
"@anvia/server": "0.4.8"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@tailwindcss/typography": "^0.5.19",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"vite": "^8.0.10",
|
|
62
62
|
"vitest": "^4.0.8",
|
|
63
63
|
"zod": "^4.4.3",
|
|
64
|
-
"@anvia/core": "0.
|
|
64
|
+
"@anvia/core": "0.12.1"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
67
|
"@anvia/core": ">=0.7.1 <1.0.0"
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{i as e,r as t,s as n,t as r}from"./utils-BN2yP0LH.js";import{t as i}from"./badge-BH7gz3tB.js";var a=n(e(),1),o=t();function s(e){let[t,n]=(0,a.useState)({});return(0,a.useEffect)(()=>{let t=!1;async function r(){let r=await Promise.all(e.agents.map(async e=>{try{let t=await fetch(`/agents/${encodeURIComponent(e.id)}/runtime`);return t.ok?[e.id,await t.json()]:[e.id,void 0]}catch{return[e.id,void 0]}}));t||n(Object.fromEntries(r))}return r(),()=>{t=!0}},[e.agents]),(0,o.jsxs)(`section`,{className:`grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55`,"aria-label":`Agents`,children:[(0,o.jsx)(`header`,{className:`bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur`,children:(0,o.jsx)(`div`,{className:`grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1`,children:(0,o.jsxs)(`div`,{className:`grid min-w-0 gap-2`,children:[(0,o.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.24em] text-foreground`,children:`Studio registry`}),(0,o.jsx)(`h1`,{className:`m-0 text-2xl font-semibold leading-none tracking-tight text-foreground`,children:`Studio`}),(0,o.jsx)(`p`,{className:`m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground`,children:`Registered agents, operational prompts, and runtime metadata for Studio agents.`})]})})}),(0,o.jsx)(`div`,{className:`min-h-0 overflow-auto pb-6 pl-0 pr-6`,children:(0,o.jsx)(`div`,{className:`grid w-full gap-4`,children:e.agents.length===0?(0,o.jsx)(`div`,{className:`grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center`,children:(0,o.jsxs)(`div`,{className:`grid max-w-md gap-2`,children:[(0,o.jsx)(`h2`,{className:`m-0 text-base font-semibold text-foreground`,children:`No agents`}),(0,o.jsx)(`p`,{className:`m-0 text-sm leading-6 text-muted-foreground`,children:`Studio has no registered agents to inspect.`})]})}):(0,o.jsx)(`div`,{className:`grid gap-4`,children:e.agents.map(n=>(0,o.jsx)(c,{agent:n,runtime:t[n.id],active:n.id===e.selectedAgentId},n.id))})})})]})}function c(e){let t=p(e.agent.metadata),n=e.runtime;return(0,o.jsx)(`article`,{className:r(`grid overflow-hidden rounded-xl border border-border/80 bg-card/45 p-2 shadow-sm transition duration-200 hover:border-border hover:bg-card/60`,e.active&&`border-border/80 bg-card/70 shadow-[inset_0_1px_0_hsl(0_0%_100%_/_0.08)]`),children:(0,o.jsxs)(`div`,{className:`grid gap-2 xl:grid-cols-[minmax(280px,0.72fr)_minmax(0,1fr)_minmax(280px,0.7fr)]`,children:[(0,o.jsxs)(`section`,{className:`grid content-between gap-8 rounded-lg bg-background/35 p-5`,children:[(0,o.jsxs)(`div`,{className:`grid gap-3`,children:[(0,o.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,o.jsx)(i,{className:r(`border-border/80 bg-muted/45 text-muted-foreground`,e.active&&`border-border/80 bg-muted/45 text-foreground`),children:e.active?`selected`:`agent`}),(0,o.jsxs)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:[e.agent.quickPrompts.length,` prompts`]})]}),(0,o.jsxs)(`div`,{className:`grid gap-2`,children:[(0,o.jsx)(`h2`,{className:`m-0 text-xl font-semibold leading-tight tracking-tight text-foreground text-balance`,children:e.agent.name??e.agent.id}),(0,o.jsx)(`span`,{className:`min-w-0 break-all text-xs font-medium leading-5 text-muted-foreground`,children:e.agent.id})]})]}),(0,o.jsx)(`div`,{className:`h-px w-20 bg-muted/55`})]}),(0,o.jsxs)(`section`,{className:`grid content-start gap-5 rounded-lg bg-background/35 p-5`,children:[(0,o.jsxs)(`div`,{className:`grid gap-2`,children:[(0,o.jsx)(f,{children:`description`}),(0,o.jsx)(`p`,{className:`m-0 max-w-[72ch] text-sm leading-6 text-muted-foreground`,children:e.agent.description??`No description`})]}),(0,o.jsxs)(`div`,{className:`grid gap-2`,children:[(0,o.jsx)(f,{children:`quick prompts`}),e.agent.quickPrompts.length===0?(0,o.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground`,children:`None configured`}):(0,o.jsx)(`div`,{className:`grid gap-2`,children:e.agent.quickPrompts.map((e,t)=>(0,o.jsxs)(`div`,{className:`grid grid-cols-[28px_minmax(0,1fr)] gap-3 rounded-lg border border-border/70 bg-background/45 px-3 py-2 text-sm leading-6 text-foreground`,children:[(0,o.jsx)(`span`,{className:` text-xs font-semibold text-muted-foreground`,children:String(t+1).padStart(2,`0`)}),(0,o.jsx)(`span`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:e})]},e))})]})]}),(0,o.jsxs)(`section`,{className:`grid content-start gap-3 rounded-lg bg-background/35 p-5`,children:[(0,o.jsx)(f,{children:`runtime`}),n===void 0?(0,o.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground`,children:`Runtime summary unavailable`}):(0,o.jsxs)(`div`,{className:`grid gap-3`,children:[(0,o.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,o.jsx)(d,{label:`tools`,value:n.toolCount}),(0,o.jsx)(d,{label:`mcp`,value:n.mcpToolCount}),(0,o.jsx)(d,{label:`context`,value:n.staticContextCount+n.dynamicContextCount}),(0,o.jsx)(d,{label:`observers`,value:n.observerCount})]}),(0,o.jsxs)(`div`,{className:`flex min-w-0 flex-wrap gap-2`,children:[(0,o.jsx)(i,{className:n.hasMemory?l:u,children:`memory`}),(0,o.jsx)(i,{className:n.hasHook?l:u,children:`hook`}),(0,o.jsx)(i,{className:n.hasOutputSchema?l:u,children:`output schema`}),n.defaultMaxTurns===void 0?null:(0,o.jsxs)(i,{className:`border-border/80 bg-muted/55 text-muted-foreground`,children:[n.defaultMaxTurns,` turns`]})]}),n.model===void 0?null:(0,o.jsxs)(`div`,{className:`grid min-w-0 gap-1 rounded-lg bg-muted/20 px-3 py-2 text-sm`,children:[(0,o.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:`model`}),(0,o.jsx)(`span`,{className:`min-w-0 truncate text-xs text-foreground`,title:m(n.model),children:m(n.model)})]})]}),(0,o.jsx)(f,{children:`metadata`}),t.length===0?(0,o.jsx)(`div`,{className:`rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground`,children:`None`}):(0,o.jsx)(`div`,{className:`grid gap-1`,children:t.map(([e,t])=>(0,o.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(110px,0.75fr)_minmax(0,1fr)] gap-3 rounded-lg bg-muted/20 px-3 py-2 text-sm`,children:[(0,o.jsx)(`span`,{className:`min-w-0 truncate font-medium text-muted-foreground`,title:e,children:e}),(0,o.jsx)(`span`,{className:`min-w-0 truncate text-xs text-foreground`,title:m(t),children:m(t)})]},e))})]})]})})}var l=`border-border/80 bg-muted/45 text-foreground`,u=`border-border/80 bg-muted/55 text-muted-foreground`;function d(e){return(0,o.jsxs)(`div`,{className:`grid gap-1 rounded-lg bg-muted/20 px-3 py-2`,children:[(0,o.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground`,children:e.label}),(0,o.jsx)(`span`,{className:` text-lg font-semibold text-foreground`,children:e.value})]})}function f(e){return(0,o.jsx)(`h3`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground`,children:e.children})}function p(e){return e===void 0?[]:Object.entries(e)}function m(e){return e===null?`null`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):Array.isArray(e)?`[${e.length}]`:typeof e==`object`?`{...}`:``}export{s as AgentsPage};
|
|
2
|
-
//# sourceMappingURL=agents-page-B8Tw2e11.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents-page-B8Tw2e11.js","names":[],"sources":["../../../src/ui/app/modules/agents/agents-page.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { StudioAgentRuntimeSummary, StudioConfig } from \"../../../../types\";\nimport { Badge } from \"../../components/ui/badge\";\nimport { cn } from \"../../lib/utils\";\n\nexport function AgentsPage(props: { agents: StudioConfig[\"agents\"]; selectedAgentId: string }) {\n const [runtimeByAgentId, setRuntimeByAgentId] = useState<\n Record<string, StudioAgentRuntimeSummary | undefined>\n >({});\n\n useEffect(() => {\n let cancelled = false;\n async function loadRuntimeSummaries() {\n const entries = await Promise.all(\n props.agents.map(async (agent) => {\n try {\n const response = await fetch(`/agents/${encodeURIComponent(agent.id)}/runtime`);\n if (!response.ok) {\n return [agent.id, undefined] as const;\n }\n return [agent.id, (await response.json()) as StudioAgentRuntimeSummary] as const;\n } catch {\n return [agent.id, undefined] as const;\n }\n }),\n );\n if (!cancelled) {\n setRuntimeByAgentId(Object.fromEntries(entries));\n }\n }\n void loadRuntimeSummaries();\n return () => {\n cancelled = true;\n };\n }, [props.agents]);\n\n return (\n <section\n className=\"grid min-h-0 grid-rows-[auto_minmax(0,1fr)] overflow-hidden bg-background/55\"\n aria-label=\"Agents\"\n >\n <header className=\"bg-background/70 pb-5 pl-0 pr-6 pt-0 backdrop-blur\">\n <div className=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-end gap-4 max-md:grid-cols-1\">\n <div className=\"grid min-w-0 gap-2\">\n <div className=\" text-xs font-semibold uppercase tracking-[0.24em] text-foreground\">\n Studio registry\n </div>\n <h1 className=\"m-0 text-2xl font-semibold leading-none tracking-tight text-foreground\">\n Studio\n </h1>\n <p className=\"m-0 max-w-[62ch] text-sm leading-6 text-muted-foreground\">\n Registered agents, operational prompts, and runtime metadata for Studio agents.\n </p>\n </div>\n </div>\n </header>\n\n <div className=\"min-h-0 overflow-auto pb-6 pl-0 pr-6\">\n <div className=\"grid w-full gap-4\">\n {props.agents.length === 0 ? (\n <div className=\"grid min-h-80 place-items-center rounded-xl border border-dashed border-border/80 bg-card/35 px-6 text-center\">\n <div className=\"grid max-w-md gap-2\">\n <h2 className=\"m-0 text-base font-semibold text-foreground\">No agents</h2>\n <p className=\"m-0 text-sm leading-6 text-muted-foreground\">\n Studio has no registered agents to inspect.\n </p>\n </div>\n </div>\n ) : (\n <div className=\"grid gap-4\">\n {props.agents.map((agent) => (\n <AgentDossier\n agent={agent}\n runtime={runtimeByAgentId[agent.id]}\n active={agent.id === props.selectedAgentId}\n key={agent.id}\n />\n ))}\n </div>\n )}\n </div>\n </div>\n </section>\n );\n}\n\nfunction AgentDossier(props: {\n agent: StudioConfig[\"agents\"][number];\n runtime: StudioAgentRuntimeSummary | undefined;\n active: boolean;\n}) {\n const metadata = metadataEntries(props.agent.metadata);\n const runtime = props.runtime;\n\n return (\n <article\n className={cn(\n \"grid overflow-hidden rounded-xl border border-border/80 bg-card/45 p-2 shadow-sm transition duration-200 hover:border-border hover:bg-card/60\",\n props.active && \"border-border/80 bg-card/70 shadow-[inset_0_1px_0_hsl(0_0%_100%_/_0.08)]\",\n )}\n >\n <div className=\"grid gap-2 xl:grid-cols-[minmax(280px,0.72fr)_minmax(0,1fr)_minmax(280px,0.7fr)]\">\n <section className=\"grid content-between gap-8 rounded-lg bg-background/35 p-5\">\n <div className=\"grid gap-3\">\n <div className=\"flex min-w-0 items-center justify-between gap-3\">\n <Badge\n className={cn(\n \"border-border/80 bg-muted/45 text-muted-foreground\",\n props.active && \"border-border/80 bg-muted/45 text-foreground\",\n )}\n >\n {props.active ? \"selected\" : \"agent\"}\n </Badge>\n <span className=\" text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.agent.quickPrompts.length} prompts\n </span>\n </div>\n <div className=\"grid gap-2\">\n <h2 className=\"m-0 text-xl font-semibold leading-tight tracking-tight text-foreground text-balance\">\n {props.agent.name ?? props.agent.id}\n </h2>\n <span className=\"min-w-0 break-all text-xs font-medium leading-5 text-muted-foreground\">\n {props.agent.id}\n </span>\n </div>\n </div>\n <div className=\"h-px w-20 bg-muted/55\" />\n </section>\n\n <section className=\"grid content-start gap-5 rounded-lg bg-background/35 p-5\">\n <div className=\"grid gap-2\">\n <SectionLabel>description</SectionLabel>\n <p className=\"m-0 max-w-[72ch] text-sm leading-6 text-muted-foreground\">\n {props.agent.description ?? \"No description\"}\n </p>\n </div>\n <div className=\"grid gap-2\">\n <SectionLabel>quick prompts</SectionLabel>\n {props.agent.quickPrompts.length === 0 ? (\n <div className=\"rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground\">\n None configured\n </div>\n ) : (\n <div className=\"grid gap-2\">\n {props.agent.quickPrompts.map((prompt, index) => (\n <div\n className=\"grid grid-cols-[28px_minmax(0,1fr)] gap-3 rounded-lg border border-border/70 bg-background/45 px-3 py-2 text-sm leading-6 text-foreground\"\n key={prompt}\n >\n <span className=\" text-xs font-semibold text-muted-foreground\">\n {String(index + 1).padStart(2, \"0\")}\n </span>\n <span className=\"min-w-0 [overflow-wrap:anywhere]\">{prompt}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n </section>\n\n <section className=\"grid content-start gap-3 rounded-lg bg-background/35 p-5\">\n <SectionLabel>runtime</SectionLabel>\n {runtime === undefined ? (\n <div className=\"rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground\">\n Runtime summary unavailable\n </div>\n ) : (\n <div className=\"grid gap-3\">\n <div className=\"grid grid-cols-2 gap-2\">\n <RuntimeMetric label=\"tools\" value={runtime.toolCount} />\n <RuntimeMetric label=\"mcp\" value={runtime.mcpToolCount} />\n <RuntimeMetric\n label=\"context\"\n value={runtime.staticContextCount + runtime.dynamicContextCount}\n />\n <RuntimeMetric label=\"observers\" value={runtime.observerCount} />\n </div>\n <div className=\"flex min-w-0 flex-wrap gap-2\">\n <Badge className={runtime.hasMemory ? enabledBadge : disabledBadge}>memory</Badge>\n <Badge className={runtime.hasHook ? enabledBadge : disabledBadge}>hook</Badge>\n <Badge className={runtime.hasOutputSchema ? enabledBadge : disabledBadge}>\n output schema\n </Badge>\n {runtime.defaultMaxTurns === undefined ? null : (\n <Badge className=\"border-border/80 bg-muted/55 text-muted-foreground\">\n {runtime.defaultMaxTurns} turns\n </Badge>\n )}\n </div>\n {runtime.model === undefined ? null : (\n <div className=\"grid min-w-0 gap-1 rounded-lg bg-muted/20 px-3 py-2 text-sm\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n model\n </span>\n <span\n className=\"min-w-0 truncate text-xs text-foreground\"\n title={formatMetadataValue(runtime.model)}\n >\n {formatMetadataValue(runtime.model)}\n </span>\n </div>\n )}\n </div>\n )}\n\n <SectionLabel>metadata</SectionLabel>\n {metadata.length === 0 ? (\n <div className=\"rounded-lg border border-dashed border-border/80 bg-background/45 px-3 py-2 text-sm text-muted-foreground\">\n None\n </div>\n ) : (\n <div className=\"grid gap-1\">\n {metadata.map(([key, value]) => (\n <div\n className=\"grid min-w-0 grid-cols-[minmax(110px,0.75fr)_minmax(0,1fr)] gap-3 rounded-lg bg-muted/20 px-3 py-2 text-sm\"\n key={key}\n >\n <span className=\"min-w-0 truncate font-medium text-muted-foreground\" title={key}>\n {key}\n </span>\n <span\n className=\"min-w-0 truncate text-xs text-foreground\"\n title={formatMetadataValue(value)}\n >\n {formatMetadataValue(value)}\n </span>\n </div>\n ))}\n </div>\n )}\n </section>\n </div>\n </article>\n );\n}\n\nconst enabledBadge = \"border-border/80 bg-muted/45 text-foreground\";\nconst disabledBadge = \"border-border/80 bg-muted/55 text-muted-foreground\";\n\nfunction RuntimeMetric(props: { label: string; value: number }) {\n return (\n <div className=\"grid gap-1 rounded-lg bg-muted/20 px-3 py-2\">\n <span className=\" text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground\">\n {props.label}\n </span>\n <span className=\" text-lg font-semibold text-foreground\">{props.value}</span>\n </div>\n );\n}\n\nfunction SectionLabel(props: { children: string }) {\n return (\n <h3 className=\"m-0 text-xs font-semibold uppercase tracking-[0.2em] text-muted-foreground\">\n {props.children}\n </h3>\n );\n}\n\nfunction metadataEntries(metadata: StudioConfig[\"agents\"][number][\"metadata\"]) {\n if (metadata === undefined) {\n return [];\n }\n return Object.entries(metadata);\n}\n\nfunction formatMetadataValue(value: unknown): string {\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n if (Array.isArray(value)) {\n return `[${value.length}]`;\n }\n if (typeof value === \"object\") {\n return \"{...}\";\n }\n return \"\";\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./utils-BN2yP0LH.js";import{t}from"./PlayIcon-Culan3xL.js";import{M as n,N as r,a as i,c as a,d as o,f as s,i as c,m as l,o as u,p as d,s as f,u as p}from"./index-CC5mjRie.js";var m=e();function h(e){let t=e.evals.find(t=>t.id===e.selectedEvalId)??e.evals[0];return(0,m.jsx)(u,{children:(0,m.jsx)(`div`,{className:`grid min-h-0 min-w-0 pb-6 pr-6`,children:(0,m.jsxs)(a,{className:`grid content-start gap-5 overflow-auto p-6`,children:[(0,m.jsxs)(`header`,{className:`flex min-w-0 items-start justify-between gap-4 border-b border-border/80 pb-5`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`p`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:`Evals`}),(0,m.jsx)(`h1`,{className:`m-0 mt-2 text-2xl font-semibold tracking-tight text-foreground`,children:t?.name??`Eval suite`}),(0,m.jsx)(`p`,{className:`m-0 mt-2 max-w-2xl text-sm leading-6 text-muted-foreground`,children:t?.description??`Inspect eval datasets, metrics, run configuration, and per-case outcomes.`})]}),(0,m.jsx)(g,{disabled:!e.enabled||t===void 0||e.runState===`running`,label:e.runState===`running`?`Running`:`Run`,onRun:e.onRun})]}),(0,m.jsxs)(`div`,{className:`grid gap-5 lg:grid-cols-[340px_minmax(0,1fr)]`,children:[(0,m.jsxs)(`aside`,{className:`grid content-start gap-4 border-r border-border/80 pr-5 max-lg:border-b max-lg:border-r-0 max-lg:pb-5 max-lg:pr-0`,children:[(0,m.jsxs)(`label`,{className:`grid gap-2`,htmlFor:`eval-suite-select`,children:[(0,m.jsx)(`span`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:`Suite`}),(0,m.jsxs)(p,{value:t?.id??``,onValueChange:e.onSelectEval,children:[(0,m.jsx)(d,{id:`eval-suite-select`,className:`h-9 w-full rounded-lg border-border/80 bg-background text-xs hover:border-muted-foreground/60 focus:border-muted-foreground/70 focus:ring-muted-foreground/20`,children:(0,m.jsx)(l,{placeholder:`Select eval`})}),(0,m.jsx)(o,{children:e.evals.map(e=>(0,m.jsx)(s,{value:e.id,children:e.name},e.id))})]})]}),t===void 0?null:(0,m.jsx)(_,{suite:t,enabled:e.enabled})]}),(0,m.jsx)(`main`,{className:`min-w-0`,children:t===void 0?(0,m.jsx)(c,{className:`min-h-0`,title:`No eval suites`,text:`0 eval suite records are available in this Studio runtime.`}):e.result===void 0?(0,m.jsx)(v,{suite:t,enabled:e.enabled,runState:e.runState}):(0,m.jsx)(w,{result:e.result,suite:t})})]})]})})})}function g(e){return(0,m.jsxs)(r,{className:`h-9 shrink-0 gap-1.5 rounded-lg border border-white bg-white px-3 text-sm font-semibold text-black shadow-none hover:border-white hover:bg-white/90 hover:text-black disabled:border-border disabled:bg-muted disabled:text-muted-foreground [&_svg]:!size-3`,disabled:e.disabled,onClick:e.onRun,variant:`ghost`,children:[(0,m.jsx)(n,{icon:t,"aria-hidden":`true`}),e.label]})}function _(e){let t=z(e.suite.metadata),n=e.suite.casePreviewCount??e.suite.casePreviews?.length??0;return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,m.jsx)(i,{label:`Cases`,value:String(e.suite.caseCount)}),(0,m.jsx)(i,{label:`Metrics`,value:String(e.suite.metricNames.length)}),(0,m.jsx)(i,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(i,{label:`Previewed`,value:`${n}/${e.suite.caseCount}`})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/70 bg-background/45 p-4`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(`h2`,{className:`m-0 text-sm font-semibold text-foreground`,children:`Run readiness`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:e.enabled?`This suite is available in the current Studio runtime.`:`Eval routes are not available in the current Studio runtime.`})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Suite id`,value:e.suite.id}),(0,m.jsx)(A,{label:`Metadata keys`,value:t.length>0?t.join(`, `):`None`})]})]})]})}function v(e){return(0,m.jsxs)(`div`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-4 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`grid gap-1`,children:[(0,m.jsx)(M,{children:`What this eval tests`}),(0,m.jsx)(`p`,{className:`m-0 max-w-3xl text-sm leading-6 text-foreground`,children:e.suite.description??`This suite has no description. Use the dataset and metric definitions below to inspect coverage before running it.`})]}),(0,m.jsx)(O,{metadata:e.suite.metadata})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(320px,0.65fr)]`,children:[(0,m.jsx)(y,{suite:e.suite}),(0,m.jsxs)(`div`,{className:`grid content-start gap-4`,children:[(0,m.jsx)(x,{metrics:e.suite.metricSummaries,metricNames:e.suite.metricNames}),(0,m.jsx)(C,{suite:e.suite,enabled:e.enabled,runState:e.runState})]})]})]})}function y(e){let t=e.suite.casePreviews??[];return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Dataset preview`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`Showing `,t.length,` of `,e.suite.caseCount,` cases.`]})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[e.suite.caseCount,` cases`]})]}),t.length===0?(0,m.jsx)(j,{children:`No dataset preview is available for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-3`,children:t.map(e=>(0,m.jsx)(b,{testCase:e},e.id))})]})}function b(e){return(0,m.jsxs)(`article`,{className:`grid gap-3 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-sm font-semibold text-foreground`,children:e.testCase.id}),e.testCase.metadataKeys===void 0?null:(0,m.jsxs)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:[e.testCase.metadataKeys.length,` metadata`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,m.jsx)(k,{label:`Input`,value:e.testCase.input,emptyText:`No input preview`}),(0,m.jsx)(k,{label:`Expected`,value:e.testCase.expected,emptyText:`No expected value`})]})]})}function x(e){let t=e.metrics??e.metricNames.map(e=>({name:e}));return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Metrics`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Scoring functions that evaluate every case output.`})]}),t.length===0?(0,m.jsx)(j,{children:`No metrics are configured for this suite.`}):(0,m.jsx)(`div`,{className:`grid gap-2`,children:t.map(e=>(0,m.jsx)(S,{metric:e},e.name))})]})}function S(e){let t=[e.metric.dataType,e.metric.configId===void 0?void 0:`config ${e.metric.configId}`,e.metric.scoreConfigId===void 0?void 0:`score ${e.metric.scoreConfigId}`,e.metric.metadataKeys===void 0?void 0:`${e.metric.metadataKeys.length} metadata`].filter(Boolean);return(0,m.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 px-3 py-3`,children:[(0,m.jsx)(`div`,{className:` text-sm font-semibold text-foreground`,children:e.metric.name}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:t.length>0?t.join(` / `):`No metric metadata`})]})}function C(e){return(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run configuration`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[`This run will execute `,e.suite.caseCount,` cases across`,` `,e.suite.metricNames.length,` metrics.`]})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:[(0,m.jsx)(A,{label:`Concurrency`,value:String(e.suite.concurrency??1)}),(0,m.jsx)(A,{label:`Status`,value:e.enabled?e.runState:`Unavailable`})]})]})}function w(e){let t=P(e.result.result),n=Array.isArray(t.results)?t.results:[];return(0,m.jsxs)(`article`,{className:`grid gap-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Run summary`}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[e.result.runId,` / `,new Date(e.result.startedAt).toLocaleTimeString()]})]}),(0,m.jsx)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.suite.name})]}),(0,m.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-4`,children:[(0,m.jsx)(i,{label:`Passed`,value:String(t.passed??0)}),(0,m.jsx)(i,{label:`Failed`,value:String(t.failed??0)}),(0,m.jsx)(i,{label:`Invalid`,value:String(t.invalid??0)}),(0,m.jsx)(i,{label:`Duration`,value:`${t.durationMs??e.result.durationMs}ms`})]})]}),(0,m.jsxs)(`section`,{className:`grid gap-3 rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-3`,children:[(0,m.jsxs)(`div`,{children:[(0,m.jsx)(M,{children:`Case results`}),(0,m.jsx)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:`Each case shows the prompt, expected answer, model output, then metric judgments.`})]}),(0,m.jsxs)(`span`,{className:`rounded-lg border border-border/80 bg-card/60 px-2.5 py-1 text-xs font-semibold text-muted-foreground`,children:[n.length,` cases`]})]}),n.length===0?(0,m.jsx)(j,{children:`No per-case results were returned by this eval run.`}):(0,m.jsx)(`div`,{className:`grid gap-4`,children:n.map((e,t)=>(0,m.jsx)(T,{index:t,result:e},F(e,t)))})]}),(0,m.jsx)(N,{title:`Raw result`,value:e.result.result})]})}function T(e){let t=V(e.result.case)?e.result.case:{},n=Array.isArray(e.result.metrics)?e.result.metrics:[],r=typeof t.id==`string`?t.id:`case-${e.index+1}`,i=I(n),a=L(i);return(0,m.jsxs)(`article`,{className:`overflow-hidden rounded-xl border border-border/70 bg-card/35`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-start justify-between gap-4 border-b border-border/70 bg-background/35 px-4 py-4`,children:[(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start gap-3`,children:[(0,m.jsx)(`span`,{className:`flex h-7 min-w-7 items-center justify-center rounded-lg border border-border/80 bg-card/70 text-xs font-semibold text-muted-foreground`,children:e.index+1}),(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`h3`,{className:`m-0 truncate text-base font-semibold text-foreground`,children:r}),(0,m.jsxs)(`p`,{className:`m-0 mt-1 text-xs leading-5 text-muted-foreground`,children:[n.length,` metric outcomes / `,i.passed,` pass / `,i.failed,` fail /`,` `,i.invalid,` invalid`]})]})]}),(0,m.jsx)(D,{children:a})]}),(0,m.jsxs)(`div`,{className:`grid gap-4 p-4`,children:[(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Test case`}),(0,m.jsxs)(`div`,{className:`grid gap-3 xl:grid-cols-[minmax(0,1.15fr)_minmax(0,0.85fr)]`,children:[(0,m.jsx)(k,{label:`Input`,value:t.input,emptyText:`No input`}),(0,m.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 xl:grid-cols-1`,children:[(0,m.jsx)(k,{label:`Expected`,value:t.expected,emptyText:`No expected value`}),(0,m.jsx)(k,{label:`Output`,value:e.result.output,emptyText:`No output`})]})]})]}),e.result.targetError===void 0?null:(0,m.jsx)(k,{label:`Target error`,value:e.result.targetError,emptyText:`No target error`}),(0,m.jsxs)(`section`,{className:`grid gap-3`,children:[(0,m.jsx)(M,{children:`Metric judgments`}),n.length===0?(0,m.jsx)(j,{children:`No metric results were returned for this case.`}):(0,m.jsxs)(`div`,{className:`overflow-hidden rounded-lg border border-border/70 bg-background/45`,children:[(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/70 px-3 py-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:[(0,m.jsx)(`span`,{children:`Metric`}),(0,m.jsx)(`span`,{children:`Score`}),(0,m.jsx)(`span`,{className:`text-right`,children:`Status`})]}),(0,m.jsx)(`div`,{className:`grid`,children:n.map((e,t)=>(0,m.jsx)(E,{index:t,metric:e},R(e)))})]})]})]})]})}function E(e){let t=V(e.metric.outcome)?e.metric.outcome:{},n=typeof t.outcome==`string`?t.outcome:`unknown`,r=Array.isArray(e.metric.reporterErrors)?e.metric.reporterErrors:[];return(0,m.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_96px_96px] gap-3 border-b border-border/60 px-3 py-3 last:border-b-0`,children:[(0,m.jsxs)(`div`,{className:`min-w-0`,children:[(0,m.jsx)(`div`,{className:`truncate text-sm font-semibold text-foreground`,children:e.metric.metricName??`metric-${e.index+1}`}),(0,m.jsx)(`div`,{className:`mt-1 text-xs leading-5 text-muted-foreground`,children:typeof t.comment==`string`?t.comment:typeof t.reason==`string`?t.reason:`No comment`}),r.length>0?(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words rounded-md border border-border/70 bg-card/45 p-2 text-xs leading-5 text-muted-foreground`,children:B(r)}):null]}),(0,m.jsx)(`div`,{className:` text-xs leading-6 text-foreground`,children:`score`in t?B(t.score):`n/a`}),(0,m.jsx)(`div`,{className:`flex justify-end`,children:(0,m.jsx)(D,{children:n})})]})}function D(e){return(0,m.jsx)(f,{className:`h-7 rounded-md bg-card/70 text-foreground`,children:e.children})}function O(e){let t=V(e.metadata)?Object.entries(e.metadata):[];return t.length===0?(0,m.jsx)(j,{children:`No suite metadata was provided.`}):(0,m.jsxs)(`div`,{className:`grid gap-2 rounded-xl border border-border/70 bg-card/35 p-4`,children:[(0,m.jsx)(M,{children:`Suite metadata`}),(0,m.jsx)(`div`,{className:`grid gap-2 text-xs text-muted-foreground`,children:t.map(([e,t])=>(0,m.jsx)(A,{label:e,value:B(t)},e))})]})}function k(e){let t=e.value!==void 0;return(0,m.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/45 p-3`,children:[(0,m.jsx)(`div`,{className:` text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`pre`,{className:`m-0 mt-2 whitespace-pre-wrap break-words text-xs leading-5 text-foreground`,children:t?B(e.value):e.emptyText})]})}function A(e){return(0,m.jsxs)(`div`,{className:`flex min-w-0 items-start justify-between gap-3`,children:[(0,m.jsx)(`span`,{className:`shrink-0 text-xs font-semibold uppercase tracking-[0.12em] text-muted-foreground`,children:e.label}),(0,m.jsx)(`span`,{className:`min-w-0 break-words text-right text-xs text-foreground`,children:e.value})]})}function j(e){return(0,m.jsx)(`div`,{className:`rounded-lg border border-border/70 bg-card/35 p-3 text-sm leading-6 text-muted-foreground`,children:e.children})}function M(e){return(0,m.jsx)(`h2`,{className:`m-0 text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.children})}function N(e){return(0,m.jsxs)(`details`,{className:`rounded-xl border border-border/80 bg-background/45 p-5`,children:[(0,m.jsx)(`summary`,{className:`cursor-pointer text-xs font-semibold uppercase tracking-[0.16em] text-muted-foreground`,children:e.title}),(0,m.jsx)(`pre`,{className:`mt-3 max-h-[45vh] overflow-auto whitespace-pre-wrap break-words rounded-lg border border-border/70 bg-card/35 p-3 text-xs leading-5 text-foreground`,children:B(e.value)})]})}function P(e){return V(e)?e:{}}function F(e,t){let n=V(e.case)?e.case:{};return typeof n.id==`string`?n.id:`case-${t+1}`}function I(e){return e.reduce((e,t)=>{let n=V(t.outcome)?t.outcome.outcome:void 0;return n===`pass`&&(e.passed+=1),n===`fail`&&(e.failed+=1),n===`invalid`&&(e.invalid+=1),e},{passed:0,failed:0,invalid:0})}function L(e){return e.failed>0?`fail`:e.invalid>0?`invalid`:e.passed>0?`pass`:`unknown`}function R(e){return typeof e.metricName==`string`&&e.metricName.length>0?e.metricName:B(e)}function z(e){return V(e)?Object.keys(e).filter(t=>e[t]!==void 0):[]}function B(e){if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function V(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{h as EvalsPage};
|
|
2
|
-
//# sourceMappingURL=evals-page-eIWZ_vsI.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import "https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800&display=swap";@layer components;@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-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-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-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-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:var(--font-sans);--font-serif:var(--font-serif);--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-yellow-500:oklch(79.5% .184 86.047);--color-zinc-100:oklch(96.7% .001 286.375);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-normal:0em;--leading-tight:1.25;--radius-2xl:1rem;--shadow-2xs:var(--shadow-2xs);--shadow-xs:var(--shadow-xs);--shadow-sm:var(--shadow-sm);--shadow-md:var(--shadow-md);--shadow-lg:var(--shadow-lg);--shadow-xl:var(--shadow-xl);--shadow-2xl:var(--shadow-2xl);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--shadow:var(--shadow)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--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(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){*{outline-color:color-mix(in oklab, var(--ring) 50%, transparent)}}*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:var(--muted-foreground) transparent}@supports (color:color-mix(in lab, red, red)){*{scrollbar-color:color-mix(in oklch, var(--muted-foreground) 38%, transparent) transparent}}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:var(--background);max-width:100%;height:100%;font-size:16px;overflow:hidden}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background-color:var(--background);color:var(--foreground);background:radial-gradient(circle at 20% -10%, #ffffff0a, transparent 30rem), radial-gradient(circle at 88% 8%, #ffffff08, transparent 28rem), var(--background);width:100%;min-width:320px;max-width:100%;height:100%;font-family:var(--font-sans);font-feature-settings:"cv02", "cv03", "cv04", "cv11";font-variant-numeric:tabular-nums;letter-spacing:0;text-rendering:geometricprecision;margin:0;overflow:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading)}body:before{z-index:0;pointer-events:none;content:"";opacity:.22;background-image:linear-gradient(#e4e8ec08 1px,#0000 1px),linear-gradient(90deg,#e4e8ec06 1px,#0000 1px),radial-gradient(circle at 25% 15%,#ffffff0d,#0000 18rem);background-size:84px 84px,84px 84px,auto;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}#anvia-ui{isolation:isolate;z-index:1;width:100%;max-width:100%;height:100dvh;position:relative;overflow:hidden}::selection{background:#ffffff3d}.shell-loading{background:linear-gradient(#ffffff0e 1px, transparent 1px), linear-gradient(90deg, #ffffff0e 1px, transparent 1px), var(--background);min-height:100vh;color:var(--foreground);font-family:var(--font-sans);background-size:84px 84px,84px 84px,auto;place-items:center;display:grid}.shell-loading>div{justify-items:center;gap:.75rem;display:grid}.shell-loading .eyebrow{color:var(--muted-foreground);letter-spacing:.2em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:700}.shell-loading h1{letter-spacing:0;margin:0;font-size:1.125rem;font-weight:600}.anvia-wordmark{font-family:var(--font-heading);letter-spacing:0}:focus-visible{outline:2px solid var(--ring);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb{background-color:color-mix(in oklch, var(--muted-foreground) 30%, transparent)}}::-webkit-scrollbar-thumb{border-radius:.5rem}::-webkit-scrollbar-thumb:hover{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){::-webkit-scrollbar-thumb:hover{background-color:color-mix(in oklch, var(--muted-foreground) 52%, transparent)}}.xterm .xterm-viewport{scrollbar-width:none}.xterm .xterm-viewport::-webkit-scrollbar{width:0;height:0}.pipeline-flow .react-flow__edge.pipeline-flow-edge .react-flow__edge-path{stroke:var(--muted-foreground);stroke-width:1.6px;opacity:.78}.pipeline-flow .react-flow__edges marker path{fill:var(--muted-foreground);stroke:var(--muted-foreground)}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.right-0{right:calc(var(--spacing) * 0)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.col-span-4{grid-column:span 4/span 4}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.my-4{margin-block:calc(var(--spacing) * 4)}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.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}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.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}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.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}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.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}.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}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.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}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.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}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.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}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.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}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows);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}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.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}.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}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.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}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.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}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.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}.prose{--tw-prose-body:oklch(37.3% .034 259.733);--tw-prose-headings:oklch(21% .034 264.665);--tw-prose-lead:oklch(44.6% .03 256.802);--tw-prose-links:oklch(21% .034 264.665);--tw-prose-bold:oklch(21% .034 264.665);--tw-prose-counters:oklch(55.1% .027 264.364);--tw-prose-bullets:oklch(87.2% .01 258.338);--tw-prose-hr:oklch(92.8% .006 264.531);--tw-prose-quotes:oklch(21% .034 264.665);--tw-prose-quote-borders:oklch(92.8% .006 264.531);--tw-prose-captions:oklch(55.1% .027 264.364);--tw-prose-kbd:oklch(21% .034 264.665);--tw-prose-kbd-shadows:oklab(21% -.00316127 -.0338527/.1);--tw-prose-code:oklch(21% .034 264.665);--tw-prose-pre-code:oklch(92.8% .006 264.531);--tw-prose-pre-bg:oklch(27.8% .033 256.848);--tw-prose-th-borders:oklch(87.2% .01 258.338);--tw-prose-td-borders:oklch(92.8% .006 264.531);--tw-prose-invert-body:oklch(87.2% .01 258.338);--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:oklch(70.7% .022 261.325);--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:oklch(70.7% .022 261.325);--tw-prose-invert-bullets:oklch(44.6% .03 256.802);--tw-prose-invert-hr:oklch(37.3% .034 259.733);--tw-prose-invert-quotes:oklch(96.7% .003 264.542);--tw-prose-invert-quote-borders:oklch(37.3% .034 259.733);--tw-prose-invert-captions:oklch(70.7% .022 261.325);--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:#ffffff1a;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:oklch(87.2% .01 258.338);--tw-prose-invert-pre-bg:#00000080;--tw-prose-invert-th-borders:oklch(44.6% .03 256.802);--tw-prose-invert-td-borders:oklch(37.3% .034 259.733);font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.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}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-sm{font-size:.875rem;line-height:1.71429}.prose-sm :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.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}.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}.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}.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}.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}.prose-sm :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.42857em;margin-bottom:.571429em;line-height:1.42857}.prose-sm :where(img):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.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}.prose-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em}.prose-sm :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-sm :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.888889em}.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}.prose-sm :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)),.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}.prose-sm :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;margin-bottom:.285714em}.prose-sm :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.428571em}.prose-sm :where(.prose-sm>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.571429em;margin-bottom:.571429em}.prose-sm :where(.prose-sm>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(.prose-sm>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.14286em}.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}.prose-sm :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em;margin-bottom:1.14286em}.prose-sm :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.14286em}.prose-sm :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.285714em;padding-inline-start:1.57143em}.prose-sm :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.85714em;margin-bottom:2.85714em}.prose-sm :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-sm :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.857143em;line-height:1.5}.prose-sm :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:1em;padding-bottom:.666667em;padding-inline-start:1em}.prose-sm :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.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}.prose-sm :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-sm :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-sm :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.71429em;margin-bottom:1.71429em}.prose-sm :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-sm :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.666667em;font-size:.857143em;line-height:1.33333}.prose-sm :where(.prose-sm>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-sm :where(.prose-sm>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-auto{margin-top:auto}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.\!h-0{height:calc(var(--spacing) * 0)!important}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-15{height:calc(var(--spacing) * 15)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-\[100dvh\]{height:100dvh}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[45vh\]{max-height:45vh}.max-h-full{max-height:100%}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-5{min-height:calc(var(--spacing) * 5)}.min-h-6{min-height:calc(var(--spacing) * 6)}.min-h-7{min-height:calc(var(--spacing) * 7)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-13{min-height:calc(var(--spacing) * 13)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-20{min-height:calc(var(--spacing) * 20)}.min-h-24{min-height:calc(var(--spacing) * 24)}.min-h-40{min-height:calc(var(--spacing) * 40)}.min-h-44{min-height:calc(var(--spacing) * 44)}.min-h-80{min-height:calc(var(--spacing) * 80)}.min-h-96{min-height:calc(var(--spacing) * 96)}.min-h-\[74px\]{min-height:74px}.min-h-full{min-height:100%}.\!w-0{width:calc(var(--spacing) * 0)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\/5{width:80%}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-40{width:calc(var(--spacing) * 40)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-64{width:calc(var(--spacing) * 64)}.w-\[210px\]{width:210px}.w-\[min\(420px\,calc\(100vw-32px\)\)\]{width:min(420px,100vw - 32px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-44{max-width:calc(var(--spacing) * 44)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-205{max-width:calc(var(--spacing) * 205)}.max-w-235{max-width:calc(var(--spacing) * 235)}.max-w-\[42vw\]{max-width:42vw}.max-w-\[62ch\]{max-width:62ch}.max-w-\[72ch\]{max-width:72ch}.max-w-\[min\(64ch\,82\%\)\]{max-width:min(64ch,82%)}.max-w-\[min\(82ch\,100\%\)\]{max-width:min(82ch,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-6{min-width:calc(var(--spacing) * 6)}.min-w-7{min-width:calc(var(--spacing) * 7)}.min-w-225{min-width:calc(var(--spacing) * 225)}.min-w-280{min-width:calc(var(--spacing) * 280)}.min-w-\[8rem\]{min-width:8rem}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.shrink-0{flex-shrink:0}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize-none{resize:none}.resize-y{resize:vertical}.list-none{list-style-type:none}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[16px_auto\]{grid-template-columns:16px auto}.grid-cols-\[20px_minmax\(0\,1fr\)\]{grid-template-columns:20px minmax(0,1fr)}.grid-cols-\[28px_minmax\(0\,1fr\)\]{grid-template-columns:28px minmax(0,1fr)}.grid-cols-\[82px_minmax\(0\,1fr\)\]{grid-template-columns:82px minmax(0,1fr)}.grid-cols-\[150px_minmax\(0\,1fr\)\]{grid-template-columns:150px minmax(0,1fr)}.grid-cols-\[320px_minmax\(0\,1fr\)\]{grid-template-columns:320px minmax(0,1fr)}.grid-cols-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-columns:auto minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_36px\]{grid-template-columns:minmax(0,1fr) 36px}.grid-cols-\[minmax\(0\,1fr\)_96px_96px\]{grid-template-columns:minmax(0,1fr) 96px 96px}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,460px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,460px)}.grid-cols-\[minmax\(0\,2fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.grid-cols-\[minmax\(92px\,max-content\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(92px,max-content) minmax(0,1fr)}.grid-cols-\[minmax\(110px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(110px,.75fr) minmax(0,1fr)}.grid-cols-\[minmax\(220px\,1\.3fr\)_150px_120px_120px_120px_120px_110px_90px\]{grid-template-columns:minmax(220px,1.3fr) 150px 120px 120px 120px 120px 110px 90px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px}.grid-cols-\[minmax\(220px\,1\.3fr\)_180px_120px_120px_72px\]{grid-template-columns:minmax(220px,1.3fr) 180px 120px 120px 72px}.grid-cols-\[minmax\(260px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(260px,.75fr) minmax(0,1fr)}.grid-cols-\[minmax\(300px\,0\.75fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.75fr) minmax(0,1fr)}.grid-cols-\[repeat\(auto-fit\,minmax\(150px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.grid-rows-\[52px_minmax\(0\,1fr\)\]{grid-template-rows:52px minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.grid-rows-\[auto_minmax\(0\,1fr\)_auto\]{grid-template-rows:auto minmax(0,1fr) auto}.grid-rows-\[minmax\(0\,1fr\)\]{grid-template-rows:minmax(0,1fr)}.grid-rows-\[minmax\(0\,1fr\)_auto\]{grid-template-rows:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.place-items-end{place-items:end}.content-between{align-content:space-between}.content-start{align-content:flex-start}.content-stretch{align-content:stretch}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.justify-items-end{justify-items:end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.self-center{align-self:center}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.justify-self-start{justify-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.\!border-0{border-style:var(--tw-border-style)!important;border-width:0!important}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/\[0\.06\]{border-color:#0000000f}@supports (color:color-mix(in lab, red, red)){.border-black\/\[0\.06\]{border-color:color-mix(in oklab, var(--color-black) 6%, transparent)}}.border-border,.border-border\/60{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/60{border-color:color-mix(in oklab, var(--border) 60%, transparent)}}.border-border\/65{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/65{border-color:color-mix(in oklab, var(--border) 65%, transparent)}}.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/70{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/80{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.border-border\/90{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.border-border\/90{border-color:color-mix(in oklab, var(--border) 90%, transparent)}}.border-destructive,.border-destructive\/30{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/30{border-color:color-mix(in oklab, var(--destructive) 30%, transparent)}}.border-destructive\/40{border-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.border-destructive\/40{border-color:color-mix(in oklab, var(--destructive) 40%, transparent)}}.border-foreground,.border-foreground\/45{border-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.border-foreground\/45{border-color:color-mix(in oklab, var(--foreground) 45%, transparent)}}.border-input{border-color:var(--input)}.border-muted-foreground\/70{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.border-muted-foreground\/70{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.\!bg-transparent{background-color:#0000!important}.bg-background,.bg-background\/25{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/25{background-color:color-mix(in oklab, var(--background) 25%, transparent)}}.bg-background\/35{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/35{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.bg-background\/45{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/45{background-color:color-mix(in oklab, var(--background) 45%, transparent)}}.bg-background\/50{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/50{background-color:color-mix(in oklab, var(--background) 50%, transparent)}}.bg-background\/55{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/55{background-color:color-mix(in oklab, var(--background) 55%, transparent)}}.bg-background\/65{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/65{background-color:color-mix(in oklab, var(--background) 65%, transparent)}}.bg-background\/70{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/70{background-color:color-mix(in oklab, var(--background) 70%, transparent)}}.bg-background\/80{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/80{background-color:color-mix(in oklab, var(--background) 80%, transparent)}}.bg-background\/88{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/88{background-color:color-mix(in oklab, var(--background) 88%, transparent)}}.bg-black\/\[0\.03\]{background-color:#00000008}@supports (color:color-mix(in lab, red, red)){.bg-black\/\[0\.03\]{background-color:color-mix(in oklab, var(--color-black) 3%, transparent)}}.bg-border,.bg-border\/80{background-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.bg-border\/80{background-color:color-mix(in oklab, var(--border) 80%, transparent)}}.bg-card,.bg-card\/25{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/25{background-color:color-mix(in oklab, var(--card) 25%, transparent)}}.bg-card\/30{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/30{background-color:color-mix(in oklab, var(--card) 30%, transparent)}}.bg-card\/35{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/35{background-color:color-mix(in oklab, var(--card) 35%, transparent)}}.bg-card\/45{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/45{background-color:color-mix(in oklab, var(--card) 45%, transparent)}}.bg-card\/55{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/55{background-color:color-mix(in oklab, var(--card) 55%, transparent)}}.bg-card\/60{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/60{background-color:color-mix(in oklab, var(--card) 60%, transparent)}}.bg-card\/70{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/70{background-color:color-mix(in oklab, var(--card) 70%, transparent)}}.bg-card\/80{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/80{background-color:color-mix(in oklab, var(--card) 80%, transparent)}}.bg-card\/85{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/85{background-color:color-mix(in oklab, var(--card) 85%, transparent)}}.bg-card\/90{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/90{background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.bg-card\/95{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.bg-card\/95{background-color:color-mix(in oklab, var(--card) 95%, transparent)}}.bg-chart-4{background-color:var(--chart-4)}.bg-destructive,.bg-destructive\/10{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/10{background-color:color-mix(in oklab, var(--destructive) 10%, transparent)}}.bg-destructive\/15{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.bg-destructive\/15{background-color:color-mix(in oklab, var(--destructive) 15%, transparent)}}.bg-foreground,.bg-foreground\/15{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.bg-foreground\/15{background-color:color-mix(in oklab, var(--foreground) 15%, transparent)}}.bg-muted{background-color:var(--muted)}.bg-muted-foreground,.bg-muted-foreground\/15{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/15{background-color:color-mix(in oklab, var(--muted-foreground) 15%, transparent)}}.bg-muted-foreground\/35{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/35{background-color:color-mix(in oklab, var(--muted-foreground) 35%, transparent)}}.bg-muted-foreground\/40{background-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}}.bg-muted\/10{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/10{background-color:color-mix(in oklab, var(--muted) 10%, transparent)}}.bg-muted\/20{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/20{background-color:color-mix(in oklab, var(--muted) 20%, transparent)}}.bg-muted\/35{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/35{background-color:color-mix(in oklab, var(--muted) 35%, transparent)}}.bg-muted\/45{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/45{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.bg-muted\/55{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/55{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.bg-muted\/60{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/60{background-color:color-mix(in oklab, var(--muted) 60%, transparent)}}.bg-muted\/70{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.bg-muted\/70{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.bg-popover,.bg-popover\/98{background-color:var(--popover)}@supports (color:color-mix(in lab, red, red)){.bg-popover\/98{background-color:color-mix(in oklab, var(--popover) 98%, transparent)}}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-accent{background-color:var(--sidebar-accent)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-card{--tw-gradient-from:var(--card);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-card\/95{--tw-gradient-via:var(--card)}@supports (color:color-mix(in lab, red, red)){.via-card\/95{--tw-gradient-via:color-mix(in oklab, var(--card) 95%, transparent)}}.via-card\/95{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-card\/0{--tw-gradient-to:var(--card)}@supports (color:color-mix(in lab, red, red)){.to-card\/0{--tw-gradient-to:color-mix(in oklab, var(--card) 0%, transparent)}}.to-card\/0{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:calc(var(--spacing) * 1)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pl-0{padding-left:calc(var(--spacing) * 0)}.pl-8{padding-left:calc(var(--spacing) * 8)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.01em\]{--tw-tracking:-.01em;letter-spacing:-.01em}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.text-background{color:var(--background)}.text-black{color:var(--color-black)}.text-card-foreground{color:var(--card-foreground)}.text-chart-4{color:var(--chart-4)}.text-current{color:currentColor}.text-destructive{color:var(--destructive)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-destructive\/85{color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.text-destructive\/85{color:color-mix(in oklab, var(--destructive) 85%, transparent)}}.text-foreground,.text-foreground\/90{color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.text-foreground\/90{color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.text-inherit{color:inherit}.text-muted-foreground,.text-muted-foreground\/80{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/80{color:color-mix(in oklab, var(--muted-foreground) 80%, transparent)}}.text-muted-foreground\/85{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.text-muted-foreground\/85{color:color-mix(in oklab, var(--muted-foreground) 85%, transparent)}}.text-popover-foreground{color:var(--popover-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-accent-foreground{color:var(--sidebar-accent-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/62{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/62{color:color-mix(in oklab, var(--sidebar-foreground) 62%, transparent)}}.text-sidebar-foreground\/72{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab, red, red)){.text-sidebar-foreground\/72{color:color-mix(in oklab, var(--sidebar-foreground) 72%, transparent)}}.text-yellow-500{color:var(--color-yellow-500)}.capitalize{text-transform:capitalize}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.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,)}.\!opacity-0{opacity:0!important}.opacity-35{opacity:.35}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:var(--shadow-2xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_hsl\(0_0\%_100\%_\/_0\.08\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,#ffffff14);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[inset_0_1px_0_hsl\(var\(--foreground\)\/0\.06\)\]{--tw-shadow:inset 0 1px 0 var(--tw-shadow-color,hsl(var(--foreground)/.06));box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.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)}.shadow-sm{--tw-shadow:var(--shadow-sm);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:var(--shadow-xl);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.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)}.\[box-shadow\:none\]{box-shadow:none}.shadow-black\/20{--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.shadow-black\/20{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/40{--tw-shadow-color:#0006}@supports (color:color-mix(in lab, red, red)){.shadow-black\/40{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 40%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/45{--tw-shadow-color:#00000073}@supports (color:color-mix(in lab, red, red)){.shadow-black\/45{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 45%, transparent) var(--tw-shadow-alpha), transparent)}}.shadow-black\/\[0\.04\]{--tw-shadow-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.shadow-black\/\[0\.04\]{--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 4%, transparent) var(--tw-shadow-alpha), transparent)}}.backdrop-blur{--tw-backdrop-blur:blur(8px);-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,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-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,)}.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(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[animation-delay\:150ms\]{animation-delay:.15s}.\[animation-delay\:300ms\]{animation-delay:.3s}.\[scrollbar-gutter\:stable\]{scrollbar-gutter:stable}.group-last\/row\:border-b-0:is(:where(.group\/row):last-child *){border-bottom-style:var(--tw-border-style);border-bottom-width:0}.group-open\:hidden:is(:where(.group):is([open],:popover-open,:open) *){display:none}.group-open\:inline:is(:where(.group):is([open],:popover-open,:open) *){display:inline}.group-open\:text-foreground:is(:where(.group):is([open],:popover-open,:open) *){color:var(--foreground)}.group-focus-within\:grid:is(:where(.group):focus-within *){display:grid}.group-focus-within\:opacity-0:is(:where(.group):focus-within *){opacity:0}@media (hover:hover){.group-hover\:grid:is(:where(.group):hover *){display:grid}.group-hover\:text-foreground:is(:where(.group):hover *){color:var(--foreground)}.group-hover\:opacity-0:is(:where(.group):hover *){opacity:0}}.marker\:hidden ::marker{display:none}.marker\:hidden::marker{display:none}.marker\:hidden ::-webkit-details-marker{display:none}.marker\:hidden::-webkit-details-marker{display:none}.placeholder\:text-muted-foreground\/65::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/65::placeholder{color:color-mix(in oklab, var(--muted-foreground) 65%, transparent)}}.placeholder\:text-muted-foreground\/70::placeholder{color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.placeholder\:text-muted-foreground\/70::placeholder{color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.first\:pl-5:first-child{padding-left:calc(var(--spacing) * 5)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pr-5:last-child{padding-right:calc(var(--spacing) * 5)}.focus-within\:bg-sidebar-accent\/80:focus-within{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab, red, red)){.focus-within\:bg-sidebar-accent\/80:focus-within{background-color:color-mix(in oklab, var(--sidebar-accent) 80%, transparent)}}@media (hover:hover){.hover\:border-border:hover,.hover\:border-border\/70:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/70:hover{border-color:color-mix(in oklab, var(--border) 70%, transparent)}}.hover\:border-border\/80:hover{border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.hover\:border-border\/80:hover{border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.hover\:border-foreground:hover{border-color:var(--foreground)}.hover\:border-muted-foreground\/45:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/45:hover{border-color:color-mix(in oklab, var(--muted-foreground) 45%, transparent)}}.hover\:border-muted-foreground\/60:hover{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:border-muted-foreground\/60:hover{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.hover\:border-white:hover{border-color:var(--color-white)}.hover\:bg-accent:hover,.hover\:bg-accent\/45:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/45:hover{background-color:color-mix(in oklab, var(--accent) 45%, transparent)}}.hover\:bg-accent\/70:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/70:hover{background-color:color-mix(in oklab, var(--accent) 70%, transparent)}}.hover\:bg-accent\/80:hover{background-color:var(--accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-accent\/80:hover{background-color:color-mix(in oklab, var(--accent) 80%, transparent)}}.hover\:bg-background\/35:hover{background-color:var(--background)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-background\/35:hover{background-color:color-mix(in oklab, var(--background) 35%, transparent)}}.hover\:bg-black\/\[0\.04\]:hover{background-color:#0000000a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-black\/\[0\.04\]:hover{background-color:color-mix(in oklab, var(--color-black) 4%, transparent)}}.hover\:bg-card\/60:hover{background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-card\/60:hover{background-color:color-mix(in oklab, var(--card) 60%, transparent)}}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab, var(--destructive) 90%, transparent)}}.hover\:bg-foreground\/90:hover{background-color:var(--foreground)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-foreground\/90:hover{background-color:color-mix(in oklab, var(--foreground) 90%, transparent)}}.hover\:bg-muted\/45:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/45:hover{background-color:color-mix(in oklab, var(--muted) 45%, transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab, var(--muted) 50%, transparent)}}.hover\:bg-muted\/55:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/55:hover{background-color:color-mix(in oklab, var(--muted) 55%, transparent)}}.hover\:bg-muted\/70:hover{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-muted\/70:hover{background-color:color-mix(in oklab, var(--muted) 70%, transparent)}}.hover\:bg-sidebar-accent:hover,.hover\:bg-sidebar-accent\/80:hover{background-color:var(--sidebar-accent)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-sidebar-accent\/80:hover{background-color:color-mix(in oklab, var(--sidebar-accent) 80%, transparent)}}.hover\:bg-transparent:hover{background-color:#0000}.hover\:bg-white\/90:hover{background-color:#ffffffe6}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/90:hover{background-color:color-mix(in oklab, var(--color-white) 90%, transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-background:hover{color:var(--background)}.hover\:text-black:hover{color:var(--color-black)}.hover\:text-destructive:hover{color:var(--destructive)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:text-inherit:hover{color:inherit}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:text-sidebar-foreground:hover{color:var(--sidebar-foreground)}.hover\:opacity-100:hover{opacity:1}}.focus\:border-muted-foreground\/60:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/60:focus{border-color:color-mix(in oklab, var(--muted-foreground) 60%, transparent)}}.focus\:border-muted-foreground\/70:focus{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:border-muted-foreground\/70:focus{border-color:color-mix(in oklab, var(--muted-foreground) 70%, transparent)}}.focus\:border-transparent:focus{border-color:#0000}.focus\:ring-0:focus{--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)}.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)}.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:var(--muted-foreground)}@supports (color:color-mix(in lab, red, red)){.focus\:ring-muted-foreground\/20:focus{--tw-ring-color:color-mix(in oklab, var(--muted-foreground) 20%, transparent)}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.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)}.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)}.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab, red, red)){.focus-visible\:ring-ring\/35:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 35%, transparent)}}.focus-visible\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:translate-y-px:active{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.active\:bg-white\/85:active{background-color:#ffffffd9}@supports (color:color-mix(in lab, red, red)){.active\:bg-white\/85:active{background-color:color-mix(in oklab, var(--color-white) 85%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:border-border:disabled{border-color:var(--border)}.disabled\:bg-muted:disabled{background-color:var(--muted)}.disabled\:text-muted-foreground:disabled{color:var(--muted-foreground)}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.data-\[highlighted\]\:bg-muted\/65[data-highlighted]{background-color:color-mix(in oklab, var(--muted) 65%, transparent)}}.data-\[highlighted\]\:text-foreground[data-highlighted]{color:var(--foreground)}@media not all and (width>=80rem){.max-xl\:hidden{display:none}.max-xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}}@media not all and (width>=64rem){.max-lg\:hidden{display:none}.max-lg\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-lg\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-lg\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.max-lg\:pr-0{padding-right:calc(var(--spacing) * 0)}.max-lg\:pb-5{padding-bottom:calc(var(--spacing) * 5)}}@media not all and (width>=48rem){.max-md\:grid{display:grid}.max-md\:max-h-80{max-height:calc(var(--spacing) * 80)}.max-md\:w-full{width:100%}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:border-r-0{border-right-style:var(--tw-border-style);border-right-width:0}.max-md\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}}@media (width>=40rem){.sm\:max-w-72{max-width:calc(var(--spacing) * 72)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:items-start{align-items:flex-start}}@media (width>=48rem){.md\:block{display:block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-\[228px_minmax\(0\,1fr\)\]{grid-template-columns:228px minmax(0,1fr)}.lg\:grid-cols-\[340px_minmax\(0\,1fr\)\]{grid-template-columns:340px minmax(0,1fr)}}@media (width>=80rem){.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-\[280px_minmax\(320px\,0\.8fr\)_minmax\(0\,1\.2fr\)\]{grid-template-columns:280px minmax(320px,.8fr) minmax(0,1.2fr)}.xl\:grid-cols-\[minmax\(0\,0\.85fr\)_minmax\(0\,1\.15fr\)\]{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.xl\:grid-cols-\[minmax\(0\,1\.15fr\)_minmax\(0\,0\.85fr\)\]{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(320px\,0\.65fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr)}.xl\:grid-cols-\[minmax\(280px\,0\.72fr\)_minmax\(0\,1fr\)_minmax\(280px\,0\.7fr\)\]{grid-template-columns:minmax(280px,.72fr) minmax(0,1fr) minmax(280px,.7fr)}.xl\:grid-cols-\[minmax\(300px\,0\.7fr\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(300px,.7fr) minmax(0,1fr)}}.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:#ffffff0f}@supports (color:color-mix(in lab, red, red)){.dark\:border-white\/\[0\.06\]:is(.dark *){border-color:color-mix(in oklab, var(--color-white) 6%, transparent)}}.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:#ffffff08}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.03\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 3%, transparent)}}.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:#ffffff14}@supports (color:color-mix(in lab, red, red)){.dark\:bg-white\/\[0\.08\]:is(.dark *){background-color:color-mix(in oklab, var(--color-white) 8%, transparent)}}.dark\:text-destructive:is(.dark *){color:var(--destructive)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-zinc-100:is(.dark *){color:var(--color-zinc-100)}.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:#0003}@supports (color:color-mix(in lab, red, red)){.dark\:shadow-black\/20:is(.dark *){--tw-shadow-color:color-mix(in oklab, color-mix(in oklab, var(--color-black) 20%, transparent) var(--tw-shadow-alpha), transparent)}}.dark\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}@media (hover:hover){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:#ffffff0a}@supports (color:color-mix(in lab, red, red)){.dark\:hover\:bg-white\/\[0\.04\]:is(.dark *):hover{background-color:color-mix(in oklab, var(--color-white) 4%, transparent)}}}.prose-headings\:font-semibold :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-headings\:text-current :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-headings\:text-current:is(.dark *) :where(h1,h2,h3,h4,h5,h6,th):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-p\:leading-7 :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.prose-p\:text-current :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-p\:text-current:is(.dark *) :where(p):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-a\:text-current :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-a\:decoration-muted-foreground :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);-webkit-text-decoration-color:var(--muted-foreground);text-decoration-color:var(--muted-foreground)}.prose-a\:underline-offset-2 :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){text-underline-offset:2px}.prose-blockquote\:border-border :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.prose-blockquote\:text-muted-foreground :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--muted-foreground)}.prose-strong\:text-current :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)),.dark\:prose-strong\:text-current:is(.dark *) :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:rounded-lg :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-code\:border :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-code\:border-border\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--muted)}@supports (color:color-mix(in lab, red, red)){.prose-code\:bg-muted\/80 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--muted) 80%, transparent)}}.prose-code\:px-1 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline:calc(var(--spacing) * 1)}.prose-code\:py-0\.5 :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){padding-block:calc(var(--spacing) * .5)}.prose-code\:text-sm :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.prose-code\:font-semibold :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.prose-code\:text-current :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-code\:before\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before,.prose-code\:after\:content-none :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:var(--tw-content);--tw-content:none;content:none}.dark\:prose-code\:text-current:is(.dark *) :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-pre\:overflow-auto :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){overflow:auto}.prose-pre\:rounded-lg :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:var(--radius)}.prose-pre\:border :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:1px}.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:border-border\/80 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:color-mix(in oklab, var(--border) 80%, transparent)}}.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}@supports (color:color-mix(in lab, red, red)){.prose-pre\:bg-card\/90 :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:color-mix(in oklab, var(--card) 90%, transparent)}}.prose-pre\:text-current :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.dark\:prose-pre\:bg-card:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--card)}.dark\:prose-pre\:text-current:is(.dark *) :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:currentColor}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *)) ::-webkit-details-marker{color:var(--muted-foreground)}.prose-li\:marker\:text-muted-foreground :where(li):not(:where([class~=not-prose],[class~=not-prose] *))::-webkit-details-marker{color:var(--muted-foreground)}.prose-table\:m-0 :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){margin:calc(var(--spacing) * 0)}.prose-thead\:border-0 :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-tr\:border-0 :where(tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-style:var(--tw-border-style);border-width:0}.prose-th\:p-0 :where(th):not(:where([class~=not-prose],[class~=not-prose] *)),.prose-td\:p-0 :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:calc(var(--spacing) * 0)}.prose-hr\:border-border :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--border)}.\[\&_\.grid\]\:mt-2 .grid{margin-top:calc(var(--spacing) * 2)}.\[\&_\.grid\]\:border-l .grid{border-left-style:var(--tw-border-style);border-left-width:1px}.\[\&_\.grid\]\:border-border .grid{border-color:var(--border)}.\[\&_\.grid\]\:pl-3 .grid{padding-left:calc(var(--spacing) * 3)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:\!size-3 svg{width:calc(var(--spacing) * 3)!important;height:calc(var(--spacing) * 3)!important}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:h-3 svg{height:calc(var(--spacing) * 3)}.\[\&_svg\]\:h-3\.5 svg{height:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:h-4 svg{height:calc(var(--spacing) * 4)}.\[\&_svg\]\:w-3 svg{width:calc(var(--spacing) * 3)}.\[\&_svg\]\:w-3\.5 svg{width:calc(var(--spacing) * 3.5)}.\[\&_svg\]\:w-4 svg{width:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\]\:opacity-100 svg{opacity:1}}:root{--background:#f4f5f6;--foreground:#181f25;--card:#fff;--card-foreground:#181f25;--popover:#fff;--popover-foreground:#181f25;--primary:#2a2e32;--primary-foreground:#fafafa;--secondary:#e9eaec;--secondary-foreground:#212a31;--muted:#e6e7ea;--muted-foreground:#636f79;--accent:#e6e7ea;--accent-foreground:#181f25;--destructive:#c13833;--destructive-foreground:#fafafa;--border:#2a353c1f;--input:#2a353c29;--ring:#5e6d78;--chart-1:#65727b;--chart-2:#869098;--chart-3:#636f79;--chart-4:#242f38;--chart-5:#c13833;--sidebar:#f4f5f6;--sidebar-foreground:#181f25;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#2a353c17;--sidebar-accent-foreground:#181f25;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#1f252e;--shadow-2xs:0 1px 2px 0px #1f252e0d;--shadow-xs:0 1px 3px 0px #1f252e0f;--shadow-sm:0 1px 2px #1f252e14, 0 8px 18px -18px #1f252e42;--shadow:0 1px 2px #1f252e1a, 0 14px 34px -26px #1f252e57;--shadow-md:0 2px 4px #1f252e1f, 0 20px 44px -30px #1f252e6b;--shadow-lg:0 3px 8px #1f252e29, 0 28px 64px -38px #1f252e80;--shadow-xl:0 4px 12px #1f252e33, 0 34px 86px -44px #1f252e8f;--shadow-2xl:0 10px 32px #1f252e47, 0 48px 120px -56px #1f252ead;--tracking-normal:0em;--spacing:.25rem}.dark{--background:#131314;--foreground:#e8ece4;--card:#121212;--card-foreground:#e8ece4;--popover:#121212;--popover-foreground:#e8ece4;--primary:#e0e0e0;--primary-foreground:#0a0a0a;--secondary:#1f2123;--secondary-foreground:#e1e6db;--muted:#242629;--muted-foreground:#9fa696;--accent:#ffffff14;--accent-foreground:#ebebeb;--destructive:#db605c;--destructive-foreground:#101419;--border:#e1e7da14;--input:#e1e7da1f;--ring:#949494;--chart-1:#dbdbdb;--chart-2:#a8a8a8;--chart-3:#8a8a8a;--chart-4:#6b6b6b;--chart-5:#db605c;--sidebar:#131314;--sidebar-foreground:#e8ece4;--sidebar-primary:var(--primary);--sidebar-primary-foreground:var(--primary-foreground);--sidebar-accent:#ffffff14;--sidebar-accent-foreground:#e8ece4;--sidebar-border:var(--border);--sidebar-ring:var(--ring);--font-sans:Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-heading:Figtree, Inter, -apple-system, BlinkMacSystemFont, ui-sans-serif, sans-serif, system-ui;--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--radius:.5rem;--shadow-x:0;--shadow-y:1px;--shadow-blur:3px;--shadow-spread:0px;--shadow-opacity:.1;--shadow-color:#05070a;--shadow-2xs:0 1px 2px 0px #05070a40;--shadow-xs:0 1px 3px 0px #05070a47;--shadow-sm:0 1px 2px #05070a5c, 0 10px 24px -20px #05070ab3;--shadow:0 1px 2px #05070a6b, 0 20px 54px -34px #05070adb;--shadow-md:0 2px 6px #05070a7a, 0 28px 70px -42px #05070ae6;--shadow-lg:0 4px 10px #05070a8a, 0 36px 90px -48px #05070af0;--shadow-xl:0 8px 18px #05070a9e, 0 44px 110px -54px #05070afa;--shadow-2xl:0 14px 44px #05070ab8, 0 60px 140px -64px #05070a}@property --tw-border-spacing-x{syntax:"<length>";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"<length>";inherits:false;initial-value:0}@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-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@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:"<percentage>";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:"<percentage>";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:"<length>";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-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}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}
|