@realtimex/realtimex-alchemy 1.0.13 → 1.0.14
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.
|
@@ -98,4 +98,4 @@ ${t.entities.map(v=>`- ${v}`).join(`
|
|
|
98
98
|
`:""}
|
|
99
99
|
${t.content?`
|
|
100
100
|
## Full Content
|
|
101
|
-
${t.content}`:""}`,h=new Blob([d],{type:"text/markdown"}),m=URL.createObjectURL(h),y=document.createElement("a");y.href=m,y.download=`${t.title.replace(/[^a-z0-9]/gi,"_").toLowerCase()}.md`,y.click(),URL.revokeObjectURL(m)},u=()=>{const d=JSON.stringify(t,null,2),h=new Blob([d],{type:"application/json"}),m=URL.createObjectURL(h),y=document.createElement("a");y.href=m,y.download=`signal_${t.id}.json`,y.click(),URL.revokeObjectURL(m)};return p.jsx(cn,{children:p.jsx(Ne.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-bg/80 backdrop-blur-sm",onClick:e,children:p.jsxs(Ne.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},onClick:d=>d.stopPropagation(),className:"w-full max-w-4xl max-h-[90vh] glass flex flex-col overflow-hidden",children:[p.jsxs("div",{className:"p-6 border-b border-border/10 flex items-start justify-between",children:[p.jsxs("div",{className:"flex-1 min-w-0 pr-4",children:[p.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[p.jsx("span",{className:"px-2 py-0.5 bg-primary/10 text-primary text-[10px] font-bold rounded border border-primary/20 uppercase tracking-wider",children:t.category||"Research"}),p.jsx("span",{className:`text-3xl font-black ${t.score>=80?"text-accent":"text-fg/40"}`,children:t.score})]}),p.jsx("h2",{className:"text-2xl font-bold leading-tight mb-2",children:t.title}),p.jsxs("p",{className:"text-xs text-fg/40 font-mono",children:["Discovered ",new Date(t.date).toLocaleDateString([],{month:"long",day:"numeric",year:"numeric"})]})]}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-surface rounded-lg text-fg/40 hover:text-fg transition-all",children:p.jsx(Sr,{size:24})})]}),p.jsxs("div",{className:"flex-1 overflow-y-auto custom-scrollbar p-6 space-y-6",children:[t.url&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Original Source"}),p.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 p-3 glass hover:bg-surface transition-all rounded-xl text-sm font-mono text-primary hover:text-accent group",children:[p.jsx(Da,{size:16,className:"flex-shrink-0"}),p.jsx("span",{className:"truncate",children:t.url}),p.jsx("span",{className:"ml-auto text-xs opacity-0 group-hover:opacity-100 transition-opacity",children:"Open →"})]})]}),t.entities&&t.entities.length>0&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Entities"}),p.jsx("div",{className:"flex flex-wrap gap-2",children:t.entities.map(d=>p.jsx("span",{className:"px-3 py-1.5 bg-surface/50 border border-border/20 rounded-lg text-sm font-medium",children:d},d))})]}),p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"AI Summary"}),p.jsx("div",{className:"p-4 glass rounded-xl",children:p.jsx("p",{className:"text-sm leading-relaxed text-fg/80",children:t.summary})})]}),t.content&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Full Content"}),p.jsx("div",{className:"p-4 glass rounded-xl max-h-96 overflow-y-auto custom-scrollbar",children:p.jsx("p",{className:"text-sm leading-relaxed text-fg/60 whitespace-pre-wrap",children:t.content})})]})]}),p.jsxs("div",{className:"p-6 border-t border-border/10 flex items-center gap-3",children:[p.jsxs("button",{onClick:o,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[n?p.jsx(Si,{size:16,className:"text-success"}):p.jsx(py,{size:16}),n?"Copied!":"Copy"]}),p.jsxs("button",{onClick:l,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[p.jsx(sm,{size:16}),"Markdown"]}),p.jsxs("button",{onClick:u,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[p.jsx(sm,{size:16}),"JSON"]})]})]})})})}function OC({isOpen:t,onClose:e}){const{showToast:n}=Dv(),[i,o]=R.useState(""),[l,u]=R.useState(50),[d,h]=R.useState(!1),[m,y]=R.useState(!1);R.useEffect(()=>{t&&v()},[t]);const v=async()=>{const{data:{user:b}}=await me.auth.getUser();if(!b)return;const{data:S}=await me.from("alchemy_settings").select("*").eq("user_id",b.id).maybeSingle();if(S)if(u(S.max_urls_per_sync||50),S.sync_start_date){const k=new Date(S.sync_start_date),E=N=>N<10?"0"+N:N,P=k.getFullYear()+"-"+E(k.getMonth()+1)+"-"+E(k.getDate())+"T"+E(k.getHours())+":"+E(k.getMinutes());o(P)}else o("")},w=async()=>{h(!0);try{const{data:{user:b}}=await me.auth.getUser();if(!b){n("Please log in to save settings","error"),h(!1);return}const{error:S}=await me.from("alchemy_settings").update({max_urls_per_sync:l,sync_start_date:i?new Date(i).toISOString():null}).eq("user_id",b.id);S?n(`Failed to save: ${S.message}`,"error"):(n("Sync settings saved successfully","success"),e())}catch(b){n(`Unexpected error: ${b.message}`,"error")}finally{h(!1)}},_=async()=>{y(!0);try{const{data:{user:b}}=await me.auth.getUser();if(!b){n("Please log in to reset checkpoint","error"),y(!1);return}const{error:S}=await me.from("alchemy_settings").update({last_sync_checkpoint:null}).eq("user_id",b.id);S?n(`Failed to reset: ${S.message}`,"error"):n("Checkpoint reset successfully","success")}catch(b){n(`Unexpected error: ${b.message}`,"error")}finally{y(!1)}};return t?p.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 p-4",children:p.jsxs("div",{className:"bg-surface border border-border/20 rounded-2xl shadow-2xl max-w-lg w-full max-h-[90vh] overflow-y-auto",children:[p.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-border/10",children:[p.jsx("h2",{className:"text-xl font-bold",children:"Sync Settings"}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-black/10 rounded-lg transition-colors",children:p.jsx(Sr,{className:"w-5 h-5"})})]}),p.jsxs("div",{className:"p-6 space-y-6",children:[p.jsxs("div",{className:"space-y-3",children:[p.jsxs("label",{className:"text-sm font-semibold flex items-center gap-2",children:[p.jsx(n1,{className:"w-4 h-4 text-primary"}),"Sync From (Optional)"]}),p.jsx("input",{type:"datetime-local",value:i,onChange:b=>o(b.target.value),className:"w-full bg-black/20 border border-border/10 rounded-xl py-3 px-4 text-sm focus:border-primary/30 outline-none transition-all"}),p.jsx("p",{className:"text-xs text-fg/50",children:"Leave empty to sync only new URLs since last sync (incremental). Set a date to process URLs from that point forward."})]}),p.jsxs("div",{className:"space-y-3",children:[p.jsxs("div",{className:"flex justify-between items-center",children:[p.jsxs("label",{className:"text-sm font-semibold flex items-center gap-2",children:[p.jsx(c1,{className:"w-4 h-4 text-primary"}),"URLs per Sync"]}),p.jsx("span",{className:"text-sm font-mono text-primary",children:l})]}),p.jsx("input",{type:"range",min:"5",max:"200",step:"5",value:l,onChange:b=>u(Number(b.target.value)),className:"w-full h-2 bg-black/20 rounded-lg appearance-none cursor-pointer accent-primary"}),p.jsxs("div",{className:"flex justify-between text-xs text-fg/30 font-medium",children:[p.jsx("span",{children:"Quick (5)"}),p.jsx("span",{children:"Balanced (50)"}),p.jsx("span",{children:"Thorough (200)"})]})]}),p.jsxs("div",{className:"pt-4 border-t border-border/10",children:[p.jsxs("button",{onClick:_,disabled:m,className:"w-full px-4 py-2.5 bg-warning/10 hover:bg-warning/20 border border-warning/20 text-warning font-medium rounded-xl transition-all flex items-center justify-center gap-2 text-sm disabled:opacity-50",children:[p.jsx(_1,{size:16,className:m?"animate-spin":""}),m?"Resetting...":"Reset Checkpoint"]}),p.jsx("p",{className:"text-xs text-fg/40 mt-2 text-center",children:'Clear the sync checkpoint to force a full re-sync from your "Sync From" date'})]}),p.jsx("div",{className:"p-4 bg-primary/5 rounded-xl",children:p.jsx("p",{className:"text-xs text-primary/60 leading-relaxed",children:'The Alchemist tracks your progress automatically. Use "Sync From" to backfill history or "Reset Checkpoint" to start fresh.'})})]}),p.jsxs("div",{className:"flex gap-3 p-6 border-t border-border/10",children:[p.jsx("button",{onClick:e,className:"flex-1 px-4 py-2.5 bg-surface hover:bg-black/10 border border-border/10 rounded-xl font-medium transition-all",children:"Cancel"}),p.jsxs("button",{onClick:w,disabled:d,className:"flex-1 px-4 py-2.5 bg-gradient-to-r from-primary to-accent text-white font-bold rounded-xl shadow-lg hover:scale-[1.02] active:scale-95 transition-all flex items-center justify-center gap-2 disabled:opacity-50",children:[p.jsx(_a,{size:18,className:d?"animate-spin":""}),d?"Saving...":"Save Settings"]})]})]})}):null}function IC(){const[t,e]=R.useState([]),[n,i]=R.useState(!0),[o,l]=R.useState(null),[u,d]=R.useState(null),[h,m]=R.useState([]),[y,v]=R.useState([]),[w,_]=R.useState([]),[b,S]=R.useState(!1);R.useEffect(()=>{k()},[]);const k=async()=>{i(!0);try{const{data:{user:$}}=await me.auth.getUser();if(!$)return;const{data:B,error:Y}=await me.from("processing_events").select("*").eq("user_id",$.id).eq("agent_state","Completed").order("created_at",{ascending:!1}).limit(50);if(Y){console.error("Error fetching sync runs:",Y);return}const oe=(B||[]).map(Te=>{const ve=Te.metadata||{},je=ve.errors||0,xe=ve.signals_found||0,Oe=ve.skipped||0;return{id:Te.id,started_at:Te.created_at,completed_at:Te.created_at,duration_ms:Te.duration_ms||0,signals_found:xe,urls_processed:ve.total_urls||0,skipped:Oe,errors:je,status:je>0?"partial":xe>0?"success":"failed"}});e(oe)}catch($){console.error("Failed to fetch sync runs:",$)}finally{i(!1)}},E=async $=>{S(!0);try{const{data:{user:B}}=await me.auth.getUser();if(!B)return;const Y=t.find(F=>F.id===$);if(!Y)return;const oe=new Date(new Date(Y.started_at).getTime()-Y.duration_ms),Te=new Date(Y.completed_at),{data:ve,error:je}=await me.from("processing_events").select("*").eq("user_id",B.id).gte("created_at",oe.toISOString()).lte("created_at",Te.toISOString()).order("created_at",{ascending:!0});if(je){console.error("Error fetching run events:",je);return}m(ve||[]);const xe=[],Oe=(ve||[]).filter(F=>F.agent_state==="Mining"&&F.message.includes("Mining source:"));for(const F of Oe){const J=F.message.match(/Mining source: (.+) \((.+)\)/);if(J){const K=J[1],j=J[2],D=(ve||[]).find(fe=>fe.agent_state==="Mining"&&fe.message.includes("Found")&&fe.message.includes(K)&&fe.created_at>F.created_at),se=D?.message.match(/Found (\d+) URLs/),ue=se?parseInt(se[1]):0;xe.push({label:K,browser:j,urls_found:ue,duration_ms:D?.duration_ms||0,status:F.event_type==="error"?"error":"success"})}}v(xe);const be=[],pe=(ve||[]).filter(F=>F.agent_state==="Reading");for(const F of pe){const J=F.message.match(/Reading content from: (.+)/);if(!J)continue;const K=J[1];let j=xe.length>0?xe[0].label:"Unknown";const D=xe.filter(ie=>ie.urls_found>0);(D.length===1||D.length>1)&&(j=D[0].label),console.log(`[SystemLogs] URL ${K} assigned to source: ${j}`);const se=(ve||[]).find(ie=>ie.agent_state==="Signal"&&ie.created_at>F.created_at&&ie.message.includes("Found signal")),ue=(ve||[]).find(ie=>ie.agent_state==="Skipped"&&ie.created_at>F.created_at&&ie.message.includes("Irrelevant content")),fe=(ve||[]).find(ie=>ie.event_type==="error"&&ie.created_at>F.created_at);if(se){const ie=se.message.match(/\((\d+)%\)/),Ee=ie?parseInt(ie[1]):0;be.push({url:K,result:"signal",score:Ee,category:se.details?.category||"Unknown",duration_ms:se.duration_ms,source_label:j})}else if(ue){const ie=ue.message.match(/\((\d+)%\): (.+)/),Ee=ie?parseInt(ie[1]):0,ke=ie?ie[2]:"Irrelevant";be.push({url:K,result:"skipped",score:Ee,reason:ke,duration_ms:ue.duration_ms,source_label:j})}else fe&&be.push({url:K,result:"error",reason:fe.message,source_label:j})}_(be)}catch(B){console.error("Failed to fetch run details:",B)}finally{S(!1)}},P=$=>{o===$?(l(null),d(null),v([]),_([])):(l($),d(null),E($))},N=$=>{d(u===$?null:$)},U=$=>{if($<1e3)return`${$}ms`;const B=Math.floor($/1e3);if(B<60)return`${B}s`;const Y=Math.floor(B/60),oe=B%60;return`${Y}m ${oe}s`},V=$=>{switch($){case"success":return p.jsx(rd,{className:"w-5 h-5 text-success"});case"failed":return p.jsx(um,{className:"w-5 h-5 text-error"});case"partial":return p.jsx(Mi,{className:"w-5 h-5 text-warning"});default:return p.jsx(ps,{className:"w-5 h-5 text-fg/40"})}},z=$=>{switch($){case"signal":return p.jsx(kr,{className:"w-4 h-4 text-primary"});case"skipped":return p.jsx(k1,{className:"w-4 h-4 text-fg/40"});case"error":return p.jsx(um,{className:"w-4 h-4 text-error"});default:return null}};return n?p.jsx("div",{className:"flex items-center justify-center h-full",children:p.jsx("div",{className:"w-12 h-12 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):p.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-8",children:[p.jsxs("div",{className:"mb-6",children:[p.jsx("h2",{className:"text-2xl font-bold",children:"System Logs"}),p.jsx("p",{className:"text-sm text-fg/50",children:"Detailed history of sync runs, sources, and URL processing"})]}),p.jsx("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:t.length===0?p.jsxs("div",{className:"text-center py-12 text-fg/40",children:[p.jsx(ps,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),p.jsx("p",{children:"No sync runs yet"})]}):p.jsx("div",{className:"space-y-2",children:t.map($=>p.jsxs("div",{className:"glass rounded-xl overflow-hidden",children:[p.jsxs("button",{onClick:()=>P($.id),className:"w-full p-4 flex items-center gap-4 hover:bg-surface/50 transition-colors text-left",children:[o===$.id?p.jsx(ba,{className:"w-5 h-5 text-primary shrink-0"}):p.jsx(rm,{className:"w-5 h-5 text-fg/40 shrink-0"}),V($.status),p.jsxs("div",{className:"flex-1 grid grid-cols-6 gap-4 items-center",children:[p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Timestamp"}),p.jsx("div",{className:"text-sm font-mono",children:new Date($.started_at).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Duration"}),p.jsx("div",{className:"text-sm font-mono",children:U($.duration_ms)})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Signals"}),p.jsx("div",{className:"text-sm font-semibold text-primary",children:$.signals_found})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Skipped"}),p.jsx("div",{className:"text-sm font-semibold text-fg/60",children:$.skipped})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"URLs"}),p.jsx("div",{className:"text-sm font-semibold",children:$.urls_processed})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Errors"}),p.jsx("div",{className:`text-sm font-semibold ${$.errors>0?"text-error":"text-fg/40"}`,children:$.errors})]})]})]}),p.jsx(cn,{children:o===$.id&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"border-t border-border/10 overflow-hidden",children:p.jsx("div",{className:"p-4 bg-black/10 space-y-2",children:b?p.jsx("div",{className:"flex items-center justify-center py-8",children:p.jsx("div",{className:"w-8 h-8 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):y.length===0?p.jsx("div",{className:"text-center py-4 text-fg/40 text-sm",children:"No source details available"}):y.map((B,Y)=>p.jsxs("div",{className:"glass rounded-lg overflow-hidden",children:[p.jsxs("button",{onClick:()=>N(B.label),className:"w-full p-3 flex items-center gap-3 hover:bg-surface/50 transition-colors text-left",children:[u===B.label?p.jsx(ba,{className:"w-4 h-4 text-primary shrink-0"}):p.jsx(rm,{className:"w-4 h-4 text-fg/40 shrink-0"}),p.jsxs("div",{className:"flex-1 flex items-center gap-4",children:[p.jsxs("div",{className:"flex-1",children:[p.jsx("div",{className:"text-sm font-semibold",children:B.label}),p.jsx("div",{className:"text-xs text-fg/40",children:B.browser})]}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs text-fg/40",children:"URLs Found"}),p.jsx("div",{className:"text-sm font-semibold",children:B.urls_found})]}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs text-fg/40",children:"Duration"}),p.jsx("div",{className:"text-sm font-mono",children:U(B.duration_ms)})]})]})]}),p.jsx(cn,{children:u===B.label&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"border-t border-border/10 overflow-hidden",children:p.jsx("div",{className:"p-3 bg-black/20 max-h-96 overflow-y-auto custom-scrollbar space-y-1",children:w.filter(oe=>oe.source_label===B.label).length===0?p.jsx("div",{className:"text-center py-4 text-fg/40 text-xs",children:"No URL details available for this source"}):w.filter(oe=>oe.source_label===B.label).map((oe,Te)=>p.jsxs("div",{className:"flex items-center gap-2 p-2 rounded bg-surface/30 hover:bg-surface/50 transition-colors",children:[z(oe.result),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("div",{className:"text-xs font-mono truncate text-fg/80",children:oe.url}),oe.result==="signal"&&p.jsxs("div",{className:"text-[10px] text-primary",children:["Signal (",oe.score,"%) - ",oe.category]}),oe.result==="skipped"&&p.jsxs("div",{className:"text-[10px] text-fg/40",children:["Skipped (",oe.score,"%) - ",oe.reason]}),oe.result==="error"&&p.jsxs("div",{className:"text-[10px] text-error",children:["Error: ",oe.reason]})]}),p.jsx("a",{href:oe.url,target:"_blank",rel:"noopener noreferrer",className:"p-1 hover:bg-surface rounded",onClick:ve=>ve.stopPropagation(),children:p.jsx(Da,{className:"w-3 h-3 text-fg/40"})})]},Te))})})})]},Y))})})})]},$.id))})})]})}function DC({signals:t,limit:e=10,onSignalClick:n}){const i=t.slice(0,e),[o,l]=R.useState(()=>{const h=localStorage.getItem("newSignalsFeedExpanded");return h!==null?h==="true":!0});R.useEffect(()=>{localStorage.setItem("newSignalsFeedExpanded",String(o))},[o]);const u=h=>h>=80?"bg-yellow-400/20 text-yellow-400 border-yellow-400/30":h>=50?"bg-blue-400/20 text-blue-400 border-blue-400/30":"bg-gray-400/20 text-gray-400 border-gray-400/30",d=h=>{const m=new Date(h),v=new Date().getTime()-m.getTime(),w=Math.floor(v/6e4),_=Math.floor(v/36e5);return w<1?"Just now":w<60?`${w}m ago`:_<24?`${_}h ago`:m.toLocaleDateString("en-US",{month:"short",day:"numeric"})};return i.length===0?null:p.jsxs("div",{className:"mb-3",children:[p.jsxs("button",{onClick:()=>l(!o),className:"w-full flex items-center justify-between mb-2 px-1 py-1 hover:bg-surface/30 rounded-lg transition-colors",children:[p.jsx("div",{className:"flex items-center gap-2",children:p.jsxs("h3",{className:"text-sm font-semibold text-fg/70 uppercase tracking-wide",children:["New Signals (",i.length,")"]})}),o?p.jsx(fy,{size:16,className:"text-fg/40"}):p.jsx(ba,{size:16,className:"text-fg/40"})]}),p.jsx(cn,{children:o&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"overflow-hidden",children:p.jsx("div",{className:"overflow-x-auto pb-3 -mx-4 px-4 custom-scrollbar",children:p.jsx("div",{className:"flex gap-3 min-w-max",children:i.map(h=>p.jsxs(Ne.button,{onClick:()=>n(h.id),whileHover:{scale:1.05,y:-2},whileTap:{scale:.98},className:"flex-shrink-0 w-[120px] bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-3 hover:border-blue-400/30 transition-all duration-300 text-left group",children:[p.jsx("div",{className:`w-12 h-12 rounded-full border-2 flex items-center justify-center mx-auto mb-2 ${u(h.score)}`,children:p.jsx("span",{className:"text-xl font-bold",children:h.score})}),p.jsx("p",{className:"text-xs text-fg line-clamp-2 mb-2 group-hover:text-blue-400 transition-colors",children:h.title}),p.jsxs("div",{className:"flex items-center gap-1 text-[10px] text-fg/40",children:[p.jsx(ps,{size:10}),p.jsx("span",{children:d(h.created_at)})]})]},h.id))})})})})]})}const Li=[{id:"ai",name:"AI & ML",icon:hy,color:"blue",priority:1},{id:"business",name:"Business",icon:e1,color:"purple",priority:1},{id:"politics",name:"Politics",icon:p1,color:"red",priority:1},{id:"technology",name:"Technology",icon:sd,color:"cyan",priority:1},{id:"finance",name:"Finance",icon:a1,color:"green",priority:1},{id:"crypto",name:"Crypto",icon:Xx,color:"orange",priority:1},{id:"science",name:"Science",icon:v1,color:"teal",priority:1}],Xd={id:"other",name:"Other",icon:T1,color:"gray",priority:3},LC=[...Li,Xd];function MC(t){const e={blue:"bg-blue-500/20 text-blue-400 border-blue-500/30",purple:"bg-purple-500/20 text-purple-400 border-purple-500/30",red:"bg-red-500/20 text-red-400 border-red-500/30",cyan:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",green:"bg-green-500/20 text-green-400 border-green-500/30",orange:"bg-orange-500/20 text-orange-400 border-orange-500/30",teal:"bg-teal-500/20 text-teal-400 border-teal-500/30",gray:"bg-gray-500/20 text-gray-400 border-gray-500/30"};return e[t]||e.gray}function Uv(t,e){if(e){const n=Li.find(i=>i.id===e.toLowerCase());if(n)return n.id}for(const n of t){const i=n.toLowerCase(),o=Li.find(l=>i.includes(l.id)||i.includes(l.name.toLowerCase()));if(o)return o.id}return null}function UC({category:t,signalCount:e,latestTimestamp:n,onClick:i}){const o=u=>{const d=new Date(u),m=new Date().getTime()-d.getTime(),y=Math.floor(m/6e4),v=Math.floor(m/36e5),w=Math.floor(m/864e5);return y<60?`${y}m ago`:v<24?`${v}h ago`:w<7?`${w}d ago`:d.toLocaleDateString("en-US",{month:"short",day:"numeric"})},l=t.icon;return p.jsxs(Ne.button,{whileHover:{scale:1.05,y:-4},whileTap:{scale:.98},onClick:i,className:"bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-6 cursor-pointer hover:border-white/20 transition-all duration-300 text-left w-full",children:[p.jsx("div",{className:"mb-4",children:p.jsx(l,{size:40,className:"text-current opacity-80"})}),p.jsx("h3",{className:"text-lg font-semibold mb-3 text-fg",children:t.name}),p.jsxs("div",{className:"flex items-center justify-between text-sm",children:[p.jsxs("span",{className:`px-2 py-1 rounded text-xs font-medium ${MC(t.color)}`,children:[e," ",e===1?"signal":"signals"]}),p.jsxs("span",{className:"text-fg/40 flex items-center gap-1 text-xs",children:[p.jsx(ps,{size:12}),o(n)]})]})]})}const $C=3;function VC({signals:t,onCategoryClick:e}){const{categories:n,categoryCounts:i}=R.useMemo(()=>{const o=new Map,l=new Map;t.forEach(m=>{const y=m.tags||[],v=Uv(y,m.category);if(v){const w=o.get(v)||{count:0,latest:m.created_at};o.set(v,{count:w.count+1,latest:m.created_at>w.latest?m.created_at:w.latest})}else y.forEach(w=>{const _=w.toLowerCase().trim();if(_){l.set(_,(l.get(_)||0)+1);const b=o.get(_)||{count:0,latest:m.created_at};o.set(_,{count:b.count+1,latest:m.created_at>b.latest?m.created_at:b.latest})}})});const u=Array.from(l.entries()).filter(([m,y])=>y>=$C).map(([m,y])=>({id:m,name:m.charAt(0).toUpperCase()+m.slice(1),icon:d1,color:"gray",priority:2}));return{categories:[...Li,...u,Xd].filter(m=>{const y=o.get(m.id);return y&&y.count>0}).sort((m,y)=>m.priority-y.priority),categoryCounts:o}},[t]);return n.length===0?p.jsxs("div",{className:"h-64 flex flex-col items-center justify-center text-fg/20",children:[p.jsx("p",{className:"font-medium italic",children:"No categories yet."}),p.jsx("p",{className:"text-sm mt-2",children:"Signals will be organized here once discovered."})]}):p.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:n.map(o=>{const l=i.get(o.id);return p.jsx(UC,{category:o,signalCount:l.count,latestTimestamp:l.latest,onClick:()=>e(o.id)},o.id)})})}function FC({signal:t,onOpen:e,onCopy:n,onArchive:i,onBookmark:o}){const[l,u]=R.useState(!1),d=v=>v>=80?"text-yellow-400 border-yellow-400/30":v>=50?"text-blue-400 border-blue-400/30":"text-gray-400 border-gray-400/30",h=v=>v>=80?"HIGH":v>=50?"MEDIUM":"LOW",m=(v,w)=>{const _=Uv(w||[],v);if(_){const b=Li.find(S=>S.id===_);if(b)return b}return Xd},y=v=>{const w=new Date(v),b=new Date().getTime()-w.getTime(),S=Math.floor(b/6e4),k=Math.floor(b/36e5),E=Math.floor(b/864e5);return S<60?`${S}m ago`:k<24?`${k}h ago`:E<7?`${E}d ago`:w.toLocaleDateString("en-US",{month:"short",day:"numeric"})};return p.jsxs(Ne.div,{whileHover:{scale:1.02,boxShadow:"0 8px 24px rgba(59, 130, 246, 0.3)"},onHoverStart:()=>u(!0),onHoverEnd:()=>u(!1),className:"bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-6 flex flex-col gap-4 transition-all duration-300",children:[p.jsxs("div",{className:"flex items-start justify-between",children:[p.jsx("div",{className:"flex items-center gap-3",children:p.jsxs("div",{className:`flex flex-col items-center justify-center w-16 h-16 rounded-full border-2 ${d(t.score)}`,children:[p.jsx("span",{className:"text-2xl font-bold",children:t.score}),p.jsx("span",{className:"text-[10px] font-medium opacity-70",children:h(t.score)})]})}),p.jsxs("div",{className:"flex items-center gap-2",children:[(()=>{const v=m(t.category,t.tags),w=v.icon;return p.jsxs("span",{className:"px-2 py-1 bg-blue-500/20 text-blue-400 text-xs font-medium rounded border border-blue-500/30 flex items-center gap-1.5",children:[p.jsx(w,{size:14}),v.name]})})(),p.jsxs("span",{className:"text-xs text-fg/50 flex items-center gap-1",children:[p.jsx(ps,{size:12}),y(t.created_at)]})]})]}),p.jsxs("div",{className:"flex-1",children:[p.jsx("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"text-lg font-semibold text-fg hover:text-blue-400 transition-colors line-clamp-2 mb-2 block",onClick:v=>{v.preventDefault(),e?.(t.url)},children:t.title}),p.jsx("p",{className:"text-sm text-fg/70 line-clamp-3",children:t.summary})]}),t.entities&&t.entities.length>0&&p.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.entities.slice(0,4).map((v,w)=>p.jsx("span",{className:"px-2 py-1 bg-white/5 text-fg/60 text-xs rounded border border-white/10",children:v},w)),t.entities.length>4&&p.jsxs("span",{className:"px-2 py-1 text-fg/40 text-xs",children:["+",t.entities.length-4," more"]})]}),p.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t border-white/5",children:[p.jsxs("button",{onClick:()=>e?.(t.url),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-white/10 rounded transition-colors text-sm",title:"Open URL",children:[p.jsx(Da,{size:14}),p.jsx("span",{children:"Open"})]}),p.jsxs("button",{onClick:()=>n?.(t.summary),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-white/10 rounded transition-colors text-sm",title:"Copy Summary",children:[p.jsx(py,{size:14}),p.jsx("span",{children:"Copy"})]}),p.jsxs("button",{onClick:()=>i?.(t.id),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-red-500/20 hover:text-red-400 rounded transition-colors text-sm",title:"Archive",children:[p.jsx(Jx,{size:14}),p.jsx("span",{children:"Archive"})]}),o&&p.jsx("button",{onClick:()=>o(t.id),className:"px-3 py-2 bg-white/5 hover:bg-yellow-500/20 hover:text-yellow-400 rounded transition-colors",title:"Bookmark",children:p.jsx(Zx,{size:14})})]})]})}function BC({isOpen:t,onClose:e,categoryId:n,signals:i,onOpenUrl:o,onCopyText:l,onArchive:u}){const d=LC.find(w=>w.id===n),h=i.filter(w=>{const _=w.tags||[],b=w.category?.toLowerCase()===n,S=_.some(k=>k.toLowerCase().includes(n));return b||S}),m=w=>{o?o(w):window.open(w,"_blank","noopener,noreferrer")},y=w=>{l?l(w):navigator.clipboard.writeText(w)},v=async w=>{u&&await u(w)};return p.jsx(cn,{children:t&&p.jsxs(p.Fragment,{children:[p.jsx(Ne.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:e,className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-40"}),p.jsx(Ne.div,{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"},transition:{type:"spring",damping:30,stiffness:300},className:"fixed right-0 top-0 h-full w-full md:w-2/3 lg:w-1/2 bg-bg border-l border-white/10 z-50 overflow-y-auto custom-scrollbar",children:p.jsxs("div",{className:"p-6",children:[p.jsxs("div",{className:"flex items-center justify-between mb-6 sticky top-0 bg-bg pb-4 border-b border-white/10",children:[p.jsxs("div",{className:"flex items-center gap-3",children:[d?.icon&&p.jsx("div",{className:"w-10 h-10 flex items-center justify-center",children:p.jsx(d.icon,{size:40,className:"text-current opacity-80"})}),p.jsxs("div",{children:[p.jsx("h2",{className:"text-2xl font-bold",children:d?.name}),p.jsxs("p",{className:"text-sm text-fg/50",children:[h.length," ",h.length===1?"signal":"signals"]})]})]}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-white/10 rounded transition-colors","aria-label":"Close drawer",children:p.jsx(Sr,{size:24})})]}),p.jsx("div",{className:"space-y-4",children:h.length===0?p.jsx("div",{className:"h-64 flex items-center justify-center text-fg/30",children:p.jsx("p",{className:"italic",children:"No signals in this category yet."})}):h.map(w=>p.jsx(FC,{signal:w,onOpen:m,onCopy:y,onArchive:v},w.id))})]})})]})})}function zC({onOpenUrl:t,onCopyText:e}){const[n,i]=R.useState([]),[o,l]=R.useState(!0),[u,d]=R.useState(null),[h,m]=R.useState(""),[y,v]=R.useState(null);R.useEffect(()=>{(async()=>{l(!0);let E=me.from("signals").select("*").order("created_at",{ascending:!1}).limit(50);y&&(E=E.ilike("category",y)),h&&(E=E.or(`title.ilike.%${h}%,summary.ilike.%${h}%,url.ilike.%${h}%`));const{data:P,error:N}=await E;N?console.error("Error fetching signals:",N):i(P||[]),l(!1)})();const k=me.channel("signals").on("postgres_changes",{event:"INSERT",schema:"public",table:"signals"},E=>{i(P=>[E.new,...P])}).subscribe();return()=>{k.unsubscribe()}},[h,y]);const w=S=>{t?t(S):window.open(S,"_blank","noopener,noreferrer")},_=S=>{e?e(S):navigator.clipboard.writeText(S)},b=async S=>{await me.from("signals").delete().eq("id",S),i(k=>k.filter(E=>E.id!==S))};return p.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[p.jsx("div",{className:"px-4 pt-3",children:p.jsx(DC,{signals:n,limit:10,onSignalClick:S=>{const k=n.find(E=>E.id===S);k&&k.category&&d(k.category.toLowerCase())}})}),p.jsxs("div",{className:"px-4 pt-2 pb-2 space-y-3",children:[p.jsxs("div",{className:"relative",children:[p.jsx(Sc,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-fg/40"}),p.jsx("input",{type:"text",placeholder:"Search signals by title, summary, or URL...",value:h,onChange:S=>m(S.target.value),className:"w-full bg-surface border border-border/20 rounded-xl py-3 pl-10 pr-10 text-sm text-fg placeholder:text-fg/40 focus:border-primary/50 focus:ring-2 focus:ring-primary/20 outline-none transition-all"}),h&&p.jsx("button",{onClick:()=>m(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-fg/40 hover:text-fg transition-colors",title:"Clear search",children:p.jsx(Sr,{size:16})})]}),p.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[p.jsx(l1,{className:"w-3.5 h-3.5 text-fg/40"}),p.jsx("button",{onClick:()=>v(null),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-all ${y===null?"bg-primary text-white shadow-sm":"bg-surface hover:bg-surface/80 text-fg/60 hover:text-fg border border-border/20"}`,children:"All"}),["AI & ML","Business","Politics","Technology","Finance","Crypto","Science","Other"].map(S=>p.jsx("button",{onClick:()=>v(S),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-all ${y===S?"bg-primary text-white shadow-sm":"bg-surface hover:bg-surface/80 text-fg/60 hover:text-fg border border-border/20"}`,children:S},S))]})]}),p.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-12 custom-scrollbar",children:o?p.jsx("div",{className:"h-64 flex items-center justify-center text-fg/30",children:p.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-400"})}):p.jsx(VC,{signals:n,onCategoryClick:S=>d(S)})}),p.jsx(BC,{isOpen:!!u,onClose:()=>d(null),categoryId:u||"",signals:n,onOpenUrl:w,onCopyText:_,onArchive:b})]})}class qC{audioContext=null;enabled=!0;constructor(){}getAudioContext(){return this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext)),this.audioContext}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}playTone(e,n,i=.3){if(this.enabled)try{const o=this.getAudioContext(),l=o.createOscillator(),u=o.createGain();l.connect(u),u.connect(o.destination),l.frequency.value=e,l.type="sine",u.gain.setValueAtTime(i,o.currentTime),u.gain.exponentialRampToValueAtTime(.01,o.currentTime+n),l.start(o.currentTime),l.stop(o.currentTime+n)}catch(o){console.warn("[Sound] Failed to play tone:",o)}}playSequence(e,n=.3){if(!this.enabled)return;let i=0;e.forEach(o=>{setTimeout(()=>{this.playTone(o.freq,o.duration,n)},i),i+=o.delay})}syncStart(){this.playSequence([{freq:261.63,duration:.15,delay:0},{freq:329.63,duration:.15,delay:100},{freq:392,duration:.2,delay:100}],.2)}signalFound(){this.playSequence([{freq:392,duration:.1,delay:0},{freq:523.25,duration:.15,delay:80}],.25)}syncComplete(){this.playSequence([{freq:261.63,duration:.12,delay:0},{freq:329.63,duration:.12,delay:80},{freq:392,duration:.12,delay:80},{freq:523.25,duration:.2,delay:80}],.2)}error(){this.playSequence([{freq:329.63,duration:.15,delay:0},{freq:261.63,duration:.2,delay:100}],.3)}click(){this.playTone(440,.05,.15)}}const di=new qC;function WC(){const[t,e]=R.useState([]),[n,i]=R.useState([]),[o,l]=R.useState("discovery"),[u,d]=R.useState(!1),[h,m]=R.useState(null),[y,v]=R.useState(!0),[w,_]=R.useState(!cy),[b,S]=R.useState(!0),[k,E]=R.useState(!1),[P,N]=R.useState(null),[U,V]=R.useState(!1),[z,$]=R.useState(!1),[B,Y]=R.useState(!1),[oe,Te]=R.useState(!0),[ve,je]=R.useState(()=>localStorage.getItem("theme")||"dark"),xe=R.useRef(null);R.useMemo(()=>{const J=n.length;let K=0,j=0,D=null;for(const fe of n){K+=fe.score,fe.score>j&&(j=fe.score);const ie=new Date(fe.date);(!D||ie>new Date(D.date))&&(D=fe)}const se=J?Math.round(K/J):0,ue=D?new Date(D.date):null;return{total:J,average:se,top:j,latestTimestamp:ue,latestTitle:D?.title??D?.category??null}},[n]),R.useEffect(()=>{(async()=>{if(!cy){_(!0),v(!1);return}try{const{data:j,error:D}=await me.from("init_state").select("is_initialized").single();D?(console.warn("[App] Init check error (might be fresh DB):",D),D.code==="42P01"&&S(!1)):S(j.is_initialized>0);const{data:{session:se}}=await me.auth.getSession();m(se?.user??null)}catch(j){console.error("[App] Status check failed:",j)}finally{v(!1)}})();const{data:{subscription:K}}=me.auth.onAuthStateChange((j,D)=>{m(D?.user??null)});return()=>K.unsubscribe()},[]),R.useEffect(()=>{document.documentElement.setAttribute("data-theme",ve),localStorage.setItem("theme",ve)},[ve]);const[Oe,be]=R.useState({});R.useEffect(()=>{const J=async()=>{if(!h)return;const{data:j}=await me.from("alchemy_settings").select("sync_start_date, last_sync_checkpoint").eq("user_id",h.id).maybeSingle();j&&be(j)};J();const K=setInterval(J,2e3);return()=>clearInterval(K)},[h,U]),R.useEffect(()=>{if(!h)return;(async()=>{const{data:j}=await me.from("alchemy_settings").select("sound_enabled").eq("user_id",h.id).maybeSingle();if(j){const D=j.sound_enabled??!0;Te(D),di.setEnabled(D)}})();const K=me.channel("processing_events").on("postgres_changes",{event:"INSERT",schema:"public",table:"processing_events",filter:`user_id=eq.${h.id}`},j=>{const D=j.new;D.agent_state==="Mining"&&!z&&($(!0),Y(!0),oe&&di.syncStart()),D.agent_state==="Signal"&&oe&&di.signalFound(),D.agent_state==="Completed"&&($(!1),oe&&(D.metadata?.errors>0?di.error():di.syncComplete()),setTimeout(()=>{Y(!1)},5e3),pe())}).subscribe();return()=>{me.removeChannel(K)}},[h,z,oe]),R.useEffect(()=>{const J=new EventSource("/events");return J.onmessage=K=>{const j=JSON.parse(K.data);j.type==="history"?e(D=>[...j.data,...D].slice(0,100)):e(D=>[j,...D].slice(0,100))},pe(),()=>J.close()},[h]),R.useEffect(()=>{xe.current&&xe.current.scrollIntoView({behavior:"smooth"})},[t]);const pe=async()=>{try{if(h){const{data:K,error:j}=await me.from("signals").select("*").order("created_at",{ascending:!1});if(!j&&K){i(K.map(D=>({id:D.id,title:D.title,score:D.score,summary:D.summary,date:D.created_at,category:D.category,entities:D.entities})));return}}const J=await Re.get("/api/signals");i(J.data)}catch(J){console.error("Failed to fetch signals",J)}},F=async()=>{d(!0);try{await Re.post("/api/mine"),pe()}catch(J){console.error("Mining failed:",J)}finally{d(!1)}};return y?p.jsx("div",{className:"flex items-center justify-center h-screen bg-bg",children:p.jsx("div",{className:"w-12 h-12 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):w?p.jsx(Ov,{onComplete:()=>_(!1)}):h?p.jsx(vC,{children:p.jsx(_C,{children:p.jsxs("div",{className:"flex h-screen w-screen overflow-hidden bg-bg text-fg",children:[p.jsxs(Ne.aside,{animate:{width:k?72:240},className:"glass m-4 mr-0 flex flex-col relative",children:[p.jsxs("div",{className:`px-4 py-3 pb-4 flex items-center gap-3 ${k?"justify-center":""}`,children:[p.jsx("div",{className:"w-10 h-10 min-w-[40px] bg-gradient-to-br from-primary to-accent rounded-xl flex items-center justify-center shadow-lg glow-primary",children:p.jsx(kr,{className:"text-white fill-current",size:24})}),!k&&p.jsx(Ne.h1,{initial:{opacity:0},animate:{opacity:1},className:"text-xl font-bold tracking-tight",children:"Alchemist"})]}),p.jsxs("nav",{className:"flex-1 flex flex-col gap-1 px-3",children:[p.jsx(pa,{active:o==="discovery",onClick:()=>l("discovery"),icon:p.jsx(m1,{size:20}),label:"Discovery",collapsed:k}),p.jsx(pa,{active:o==="engine",onClick:()=>l("engine"),icon:p.jsx(sd,{size:20}),label:"Engine",collapsed:k}),p.jsx(pa,{active:o==="logs",onClick:()=>l("logs"),icon:p.jsx(kc,{size:20}),label:"System Logs",collapsed:k}),p.jsx(pa,{active:o==="account",onClick:()=>l("account"),icon:p.jsx(od,{size:20}),label:"Account",collapsed:k})]}),p.jsx("div",{className:"px-3 pb-2",children:p.jsxs("button",{onClick:()=>je(ve==="dark"?"light":"dark"),className:`w-full flex items-center ${k?"justify-center":"gap-3"} px-4 py-2.5 rounded-lg text-fg/40 hover:text-fg hover:bg-surface/50 transition-all text-xs font-medium`,title:k?ve==="dark"?"Switch to Light Mode":"Switch to Dark Mode":"",children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:ve==="dark"?p.jsx(E1,{size:18}):p.jsx(x1,{size:18})}),!k&&p.jsx(Ne.span,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"whitespace-nowrap",children:ve==="dark"?"Light Mode":"Dark Mode"})]})}),p.jsx("div",{className:"px-3 pb-3",children:p.jsx("button",{onClick:()=>E(!k),className:`w-full flex items-center px-4 py-2.5 rounded-lg text-fg/40 hover:text-fg hover:bg-surface/50 transition-all text-xs font-medium ${k?"justify-center":"gap-3"}`,children:k?p.jsx(i1,{size:20}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:p.jsx(s1,{size:20})}),p.jsx("span",{children:"Collapse"})]})})})]}),p.jsxs("main",{className:"flex-1 flex flex-col p-4 gap-4 overflow-hidden relative",children:[o==="discovery"&&p.jsxs(p.Fragment,{children:[p.jsxs("header",{className:"flex justify-between items-center px-4 py-2",children:[p.jsxs("div",{children:[p.jsx("h2",{className:"text-2xl font-bold",children:"Discovery"}),p.jsx("p",{className:"text-sm text-fg/50",children:"Passive intelligence mining from your browser history."})]}),p.jsxs("div",{className:"flex gap-2",children:[p.jsxs("button",{onClick:()=>V(!0),className:"px-4 py-2 glass hover:bg-surface transition-colors flex items-center gap-2 text-sm font-medium",children:[p.jsx(S1,{size:16}),p.jsxs("div",{className:"flex flex-col items-start",children:[p.jsx("span",{children:"Sync Settings"}),(Oe.sync_start_date||Oe.last_sync_checkpoint)&&p.jsx("span",{className:"text-[10px] text-fg/40 font-mono",children:Oe.sync_start_date?`From: ${new Date(Oe.sync_start_date).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}`:Oe.last_sync_checkpoint?`Checkpoint: ${new Date(Oe.last_sync_checkpoint).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}`:""})]})]}),p.jsxs("button",{onClick:F,disabled:z,className:"px-4 py-2 glass hover:bg-surface transition-colors flex items-center gap-2 text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:[p.jsx(id,{size:16,className:z?"animate-spin":""}),z?"Syncing...":"Sync History"]})]})]}),p.jsx(zC,{onOpenUrl:J=>window.open(J,"_blank","noopener,noreferrer"),onCopyText:J=>{navigator.clipboard.writeText(J)}})]}),o==="engine"&&p.jsx(bC,{}),o==="account"&&p.jsx(CC,{}),o==="logs"&&p.jsx(IC,{}),p.jsx(kC,{isExpanded:B,onToggle:()=>Y(!B)})]}),p.jsx(RC,{signal:P,onClose:()=>N(null)}),p.jsx(OC,{isOpen:U,onClose:()=>V(!1)})]})})}):p.jsx(mC,{onAuthSuccess:()=>pe(),isInitialized:b})}function pa({active:t,icon:e,label:n,onClick:i,collapsed:o}){return p.jsx("button",{onClick:i,title:o?n:"",className:`w-full flex items-center ${o?"justify-center":"gap-3"} px-4 py-3 rounded-xl transition-all ${t?"bg-primary/10 text-primary shadow-sm":"text-fg/60 hover:bg-surface hover:text-fg"}`,children:o?_i.cloneElement(e,{className:t?"text-primary":""}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:_i.cloneElement(e,{className:t?"text-primary":""})}),p.jsx(Ne.span,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"font-semibold text-sm whitespace-nowrap",children:n})]})})}function HC(){Re.interceptors.request.use(async t=>{try{const{data:{session:e}}=await me.auth.getSession();e?.access_token&&(t.headers.Authorization=`Bearer ${e.access_token}`);const n=Yd();n&&(t.headers["x-supabase-url"]=n.url,t.headers["x-supabase-key"]=n.anonKey)}catch(e){console.error("[Axios] Error injecting headers:",e)}return t})}HC();qx.createRoot(document.getElementById("root")).render(p.jsx(_i.StrictMode,{children:p.jsx(WC,{})}));
|
|
101
|
+
${t.content}`:""}`,h=new Blob([d],{type:"text/markdown"}),m=URL.createObjectURL(h),y=document.createElement("a");y.href=m,y.download=`${t.title.replace(/[^a-z0-9]/gi,"_").toLowerCase()}.md`,y.click(),URL.revokeObjectURL(m)},u=()=>{const d=JSON.stringify(t,null,2),h=new Blob([d],{type:"application/json"}),m=URL.createObjectURL(h),y=document.createElement("a");y.href=m,y.download=`signal_${t.id}.json`,y.click(),URL.revokeObjectURL(m)};return p.jsx(cn,{children:p.jsx(Ne.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 z-50 flex items-center justify-center p-4 bg-bg/80 backdrop-blur-sm",onClick:e,children:p.jsxs(Ne.div,{initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},onClick:d=>d.stopPropagation(),className:"w-full max-w-4xl max-h-[90vh] glass flex flex-col overflow-hidden",children:[p.jsxs("div",{className:"p-6 border-b border-border/10 flex items-start justify-between",children:[p.jsxs("div",{className:"flex-1 min-w-0 pr-4",children:[p.jsxs("div",{className:"flex items-center gap-3 mb-2",children:[p.jsx("span",{className:"px-2 py-0.5 bg-primary/10 text-primary text-[10px] font-bold rounded border border-primary/20 uppercase tracking-wider",children:t.category||"Research"}),p.jsx("span",{className:`text-3xl font-black ${t.score>=80?"text-accent":"text-fg/40"}`,children:t.score})]}),p.jsx("h2",{className:"text-2xl font-bold leading-tight mb-2",children:t.title}),p.jsxs("p",{className:"text-xs text-fg/40 font-mono",children:["Discovered ",new Date(t.date).toLocaleDateString([],{month:"long",day:"numeric",year:"numeric"})]})]}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-surface rounded-lg text-fg/40 hover:text-fg transition-all",children:p.jsx(Sr,{size:24})})]}),p.jsxs("div",{className:"flex-1 overflow-y-auto custom-scrollbar p-6 space-y-6",children:[t.url&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Original Source"}),p.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-2 p-3 glass hover:bg-surface transition-all rounded-xl text-sm font-mono text-primary hover:text-accent group",children:[p.jsx(Da,{size:16,className:"flex-shrink-0"}),p.jsx("span",{className:"truncate",children:t.url}),p.jsx("span",{className:"ml-auto text-xs opacity-0 group-hover:opacity-100 transition-opacity",children:"Open →"})]})]}),t.entities&&t.entities.length>0&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Entities"}),p.jsx("div",{className:"flex flex-wrap gap-2",children:t.entities.map(d=>p.jsx("span",{className:"px-3 py-1.5 bg-surface/50 border border-border/20 rounded-lg text-sm font-medium",children:d},d))})]}),p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"AI Summary"}),p.jsx("div",{className:"p-4 glass rounded-xl",children:p.jsx("p",{className:"text-sm leading-relaxed text-fg/80",children:t.summary})})]}),t.content&&p.jsxs("div",{className:"space-y-2",children:[p.jsx("label",{className:"text-xs font-bold uppercase tracking-widest text-fg/40",children:"Full Content"}),p.jsx("div",{className:"p-4 glass rounded-xl max-h-96 overflow-y-auto custom-scrollbar",children:p.jsx("p",{className:"text-sm leading-relaxed text-fg/60 whitespace-pre-wrap",children:t.content})})]})]}),p.jsxs("div",{className:"p-6 border-t border-border/10 flex items-center gap-3",children:[p.jsxs("button",{onClick:o,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[n?p.jsx(Si,{size:16,className:"text-success"}):p.jsx(py,{size:16}),n?"Copied!":"Copy"]}),p.jsxs("button",{onClick:l,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[p.jsx(sm,{size:16}),"Markdown"]}),p.jsxs("button",{onClick:u,className:"flex-1 py-3 glass hover:bg-surface transition-all rounded-xl text-sm font-bold uppercase tracking-widest flex items-center justify-center gap-2",children:[p.jsx(sm,{size:16}),"JSON"]})]})]})})})}function OC({isOpen:t,onClose:e}){const{showToast:n}=Dv(),[i,o]=R.useState(""),[l,u]=R.useState(50),[d,h]=R.useState(!1),[m,y]=R.useState(!1);R.useEffect(()=>{t&&v()},[t]);const v=async()=>{const{data:{user:b}}=await me.auth.getUser();if(!b)return;const{data:S}=await me.from("alchemy_settings").select("*").eq("user_id",b.id).maybeSingle();if(S)if(u(S.max_urls_per_sync||50),S.sync_start_date){const k=new Date(S.sync_start_date),E=N=>N<10?"0"+N:N,P=k.getFullYear()+"-"+E(k.getMonth()+1)+"-"+E(k.getDate())+"T"+E(k.getHours())+":"+E(k.getMinutes());o(P)}else o("")},w=async()=>{h(!0);try{const{data:{user:b}}=await me.auth.getUser();if(!b){n("Please log in to save settings","error"),h(!1);return}const{error:S}=await me.from("alchemy_settings").update({max_urls_per_sync:l,sync_start_date:i?new Date(i).toISOString():null}).eq("user_id",b.id);S?n(`Failed to save: ${S.message}`,"error"):(n("Sync settings saved successfully","success"),e())}catch(b){n(`Unexpected error: ${b.message}`,"error")}finally{h(!1)}},_=async()=>{y(!0);try{const{data:{user:b}}=await me.auth.getUser();if(!b){n("Please log in to reset checkpoint","error"),y(!1);return}const{error:S}=await me.from("alchemy_settings").update({last_sync_checkpoint:null}).eq("user_id",b.id);S?n(`Failed to reset: ${S.message}`,"error"):n("Checkpoint reset successfully","success")}catch(b){n(`Unexpected error: ${b.message}`,"error")}finally{y(!1)}};return t?p.jsx("div",{className:"fixed inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 p-4",children:p.jsxs("div",{className:"bg-surface border border-border/20 rounded-2xl shadow-2xl max-w-lg w-full max-h-[90vh] overflow-y-auto",children:[p.jsxs("div",{className:"flex items-center justify-between p-6 border-b border-border/10",children:[p.jsx("h2",{className:"text-xl font-bold",children:"Sync Settings"}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-black/10 rounded-lg transition-colors",children:p.jsx(Sr,{className:"w-5 h-5"})})]}),p.jsxs("div",{className:"p-6 space-y-6",children:[p.jsxs("div",{className:"space-y-3",children:[p.jsxs("label",{className:"text-sm font-semibold flex items-center gap-2",children:[p.jsx(n1,{className:"w-4 h-4 text-primary"}),"Sync From (Optional)"]}),p.jsx("input",{type:"datetime-local",value:i,onChange:b=>o(b.target.value),className:"w-full bg-black/20 border border-border/10 rounded-xl py-3 px-4 text-sm focus:border-primary/30 outline-none transition-all"}),p.jsx("p",{className:"text-xs text-fg/50",children:"Leave empty to sync only new URLs since last sync (incremental). Set a date to process URLs from that point forward."})]}),p.jsxs("div",{className:"space-y-3",children:[p.jsxs("div",{className:"flex justify-between items-center",children:[p.jsxs("label",{className:"text-sm font-semibold flex items-center gap-2",children:[p.jsx(c1,{className:"w-4 h-4 text-primary"}),"URLs per Sync"]}),p.jsx("span",{className:"text-sm font-mono text-primary",children:l})]}),p.jsx("input",{type:"range",min:"5",max:"200",step:"5",value:l,onChange:b=>u(Number(b.target.value)),className:"w-full h-2 bg-black/20 rounded-lg appearance-none cursor-pointer accent-primary"}),p.jsxs("div",{className:"flex justify-between text-xs text-fg/30 font-medium",children:[p.jsx("span",{children:"Quick (5)"}),p.jsx("span",{children:"Balanced (50)"}),p.jsx("span",{children:"Thorough (200)"})]})]}),p.jsxs("div",{className:"pt-4 border-t border-border/10",children:[p.jsxs("button",{onClick:_,disabled:m,className:"w-full px-4 py-2.5 bg-warning/10 hover:bg-warning/20 border border-warning/20 text-warning font-medium rounded-xl transition-all flex items-center justify-center gap-2 text-sm disabled:opacity-50",children:[p.jsx(_1,{size:16,className:m?"animate-spin":""}),m?"Resetting...":"Reset Checkpoint"]}),p.jsx("p",{className:"text-xs text-fg/40 mt-2 text-center",children:'Clear the sync checkpoint to force a full re-sync from your "Sync From" date'})]}),p.jsx("div",{className:"p-4 bg-primary/5 rounded-xl",children:p.jsx("p",{className:"text-xs text-primary/60 leading-relaxed",children:'The Alchemist tracks your progress automatically. Use "Sync From" to backfill history or "Reset Checkpoint" to start fresh.'})})]}),p.jsxs("div",{className:"flex gap-3 p-6 border-t border-border/10",children:[p.jsx("button",{onClick:e,className:"flex-1 px-4 py-2.5 bg-surface hover:bg-black/10 border border-border/10 rounded-xl font-medium transition-all",children:"Cancel"}),p.jsxs("button",{onClick:w,disabled:d,className:"flex-1 px-4 py-2.5 bg-gradient-to-r from-primary to-accent text-white font-bold rounded-xl shadow-lg hover:scale-[1.02] active:scale-95 transition-all flex items-center justify-center gap-2 disabled:opacity-50",children:[p.jsx(_a,{size:18,className:d?"animate-spin":""}),d?"Saving...":"Save Settings"]})]})]})}):null}function IC(){const[t,e]=R.useState([]),[n,i]=R.useState(!0),[o,l]=R.useState(null),[u,d]=R.useState(null),[h,m]=R.useState([]),[y,v]=R.useState([]),[w,_]=R.useState([]),[b,S]=R.useState(!1);R.useEffect(()=>{k()},[]);const k=async()=>{i(!0);try{const{data:{user:$}}=await me.auth.getUser();if(!$)return;const{data:B,error:Y}=await me.from("processing_events").select("*").eq("user_id",$.id).eq("agent_state","Completed").order("created_at",{ascending:!1}).limit(50);if(Y){console.error("Error fetching sync runs:",Y);return}const oe=(B||[]).map(Te=>{const ve=Te.metadata||{},je=ve.errors||0,xe=ve.signals_found||0,Oe=ve.skipped||0;return{id:Te.id,started_at:Te.created_at,completed_at:Te.created_at,duration_ms:Te.duration_ms||0,signals_found:xe,urls_processed:ve.total_urls||0,skipped:Oe,errors:je,status:je>0?"partial":xe>0?"success":"failed"}});e(oe)}catch($){console.error("Failed to fetch sync runs:",$)}finally{i(!1)}},E=async $=>{S(!0);try{const{data:{user:B}}=await me.auth.getUser();if(!B)return;const Y=t.find(F=>F.id===$);if(!Y)return;const oe=new Date(new Date(Y.started_at).getTime()-Y.duration_ms),Te=new Date(Y.completed_at),{data:ve,error:je}=await me.from("processing_events").select("*").eq("user_id",B.id).gte("created_at",oe.toISOString()).lte("created_at",Te.toISOString()).order("created_at",{ascending:!0});if(je){console.error("Error fetching run events:",je);return}m(ve||[]);const xe=[],Oe=(ve||[]).filter(F=>F.agent_state==="Mining"&&F.message.includes("Mining source:"));for(const F of Oe){const J=F.message.match(/Mining source: (.+) \((.+)\)/);if(J){const K=J[1],j=J[2],D=(ve||[]).find(fe=>fe.agent_state==="Mining"&&fe.message.includes("Found")&&fe.message.includes(K)&&fe.created_at>F.created_at),se=D?.message.match(/Found (\d+) URLs/),ue=se?parseInt(se[1]):0;xe.push({label:K,browser:j,urls_found:ue,duration_ms:D?.duration_ms||0,status:F.event_type==="error"?"error":"success"})}}v(xe);const be=[],pe=(ve||[]).filter(F=>F.agent_state==="Reading");for(const F of pe){const J=F.message.match(/Reading content from: (.+)/);if(!J)continue;const K=J[1];let j=xe.length>0?xe[0].label:"Unknown";const D=xe.filter(ie=>ie.urls_found>0);(D.length===1||D.length>1)&&(j=D[0].label),console.log(`[SystemLogs] URL ${K} assigned to source: ${j}`);const se=(ve||[]).find(ie=>ie.agent_state==="Signal"&&ie.created_at>F.created_at&&ie.message.includes("Found signal")),ue=(ve||[]).find(ie=>ie.agent_state==="Skipped"&&ie.created_at>F.created_at&&ie.message.includes("Irrelevant content")),fe=(ve||[]).find(ie=>ie.event_type==="error"&&ie.created_at>F.created_at);if(se){const ie=se.message.match(/\((\d+)%\)/),Ee=ie?parseInt(ie[1]):0;be.push({url:K,result:"signal",score:Ee,category:se.details?.category||"Unknown",duration_ms:se.duration_ms,source_label:j})}else if(ue){const ie=ue.message.match(/\((\d+)%\): (.+)/),Ee=ie?parseInt(ie[1]):0,ke=ie?ie[2]:"Irrelevant";be.push({url:K,result:"skipped",score:Ee,reason:ke,duration_ms:ue.duration_ms,source_label:j})}else fe&&be.push({url:K,result:"error",reason:fe.message,source_label:j})}_(be)}catch(B){console.error("Failed to fetch run details:",B)}finally{S(!1)}},P=$=>{o===$?(l(null),d(null),v([]),_([])):(l($),d(null),E($))},N=$=>{d(u===$?null:$)},U=$=>{if($<1e3)return`${$}ms`;const B=Math.floor($/1e3);if(B<60)return`${B}s`;const Y=Math.floor(B/60),oe=B%60;return`${Y}m ${oe}s`},V=$=>{switch($){case"success":return p.jsx(rd,{className:"w-5 h-5 text-success"});case"failed":return p.jsx(um,{className:"w-5 h-5 text-error"});case"partial":return p.jsx(Mi,{className:"w-5 h-5 text-warning"});default:return p.jsx(ps,{className:"w-5 h-5 text-fg/40"})}},z=$=>{switch($){case"signal":return p.jsx(kr,{className:"w-4 h-4 text-primary"});case"skipped":return p.jsx(k1,{className:"w-4 h-4 text-fg/40"});case"error":return p.jsx(um,{className:"w-4 h-4 text-error"});default:return null}};return n?p.jsx("div",{className:"flex items-center justify-center h-full",children:p.jsx("div",{className:"w-12 h-12 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):p.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden p-8",children:[p.jsxs("div",{className:"mb-6",children:[p.jsx("h2",{className:"text-2xl font-bold",children:"System Logs"}),p.jsx("p",{className:"text-sm text-fg/50",children:"Detailed history of sync runs, sources, and URL processing"})]}),p.jsx("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:t.length===0?p.jsxs("div",{className:"text-center py-12 text-fg/40",children:[p.jsx(ps,{className:"w-12 h-12 mx-auto mb-4 opacity-50"}),p.jsx("p",{children:"No sync runs yet"})]}):p.jsx("div",{className:"space-y-2",children:t.map($=>p.jsxs("div",{className:"glass rounded-xl overflow-hidden",children:[p.jsxs("button",{onClick:()=>P($.id),className:"w-full p-4 flex items-center gap-4 hover:bg-surface/50 transition-colors text-left",children:[o===$.id?p.jsx(ba,{className:"w-5 h-5 text-primary shrink-0"}):p.jsx(rm,{className:"w-5 h-5 text-fg/40 shrink-0"}),V($.status),p.jsxs("div",{className:"flex-1 grid grid-cols-6 gap-4 items-center",children:[p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Timestamp"}),p.jsx("div",{className:"text-sm font-mono",children:new Date($.started_at).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Duration"}),p.jsx("div",{className:"text-sm font-mono",children:U($.duration_ms)})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Signals"}),p.jsx("div",{className:"text-sm font-semibold text-primary",children:$.signals_found})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Skipped"}),p.jsx("div",{className:"text-sm font-semibold text-fg/60",children:$.skipped})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"URLs"}),p.jsx("div",{className:"text-sm font-semibold",children:$.urls_processed})]}),p.jsxs("div",{children:[p.jsx("div",{className:"text-xs text-fg/40 uppercase tracking-wider",children:"Errors"}),p.jsx("div",{className:`text-sm font-semibold ${$.errors>0?"text-error":"text-fg/40"}`,children:$.errors})]})]})]}),p.jsx(cn,{children:o===$.id&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"border-t border-border/10 overflow-hidden",children:p.jsx("div",{className:"p-4 bg-black/10 space-y-2",children:b?p.jsx("div",{className:"flex items-center justify-center py-8",children:p.jsx("div",{className:"w-8 h-8 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):y.length===0?p.jsx("div",{className:"text-center py-4 text-fg/40 text-sm",children:"No source details available"}):y.map((B,Y)=>p.jsxs("div",{className:"glass rounded-lg overflow-hidden",children:[p.jsxs("button",{onClick:()=>N(B.label),className:"w-full p-3 flex items-center gap-3 hover:bg-surface/50 transition-colors text-left",children:[u===B.label?p.jsx(ba,{className:"w-4 h-4 text-primary shrink-0"}):p.jsx(rm,{className:"w-4 h-4 text-fg/40 shrink-0"}),p.jsxs("div",{className:"flex-1 flex items-center gap-4",children:[p.jsxs("div",{className:"flex-1",children:[p.jsx("div",{className:"text-sm font-semibold",children:B.label}),p.jsx("div",{className:"text-xs text-fg/40",children:B.browser})]}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs text-fg/40",children:"URLs Found"}),p.jsx("div",{className:"text-sm font-semibold",children:B.urls_found})]}),p.jsxs("div",{className:"text-right",children:[p.jsx("div",{className:"text-xs text-fg/40",children:"Duration"}),p.jsx("div",{className:"text-sm font-mono",children:U(B.duration_ms)})]})]})]}),p.jsx(cn,{children:u===B.label&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"border-t border-border/10 overflow-hidden",children:p.jsx("div",{className:"p-3 bg-black/20 max-h-96 overflow-y-auto custom-scrollbar space-y-1",children:w.filter(oe=>oe.source_label===B.label).length===0?p.jsx("div",{className:"text-center py-4 text-fg/40 text-xs",children:"No URL details available for this source"}):w.filter(oe=>oe.source_label===B.label).map((oe,Te)=>p.jsxs("div",{className:"flex items-center gap-2 p-2 rounded bg-surface/30 hover:bg-surface/50 transition-colors",children:[z(oe.result),p.jsxs("div",{className:"flex-1 min-w-0",children:[p.jsx("div",{className:"text-xs font-mono truncate text-fg/80",children:oe.url}),oe.result==="signal"&&p.jsxs("div",{className:"text-[10px] text-primary",children:["Signal (",oe.score,"%) - ",oe.category]}),oe.result==="skipped"&&p.jsxs("div",{className:"text-[10px] text-fg/40",children:["Skipped (",oe.score,"%) - ",oe.reason]}),oe.result==="error"&&p.jsxs("div",{className:"text-[10px] text-error",children:["Error: ",oe.reason]})]}),p.jsx("a",{href:oe.url,target:"_blank",rel:"noopener noreferrer",className:"p-1 hover:bg-surface rounded",onClick:ve=>ve.stopPropagation(),children:p.jsx(Da,{className:"w-3 h-3 text-fg/40"})})]},Te))})})})]},Y))})})})]},$.id))})})]})}function DC({signals:t,limit:e=10,onSignalClick:n}){const i=t.slice(0,e),[o,l]=R.useState(()=>{const h=localStorage.getItem("newSignalsFeedExpanded");return h!==null?h==="true":!0});R.useEffect(()=>{localStorage.setItem("newSignalsFeedExpanded",String(o))},[o]);const u=h=>h>=80?"bg-yellow-400/20 text-yellow-400 border-yellow-400/30":h>=50?"bg-blue-400/20 text-blue-400 border-blue-400/30":"bg-gray-400/20 text-gray-400 border-gray-400/30",d=h=>{const m=new Date(h),v=new Date().getTime()-m.getTime(),w=Math.floor(v/6e4),_=Math.floor(v/36e5);return w<1?"Just now":w<60?`${w}m ago`:_<24?`${_}h ago`:m.toLocaleDateString("en-US",{month:"short",day:"numeric"})};return i.length===0?null:p.jsxs("div",{className:"mb-3",children:[p.jsxs("button",{onClick:()=>l(!o),className:"w-full flex items-center justify-between mb-2 px-1 py-1 hover:bg-surface/30 rounded-lg transition-colors",children:[p.jsx("div",{className:"flex items-center gap-2",children:p.jsxs("h3",{className:"text-sm font-semibold text-fg/70 uppercase tracking-wide",children:["New Signals (",i.length,")"]})}),o?p.jsx(fy,{size:16,className:"text-fg/40"}):p.jsx(ba,{size:16,className:"text-fg/40"})]}),p.jsx(cn,{children:o&&p.jsx(Ne.div,{initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2},className:"overflow-hidden",children:p.jsx("div",{className:"overflow-x-auto pb-3 -mx-4 px-4 custom-scrollbar",children:p.jsx("div",{className:"flex gap-3 min-w-max",children:i.map(h=>p.jsxs(Ne.button,{onClick:()=>n(h.id),whileHover:{scale:1.05,y:-2},whileTap:{scale:.98},className:"flex-shrink-0 w-[120px] bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-3 hover:border-blue-400/30 transition-all duration-300 text-left group",children:[p.jsx("div",{className:`w-12 h-12 rounded-full border-2 flex items-center justify-center mx-auto mb-2 ${u(h.score)}`,children:p.jsx("span",{className:"text-xl font-bold",children:h.score})}),p.jsx("p",{className:"text-xs text-fg line-clamp-2 mb-2 group-hover:text-blue-400 transition-colors",children:h.title}),p.jsxs("div",{className:"flex items-center gap-1 text-[10px] text-fg/40",children:[p.jsx(ps,{size:10}),p.jsx("span",{children:d(h.created_at)})]})]},h.id))})})})})]})}const Li=[{id:"ai",name:"AI & ML",icon:hy,color:"blue",priority:1},{id:"business",name:"Business",icon:e1,color:"purple",priority:1},{id:"politics",name:"Politics",icon:p1,color:"red",priority:1},{id:"technology",name:"Technology",icon:sd,color:"cyan",priority:1},{id:"finance",name:"Finance",icon:a1,color:"green",priority:1},{id:"crypto",name:"Crypto",icon:Xx,color:"orange",priority:1},{id:"science",name:"Science",icon:v1,color:"teal",priority:1}],Xd={id:"other",name:"Other",icon:T1,color:"gray",priority:3},LC=[...Li,Xd];function MC(t){const e={blue:"bg-blue-500/20 text-blue-400 border-blue-500/30",purple:"bg-purple-500/20 text-purple-400 border-purple-500/30",red:"bg-red-500/20 text-red-400 border-red-500/30",cyan:"bg-cyan-500/20 text-cyan-400 border-cyan-500/30",green:"bg-green-500/20 text-green-400 border-green-500/30",orange:"bg-orange-500/20 text-orange-400 border-orange-500/30",teal:"bg-teal-500/20 text-teal-400 border-teal-500/30",gray:"bg-gray-500/20 text-gray-400 border-gray-500/30"};return e[t]||e.gray}function Uv(t,e){if(e){const n=Li.find(i=>i.id===e.toLowerCase());if(n)return n.id}for(const n of t){const i=n.toLowerCase(),o=Li.find(l=>i.includes(l.id)||i.includes(l.name.toLowerCase()));if(o)return o.id}return null}function UC({category:t,signalCount:e,latestTimestamp:n,onClick:i}){const o=u=>{const d=new Date(u),m=new Date().getTime()-d.getTime(),y=Math.floor(m/6e4),v=Math.floor(m/36e5),w=Math.floor(m/864e5);return y<60?`${y}m ago`:v<24?`${v}h ago`:w<7?`${w}d ago`:d.toLocaleDateString("en-US",{month:"short",day:"numeric"})},l=t.icon;return p.jsxs(Ne.button,{whileHover:{scale:1.05,y:-4},whileTap:{scale:.98},onClick:i,className:"bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-6 cursor-pointer hover:border-white/20 transition-all duration-300 text-left w-full",children:[p.jsx("div",{className:"mb-4",children:p.jsx(l,{size:40,className:"text-current opacity-80"})}),p.jsx("h3",{className:"text-lg font-semibold mb-3 text-fg",children:t.name}),p.jsxs("div",{className:"flex items-center justify-between text-sm",children:[p.jsxs("span",{className:`px-2 py-1 rounded text-xs font-medium ${MC(t.color)}`,children:[e," ",e===1?"signal":"signals"]}),p.jsxs("span",{className:"text-fg/40 flex items-center gap-1 text-xs",children:[p.jsx(ps,{size:12}),o(n)]})]})]})}const $C=3;function VC({signals:t,onCategoryClick:e}){const{categories:n,categoryCounts:i}=R.useMemo(()=>{const o=new Map,l=new Map;t.forEach(m=>{const y=m.tags||[],v=Uv(y,m.category);if(v){const w=o.get(v)||{count:0,latest:m.created_at};o.set(v,{count:w.count+1,latest:m.created_at>w.latest?m.created_at:w.latest})}else y.forEach(w=>{const _=w.toLowerCase().trim();if(_){l.set(_,(l.get(_)||0)+1);const b=o.get(_)||{count:0,latest:m.created_at};o.set(_,{count:b.count+1,latest:m.created_at>b.latest?m.created_at:b.latest})}})});const u=Array.from(l.entries()).filter(([m,y])=>y>=$C).map(([m,y])=>({id:m,name:m.charAt(0).toUpperCase()+m.slice(1),icon:d1,color:"gray",priority:2}));return{categories:[...Li,...u,Xd].filter(m=>{const y=o.get(m.id);return y&&y.count>0}).sort((m,y)=>m.priority-y.priority),categoryCounts:o}},[t]);return n.length===0?p.jsxs("div",{className:"h-64 flex flex-col items-center justify-center text-fg/20",children:[p.jsx("p",{className:"font-medium italic",children:"No categories yet."}),p.jsx("p",{className:"text-sm mt-2",children:"Signals will be organized here once discovered."})]}):p.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:n.map(o=>{const l=i.get(o.id);return p.jsx(UC,{category:o,signalCount:l.count,latestTimestamp:l.latest,onClick:()=>e(o.id)},o.id)})})}function FC({signal:t,onOpen:e,onCopy:n,onArchive:i,onBookmark:o}){const[l,u]=R.useState(!1),d=v=>v>=80?"text-yellow-400 border-yellow-400/30":v>=50?"text-blue-400 border-blue-400/30":"text-gray-400 border-gray-400/30",h=v=>v>=80?"HIGH":v>=50?"MEDIUM":"LOW",m=(v,w)=>{const _=Uv(w||[],v);if(_){const b=Li.find(S=>S.id===_);if(b)return b}return Xd},y=v=>{const w=new Date(v),b=new Date().getTime()-w.getTime(),S=Math.floor(b/6e4),k=Math.floor(b/36e5),E=Math.floor(b/864e5);return S<60?`${S}m ago`:k<24?`${k}h ago`:E<7?`${E}d ago`:w.toLocaleDateString("en-US",{month:"short",day:"numeric"})};return p.jsxs(Ne.div,{whileHover:{scale:1.02,boxShadow:"0 8px 24px rgba(59, 130, 246, 0.3)"},onHoverStart:()=>u(!0),onHoverEnd:()=>u(!1),className:"bg-surface/50 backdrop-blur-sm border border-white/10 rounded-lg p-6 flex flex-col gap-4 transition-all duration-300",children:[p.jsxs("div",{className:"flex items-start justify-between",children:[p.jsx("div",{className:"flex items-center gap-3",children:p.jsxs("div",{className:`flex flex-col items-center justify-center w-16 h-16 rounded-full border-2 ${d(t.score)}`,children:[p.jsx("span",{className:"text-2xl font-bold",children:t.score}),p.jsx("span",{className:"text-[10px] font-medium opacity-70",children:h(t.score)})]})}),p.jsxs("div",{className:"flex items-center gap-2",children:[(()=>{const v=m(t.category,t.tags),w=v.icon;return p.jsxs("span",{className:"px-2 py-1 bg-blue-500/20 text-blue-400 text-xs font-medium rounded border border-blue-500/30 flex items-center gap-1.5",children:[p.jsx(w,{size:14}),v.name]})})(),p.jsxs("span",{className:"text-xs text-fg/50 flex items-center gap-1",children:[p.jsx(ps,{size:12}),y(t.created_at)]})]})]}),p.jsxs("div",{className:"flex-1",children:[p.jsx("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"text-lg font-semibold text-fg hover:text-blue-400 transition-colors line-clamp-2 mb-2 block",onClick:v=>{v.preventDefault(),e?.(t.url)},children:t.title}),p.jsx("p",{className:"text-sm text-fg/70 line-clamp-3",children:t.summary})]}),t.entities&&t.entities.length>0&&p.jsxs("div",{className:"flex flex-wrap gap-2",children:[t.entities.slice(0,4).map((v,w)=>p.jsx("span",{className:"px-2 py-1 bg-white/5 text-fg/60 text-xs rounded border border-white/10",children:v},w)),t.entities.length>4&&p.jsxs("span",{className:"px-2 py-1 text-fg/40 text-xs",children:["+",t.entities.length-4," more"]})]}),p.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t border-white/5",children:[p.jsxs("button",{onClick:()=>e?.(t.url),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-white/10 rounded transition-colors text-sm",title:"Open URL",children:[p.jsx(Da,{size:14}),p.jsx("span",{children:"Open"})]}),p.jsxs("button",{onClick:()=>n?.(t.summary),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-white/10 rounded transition-colors text-sm",title:"Copy Summary",children:[p.jsx(py,{size:14}),p.jsx("span",{children:"Copy"})]}),p.jsxs("button",{onClick:()=>i?.(t.id),className:"flex-1 flex items-center justify-center gap-2 px-3 py-2 bg-white/5 hover:bg-red-500/20 hover:text-red-400 rounded transition-colors text-sm",title:"Archive",children:[p.jsx(Jx,{size:14}),p.jsx("span",{children:"Archive"})]}),o&&p.jsx("button",{onClick:()=>o(t.id),className:"px-3 py-2 bg-white/5 hover:bg-yellow-500/20 hover:text-yellow-400 rounded transition-colors",title:"Bookmark",children:p.jsx(Zx,{size:14})})]})]})}function BC({isOpen:t,onClose:e,categoryId:n,signals:i,onOpenUrl:o,onCopyText:l,onArchive:u}){const d=LC.find(w=>w.id===n),h=i.filter(w=>{const _=w.tags||[],b=w.category?.toLowerCase()===n,S=_.some(k=>k.toLowerCase().includes(n));return b||S}),m=w=>{o?o(w):window.open(w,"_blank","noopener,noreferrer")},y=w=>{l?l(w):navigator.clipboard.writeText(w)},v=async w=>{u&&await u(w)};return p.jsx(cn,{children:t&&p.jsxs(p.Fragment,{children:[p.jsx(Ne.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},onClick:e,className:"fixed inset-0 bg-black/50 backdrop-blur-sm z-40"}),p.jsx(Ne.div,{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"},transition:{type:"spring",damping:30,stiffness:300},className:"fixed right-0 top-0 h-full w-full md:w-2/3 lg:w-1/2 bg-bg border-l border-white/10 z-50 overflow-y-auto custom-scrollbar",children:p.jsxs("div",{className:"p-6",children:[p.jsxs("div",{className:"flex items-center justify-between mb-6 sticky top-0 bg-bg pb-4 border-b border-white/10",children:[p.jsxs("div",{className:"flex items-center gap-3",children:[d?.icon&&p.jsx("div",{className:"w-10 h-10 flex items-center justify-center",children:p.jsx(d.icon,{size:40,className:"text-current opacity-80"})}),p.jsxs("div",{children:[p.jsx("h2",{className:"text-2xl font-bold",children:d?.name}),p.jsxs("p",{className:"text-sm text-fg/50",children:[h.length," ",h.length===1?"signal":"signals"]})]})]}),p.jsx("button",{onClick:e,className:"p-2 hover:bg-white/10 rounded transition-colors","aria-label":"Close drawer",children:p.jsx(Sr,{size:24})})]}),p.jsx("div",{className:"space-y-4",children:h.length===0?p.jsx("div",{className:"h-64 flex items-center justify-center text-fg/30",children:p.jsx("p",{className:"italic",children:"No signals in this category yet."})}):h.map(w=>p.jsx(FC,{signal:w,onOpen:m,onCopy:y,onArchive:v},w.id))})]})})]})})}function zC({onOpenUrl:t,onCopyText:e}){const[n,i]=R.useState([]),[o,l]=R.useState(!0),[u,d]=R.useState(null),[h,m]=R.useState(""),[y,v]=R.useState(null);R.useEffect(()=>{(async()=>{l(!0);let E=me.from("signals").select("*").order("created_at",{ascending:!1}).limit(50);y&&(E=E.ilike("category",y)),h&&(E=E.or(`title.ilike.%${h}%,summary.ilike.%${h}%,url.ilike.%${h}%`));const{data:P,error:N}=await E;N?console.error("Error fetching signals:",N):i(P||[]),l(!1)})();const k=me.channel("signals").on("postgres_changes",{event:"INSERT",schema:"public",table:"signals"},E=>{i(P=>[E.new,...P])}).subscribe();return()=>{k.unsubscribe()}},[h,y]);const w=S=>{t?t(S):window.open(S,"_blank","noopener,noreferrer")},_=S=>{e?e(S):navigator.clipboard.writeText(S)},b=async S=>{await me.from("signals").delete().eq("id",S),i(k=>k.filter(E=>E.id!==S))};return p.jsxs("div",{className:"flex-1 flex flex-col overflow-hidden",children:[p.jsx("div",{className:"px-4 pt-3",children:p.jsx(DC,{signals:n,limit:10,onSignalClick:S=>{const k=n.find(E=>E.id===S);k&&k.category&&d(k.category.toLowerCase())}})}),p.jsxs("div",{className:"px-4 pt-2 pb-2 space-y-3",children:[p.jsxs("div",{className:"relative",children:[p.jsx(Sc,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-fg/40"}),p.jsx("input",{type:"text",placeholder:"Search signals by title, summary, or URL...",value:h,onChange:S=>m(S.target.value),className:"w-full bg-surface border border-border/20 rounded-xl py-3 pl-10 pr-10 text-sm text-fg placeholder:text-fg/40 focus:border-primary/50 focus:ring-2 focus:ring-primary/20 outline-none transition-all"}),h&&p.jsx("button",{onClick:()=>m(""),className:"absolute right-3 top-1/2 -translate-y-1/2 text-fg/40 hover:text-fg transition-colors",title:"Clear search",children:p.jsx(Sr,{size:16})})]}),p.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[p.jsx(l1,{className:"w-3.5 h-3.5 text-fg/40"}),p.jsx("button",{onClick:()=>v(null),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-all ${y===null?"bg-primary text-white shadow-sm":"bg-surface hover:bg-surface/80 text-fg/60 hover:text-fg border border-border/20"}`,children:"All"}),["AI & ML","Business","Politics","Technology","Finance","Crypto","Science","Other"].map(S=>p.jsx("button",{onClick:()=>v(S),className:`px-3 py-1.5 rounded-lg text-xs font-medium transition-all ${y===S?"bg-primary text-white shadow-sm":"bg-surface hover:bg-surface/80 text-fg/60 hover:text-fg border border-border/20"}`,children:S},S))]})]}),p.jsx("div",{className:"flex-1 overflow-y-auto px-4 pb-12 custom-scrollbar",children:o?p.jsx("div",{className:"h-64 flex items-center justify-center text-fg/30",children:p.jsx("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-400"})}):p.jsx(VC,{signals:n,onCategoryClick:S=>d(S)})}),p.jsx(BC,{isOpen:!!u,onClose:()=>d(null),categoryId:u||"",signals:n,onOpenUrl:w,onCopyText:_,onArchive:b})]})}class qC{audioContext=null;enabled=!0;constructor(){}getAudioContext(){return this.audioContext||(this.audioContext=new(window.AudioContext||window.webkitAudioContext)),this.audioContext}setEnabled(e){this.enabled=e}isEnabled(){return this.enabled}playTone(e,n,i=.3){if(this.enabled)try{const o=this.getAudioContext(),l=o.createOscillator(),u=o.createGain();l.connect(u),u.connect(o.destination),l.frequency.value=e,l.type="sine",u.gain.setValueAtTime(i,o.currentTime),u.gain.exponentialRampToValueAtTime(.01,o.currentTime+n),l.start(o.currentTime),l.stop(o.currentTime+n)}catch(o){console.warn("[Sound] Failed to play tone:",o)}}playSequence(e,n=.3){if(!this.enabled)return;let i=0;e.forEach(o=>{setTimeout(()=>{this.playTone(o.freq,o.duration,n)},i),i+=o.delay})}syncStart(){this.playSequence([{freq:261.63,duration:.15,delay:0},{freq:329.63,duration:.15,delay:100},{freq:392,duration:.2,delay:100}],.2)}signalFound(){this.playSequence([{freq:392,duration:.1,delay:0},{freq:523.25,duration:.15,delay:80}],.25)}syncComplete(){this.playSequence([{freq:261.63,duration:.12,delay:0},{freq:329.63,duration:.12,delay:80},{freq:392,duration:.12,delay:80},{freq:523.25,duration:.2,delay:80}],.2)}error(){this.playSequence([{freq:329.63,duration:.15,delay:0},{freq:261.63,duration:.2,delay:100}],.3)}click(){this.playTone(440,.05,.15)}}const di=new qC;function WC(){const[t,e]=R.useState([]),[n,i]=R.useState([]),[o,l]=R.useState("discovery"),[u,d]=R.useState(!1),[h,m]=R.useState(null),[y,v]=R.useState(!0),[w,_]=R.useState(!cy),[b,S]=R.useState(!0),[k,E]=R.useState(!1),[P,N]=R.useState(null),[U,V]=R.useState(!1),[z,$]=R.useState(!1),[B,Y]=R.useState(!1),[oe,Te]=R.useState(!0),[ve,je]=R.useState(()=>localStorage.getItem("theme")||"dark"),xe=R.useRef(null);R.useMemo(()=>{const J=n.length;let K=0,j=0,D=null;for(const fe of n){K+=fe.score,fe.score>j&&(j=fe.score);const ie=new Date(fe.date);(!D||ie>new Date(D.date))&&(D=fe)}const se=J?Math.round(K/J):0,ue=D?new Date(D.date):null;return{total:J,average:se,top:j,latestTimestamp:ue,latestTitle:D?.title??D?.category??null}},[n]),R.useEffect(()=>{(async()=>{if(!cy){_(!0),v(!1);return}try{const{data:j,error:D}=await me.from("init_state").select("is_initialized").single();D?(console.warn("[App] Init check error (might be fresh DB):",D),D.code==="42P01"&&S(!1)):S(j.is_initialized>0);const{data:{session:se}}=await me.auth.getSession();m(se?.user??null)}catch(j){console.error("[App] Status check failed:",j)}finally{v(!1)}})();const{data:{subscription:K}}=me.auth.onAuthStateChange((j,D)=>{m(D?.user??null)});return()=>K.unsubscribe()},[]),R.useEffect(()=>{document.documentElement.setAttribute("data-theme",ve),localStorage.setItem("theme",ve)},[ve]);const[Oe,be]=R.useState({});R.useEffect(()=>{const J=async()=>{if(!h)return;const{data:j}=await me.from("alchemy_settings").select("sync_start_date, last_sync_checkpoint").eq("user_id",h.id).maybeSingle();j&&be(j)};J();const K=setInterval(J,2e3);return()=>clearInterval(K)},[h,U]),R.useEffect(()=>{if(!h)return;(async()=>{const{data:j}=await me.from("alchemy_settings").select("sound_enabled").eq("user_id",h.id).maybeSingle();if(j){const D=j.sound_enabled??!0;Te(D),di.setEnabled(D)}})();const K=me.channel("processing_events").on("postgres_changes",{event:"INSERT",schema:"public",table:"processing_events",filter:`user_id=eq.${h.id}`},j=>{const D=j.new;D.agent_state==="Mining"&&!z&&($(!0),Y(!0),oe&&di.syncStart()),D.agent_state==="Signal"&&oe&&di.signalFound(),D.agent_state==="Completed"&&($(!1),oe&&(D.metadata?.errors>0?di.error():di.syncComplete()),setTimeout(()=>{Y(!1)},5e3),pe())}).subscribe();return()=>{me.removeChannel(K)}},[h,z,oe]),R.useEffect(()=>{const J=new EventSource("/events");return J.onmessage=K=>{const j=JSON.parse(K.data);j.type==="history"?e(D=>[...j.data,...D].slice(0,100)):e(D=>[j,...D].slice(0,100))},pe(),()=>J.close()},[h]),R.useEffect(()=>{xe.current&&xe.current.scrollIntoView({behavior:"smooth"})},[t]);const pe=async()=>{try{if(h){const{data:K,error:j}=await me.from("signals").select("*").order("created_at",{ascending:!1});if(!j&&K){i(K.map(D=>({id:D.id,title:D.title,score:D.score,summary:D.summary,date:D.created_at,category:D.category,entities:D.entities})));return}}const J=await Re.get("/api/signals");i(J.data)}catch(J){console.error("Failed to fetch signals",J)}},F=async()=>{d(!0);try{await Re.post("/api/mine"),pe()}catch(J){console.error("Mining failed:",J)}finally{d(!1)}};return y?p.jsx("div",{className:"flex items-center justify-center h-screen bg-bg",children:p.jsx("div",{className:"w-12 h-12 border-4 border-primary/20 border-t-primary rounded-full animate-spin"})}):w?p.jsx(Ov,{onComplete:()=>_(!1)}):h?p.jsx(vC,{children:p.jsx(_C,{children:p.jsxs("div",{className:"flex h-screen w-screen overflow-hidden bg-bg text-fg",children:[p.jsxs(Ne.aside,{animate:{width:k?72:240},className:"glass m-4 mr-0 flex flex-col relative",children:[p.jsxs("div",{className:`px-4 py-3 pb-4 flex items-center gap-3 ${k?"justify-center":""}`,children:[p.jsx("div",{className:"w-10 h-10 min-w-[40px] bg-gradient-to-br from-primary to-accent rounded-xl flex items-center justify-center shadow-lg glow-primary",children:p.jsx(kr,{className:"text-white fill-current",size:24})}),!k&&p.jsx(Ne.h1,{initial:{opacity:0},animate:{opacity:1},className:"text-xl font-bold tracking-tight",children:"Alchemist"})]}),p.jsxs("nav",{className:"flex-1 flex flex-col gap-1 px-3",children:[p.jsx(pa,{active:o==="discovery",onClick:()=>l("discovery"),icon:p.jsx(m1,{size:20}),label:"Discovery",collapsed:k}),p.jsx(pa,{active:o==="engine",onClick:()=>l("engine"),icon:p.jsx(sd,{size:20}),label:"Engine",collapsed:k}),p.jsx(pa,{active:o==="logs",onClick:()=>l("logs"),icon:p.jsx(kc,{size:20}),label:"System Logs",collapsed:k}),p.jsx(pa,{active:o==="account",onClick:()=>l("account"),icon:p.jsx(od,{size:20}),label:"Account",collapsed:k})]}),p.jsx("div",{className:"px-3 pb-2",children:p.jsxs("button",{onClick:()=>je(ve==="dark"?"light":"dark"),className:`w-full flex items-center ${k?"justify-center":"gap-3"} px-4 py-2.5 rounded-lg text-fg/40 hover:text-fg hover:bg-surface/50 transition-all text-xs font-medium`,title:k?ve==="dark"?"Switch to Light Mode":"Switch to Dark Mode":"",children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:ve==="dark"?p.jsx(E1,{size:18}):p.jsx(x1,{size:18})}),!k&&p.jsx(Ne.span,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"whitespace-nowrap",children:ve==="dark"?"Light Mode":"Dark Mode"})]})}),p.jsx("div",{className:"px-3 pb-3",children:p.jsx("button",{onClick:()=>E(!k),className:`w-full flex items-center px-4 py-2.5 rounded-lg text-fg/40 hover:text-fg hover:bg-surface/50 transition-all text-xs font-medium ${k?"justify-center":"gap-3"}`,children:k?p.jsx(i1,{size:20}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:p.jsx(s1,{size:20})}),p.jsx("span",{children:"Collapse"})]})})})]}),p.jsxs("main",{className:"flex-1 flex flex-col p-4 gap-4 overflow-hidden relative",children:[o==="discovery"&&p.jsxs(p.Fragment,{children:[p.jsxs("header",{className:"flex justify-between items-center px-4 py-2",children:[p.jsxs("div",{children:[p.jsx("h2",{className:"text-2xl font-bold",children:"Discovery"}),p.jsx("p",{className:"text-sm text-fg/50",children:"Passive intelligence mining from your browser history."})]}),p.jsxs("div",{className:"flex gap-2",children:[p.jsxs("button",{onClick:()=>V(!0),className:"px-6 py-3 glass hover:bg-surface transition-colors flex items-center gap-2 text-sm font-medium",children:[p.jsx(S1,{size:16}),p.jsxs("div",{className:"flex flex-col items-start",children:[p.jsx("span",{children:"Sync Settings"}),(Oe.sync_start_date||Oe.last_sync_checkpoint)&&p.jsx("span",{className:"text-[10px] text-fg/40 font-mono",children:Oe.sync_start_date?`From: ${new Date(Oe.sync_start_date).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}`:Oe.last_sync_checkpoint?`Checkpoint: ${new Date(Oe.last_sync_checkpoint).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}`:""})]})]}),p.jsxs("button",{onClick:F,disabled:z,className:"px-6 py-3 bg-gradient-to-r from-primary to-accent text-white font-bold rounded-xl shadow-lg glow-primary hover:scale-105 active:scale-95 transition-all flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100",children:[p.jsx(id,{size:18,className:z?"animate-spin":""}),z?"Syncing...":"Sync History"]})]})]}),p.jsx(zC,{onOpenUrl:J=>window.open(J,"_blank","noopener,noreferrer"),onCopyText:J=>{navigator.clipboard.writeText(J)}})]}),o==="engine"&&p.jsx(bC,{}),o==="account"&&p.jsx(CC,{}),o==="logs"&&p.jsx(IC,{}),p.jsx(kC,{isExpanded:B,onToggle:()=>Y(!B)})]}),p.jsx(RC,{signal:P,onClose:()=>N(null)}),p.jsx(OC,{isOpen:U,onClose:()=>V(!1)})]})})}):p.jsx(mC,{onAuthSuccess:()=>pe(),isInitialized:b})}function pa({active:t,icon:e,label:n,onClick:i,collapsed:o}){return p.jsx("button",{onClick:i,title:o?n:"",className:`w-full flex items-center ${o?"justify-center":"gap-3"} px-4 py-3 rounded-xl transition-all ${t?"bg-primary/10 text-primary shadow-sm":"text-fg/60 hover:bg-surface hover:text-fg"}`,children:o?_i.cloneElement(e,{className:t?"text-primary":""}):p.jsxs(p.Fragment,{children:[p.jsx("div",{className:"min-w-[20px] flex justify-center",children:_i.cloneElement(e,{className:t?"text-primary":""})}),p.jsx(Ne.span,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:"font-semibold text-sm whitespace-nowrap",children:n})]})})}function HC(){Re.interceptors.request.use(async t=>{try{const{data:{session:e}}=await me.auth.getSession();e?.access_token&&(t.headers.Authorization=`Bearer ${e.access_token}`);const n=Yd();n&&(t.headers["x-supabase-url"]=n.url,t.headers["x-supabase-key"]=n.anonKey)}catch(e){console.error("[Axios] Error injecting headers:",e)}return t})}HC();qx.createRoot(document.getElementById("root")).render(p.jsx(_i.StrictMode,{children:p.jsx(WC,{})}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Outfit,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{background-color:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Outfit,system-ui,sans-serif}::-moz-selection{background-color:var(--selection-bg)}::selection{background-color:var(--selection-bg)}.glass{background-color:var(--glass-bg);border-radius:1rem;border-width:1px;border-color:var(--border);--tw-backdrop-blur: blur(24px);-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)}.glow-primary{box-shadow:0 0 20px var(--glow-color)}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background-color:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--border)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#f7f8ff33}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-6{bottom:1.5rem}.left-3{left:.75rem}.right-0{right:0}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-span-2{grid-column:span 2 / span 2}.m-4{margin:1rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-\[600px\]{max-height:600px}.max-h-\[90vh\]{max-height:90vh}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-\[120px\]{width:120px}.w-\[450px\]{width:450px}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-\[20px\]{min-width:20px}.min-w-\[300px\]{min-width:300px}.min-w-\[40px\]{min-width:40px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-\[2\]{flex:2}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-500\/10{border-color:#f59e0b1a}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-400\/30{border-color:#60a5fa4d}.border-blue-500\/30{border-color:#3b82f64d}.border-cyan-500\/30{border-color:#06b6d44d}.border-emerald-500\/20{border-color:#10b98133}.border-gray-400\/30{border-color:#9ca3af4d}.border-gray-500\/30{border-color:#6b72804d}.border-green-500\/30{border-color:#22c55e4d}.border-orange-500\/30{border-color:#f973164d}.border-primary{border-color:var(--primary)}.border-purple-500\/30{border-color:#a855f74d}.border-red-500\/30{border-color:#ef44444d}.border-teal-500\/30{border-color:#14b8a64d}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.border-white\/5{border-color:#ffffff0d}.border-yellow-400\/30{border-color:#facc154d}.border-t-primary{border-top-color:var(--primary)}.border-t-white{--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.bg-accent{background-color:var(--accent)}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-bg{background-color:var(--bg)}.bg-black\/10{background-color:#0000001a}.bg-black\/20{background-color:#0003}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-blue-400\/20{background-color:#60a5fa33}.bg-blue-500\/20{background-color:#3b82f633}.bg-cyan-500\/20{background-color:#06b6d433}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/20{background-color:#10b98133}.bg-emerald-500\/5{background-color:#10b9810d}.bg-gray-400\/20{background-color:#9ca3af33}.bg-gray-500\/20{background-color:#6b728033}.bg-green-500\/20{background-color:#22c55e33}.bg-orange-500\/20{background-color:#f9731633}.bg-primary{background-color:var(--primary)}.bg-purple-500\/20{background-color:#a855f733}.bg-red-500\/20{background-color:#ef444433}.bg-success{background-color:var(--success)}.bg-surface{background-color:var(--surface)}.bg-teal-500\/20{background-color:#14b8a633}.bg-white\/5{background-color:#ffffff0d}.bg-yellow-400\/20{background-color:#facc1533}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-bg{--tw-gradient-from: var(--bg) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary{--tw-gradient-from: var(--primary) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-accent{--tw-gradient-to: var(--accent) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{color:var(--accent)}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-error{color:var(--error)}.text-fg{color:var(--fg)}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-primary{color:var(--primary)}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-success{color:var(--success)}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(239\,68\,68\,0\.1\)\]{--tw-shadow: 0 0 15px rgba(239,68,68,.1);--tw-shadow-colored: 0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-xl{--tw-blur: blur(24px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}:root{--bg: oklch(15% .02 280);--fg: oklch(98% .01 280);--primary: oklch(65% .25 280);--accent: oklch(85% .2 90);--surface: oklch(20% .02 280);--border: oklch(35% .03 280 / .3);--success: oklch(75% .15 150);--error: oklch(65% .2 25);--glass-bg: oklch(25% .03 280 / .4);--glow-color: oklch(65% .25 280 / .3);--selection-bg: oklch(65% .25 280 / .3)}:root[data-theme=light]{--bg: oklch(96% .005 280);--fg: oklch(15% .02 280);--primary: oklch(50% .25 280);--accent: oklch(60% .2 50);--surface: oklch(100% 0 0);--border: oklch(85% .02 280 / .6);--success: oklch(45% .15 150);--error: oklch(50% .2 25);--glass-bg: oklch(100% 0 0 / .7);--glow-color: oklch(50% .25 280 / .2);--selection-bg: oklch(50% .25 280 / .25)}@keyframes pulse-gold{0%{box-shadow:0 0 #fac70066;box-shadow:0 0 oklch(85% .2 90 / .4)}70%{box-shadow:0 0 0 10px #fac70000;box-shadow:0 0 0 10px oklch(85% .2 90 / 0)}to{box-shadow:0 0 #fac70000;box-shadow:0 0 oklch(85% .2 90 / 0)}}.animate-pulse-gold{animation:pulse-gold 2s infinite}h1,h2,h3,h4{letter-spacing:-.025em}.font-mono{font-family:JetBrains Mono,monospace}.hover\:scale-\[1\.01\]:hover{--tw-scale-x: 1.01;--tw-scale-y: 1.01;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-400\/30:hover{border-color:#60a5fa4d}.hover\:border-white\/20:hover{border-color:#fff3}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-error:hover{background-color:var(--error)}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-yellow-500\/20:hover{background-color:#eab30833}.hover\:text-accent:hover{color:var(--accent)}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-error:hover{color:var(--error)}.hover\:text-fg:hover{color:var(--fg)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:text-yellow-400:hover{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:grayscale:disabled{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:h-12{height:3rem}.sm\:w-12{width:3rem}}@media(min-width:768px){.md\:w-2\/3{width:66.666667%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1024px){.lg\:w-1\/2{width:50%}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Outfit,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body{background-color:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Outfit,system-ui,sans-serif}::-moz-selection{background-color:var(--selection-bg)}::selection{background-color:var(--selection-bg)}.glass{background-color:var(--glass-bg);border-radius:1rem;border-width:1px;border-color:var(--border);--tw-backdrop-blur: blur(24px);-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)}.glow-primary{box-shadow:0 0 20px var(--glow-color)}.custom-scrollbar::-webkit-scrollbar{width:6px}.custom-scrollbar::-webkit-scrollbar-track{background-color:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{border-radius:9999px;background-color:var(--border)}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background-color:#f7f8ff33}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.bottom-6{bottom:1.5rem}.left-3{left:.75rem}.right-0{right:0}.right-3{right:.75rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.col-span-2{grid-column:span 2 / span 2}.m-4{margin:1rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-0{margin-right:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.line-clamp-3{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-\[600px\]{max-height:600px}.max-h-\[90vh\]{max-height:90vh}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-\[120px\]{width:120px}.w-\[450px\]{width:450px}.w-full{width:100%}.w-screen{width:100vw}.min-w-0{min-width:0px}.min-w-\[20px\]{min-width:20px}.min-w-\[300px\]{min-width:300px}.min-w-\[40px\]{min-width:40px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-\[2\]{flex:2}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1\/2{--tw-translate-x: 50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-105{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping{animation:ping 1s cubic-bezier(0,0,.2,1) infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-amber-500\/10{border-color:#f59e0b1a}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-blue-400\/30{border-color:#60a5fa4d}.border-blue-500\/30{border-color:#3b82f64d}.border-cyan-500\/30{border-color:#06b6d44d}.border-emerald-500\/20{border-color:#10b98133}.border-gray-400\/30{border-color:#9ca3af4d}.border-gray-500\/30{border-color:#6b72804d}.border-green-500\/30{border-color:#22c55e4d}.border-orange-500\/30{border-color:#f973164d}.border-primary{border-color:var(--primary)}.border-purple-500\/30{border-color:#a855f74d}.border-red-500\/30{border-color:#ef44444d}.border-teal-500\/30{border-color:#14b8a64d}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.border-white\/5{border-color:#ffffff0d}.border-yellow-400\/30{border-color:#facc154d}.border-t-primary{border-top-color:var(--primary)}.border-t-white{--tw-border-opacity: 1;border-top-color:rgb(255 255 255 / var(--tw-border-opacity, 1))}.bg-accent{background-color:var(--accent)}.bg-amber-500\/5{background-color:#f59e0b0d}.bg-bg{background-color:var(--bg)}.bg-black\/10{background-color:#0000001a}.bg-black\/20{background-color:#0003}.bg-black\/40{background-color:#0006}.bg-black\/50{background-color:#00000080}.bg-black\/60{background-color:#0009}.bg-blue-400\/20{background-color:#60a5fa33}.bg-blue-500\/20{background-color:#3b82f633}.bg-cyan-500\/20{background-color:#06b6d433}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-500\/20{background-color:#10b98133}.bg-emerald-500\/5{background-color:#10b9810d}.bg-gray-400\/20{background-color:#9ca3af33}.bg-gray-500\/20{background-color:#6b728033}.bg-green-500\/20{background-color:#22c55e33}.bg-orange-500\/20{background-color:#f9731633}.bg-primary{background-color:var(--primary)}.bg-purple-500\/20{background-color:#a855f733}.bg-red-500\/20{background-color:#ef444433}.bg-success{background-color:var(--success)}.bg-surface{background-color:var(--surface)}.bg-teal-500\/20{background-color:#14b8a633}.bg-white\/5{background-color:#ffffff0d}.bg-yellow-400\/20{background-color:#facc1533}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top,var(--tw-gradient-stops))}.from-bg{--tw-gradient-from: var(--bg) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary{--tw-gradient-from: var(--primary) var(--tw-gradient-from-position);--tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.to-accent{--tw-gradient-to: var(--accent) var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[9px\]{font-size:9px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-tight{letter-spacing:-.025em}.tracking-tighter{letter-spacing:-.05em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent{color:var(--accent)}.text-amber-500{--tw-text-opacity: 1;color:rgb(245 158 11 / var(--tw-text-opacity, 1))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-cyan-500{--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.text-emerald-500{--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity, 1))}.text-error{color:var(--error)}.text-fg{color:var(--fg)}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.text-orange-400{--tw-text-opacity: 1;color:rgb(251 146 60 / var(--tw-text-opacity, 1))}.text-orange-500{--tw-text-opacity: 1;color:rgb(249 115 22 / var(--tw-text-opacity, 1))}.text-primary{color:var(--primary)}.text-purple-400{--tw-text-opacity: 1;color:rgb(192 132 252 / var(--tw-text-opacity, 1))}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-success{color:var(--success)}.text-teal-400{--tw-text-opacity: 1;color:rgb(45 212 191 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.accent-primary{accent-color:var(--primary)}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-\[0_0_15px_rgba\(239\,68\,68\,0\.1\)\]{--tw-shadow: 0 0 15px rgba(239,68,68,.1);--tw-shadow-colored: 0 0 15px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-xl{--tw-blur: blur(24px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-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,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}:root{--bg: oklch(15% .02 280);--fg: oklch(98% .01 280);--primary: oklch(65% .25 280);--accent: oklch(85% .2 90);--surface: oklch(20% .02 280);--border: oklch(35% .03 280 / .3);--success: oklch(75% .15 150);--error: oklch(65% .2 25);--glass-bg: oklch(25% .03 280 / .4);--glow-color: oklch(65% .25 280 / .3);--selection-bg: oklch(65% .25 280 / .3)}:root[data-theme=light]{--bg: oklch(96% .005 280);--fg: oklch(15% .02 280);--primary: oklch(50% .25 280);--accent: oklch(60% .2 50);--surface: oklch(100% 0 0);--border: oklch(85% .02 280 / .6);--success: oklch(45% .15 150);--error: oklch(50% .2 25);--glass-bg: oklch(100% 0 0 / .7);--glow-color: oklch(50% .25 280 / .2);--selection-bg: oklch(50% .25 280 / .25)}@keyframes pulse-gold{0%{box-shadow:0 0 #fac70066;box-shadow:0 0 oklch(85% .2 90 / .4)}70%{box-shadow:0 0 0 10px #fac70000;box-shadow:0 0 0 10px oklch(85% .2 90 / 0)}to{box-shadow:0 0 #fac70000;box-shadow:0 0 oklch(85% .2 90 / 0)}}.animate-pulse-gold{animation:pulse-gold 2s infinite}h1,h2,h3,h4{letter-spacing:-.025em}.font-mono{font-family:JetBrains Mono,monospace}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.01\]:hover{--tw-scale-x: 1.01;--tw-scale-y: 1.01;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[1\.02\]:hover{--tw-scale-x: 1.02;--tw-scale-y: 1.02;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-400\/30:hover{border-color:#60a5fa4d}.hover\:border-white\/20:hover{border-color:#fff3}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-error:hover{background-color:var(--error)}.hover\:bg-red-500\/20:hover{background-color:#ef444433}.hover\:bg-surface:hover{background-color:var(--surface)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-yellow-500\/20:hover{background-color:#eab30833}.hover\:text-accent:hover{color:var(--accent)}.hover\:text-blue-400:hover{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.hover\:text-error:hover{color:var(--error)}.hover\:text-fg:hover{color:var(--fg)}.hover\:text-primary:hover{color:var(--primary)}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.hover\:text-yellow-400:hover{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.active\:scale-95:active{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:grayscale:disabled{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.disabled\:hover\:scale-100:hover:disabled{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:block{display:block}.group:hover .group-hover\:text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:h-12{height:3rem}.sm\:w-12{width:3rem}}@media(min-width:768px){.md\:w-2\/3{width:66.666667%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:1024px){.lg\:w-1\/2{width:50%}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
|
package/dist/index.html
CHANGED
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
10
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
11
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&family=Outfit:wght@300;400;600;800&display=swap" rel="stylesheet">
|
|
12
|
-
<script type="module" crossorigin src="/assets/index-
|
|
13
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
12
|
+
<script type="module" crossorigin src="/assets/index-0qoabCJF.js"></script>
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/assets/index-5J49y6Iy.css">
|
|
14
14
|
</head>
|
|
15
15
|
<body>
|
|
16
16
|
<div id="root"></div>
|
package/package.json
CHANGED