PageSourceSearch

https://www.stayup.ai/assets/AISignals-jRbPJMe5.js

js stayup.ai collected 2026-10-05 14:15:56 UTC 4,735 bytes, 1 lines download raw bytes

1import{j as e}from"./radix-CK2sb11G.js";import{j as s,a}from"./utils-BNKHq-9t.js";import{a as i,aL as l,dm as t,ct as r,du as n,Y as d,a6 as o,I as c,f as m,h as g,i as p,j as u,k as x,ao as h,B as j,bb as f,bc as k,q as v}from"./index-D9aQUN0e.js";import{u as w,A as S}from"./AIStackEmptyState-on9Q4Z5f.js";import{A as y,a as _,b as N}from"./AISignalDetailPanel-CPIEUCuq.js";import"./vendor-CuX-hi3D.js";import"./animations-BLFtOPC_.js";import"./formatTimeAgo-DmeCro69.js";import"./SourceCards-Bj2ntnya.js";import"./asyncUtils-Ce1cetp7.js";import"./repeat-2-CRpF7amj.js";function b(){const[b,C]=s(),{language:A}=i(),{workspace:M}=l(),I=v(A),[L,E]=a.useState(""),[T,P]=a.useState("all"),[z,D]=a.useState("all"),[V,F]=a.useState(1),[U,q]=a.useState(null),[B,O]=a.useState(!1),{signals:Y,tags:G,isLoading:H}=w(M?.id),{stack:J,isLoading:K}=t(M?.id),{isProcessing:Q}=r(M?.id),{markAsViewed:R}=n(M?.id);a.useEffect(()=>{!H&&Y&&Y.length>0&&R()},[H,Y,R]),a.useEffect(()=>{const e=b.get("signal");if(e&&Y&&Y.length>0&&!H){const s=Y.find(s=>s.id===e);s&&(q(s),O(!0),b.delete("signal"),C(b,{replace:!0}))}},[b,Y,H,C]);const W=H||K,X=a.useMemo(()=>{if(!J)return[];const e=[];return J.models?.forEach(s=>{e.push({id:s.workspace_stack_id,name:s.name,type:"model"})}),J.tools?.forEach(s=>{e.push({id:s.workspace_stack_id,name:s.name,type:"tool"})}),e},[J]),Z=a.useMemo(()=>Y?Y.filter(e=>{if(L){const s=L.toLowerCase(),a=e.signal?.title?.toLowerCase().includes(s),i=e.signal?.description?.toLowerCase().includes(s),l=e.workspace_stack_id?.some(e=>{const a=X.find(s=>s.id===e);return a?.name.toLowerCase().includes(s)});if(!a&&!i&&!l)return!1}return("all"===T||e.ai_signal_tag_id===T)&&!!("all"===z||e.workspace_stack_id&&e.workspace_stack_id.includes(z))}).sort((e,s)=>{const a=new Date(e.feed_published_date||e.created_at).getTime();return new Date(s.feed_published_date||s.created_at).getTime()-a}):[],[Y,L,T,z,X]),$=Math.ceil(Z.length/20),ee=a.useMemo(()=>{const e=20*(V-1);return Z.slice(e,e+20)},[Z,V]);a.useEffect(()=>{F(1)},[L,T,z]);const se=e=>{q(e),O(!0)};return e.jsxs(e.Fragment,{children:[e.jsxs(d,{children:[e.jsx("title",{children:"AI Signals - StayUpAI"}),e.jsx("meta",{name:"description",content:"Stay informed with curated AI updates tailored to your workspace stack. Monitor key developments, feature releases, and opportunities across your selected AI models and tools."})]}),e.jsxs("div",{className:"w-full px-4 py-6 md:px-6 space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4 max-w-4xl",children:[e.jsxs("div",{className:"relative",children:[e.jsx(o,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(c,{placeholder:I.pages.aiSignals.searchPlaceholder,value:L,onChange:e=>E(e.target.value),className:"pl-10"})]}),e.jsxs(m,{value:T,onValueChange:P,children:[e.jsx(g,{children:e.jsx(p,{placeholder:I.pages.aiSignals.filters.byTag})}),e.jsxs(u,{children:[e.jsx(x,{value:"all",children:I.pages.aiSignals.filters.allTags}),G?.map(s=>e.jsx(x,{value:s.id,children:s.name},s.id))]})]}),e.jsxs(m,{value:z,onValueChange:D,children:[e.jsx(g,{children:e.jsx(p,{placeholder:I.pages.aiSignals.filters.byStack})}),e.jsxs(u,{children:[e.jsx(x,{value:"all",children:I.pages.aiSignals.filters.allStacks}),X.map(s=>e.jsx(x,{value:s.id,children:s.name},s.id))]})]})]}),Q&&e.jsxs("div",{className:"flex items-center gap-2 text-muted-foreground text-sm p-3 bg-primary/5 border border-primary/20 rounded-lg max-w-4xl",children:[e.jsx(h,{className:"h-4 w-4 animate-spin text-primary"}),e.jsx("span",{children:I.pages.aiSignals.processingMessage})]}),W&&e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:Array.from({length:20}).map((s,a)=>e.jsx(y,{},a))}),!W&&0===Z.length&&e.jsx(S,{asCard:!1}),!W&&Z.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:ee.map(s=>e.jsx(_,{signal:s,onCardClick:se},s.id))}),$>1&&e.jsxs("div",{className:"flex items-center justify-center gap-2 mt-8",children:[e.jsxs(j,{variant:"outline",size:"sm",onClick:()=>F(e=>Math.max(1,e-1)),disabled:1===V,children:[e.jsx(f,{className:"h-4 w-4"}),"Previous"]}),e.jsx("div",{className:"flex items-center gap-1",children:Array.from({length:$},(e,s)=>s+1).map(s=>1===s||s===$||s>=V-1&&s<=V+1?e.jsx(j,{variant:V===s?"default":"outline",size:"sm",onClick:()=>F(s),className:"min-w-[40px]",children:s},s):s===V-2||s===V+2?e.jsx("span",{className:"px-2",children:"..."},s):null)}),e.jsxs(j,{variant:"outline",size:"sm",onClick:()=>F(e=>Math.min($,e+1)),disabled:V===$,children:["Next",e.jsx(k,{className:"h-4 w-4"})]})]})]})]}),e.jsx(N,{signal:U,open:B,onOpenChange:O})]})}
1export{b as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.