SYMBOL INDEX (48 symbols across 25 files) FILE: src/app/layout.tsx type RootLayoutProps (line 15) | interface RootLayoutProps { function RootLayout (line 19) | function RootLayout({ children }: RootLayoutProps) { FILE: src/components/icons.tsx type Icon (line 9) | type Icon = LucideIcon FILE: src/components/main-nav.tsx type MainNavProps (line 17) | interface MainNavProps { function MainNav (line 21) | function MainNav({ items }: MainNavProps) { FILE: src/components/site-header.tsx function SiteHeader (line 8) | function SiteHeader() { FILE: src/components/ui/button.tsx type ButtonProps (line 37) | interface ButtonProps FILE: src/components/ui/file-input.tsx type FileWithUrl (line 18) | interface FileWithUrl { type Action (line 31) | type Action = ReturnType type State (line 32) | type State = FileWithUrl[] type InputProps (line 34) | interface InputProps FILE: src/components/ui/image-upload.tsx type ImageUploadProps (line 13) | interface ImageUploadProps extends React.HTMLAttributes {} FILE: src/components/ui/textarea.tsx type TextareaProps (line 5) | interface TextareaProps FILE: src/components/ui/toast.tsx type ToastProps (line 114) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 116) | type ToastActionElement = React.ReactElement FILE: src/components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: src/config/image.ts constant MAX_FILE_SIZE (line 1) | const MAX_FILE_SIZE = 5000000 // 5MB FILE: src/config/s3.ts constant ALLOWED_FILE_TYPES (line 1) | const ALLOWED_FILE_TYPES = ['image/png', 'image/jpeg'] constant S3_BUCKET_NAME (line 2) | const S3_BUCKET_NAME = 'image-to-alt' FILE: src/config/site.ts type SiteConfig (line 3) | interface SiteConfig { FILE: src/hooks/use-s3-upload.ts type UseS3UploadReturn (line 7) | interface UseS3UploadReturn { FILE: src/hooks/use-toast.ts constant TOAST_LIMIT (line 5) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 6) | const TOAST_REMOVE_DELAY = 1000 type ToasterToast (line 8) | type ToasterToast = ToastProps & { function genId (line 24) | function genId() { type ActionType (line 29) | type ActionType = typeof actionTypes type Action (line 31) | type Action = type State (line 49) | interface State { function dispatch (line 129) | function dispatch(action: Action) { type Toast (line 136) | interface Toast extends Omit {} function toast (line 138) | function toast({ ...props }: Toast) { function useToast (line 167) | function useToast() { FILE: src/hooks/use-upload-file.ts type State (line 6) | interface State { type Action (line 14) | type Action = type Options (line 20) | type Options = { FILE: src/lib/api-middlewares/with-methods.ts function withMethods (line 3) | function withMethods(methods: string[], handler: NextApiHandler) { FILE: src/lib/exceptions.ts class FileTooLargeError (line 3) | class FileTooLargeError extends Error { method constructor (line 4) | constructor( FILE: src/lib/utils.ts function cn (line 6) | function cn(...inputs: ClassValue[]) { function validateFileType (line 10) | function validateFileType(file: File) { FILE: src/pages/api/image/process.ts type PartialReplicateResponse (line 6) | type PartialReplicateResponse = { function handler (line 21) | async function handler( FILE: src/types/api/image.ts type ImageResponseData (line 4) | type ImageResponseData = { type PresignResponseData (line 10) | type PresignResponseData = FILE: src/types/nav.ts type NavItem (line 1) | interface NavItem {