SYMBOL INDEX (44 symbols across 23 files) FILE: src/app/actions.ts function sharePdf (line 18) | async function sharePdf({ FILE: src/app/api/image/route.ts function POST (line 8) | async function POST(req: Request) { FILE: src/app/api/summarize/route.ts function POST (line 6) | async function POST(req: Request) { FILE: src/app/layout.tsx function RootLayout (line 26) | function RootLayout({ FILE: src/app/page.tsx type StatusApp (line 24) | type StatusApp = "idle" | "parsing" | "generating"; function Home (line 26) | function Home() { FILE: src/app/pdf/[id]/page.tsx function generateMetadata (line 18) | async function generateMetadata( function Home (line 46) | async function Home({ FILE: src/app/pdf/[id]/smart-pdf-viewer.tsx function SmartPDFViewer (line 13) | function SmartPDFViewer({ FILE: src/components/icons/github.tsx function GithubIcon (line 3) | function GithubIcon(props: ComponentProps<"svg">) { FILE: src/components/icons/sparkles.tsx function SparklesIcon (line 3) | function SparklesIcon(props: ComponentProps<"svg">) { FILE: src/components/icons/x.tsx function XIcon (line 3) | function XIcon(props: ComponentProps<"svg">) { FILE: src/components/images/homepage-image-1.tsx function HomepageImage1 (line 3) | function HomepageImage1(props: ComponentProps<"svg">) { FILE: src/components/images/homepage-image-2.tsx function HomepageImage2 (line 3) | function HomepageImage2(props: ComponentProps<"svg">) { FILE: src/components/ui/action-button.tsx function ActionButton (line 8) | function ActionButton({ FILE: src/components/ui/button.tsx type ButtonProps (line 39) | interface ButtonProps FILE: src/components/ui/logo.tsx function Logo (line 1) | function Logo(props: React.ComponentProps<"svg">) { FILE: src/components/ui/spinner.tsx function Spinner (line 3) | function Spinner({ FILE: src/components/ui/summary-content.tsx type SummaryContentProps (line 5) | interface SummaryContentProps { function SummaryContent (line 11) | function SummaryContent({ FILE: src/components/ui/table-of-contents.tsx type TableOfContentsProps (line 7) | interface TableOfContentsProps { function TableOfContents (line 14) | function TableOfContents({ FILE: src/components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: src/components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: src/hooks/use-toast.ts constant TOAST_LIMIT (line 8) | const TOAST_LIMIT = 1; constant TOAST_REMOVE_DELAY (line 9) | const TOAST_REMOVE_DELAY = 1000000; type ToasterToast (line 11) | type ToasterToast = ToastProps & { type ActionTypes (line 18) | type ActionTypes = { function genId (line 27) | function genId() { type Action (line 32) | type Action = type State (line 50) | interface State { function dispatch (line 131) | function dispatch(action: Action) { type Toast (line 138) | type Toast = Omit; function toast (line 140) | function toast({ ...props }: Toast) { function useToast (line 169) | function useToast() { FILE: src/lib/summarize.ts type Chunk (line 4) | type Chunk = { function getPdfText (line 10) | async function getPdfText(pdf: PDFDocumentProxy) { function chunkPdf (line 46) | async function chunkPdf(pdf: PDFDocumentProxy) { function summarizeStream (line 66) | async function summarizeStream(chunks: Chunk[], language: string) { function generateQuickSummary (line 107) | async function generateQuickSummary(chunks: Chunk[], language: string) { type ImageGenerationResponse (line 127) | type ImageGenerationResponse = { function generateImage (line 131) | async function generateImage(text: string) { FILE: src/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) {