@shumai-one/shumai 0.3.5 → 0.3.6
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/bin/{chunk-th07gms7.js → chunk-0jesq6sm.js} +1 -1
- package/bin/{chunk-fnkrzqrn.js → chunk-0jr6q4j4.js} +2 -2
- package/bin/{chunk-nh4tzzn8.js → chunk-0sajh8fw.js} +2 -2
- package/bin/{chunk-xt9n0y9a.js → chunk-1b7shyfp.js} +1 -1
- package/bin/{chunk-bv642x5z.js → chunk-1f8rr3ef.js} +2 -2
- package/bin/{chunk-hbrndqpj.js → chunk-1fq10abj.js} +2 -2
- package/bin/chunk-1hn9v6hv.js +2 -0
- package/bin/{chunk-97y52q3a.js → chunk-20wtz3kc.js} +3 -3
- package/bin/chunk-2882s5sp.js +1 -0
- package/bin/{chunk-fcvtv783.js → chunk-29nhtrfv.js} +1 -1
- package/bin/chunk-3egeywt8.js +1 -0
- package/bin/{chunk-29203j0e.js → chunk-3htn4m2d.js} +2 -2
- package/bin/{chunk-g5mpp3nc.js → chunk-47093mwk.js} +1 -1
- package/bin/{chunk-6vn44e4d.js → chunk-4a9sdfyp.js} +2 -2
- package/bin/{chunk-v0cdg3n6.js → chunk-4ajat3xv.js} +57 -57
- package/bin/{chunk-8vc1m0kw.js → chunk-55myfmhy.js} +2 -2
- package/bin/{chunk-8vvr1ez5.js → chunk-5wrakb8p.js} +1 -1
- package/bin/{chunk-afzc5eae.js → chunk-6awkqp09.js} +1 -1
- package/bin/chunk-6bztpk7h.js +1 -0
- package/bin/{chunk-n67rfv86.js → chunk-6edadcpn.js} +2 -2
- package/bin/chunk-74zstxav.js +6 -0
- package/bin/chunk-76hs7g0x.js +2 -0
- package/bin/{chunk-7jkvjm4x.js → chunk-7b60a9sy.js} +2 -2
- package/bin/{chunk-3w9vybrh.js → chunk-7fm1hznx.js} +2 -2
- package/bin/{chunk-jkapr5we.js → chunk-800vdz5n.js} +1 -1
- package/bin/{chunk-4sdrjye2.js → chunk-89kqtj7x.js} +2 -2
- package/bin/chunk-8g0mhzsg.js +2 -0
- package/bin/{chunk-fgda7ncw.js → chunk-8jdgzy22.js} +2 -2
- package/bin/chunk-8js9m1j7.js +1 -0
- package/bin/{chunk-4b8ms2ct.js → chunk-9annjnj2.js} +2 -2
- package/bin/{chunk-g0jy85re.js → chunk-9hsfjqgq.js} +2 -2
- package/bin/{chunk-d4zx3r12.js → chunk-9p5n3m2z.js} +1 -1
- package/bin/{chunk-7mkk8ahk.js → chunk-9tnfhrnh.js} +2 -2
- package/bin/{chunk-fq6emqwq.js → chunk-a5fw02xq.js} +3 -3
- package/bin/chunk-adekdctx.css +1 -0
- package/bin/{chunk-ks8deg42.js → chunk-aeg4kya9.js} +1 -1
- package/bin/{chunk-zj1rz1s9.js → chunk-bq2aq6v8.js} +2 -2
- package/bin/{chunk-7w2tx08e.js → chunk-c9bpf8gp.js} +2 -2
- package/bin/{chunk-f7fevgv2.js → chunk-ce50f746.js} +2 -2
- package/bin/{chunk-3mprq5kb.js → chunk-crdvxq38.js} +2 -2
- package/bin/{chunk-rek85wwv.js → chunk-d2qp8g98.js} +2 -2
- package/bin/{chunk-xnzyt0kq.js → chunk-d8bpqbdw.js} +1 -1
- package/bin/{chunk-wknqst3v.js → chunk-dfzmqx1v.js} +3 -3
- package/bin/{chunk-hk7a2mgn.js → chunk-dmjzrdan.js} +2 -2
- package/bin/chunk-e5s7202g.js +2 -0
- package/bin/{chunk-fw5k0xrc.js → chunk-ef5v7gta.js} +2 -2
- package/bin/{chunk-bg10gwm1.js → chunk-ew4cxkcc.js} +2 -2
- package/bin/{chunk-v4re49f5.js → chunk-ex4qa7gv.js} +1 -1
- package/bin/{chunk-5r55htaw.js → chunk-f2eh802w.js} +1 -1
- package/bin/{chunk-r9s1zs4g.js → chunk-f44d9fpd.js} +2 -2
- package/bin/chunk-f5zg7b38.js +1 -0
- package/bin/chunk-fdm1yc29.js +1 -0
- package/bin/{chunk-c5esphve.js → chunk-fwbrcfaq.js} +2 -2
- package/bin/{chunk-w8vk30ze.js → chunk-fzaw1e34.js} +2 -2
- package/bin/{chunk-xqkwpr7s.js → chunk-g70eyttc.js} +2 -2
- package/bin/{chunk-avvzqqk2.js → chunk-gct52xks.js} +2 -2
- package/bin/{chunk-2jfbxefd.js → chunk-gewh7p42.js} +6 -6
- package/bin/chunk-gg1gwjtn.js +2 -0
- package/bin/chunk-gh64hag9.js +2 -0
- package/bin/{chunk-qm9w9fcv.js → chunk-ghz19a7t.js} +2 -2
- package/bin/{chunk-kn4tnhbw.js → chunk-gra3617w.js} +2 -2
- package/bin/{chunk-weean2ja.js → chunk-gx5rjm9m.js} +1 -1
- package/bin/chunk-h0p8yew4.js +1 -0
- package/bin/chunk-hgngnc1k.js +1 -0
- package/bin/chunk-hqbzjzsm.js +2 -0
- package/bin/{chunk-d1zpcags.js → chunk-j1awxx51.js} +2 -2
- package/bin/{chunk-52qe6z8w.js → chunk-js0genbf.js} +1 -1
- package/bin/chunk-jt4yh37q.js +62 -0
- package/bin/{chunk-8fsrs7mh.js → chunk-jtd7rydv.js} +1 -1
- package/bin/chunk-k0xpskyq.js +1 -0
- package/bin/{chunk-q0znwxfe.js → chunk-kaxwma6y.js} +1 -1
- package/bin/{chunk-p3k6nzhe.js → chunk-kk0gx8eg.js} +2 -2
- package/bin/{chunk-gd1x3rgn.js → chunk-mgbqjbfc.js} +1 -1
- package/bin/{chunk-sx1neqgr.js → chunk-mhj0pqq3.js} +2 -2
- package/bin/{chunk-4rz2105a.js → chunk-mmrtjcst.js} +1 -1
- package/bin/{chunk-8hq6sn31.js → chunk-mxee09jk.js} +2 -2
- package/bin/{chunk-f70xdh07.js → chunk-n198tewr.js} +2 -2
- package/bin/{chunk-6j6dejtd.js → chunk-n9cjmkky.js} +1 -1
- package/bin/{chunk-17bewdr0.js → chunk-nh31ma8d.js} +2 -2
- package/bin/{chunk-t58kqafx.js → chunk-nh8azwsx.js} +2 -2
- package/bin/chunk-nhc72y4x.js +2 -0
- package/bin/{chunk-7zdmpbt6.js → chunk-pm64et9d.js} +1 -1
- package/bin/chunk-px6q3jpz.js +1 -0
- package/bin/{chunk-jf5ytqxd.js → chunk-q7xfrtnj.js} +1 -1
- package/bin/{chunk-0bbhm7dp.js → chunk-rmm6y799.js} +2 -2
- package/bin/{chunk-b93djch5.js → chunk-snexx7ks.js} +1 -1
- package/bin/chunk-sx3by19j.js +1 -0
- package/bin/{chunk-p33nq4pp.js → chunk-sx7kparv.js} +2 -2
- package/bin/{chunk-vzb2b89p.js → chunk-t5561vz5.js} +1 -1
- package/bin/chunk-thj4cpev.js +2 -0
- package/bin/{chunk-8na8a41a.js → chunk-tqxmj05h.js} +2 -2
- package/bin/{chunk-54hmgj96.js → chunk-vgr9db5g.js} +2 -2
- package/bin/{chunk-gwxzjc0m.js → chunk-vqgz25av.js} +1 -1
- package/bin/{chunk-s0k2r6ym.js → chunk-vw1rhgjs.js} +2 -2
- package/bin/chunk-vz75bqvx.js +2 -0
- package/bin/{chunk-8skgcmxm.js → chunk-w16jgdfx.js} +1 -1
- package/bin/{chunk-x2z5zz01.js → chunk-w4ycztv5.js} +1 -1
- package/bin/{chunk-8mzg29m4.js → chunk-w98wvk17.js} +2 -2
- package/bin/chunk-wa8k9fwx.js +1 -0
- package/bin/{chunk-wg5tjyj9.js → chunk-y0yrmcf3.js} +2 -2
- package/bin/{chunk-3ydjrkbd.js → chunk-y1t47c7f.js} +1 -1
- package/bin/{chunk-c2a5x1pk.js → chunk-y8vw7zv1.js} +1 -1
- package/bin/{chunk-s0g0bc6t.js → chunk-ym47952x.js} +2 -2
- package/bin/{chunk-43mhpb0k.js → chunk-yzra1x8f.js} +2 -2
- package/bin/{chunk-arxd4qb9.js → chunk-z0tbq08w.js} +1 -1
- package/bin/{chunk-vpq224tm.js → chunk-z0zevgb6.js} +1 -1
- package/bin/{chunk-5yxngq5n.js → chunk-z2ef8zpz.js} +1 -1
- package/bin/chunk-z3p3qz9d.js +3 -0
- package/bin/chunk-zv85aqwb.css +1 -0
- package/bin/shumai-app.html +1 -1
- package/bin/shumai-app.js +484 -343
- package/package.json +7 -7
- package/prisma/migrations/20260810025327_add_mcp_servers/migration.sql +71 -0
- package/prisma/migrations/20260810074554_mcp_server_cleanup/migration.sql +12 -0
- package/prisma/migrations/20260810124707_add_mcp_server_instructions/migration.sql +2 -0
- package/prisma/schema.prisma +69 -0
- package/bin/chunk-1fqpgz02.js +0 -2
- package/bin/chunk-21hvrvzj.js +0 -2
- package/bin/chunk-23mj9p82.js +0 -1
- package/bin/chunk-24mag65w.js +0 -1
- package/bin/chunk-2jv9re91.js +0 -2
- package/bin/chunk-2rmceamt.js +0 -1
- package/bin/chunk-6kv3jyfc.js +0 -2
- package/bin/chunk-8ttfy5yy.js +0 -1
- package/bin/chunk-95qc4bkh.js +0 -2
- package/bin/chunk-9nd5m7hy.js +0 -1
- package/bin/chunk-ampyjbj4.js +0 -1
- package/bin/chunk-bkcf4hw5.js +0 -1
- package/bin/chunk-cbjfw47x.js +0 -62
- package/bin/chunk-h2tztyxs.js +0 -1
- package/bin/chunk-htrzgs2a.css +0 -1
- package/bin/chunk-jqyprvqd.js +0 -1
- package/bin/chunk-jyeyp8p3.js +0 -1
- package/bin/chunk-kwr4m6vh.js +0 -1
- package/bin/chunk-n62kyrh1.js +0 -1
- package/bin/chunk-ntxwp6aa.js +0 -3
- package/bin/chunk-qxwfhv63.js +0 -2
- package/bin/chunk-x217skr3.js +0 -2
- package/bin/chunk-y6aa5ee0.js +0 -2
- package/bin/{chunk-vvr179pz.js → chunk-hcvpb1hw.js} +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
function k(q,J,H){let Q=J[H];if(typeof Q!=="string")throw Error(`Grammar tool call "${q}" requires argument "${H}" to be a string.`);return Q}function d(q,J,H,Q){if(q.closed){if(Q&&H===q.input)return;throw Error(`grammar tool input for property "${J}" changed after it was closed`)}if(!H.startsWith(q.input))throw Error(`grammar tool input for property "${J}" changed non-monotonically`);let V=H.slice(q.input.length);if(!Q&&V.length===0)return;let Z="";if(!q.started)Z+=`{${JSON.stringify(J)}:"`,q.started=!0;if(Z+=JSON.stringify(V).slice(1,-1),q.input=H,Q)Z+='"}',q.closed=!0;return Z}function P(q){let J=q.parameters;if(J.type!=="object")throw Error("grammar constrained sampling requires an object parameter schema");if(!Array.isArray(J.required)||J.required.length!==1||typeof J.required[0]!=="string")throw Error("grammar constrained sampling requires exactly one required string property");let H=J.required[0];if(!J.properties?.[H])throw Error(`grammar constrained sampling requires a properties entry for ${H}`);if(J.properties[H]?.type!=="string")throw Error(`grammar constrained sampling property ${H} must have type string`);return H}function u(q,J){let H=q.constrainedSampling;if(!H||H.type!=="json_schema")return;if(J)return!0;if(H.strict==="require")throw Error(`Tool "${q.name}" requires JSON-schema constrained sampling, but strict tools are unsupported.`);return}function C(q,J){let H=q.constrainedSampling;if(!H||H.type!=="grammar")return;if(!J)return;let Q=H.variants.openai_lark,V=H.variants.openai_regex,Z=typeof Q==="string"&&Q.trim().length>0,E=typeof V==="string"&&V.trim().length>0;if(!Z&&!E)throw Error(`Tool "${q.name}" cannot use grammar constrained sampling: no supported grammar variant was provided.`);try{return{format:Z?"lark":"regex",definition:Z?Q:V,inputProperty:P(q)}}catch(Y){let j=Y instanceof Error?Y.message:String(Y);throw Error(`Tool "${q.name}" cannot use grammar constrained sampling: ${j}.`)}}function c(q,J){let H=new Map;for(let Q of q??[]){let V=C(Q,J);if(V)H.set(Q.name,V.inputProperty)}return H}function R(q){return q.totalTokens||q.input+q.output+q.cacheRead+q.cacheWrite}function v(q){try{return JSON.stringify(q)??"undefined"}catch{return"[unserializable]"}}function h(q){if(typeof q==="string")return q.length;let J=0;for(let H of q)J+=H.type==="text"?H.text.length:4800;return J}function D(q){return Math.ceil(q.length/4)}function O(q){return Math.ceil(h(q)/4)}function _(q){let J=0;if(q.role==="user")return O(q.content);if(q.role==="toolResult")return O(q.content);for(let H of q.content)if(H.type==="text")J+=H.text.length;else if(H.type==="thinking")J+=H.thinking.length;else J+=H.name.length+v(H.arguments).length;return Math.ceil(J/4)}function M(q){let J=Number.NEGATIVE_INFINITY,H;for(let Q=0;Q<q.length;Q++){let V=q[Q];if(V.role==="assistant"){let Z=V;if(Z.timestamp>=J&&Z.stopReason!=="aborted"&&Z.stopReason!=="error"&&R(Z.usage)>0)H={usage:Z.usage,index:Q}}J=Math.max(J,V.timestamp)}return H}function A(q){let J=M(q);if(J){let Q=R(J.usage),V=0;for(let Z=J.index+1;Z<q.length;Z++)V+=_(q[Z]);return{tokens:Q+V,usageTokens:Q,trailingTokens:V,lastUsageIndex:J.index}}let H=0;for(let Q of q)H+=_(Q);return{tokens:H,usageTokens:0,trailingTokens:H,lastUsageIndex:null}}function N(q){if(!q||q.length===0)return 0;return D(v(q))}function I(q){return Array.isArray(q)}function z(q){if(I(q))return A(q);let J=A(q.messages);if(J.lastUsageIndex!==null){let Q=new Set(q.messages.slice(J.lastUsageIndex+1).filter((Z)=>Z.role==="toolResult").flatMap((Z)=>Z.addedToolNames??[])),V=N(q.tools?.filter((Z)=>Q.has(Z.name)));return{tokens:J.tokens+V,usageTokens:J.usageTokens,trailingTokens:J.trailingTokens+V,lastUsageIndex:J.lastUsageIndex}}let H=(q.systemPrompt?D(q.systemPrompt):0)+N(q.tools);return{tokens:J.tokens+H,usageTokens:J.usageTokens,trailingTokens:J.trailingTokens+H,lastUsageIndex:J.lastUsageIndex}}var b=4096,S=1;function x(q,J,H){if(q.contextWindow<=0)return Math.max(S,H);let Q=q.contextWindow-z(J).tokens-b;return Math.min(H,Math.max(S,Q))}function m(q,J,H,Q){return{temperature:H?.temperature,maxTokens:x(q,J,H?.maxTokens??q.maxTokens),signal:H?.signal,apiKey:Q||H?.apiKey,transport:H?.transport,cacheRetention:H?.cacheRetention,sessionId:H?.sessionId,headers:H?.headers,onPayload:H?.onPayload,onResponse:H?.onResponse,timeoutMs:H?.timeoutMs,websocketConnectTimeoutMs:H?.websocketConnectTimeoutMs,maxRetries:H?.maxRetries,maxRetryDelayMs:H?.maxRetryDelayMs,metadata:H?.metadata,env:H?.env}}function T(q){return q==="xhigh"||q==="max"?"high":q}function i(q,J,H,Q){let Z={...{minimal:1024,low:2048,medium:8192,high:16384},...Q},E=1024,Y=T(H),j=Z[Y],X=q===void 0?J:Math.min(q+j,J);if(X<=j)j=Math.max(0,X-1024);return{maxTokens:X,thinkingBudget:j}}function y(q,J){let H=[],Q=!1;for(let V of q){if(V.type==="image"){if(!Q)H.push({type:"text",text:J});Q=!0;continue}H.push(V),Q=V.text===J}return H}function f(q,J){if(J.input.includes("image"))return q;return q.map((H)=>{if(H.role==="user"&&Array.isArray(H.content))return{...H,content:y(H.content,"(image omitted: model does not support images)")};if(H.role==="toolResult")return{...H,content:y(H.content,"(tool image omitted: model does not support images)")};return H})}function l(q,J,H){let Q=new Map,V=q.map(($)=>$.content==null?{...$,content:[]}:$),E=f(V,J).map(($)=>{if($.role==="user")return $;if($.role==="toolResult"){let w=Q.get($.toolCallId);if(w&&w!==$.toolCallId)return{...$,toolCallId:w};return $}if($.role==="assistant"){let w=$,U=w.provider===J.provider&&w.api===J.api&&w.model===J.id,B=w.content.flatMap((F)=>{if(F.type==="thinking"){if(F.redacted)return U?F:[];if(U&&F.thinkingSignature)return F;if(!F.thinking||F.thinking.trim()==="")return[];if(U)return F;return{type:"text",text:F.thinking}}if(F.type==="text"){if(U)return F;return{type:"text",text:F.text}}if(F.type==="toolCall"){let K=F,W=K;if(!U&&K.thoughtSignature)W={...K},delete W.thoughtSignature;if(!U&&H){let L=H(K.id,J,w);if(L!==K.id)Q.set(K.id,L),W={...W,id:L}}return W}return F});return{...w,content:B}}return $}),Y=[],j=[],X=new Set,G=()=>{if(j.length>0){for(let $ of j)if(!X.has($.id))Y.push({role:"toolResult",toolCallId:$.id,toolName:$.name,content:[{type:"text",text:"No result provided"}],isError:!0,timestamp:Date.now()});j=[],X=new Set}};for(let $=0;$<E.length;$++){let w=E[$];if(w.role==="assistant"){G();let U=w;if(U.stopReason==="error"||U.stopReason==="aborted")continue;let B=U.content.filter((F)=>F.type==="toolCall");if(B.length>0)j=B,X=new Set;Y.push(w)}else if(w.role==="toolResult")X.add(w.toolCallId),Y.push(w);else if(w.role==="user")G(),Y.push(w);else Y.push(w)}return G(),Y}
|
|
3
|
-
export{k as
|
|
3
|
+
export{k as ml,d as nl,u as ol,C as pl,c as ql,x as rl,m as sl,i as tl,l as ul};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as d,d as x,e as r,f as D,g as G,h as M}from"./chunk-sx7kparv.js";import{oa as m}from"./chunk-vw1rhgjs.js";import{cb as p}from"./chunk-ef5v7gta.js";import"./chunk-gct52xks.js";import"./chunk-d2qp8g98.js";import{Df as I}from"./chunk-1fq10abj.js";import{Qf as g}from"./chunk-9hsfjqgq.js";import{Cg as u}from"./chunk-4a9sdfyp.js";import{Dg as f}from"./chunk-n198tewr.js";import{rh as b}from"./chunk-w98wvk17.js";import{$h as N,Ak as P,Bk as T,Dh as R,Di as C,Ek as Y,Fh as k,Kh as v,Ph as L,gj as S,ki as h,vh as o,wh as y,xh as q,yh as K,zi as z,zk as F}from"./chunk-jt4yh37q.js";import{Il as t}from"./chunk-mgbqjbfc.js";var Z=t(o(),1);var s=(X)=>{if(!X)return"??";return X.split(" ").map((_)=>_[0]).slice(0,2).join("").toUpperCase()};function e(){let{projectId:X}=qq.useParams(),{teamId:_,ensureTeamIdForProject:E}=b(),j=v();Z.useEffect(()=>{E(X)},[X,E]);let{data:O}=R(I(X)),W=O?.rootFolder,[n,i]=Z.useState(240),{fileListLeftSidebarCollapsed:A,setFileListLeftSidebarCollapsed:c}=u(),{data:B,isLoading:a,fetchNextPage:Q,hasNextPage:V,isFetchingNextPage:U}=k({queryKey:["collections",X],queryFn:async({pageParam:J})=>{let $=await N.api.projects[":projectId"].collections.$get({param:{projectId:X},query:{first:"20",after:J}});if(!$.ok)throw Error("Failed to fetch collections");return await $.json()},initialPageParam:"",getNextPageParam:(J)=>J.pageInfo?.cursor||void 0,enabled:!!X}),{ref:l,inView:H}=f();Z.useEffect(()=>{if(H&&V&&!U)Q()},[H,V,U,Q]);let w=Z.useMemo(()=>B?.pages.flatMap((J)=>J.data)||[],[B]);if(!_||!W||!O)return q(g,{});return q("div",{className:"flex flex-1 flex-col bg-background min-h-0",children:K("div",{className:"flex flex-1 overflow-hidden relative",children:[!A&&q("div",{className:"md:hidden fixed inset-0 bg-black/50 z-40",onClick:()=>c(!0)}),!A&&K(y,{children:[q("div",{className:"bg-background",style:{width:n},children:q(m,{teamId:_,projectId:X,projectName:O.name??"",rootFolderId:W})}),q(p,{onResize:(J)=>{i(($)=>Math.max(180,Math.min(400,$+J)))},className:"hidden md:block"})]}),K("div",{className:"flex-1 flex flex-col min-h-0 bg-card overflow-hidden",children:[q("header",{className:"h-14 border-b flex items-center justify-between px-6 shrink-0 bg-background/50 backdrop-blur-sm sticky top-0 z-10",children:K("div",{className:"flex items-center gap-2",children:[q(z,{className:"h-5 w-5 text-primary"}),q("h1",{className:"font-bold text-lg text-foreground",children:Y.all_collections()})]})}),q("div",{className:"flex-1 overflow-y-auto p-6",children:a?q("div",{className:"flex justify-center items-center h-64",children:q("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-primary"})}):w.length===0?K("div",{className:"flex flex-col items-center justify-center h-64 text-muted-foreground gap-3",children:[q(S,{className:"h-10 w-10 text-muted-foreground/50"}),q("p",{children:Y.no_collections_yet()})]}):K("div",{className:"border border-border rounded-xl bg-background overflow-hidden shadow-xs",children:[K(d,{children:[q(x,{children:K(D,{className:"hover:bg-transparent bg-muted/20",children:[q(G,{className:"font-semibold px-4 py-3",children:Y.collection_name()}),q(G,{className:"font-semibold px-4 py-3",children:Y.creator()}),q(G,{className:"font-semibold px-4 py-3 w-[200px]",children:Y.created_date()})]})}),q(r,{children:w.map((J)=>K(D,{className:"hover:bg-muted/10 transition-colors cursor-pointer",onClick:()=>j({to:"/projects/$projectId/collections/$collectionId",params:{projectId:X,collectionId:J.id}}),children:[q(M,{className:"font-medium px-4 py-3.5",children:K("div",{className:"flex items-center gap-2",children:[q(z,{className:"h-4 w-4 text-primary shrink-0"}),q("span",{className:"text-foreground font-semibold hover:underline",children:J.name})]})}),q(M,{className:"px-4 py-3.5",children:K("div",{className:"flex items-center gap-2",children:[K(F,{className:"h-6 w-6",children:[J.creator?.image&&q(P,{src:J.creator.image,alt:J.creator.name,className:"object-cover"}),q(T,{className:"text-[10px]",children:s(J.creator?.name)})]}),q("span",{className:"text-sm font-medium text-foreground truncate max-w-[200px]",children:J.creator?.name||Y.unknown()})]})}),q(M,{className:"px-4 py-3.5 text-muted-foreground text-sm",children:K("div",{className:"flex items-center gap-2",children:[q(C,{className:"h-3.5 w-3.5 text-muted-foreground/70"}),q("span",{children:new Date(J.createdAt).toLocaleDateString()})]})})]},J.id))})]}),q("div",{ref:l,className:"h-10 w-full flex items-center justify-center",children:U&&q(h,{className:"h-6 w-6 animate-spin text-primary"})})]})})]})]})})}var qq=L("/projects/$projectId/collections/")({component:e});export{qq as Route};
|