// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0-or-later // @source: https://gitlab.com/soapbox-pub/ditto/-/tree/f0a3877c import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{J as t,N as n,Ti as r,Tr as i,_n as a,a as o,bt as s,ln as c,on as l,qi as u,r as d,wi as f}from"./lucide-icons-BdRF0moN.js";import{t as p}from"./jsx-runtime-By8HlURe.js";import{t as m}from"./dist-DQ82bf9M.js";import{u as h}from"./esm-CRVqHnq2.js";import{h as g,t as _}from"./useQuery-rCAlChE8.js";import{t as v}from"./useInfiniteQuery-BFtb_-3K.js";import{l as y,r as ee}from"./EmbeddedNote-BKfkvcrg.js";import{t as b}from"./useAppContext-Ughdk2-Z.js";import{l as te,t as x}from"./useCurrentUser-C6OJJlWo.js";import{t as S}from"./utils-BFSTDHdM.js";import{t as C}from"./button-Cs26nq0r.js";import{n as w}from"./useFollowActions-cve70R08.js";import{n as T,o as E,r as ne,t as re}from"./avatar--oX_CTF4.js";import{c as D,n as O}from"./chunk-62JRHF6Z-yJW_vgm4.js";import{n as ie}from"./CustomEmoji-DRcU63lJ.js";import{t as ae}from"./useProfileUrl-DoFhqUUR.js";import{r as k}from"./BioContent-BjUPDB1O.js";import{t as A}from"./input-CM5Fnyvy.js";import{t as j}from"./skeleton-CVls4GW9.js";import{d as oe}from"./EmbeddedPost-Bb-ngBHS.js";import{t as se}from"./timeAgo-BXjjbyXp.js";import{t as ce}from"./getDisplayName-B6lnEGRj.js";import{p as le}from"./extraKinds-BydAXtVV.js";import{t as M}from"./badge-eEdLlpTp.js";import{t as N}from"./formatNumber-D1ols1S-.js";import{c as P}from"./LayoutContext-CjQBLGO-.js";import{t as ue}from"./NoteMoreMenu-FwlS01AC.js";import{t as F}from"./SubHeaderBar-BYwNp4Nc.js";import{t as I}from"./usePageRefresh-BuJEOs2u.js";import{t as de}from"./useOpenPost-DKpHsp1A.js";import{r as fe}from"./useRepostStatus-KJZve8_M.js";import{n as L,t as R}from"./RepostMenu-CULlcQsd.js";import{t as z}from"./useTrending-DsL3v2RN.js";import{t as B}from"./useMutedAuthorFilter-CTggZCaG.js";import{C as V,S as pe,o as H,w as me,x as he}from"./index-CYEZWNq6.js";import{t as ge}from"./PageHeader-CMi4aeE4.js";import{t as _e}from"./useInfiniteScroll-BXunlzay.js";import{t as ve}from"./deduplicateEvents-BUUuuRQu.js";import{a as ye,i as be,n as U,r as xe,t as W}from"./bookstr-BBZy-aJu.js";import{t as Se}from"./KindInfoButton-BL9_-Fdi.js";var G=e(u(),1),K=1e3*60*60*24,q=1e3*60*60*48;async function J(e,t){try{let n=e.replace(/[^0-9X]/gi,``),r=await fetch(`https://openlibrary.org/isbn/${n}.json`,{signal:t,headers:{Accept:`application/json`}});if(!r.ok)return null;let i=await r.json(),a=`Unknown Author`;if(i.authors&&Array.isArray(i.authors)){let e=i.authors[0];if(e?.name)a=e.name;else if(e?.key)try{let n=await fetch(`https://openlibrary.org${e.key}.json`,{signal:t});n.ok&&(a=(await n.json()).name??`Unknown Author`)}catch{}}let o=i.isbn_13?.[0],s=i.isbn_10?.[0],c=i.covers?.[0],l=``;return c?l=`https://covers.openlibrary.org/b/id/${c}-M.jpg`:o?l=`https://covers.openlibrary.org/b/isbn/${o}-M.jpg`:s&&(l=`https://covers.openlibrary.org/b/isbn/${s}-M.jpg`),{title:i.title??`Unknown Title`,author:a,isbn:o??s??e,coverUrl:l,pubDate:i.publish_date}}catch{return null}}function Ce(e){return _({queryKey:[`book-summary`,e],queryFn:({signal:t})=>J(e,t),enabled:!!e,staleTime:K,gcTime:q,retry:1})}function we(e,t=4){let n=g(),r=(0,G.useRef)(new Set);(0,G.useEffect)(()=>{if(e.length===0)return;let i=new Set;for(let t of e){let e=U(t);e&&(r.current.has(e)||n.getQueryData([`book-summary`,e])===void 0&&i.add(e))}if(i.size===0)return;for(let e of i)r.current.add(e);let a=Array.from(i);async function o(e){await Promise.allSettled(e.map(e=>n.prefetchQuery({queryKey:[`book-summary`,e],queryFn:({signal:t})=>J(e,t),staleTime:K,gcTime:q})))}(async()=>{for(let e=0;e=3e4&&e.kind<4e4){let t=e.tags.find(([e])=>e===`d`)?.[1];if(t)return h.naddrEncode({kind:e.kind,pubkey:e.pubkey,identifier:t})}return h.neventEncode({id:e.id,author:e.pubkey})}function Ee({event:e,className:n}){let{user:r}=x(),a=te(e.pubkey),o=a.data?.metadata,s=E(o),u=ce(o,e.pubkey),p=ae(e.pubkey,o),{data:m}=z(e.id,e),{format:h}=ee(),[g,_]=(0,G.useState)(!1),[v,y]=(0,G.useState)(!1),b=!!r&&r.pubkey!==e.pubkey,C=(0,G.useMemo)(()=>U(e),[e]),w=e.kind===W.BOOK_REVIEW,D=e.kind===1111,A=(0,G.useMemo)(()=>w?be(e):null,[e,w]),{onClick:P,onAuxClick:F}=de((0,G.useMemo)(()=>D&&C?`/i/isbn:${C}`:`/${Te(e)}`,[e,D,C]),e),I=e=>{let t=e.target;t.closest(`a`)||t.closest(`button`)||t.closest(`[role="dialog"]`)||t.closest(`[data-radix-dialog-overlay]`)||t.closest(`[data-radix-dialog-content]`)||t.closest(`[data-vaul-drawer]`)||t.closest(`[data-vaul-drawer-overlay]`)||t.closest(`[data-testid="zap-modal"]`)||P()},B=e=>{let t=e.target;t.closest(`a`)||t.closest(`button`)||t.closest(`[role="dialog"]`)||F(e)},V=A?.rating===void 0?0:ye(A.rating);return(0,Y.jsxs)(`article`,{className:S(`px-4 py-3 border-b border-border hover:bg-secondary/30 transition-colors cursor-pointer overflow-hidden`,n),onClick:I,onAuxClick:B,children:[(0,Y.jsxs)(`div`,{className:`flex gap-3`,children:[a.isLoading?(0,Y.jsx)(j,{className:`size-11 rounded-full shrink-0`}):(0,Y.jsx)(k,{pubkey:e.pubkey,asChild:!0,children:(0,Y.jsx)(O,{to:p,className:`shrink-0`,onClick:e=>e.stopPropagation(),children:(0,Y.jsxs)(re,{shape:s,className:`size-11`,children:[(0,Y.jsx)(ne,{src:o?.picture,alt:u}),(0,Y.jsx)(T,{className:`bg-primary/20 text-primary text-sm`,children:u[0]?.toUpperCase()})]})})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[a.isLoading?(0,Y.jsxs)(`div`,{className:`min-w-0 space-y-1.5`,children:[(0,Y.jsx)(j,{className:`h-4 w-28`}),(0,Y.jsx)(j,{className:`h-3 w-36`})]}):(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Y.jsx)(k,{pubkey:e.pubkey,asChild:!0,children:(0,Y.jsx)(O,{to:p,className:`font-bold text-[15px] hover:underline truncate`,onClick:e=>e.stopPropagation(),children:a.data?.event?(0,Y.jsx)(ie,{tags:a.data.event.tags,children:u}):u})}),w&&(0,Y.jsxs)(M,{variant:`secondary`,className:`gap-1 text-[10px] px-1.5 py-0 shrink-0 bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-300`,children:[(0,Y.jsx)(t,{className:`size-3`}),`reviewed`]}),D&&(0,Y.jsxs)(M,{variant:`secondary`,className:`gap-1 text-[10px] px-1.5 py-0 shrink-0 bg-purple-100 text-purple-800 dark:bg-purple-900/40 dark:text-purple-300`,children:[(0,Y.jsx)(l,{className:`size-3`}),`commented`]}),!w&&!D&&C&&(0,Y.jsxs)(M,{variant:`secondary`,className:`gap-1 text-[10px] px-1.5 py-0 shrink-0 bg-blue-100 text-blue-800 dark:bg-blue-900/40 dark:text-blue-300`,children:[(0,Y.jsx)(f,{className:`size-3`}),`posted`]})]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1 text-sm text-muted-foreground`,children:(0,Y.jsx)(`span`,{className:`shrink-0 hover:underline whitespace-nowrap`,children:se(e.created_at)})})]}),w&&A?.rating!==void 0&&(0,Y.jsxs)(`div`,{className:`flex items-center gap-1 mt-2`,children:[[...[,,,,,]].map((e,n)=>(0,Y.jsx)(t,{className:S(`size-4`,n{e.stopPropagation(),y(!0)},children:[(0,Y.jsx)(c,{className:`size-5`}),m?.replies?(0,Y.jsx)(`span`,{className:`text-sm tabular-nums`,children:N(m.replies)}):null]}),(0,Y.jsx)(R,{event:e,children:e=>(0,Y.jsxs)(`button`,{className:`flex items-center gap-1.5 p-2 rounded-full transition-colors ${e?`text-accent hover:text-accent/80 hover:bg-accent/10`:`text-muted-foreground hover:text-accent hover:bg-accent/10`}`,title:e?`Undo repost`:`Repost`,children:[(0,Y.jsx)(le,{className:`size-5`}),m?.reposts||m?.quotes?(0,Y.jsx)(`span`,{className:`text-sm tabular-nums`,children:N((m?.reposts??0)+(m?.quotes??0))}):null]})}),(0,Y.jsx)(L,{eventId:e.id,eventPubkey:e.pubkey,eventKind:e.kind,reactedEvent:e,reactionCount:m?.reactions}),b&&(0,Y.jsx)(fe,{target:e,children:(0,Y.jsxs)(`button`,{className:S(`flex items-center gap-1.5 p-2 rounded-full transition-colors`,`text-muted-foreground hover:text-amber-500 hover:bg-amber-500/10`),title:`Zap`,children:[(0,Y.jsx)(d,{className:`size-5`,fill:`none`}),m?.zapAmount?(0,Y.jsx)(`span`,{className:`text-sm tabular-nums`,children:h(m.zapAmount,{layout:`compact`})}):null]})}),(0,Y.jsx)(`button`,{className:`p-2 rounded-full text-muted-foreground hover:text-primary hover:bg-primary/10 transition-colors`,title:`More`,onClick:e=>{e.stopPropagation(),_(!0)},children:(0,Y.jsx)(i,{className:`size-5`})})]})]})]}),(0,Y.jsx)(oe,{event:e,open:v,onOpenChange:y}),(0,Y.jsx)(ue,{event:e,open:g,onOpenChange:_})]})}function Z({event:e,content:t,isReview:n}){let r=(0,G.useRef)(null),[i,a]=(0,G.useState)(!1),[o,s]=(0,G.useState)(!1),c=(0,G.useCallback)(()=>{let e=r.current;e&&a(e.scrollHeight>X)},[]);return(0,G.useEffect)(()=>(c(),window.addEventListener(`resize`,c),()=>window.removeEventListener(`resize`,c)),[c]),(0,G.useEffect)(()=>{let e=r.current;if(!e)return;let t=e.querySelectorAll(`img`);if(t.length!==0)return t.forEach(e=>e.addEventListener(`load`,c,{once:!0})),()=>t.forEach(e=>e.removeEventListener(`load`,c))},[c]),t!==void 0&&!t?(0,Y.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground italic`,children:`Rating only, no written review`}):(0,Y.jsxs)(`div`,{className:S(`mt-2 break-words overflow-hidden`,n&&`pl-3 border-l-2 border-amber-300 dark:border-amber-700`),children:[(0,Y.jsxs)(`div`,{ref:r,style:!o&&i?{maxHeight:X,overflow:`hidden`}:void 0,className:`relative`,children:[(0,Y.jsx)(y,{event:e,className:`text-[15px] leading-relaxed`}),!o&&i&&(0,Y.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-16 bg-gradient-to-t from-background to-transparent pointer-events-none`})]}),i&&(0,Y.jsx)(`button`,{className:`mt-1 text-sm text-primary hover:underline`,onClick:e=>{e.stopPropagation(),s(e=>!e)},children:o?`Show less`:`Read more`})]})}function De({warning:e,children:t}){let[r,i]=(0,G.useState)(!1);return r?(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(M,{variant:`outline`,className:`text-orange-600 border-orange-200 dark:border-orange-800 mb-2 mt-2`,children:[(0,Y.jsx)(n,{className:`size-3 mr-1`}),`Contains Spoilers`]}),t]}):(0,Y.jsxs)(`div`,{className:`mt-2 py-4 text-center space-y-2`,onClick:e=>e.stopPropagation(),children:[(0,Y.jsxs)(`div`,{className:`flex items-center justify-center gap-2 text-orange-600`,children:[(0,Y.jsx)(n,{className:`size-4`}),(0,Y.jsx)(`span`,{className:`text-sm font-medium`,children:`Spoiler Warning`})]}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e}),(0,Y.jsx)(C,{variant:`outline`,size:`sm`,onClick:()=>i(!0),children:`Show Review`})]})}function Oe({isbn:e}){let{data:t,isLoading:n}=Ce(e);return n?(0,Y.jsxs)(`div`,{className:`mt-3 flex items-center gap-3 p-3 rounded-lg bg-muted/50 border border-border`,children:[(0,Y.jsx)(j,{className:`w-10 h-14 rounded shrink-0`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0 space-y-1.5`,children:[(0,Y.jsx)(j,{className:`h-4 w-3/4`}),(0,Y.jsx)(j,{className:`h-3 w-1/2`})]})]}):t?(0,Y.jsxs)(O,{to:`/i/isbn:${e}`,className:`mt-3 flex items-center gap-3 p-3 rounded-lg bg-muted/50 border border-border hover:bg-muted/80 transition-colors group/book`,onClick:e=>e.stopPropagation(),children:[t.coverUrl?(0,Y.jsx)(`img`,{src:t.coverUrl,alt:`Cover of ${t.title}`,className:`w-10 h-14 rounded object-cover shrink-0 shadow-sm group-hover/book:shadow-md transition-shadow`,loading:`lazy`,onError:e=>{e.currentTarget.style.display=`none`},decoding:`async`}):(0,Y.jsx)(`div`,{className:`w-10 h-14 rounded bg-muted flex items-center justify-center shrink-0`,children:(0,Y.jsx)(f,{className:`size-5 text-muted-foreground/40`})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-sm font-semibold line-clamp-1 group-hover/book:underline`,children:t.title}),(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-1`,children:t.author}),t.pubDate&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground/70 mt-0.5`,children:t.pubDate})]})]}):(0,Y.jsxs)(O,{to:`/i/isbn:${e}`,className:`mt-3 flex items-center gap-3 p-3 rounded-lg bg-muted/50 border border-border hover:bg-muted/80 transition-colors`,onClick:e=>e.stopPropagation(),children:[(0,Y.jsx)(`div`,{className:`w-10 h-14 rounded bg-muted flex items-center justify-center shrink-0`,children:(0,Y.jsx)(f,{className:`size-5 text-muted-foreground/40`})}),(0,Y.jsx)(`div`,{className:`flex-1 min-w-0`,children:(0,Y.jsxs)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:[`ISBN `,e]})})]})}function Q(){return(0,Y.jsx)(`div`,{className:`px-4 py-3 border-b border-border`,children:(0,Y.jsxs)(`div`,{className:`flex gap-3`,children:[(0,Y.jsx)(j,{className:`size-11 rounded-full shrink-0`}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-3`,children:[(0,Y.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,Y.jsx)(j,{className:`h-4 w-28`}),(0,Y.jsx)(j,{className:`h-3 w-16`})]}),(0,Y.jsxs)(`div`,{className:`space-y-2`,children:[(0,Y.jsx)(j,{className:`h-4 w-full`}),(0,Y.jsx)(j,{className:`h-4 w-4/5`})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 p-3 rounded-lg bg-muted/50 border border-border`,children:[(0,Y.jsx)(j,{className:`w-10 h-14 rounded shrink-0`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0 space-y-1.5`,children:[(0,Y.jsx)(j,{className:`h-4 w-3/4`}),(0,Y.jsx)(j,{className:`h-3 w-1/2`})]})]})]})]})})}var $=20;function ke(e=`global`){let{nostr:t}=m(),{user:n}=x(),{data:r}=w(),i=r?.pubkeys,{excludeMuted:a,mutedKey:o}=B(),s=e!==`follows`||!!n&&i!==void 0;return v({queryKey:[`book-feed`,e,n?.pubkey??``,i?.length??0,o],queryFn:async({pageParam:r})=>{let o=AbortSignal.timeout(5e3),s=r,c;if(e===`follows`&&n&&i){let e=a(i);c=e.length>0?[...e,n.pubkey]:[n.pubkey]}let l=[],u={limit:$,...s?{until:s}:{},...c?{authors:c}:{}};l.push({kinds:[W.BOOK_REVIEW],...u}),l.push({kinds:[1],"#t":[`bookstr`],...u}),l.push({kinds:[1],"#k":[`isbn`],...u}),l.push({kinds:[1111],"#K":[`isbn`],...u});let d=await t.query(l,{signal:o}),f=new Set;return d.filter(xe).filter(e=>f.has(e.id)?!1:(f.add(e.id),!0)).sort((e,t)=>t.created_at-e.created_at).slice(0,$)},getNextPageParam:e=>{if(e.length!==0)return e[e.length-1].created_at-1},initialPageParam:void 0,enabled:s,staleTime:120*1e3})}function Ae(e){return e.find(e=>e.length===13)??e[0]}async function je(e,t){let n=new URLSearchParams({q:e,limit:`8`,fields:`title,author_name,cover_i,first_publish_year,isbn`}),r=await fetch(`https://openlibrary.org/search.json?${n}`,{signal:t,headers:{Accept:`application/json`}});if(!r.ok)return[];let i=await r.json(),a=[];for(let e of i.docs){let t=e.isbn?Ae(e.isbn):void 0;t&&a.push({title:e.title,authors:e.author_name??[],isbn:t,coverUrl:e.cover_i?`https://covers.openlibrary.org/b/id/${e.cover_i}-S.jpg`:void 0,firstPublishYear:e.first_publish_year})}return a}function Me(e){return _({queryKey:[`book-search`,e],queryFn:({signal:t})=>je(e,t),enabled:e.trim().length>=2,staleTime:1e3*60*5,gcTime:1e3*60*30,retry:1,placeholderData:e=>e})}var Ne={kind:31985,id:`books`,label:`Books`,description:`Book reviews and discussions`,addressable:!0,section:`social`,blurb:`Discover book reviews, ratings, and discussions from the Nostr community. Track your reading and share your thoughts using the Bookstr protocol.`,sites:[{url:`https://bookstr.xyz/`,name:`Bookstr`}]};function Pe(){let{config:e}=b(),{user:t}=x(),[n,i]=he(`books`,[`follows`,`global`]);me({title:`Books | ${e.appName}`,description:`Book reviews, ratings, and discussions from the Nostr community`}),P({hasSubHeader:!!t});let{data:o,isPending:s,isLoading:c,fetchNextPage:l,hasNextPage:u,isFetchingNextPage:d}=ke(n),{scrollRef:f}=_e({hasNextPage:u,isFetchingNextPage:d,fetchNextPage:l,pageCount:o?.pages?.length}),p=I([`book-feed`,n]),m=ve(o?.pages);return we(m),(0,Y.jsxs)(`main`,{className:`pb-16 sidebar:pb-0`,children:[(0,Y.jsx)(ge,{title:`Books`,icon:(0,Y.jsx)(r,{className:`size-5`}),children:(0,Y.jsx)(Se,{kindDef:Ne,icon:(0,Y.jsx)(r,{className:`size-10`})})}),t&&(0,Y.jsxs)(F,{children:[(0,Y.jsx)(H,{label:`Follows`,active:n===`follows`,onClick:()=>i(`follows`)}),(0,Y.jsx)(H,{label:`Global`,active:n===`global`,onClick:()=>i(`global`)})]}),(0,Y.jsx)(Fe,{}),(0,Y.jsx)(V,{onRefresh:p,children:s||c&&!o?(0,Y.jsx)(`div`,{children:Array.from({length:6}).map((e,t)=>(0,Y.jsx)(Q,{},t))}):m.length>0?(0,Y.jsxs)(`div`,{children:[m.map(e=>(0,Y.jsx)(Ee,{event:e},e.id)),u&&(0,Y.jsx)(`div`,{ref:f,className:`py-4`,children:d&&(0,Y.jsx)(`div`,{className:`flex justify-center`,children:(0,Y.jsx)(a,{className:`size-5 animate-spin text-muted-foreground`})})})]}):(0,Y.jsx)(pe,{message:n===`follows`?`No book posts from people you follow yet.`:`No book posts or reviews found. Book-related posts tagged with #bookstr or referencing ISBNs will appear here.`,onSwitchToGlobal:n===`follows`?()=>i(`global`):void 0})})]})}function Fe(){let e=D(),t=(0,G.useRef)(null),n=(0,G.useRef)(null),[r,i]=(0,G.useState)(``),[a,c]=(0,G.useState)(``),[l,u]=(0,G.useState)(!1),d=(0,G.useRef)(void 0),{data:f,isFetching:p}=Me(a),m=(0,G.useCallback)(e=>{i(e),clearTimeout(d.current),d.current=setTimeout(()=>{c(e.trim())},300)},[]);(0,G.useEffect)(()=>()=>clearTimeout(d.current),[]),(0,G.useEffect)(()=>{(a.length>=2&&f&&f.length>0||a.length>=2&&f&&f.length===0&&!p)&&u(!0)},[a,f,p]),(0,G.useEffect)(()=>{function e(e){n.current&&!n.current.contains(e.target)&&u(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]);let h=(0,G.useCallback)(n=>{i(``),c(``),u(!1),t.current?.blur(),e(`/i/isbn:${n}`)},[e]),g=(0,G.useCallback)(()=>{i(``),c(``),u(!1),t.current?.focus()},[]),_=(0,G.useCallback)(e=>{e.key===`Escape`&&(u(!1),t.current?.blur()),e.key===`Enter`&&f&&f.length>0&&(e.preventDefault(),h(f[0].isbn))},[f,h]);return(0,Y.jsxs)(`div`,{ref:n,className:`relative px-4 pt-5 pb-3`,children:[(0,Y.jsxs)(`div`,{className:`relative`,children:[(0,Y.jsx)(s,{className:`absolute left-3 top-1/2 -translate-y-1/2 size-4 text-muted-foreground pointer-events-none`}),(0,Y.jsx)(A,{ref:t,type:`text`,placeholder:`Search books by title, author...`,value:r,onChange:e=>m(e.target.value),onFocus:()=>{a.length>=2&&u(!0)},onKeyDown:_,className:`pl-9 pr-9 h-9 text-base md:text-sm rounded-full`}),r&&(0,Y.jsx)(`button`,{type:`button`,onClick:g,className:`absolute right-2 top-1/2 -translate-y-1/2 p-1 rounded-full text-muted-foreground hover:text-foreground hover:bg-secondary transition-colors`,children:(0,Y.jsx)(o,{className:`size-3.5`})})]}),l&&a.length>=2&&(0,Y.jsx)(`div`,{className:`absolute left-4 right-4 top-full mt-1 z-50 bg-popover border border-border rounded-lg shadow-lg overflow-hidden`,children:p&&(!f||f.length===0)?(0,Y.jsx)(`div`,{className:`divide-y divide-border`,children:Array.from({length:3}).map((e,t)=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 px-3 py-2.5`,children:[(0,Y.jsx)(j,{className:`w-8 h-11 rounded shrink-0`}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0 space-y-1`,children:[(0,Y.jsx)(j,{className:`h-3.5 w-3/4`}),(0,Y.jsx)(j,{className:`h-3 w-1/2`})]})]},t))}):f&&f.length>0?(0,Y.jsx)(`div`,{className:`divide-y divide-border max-h-80 overflow-y-auto`,children:f.map(e=>(0,Y.jsx)(Ie,{book:e,onSelect:h},e.isbn))}):(0,Y.jsxs)(`div`,{className:`px-4 py-6 text-center text-sm text-muted-foreground`,children:[`No books found for “`,a,`”`]})})]})}function Ie({book:e,onSelect:t}){return(0,Y.jsxs)(`button`,{type:`button`,className:`flex items-center gap-3 px-3 py-2.5 w-full text-left hover:bg-secondary/60 transition-colors`,onClick:()=>t(e.isbn),children:[e.coverUrl?(0,Y.jsx)(`img`,{src:e.coverUrl,alt:``,className:`w-8 h-11 rounded object-cover shrink-0`,loading:`lazy`,onError:e=>{e.currentTarget.style.display=`none`},decoding:`async`}):(0,Y.jsx)(`div`,{className:`w-8 h-11 rounded bg-secondary flex items-center justify-center shrink-0`,children:(0,Y.jsx)(r,{className:`size-3.5 text-muted-foreground/40`})}),(0,Y.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-sm font-medium truncate`,children:e.title}),e.authors.length>0&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground truncate`,children:e.authors.join(`, `)}),e.firstPublishYear&&(0,Y.jsx)(`p`,{className:`text-xs text-muted-foreground/60`,children:e.firstPublishYear})]})]})}export{Pe as BooksPage}; // @license-end