1import{j as e}from"./ui-radix-zn6WiV9C.js";import{a as d}from"./posthog-BpjDWAvb.js";import{g as j,C as v,A as C,E as m,ab as b,J as p,ai as N,aj as L}from"./index-DTMCP1th.js";import{L as S}from"./Layout-DtsKQBEE.js";import{G as g}from"./GeneratedClipCard-CwMgoQUj.js";import{C as A,E}from"./DashboardSkeletons-BYE1M9tx.js";import"./index-3AGdjD-e.js";import{i as I,a as k}from"./clipStatus-BV8l1Pbp.js";import{g as w}from"./groupClipsBySeries-CIgQH4NP.js";import"./sidebar-h4spabLC.js";import{S as O}from"./processingEta-eld1iZMo.js";import"./confirm-dialog-Dn_35voe.js";import{b as _,L as q}from"./react-vendor-BB_6mDNC.js";import{A as Q,Z as x}from"./icons-CXuBPeMO.js";import"./supabase-BTw68hGK.js";import"./charts-CejVOjpd.js";import"./ExpiresBadge-1N-Hz0yB.js";const u=100;function es(){const{user:f,signOut:n}=j(),{isProUser:c}=v()??{isProUser:null},t=_();C();const[B,F]=d.useState(!1),o=!1,a=m({queryKey:p.clips.recent(u),queryFn:()=>N(u),refetchInterval:s=>{const r=s.state.data;return r&&r.some(i=>k(i.status))?3e3:!1}}),l=a.data??[],y=w(l);l.filter(s=>I(s.status)&&s.s3_key&&!s.s3_expired),m({queryKey:p.compilations.list(),queryFn:()=>L(),refetchInterval:s=>{const r=s.state.data;return r&&r.some(i=>i.status==="pending"||i.status==="processing")?4e3:!1}}).data;const h=d.useCallback(async()=>{try{await n(),t("/")}catch(s){b.error(s instanceof Error?s.message:"Sign out failed")}},[n,t]);return e.jsxs(S,{user:f,onSignOut:h,children:[e.jsxs(q,{to:"/dashboard",className:"inline-flex items-center gap-1.5 text-xs sm:text-sm text-[var(--color-text-secondary)] hover:text-[var(--color-text-primary)] transition-colors mb-4",children:[e.jsx(Q,{className:"w-3.5 h-3.5"}),"Back to dashboard"]}),e.jsx(O,{icon:e.jsx(x,{className:"text-[var(--brand)]"}),title:"All Clips",description:"Every clip you've generated, newest first",size:"lg",onRefresh:()=>a.refetch(),isRefreshing:a.isFetching,action:o}),o,a.isLoading?e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3 sm:gap-4",children:Array.from({length:10},(s,r)=>e.jsx(A,{},r))}):l.length===0?e.jsx(E,{icon:e.jsx(x,{}),title:"No clips yet",description:"Upload a video on the dashboard and your generated clips will show up here"}):e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3 sm:gap-4",children:y.map(s=>s.type==="single"?e.jsx(g,{clip:s.clip,onClick:()=>t(`/clips/${s.clip.id}`),proHint:c===!1},s.clip.id):e.jsxs("div",{className:"col-span-full rounded-2xl border border-[var(--color-border-primary)] bg-[var(--color-bg-secondary)]/40 p-3 sm:p-4 animate-rise-in",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2.5 sm:mb-3",children:[e.jsx("h3",{className:"text-sm font-semibold text-[var(--color-text-primary)] line-clamp-1",children:s.seriesTitle}),e.jsxs("span",{className:"shrink-0 ml-3 text-[11px] font-medium text-[var(--color-text-tertiary)]",children:["Series · ",s.parts.length," parts"]})]}),e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3 sm:gap-4",children:s.parts.map(r=>e.jsx(g,{clip:r,onClick:()=>t(`/clips/${r.id}`),proHint:c===!1},r.id))})]},s.seriesId))}),o]})}export{es as AllClips,es 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.