SYMBOL INDEX (140 symbols across 41 files) FILE: app/(auth)/layout.tsx function AuthLayout (line 1) | function AuthLayout({ FILE: app/(root)/cart/cart-table.tsx function AddButton (line 25) | function AddButton({ item }: { item: CartItem }) { function RemoveButton (line 55) | function RemoveButton({ item }: { item: CartItem }) { FILE: app/(root)/layout.tsx function RootLayout (line 4) | function RootLayout({ FILE: app/(root)/search/page.tsx function generateMetadata (line 36) | async function generateMetadata(props: { FILE: app/admin/layout.tsx function AdminLayout (line 8) | function AdminLayout({ FILE: app/api/uploadthing/core.ts type OurFileRouter (line 20) | type OurFileRouter = typeof ourFileRouter; FILE: app/api/webhooks/stripe/route.ts function POST (line 5) | async function POST(req: NextRequest) { FILE: app/layout.tsx function RootLayout (line 19) | function RootLayout({ FILE: app/unauthorized/page.tsx function UnauthorizedPage (line 9) | function UnauthorizedPage() { FILE: app/user/layout.tsx function UserLayout (line 7) | function UserLayout({ FILE: auth.config.ts method authorized (line 7) | authorized({ request, auth }) { FILE: auth.ts method authorize (line 25) | async authorize(credentials) { method session (line 59) | async session({ session, user, trigger, token }) { method jwt (line 72) | async jwt({ token, user, trigger, session }) { FILE: components/deal-countdown.tsx constant TARGET_DATE (line 9) | const TARGET_DATE = new Date('2025-01-20T00:00:00'); FILE: components/shared/pagination.tsx type PaginationProps (line 6) | type PaginationProps = { FILE: components/ui/badge.tsx type BadgeProps (line 26) | interface BadgeProps function Badge (line 30) | function Badge({ className, variant, ...props }: BadgeProps) { FILE: components/ui/button.tsx type ButtonProps (line 36) | interface ButtonProps FILE: components/ui/carousel.tsx type CarouselApi (line 12) | type CarouselApi = UseEmblaCarouselType[1] type UseCarouselParameters (line 13) | type UseCarouselParameters = Parameters type CarouselOptions (line 14) | type CarouselOptions = UseCarouselParameters[0] type CarouselPlugin (line 15) | type CarouselPlugin = UseCarouselParameters[1] type CarouselProps (line 17) | type CarouselProps = { type CarouselContextProps (line 24) | type CarouselContextProps = { function useCarousel (line 35) | function useCarousel() { FILE: components/ui/form.tsx type FormFieldContextValue (line 20) | type FormFieldContextValue< type FormItemContextValue (line 67) | type FormItemContextValue = { FILE: components/ui/sheet.tsx type SheetContentProps (line 52) | interface SheetContentProps FILE: components/ui/toast.tsx type ToastProps (line 115) | type ToastProps = React.ComponentPropsWithoutRef type ToastActionElement (line 117) | type ToastActionElement = React.ReactElement FILE: components/ui/toaster.tsx function Toaster (line 13) | function Toaster() { FILE: db/prisma.ts method compute (line 21) | compute(product) { method compute (line 26) | compute(product) { method compute (line 34) | compute(cart) { method compute (line 40) | compute(cart) { method compute (line 46) | compute(cart) { method compute (line 52) | compute(cart) { method compute (line 60) | compute(cart) { method compute (line 66) | compute(cart) { method compute (line 72) | compute(cart) { method compute (line 78) | compute(cart) { method compute (line 85) | compute(cart) { FILE: db/seed.ts function main (line 5) | async function main() { FILE: email/purchase-receipt.tsx type OrderInformationProps (line 65) | type OrderInformationProps = { function PurchaseReceiptEmail (line 69) | function PurchaseReceiptEmail({ order }: OrderInformationProps) { FILE: hooks/use-toast.ts constant TOAST_LIMIT (line 11) | const TOAST_LIMIT = 1 constant TOAST_REMOVE_DELAY (line 12) | const TOAST_REMOVE_DELAY = 1000000 type ToasterToast (line 14) | type ToasterToast = ToastProps & { function genId (line 30) | function genId() { type ActionType (line 35) | type ActionType = typeof actionTypes type Action (line 37) | type Action = type State (line 55) | interface State { function dispatch (line 136) | function dispatch(action: Action) { type Toast (line 143) | type Toast = Omit function toast (line 145) | function toast({ ...props }: Toast) { function useToast (line 174) | function useToast() { FILE: lib/actions/cart.actions.ts function addItemToCart (line 29) | async function addItemToCart(data: CartItem) { function getMyCart (line 123) | async function getMyCart() { function removeItemFromCart (line 150) | async function removeItemFromCart(productId: string) { FILE: lib/actions/order.actions.ts function createOrder (line 18) | async function createOrder() { function getOrderById (line 107) | async function getOrderById(orderId: string) { function createPayPalOrder (line 122) | async function createPayPalOrder(orderId: string) { function approvePayPalOrder (line 162) | async function approvePayPalOrder( function updateOrderToPaid (line 210) | async function updateOrderToPaid({ function getMyOrders (line 273) | async function getMyOrders({ type SalesDataType (line 300) | type SalesDataType = { function getOrderSummary (line 306) | async function getOrderSummary() { function getAllOrders (line 347) | async function getAllOrders({ function deleteOrder (line 387) | async function deleteOrder(id: string) { function updateOrderToPaidCOD (line 403) | async function updateOrderToPaidCOD(orderId: string) { function deliverOrder (line 416) | async function deliverOrder(orderId: string) { FILE: lib/actions/product.actions.ts function getLatestProducts (line 11) | async function getLatestProducts() { function getProductBySlug (line 21) | async function getProductBySlug(slug: string) { function getProductById (line 28) | async function getProductById(productId: string) { function getAllProducts (line 37) | async function getAllProducts({ function deleteProduct (line 117) | async function deleteProduct(id: string) { function createProduct (line 139) | async function createProduct(data: z.infer) { function updateProduct (line 156) | async function updateProduct(data: z.infer) { function getAllCategories (line 182) | async function getAllCategories() { function getFeaturedProducts (line 192) | async function getFeaturedProducts() { FILE: lib/actions/review.actions.ts function createUpdateReview (line 11) | async function createUpdateReview( function getReviews (line 88) | async function getReviews({ productId }: { productId: string }) { function getReviewByProductId (line 109) | async function getReviewByProductId({ FILE: lib/actions/user.actions.ts function signInWithCredentials (line 23) | async function signInWithCredentials( function signOutUser (line 45) | async function signOutUser() { function signUpUser (line 58) | async function signUpUser(prevState: unknown, formData: FormData) { function getUserById (line 94) | async function getUserById(userId: string) { function updateUserAddress (line 103) | async function updateUserAddress(data: ShippingAddress) { function updateUserPaymentMethod (line 130) | async function updateUserPaymentMethod( function updateProfile (line 158) | async function updateProfile(user: { name: string; email: string }) { function getAllUsers (line 189) | async function getAllUsers({ function deleteUser (line 226) | async function deleteUser(id: string) { function updateUser (line 245) | async function updateUser(user: z.infer) { FILE: lib/auth-guard.ts function requireAdmin (line 4) | async function requireAdmin() { FILE: lib/constants/index.ts constant APP_NAME (line 1) | const APP_NAME = process.env.NEXT_PUBLIC_APP_NAME || 'Prostore'; constant APP_DESCRIPTION (line 2) | const APP_DESCRIPTION = constant SERVER_URL (line 5) | const SERVER_URL = constant LATEST_PRODUCTS_LIMIT (line 7) | const LATEST_PRODUCTS_LIMIT = constant PAYMENT_METHODS (line 30) | const PAYMENT_METHODS = process.env.PAYMENT_METHODS constant DEFAULT_PAYMENT_METHOD (line 33) | const DEFAULT_PAYMENT_METHOD = constant PAGE_SIZE (line 36) | const PAGE_SIZE = Number(process.env.PAGE_SIZE) || 12; constant USER_ROLES (line 53) | const USER_ROLES = process.env.USER_ROLES constant SENDER_EMAIL (line 63) | const SENDER_EMAIL = process.env.SENDER_EMAIL || 'onboarding@resend.dev'; FILE: lib/paypal.ts function generateAccessToken (line 45) | async function generateAccessToken() { function handleResponse (line 64) | async function handleResponse(response: Response) { FILE: lib/utils.ts function cn (line 5) | function cn(...inputs: ClassValue[]) { function convertToPlainObject (line 10) | function convertToPlainObject(value: T): T { function formatNumberWithDecimal (line 15) | function formatNumberWithDecimal(num: number): string { function formatError (line 22) | function formatError(error: any) { function round2 (line 46) | function round2(value: number | string) { constant CURRENCY_FORMATTER (line 56) | const CURRENCY_FORMATTER = new Intl.NumberFormat('en-US', { function formatCurrency (line 63) | function formatCurrency(amount: number | string | null) { constant NUMBER_FORMATTER (line 74) | const NUMBER_FORMATTER = new Intl.NumberFormat('en-US'); function formatNumber (line 76) | function formatNumber(number: number) { function formatId (line 81) | function formatId(id: string) { function formUrlQuery (line 126) | function formUrlQuery({ FILE: prisma/migrations/20241116125832_init/migration.sql type "Product" (line 2) | CREATE TABLE "Product" ( type "Product" (line 22) | CREATE UNIQUE INDEX "product_slug_idx" ON "Product"("slug") FILE: prisma/migrations/20241118183645_add_user_based_tables/migration.sql type "User" (line 2) | CREATE TABLE "User" ( type "Account" (line 19) | CREATE TABLE "Account" ( type "Session" (line 38) | CREATE TABLE "Session" ( type "VerificationToken" (line 49) | CREATE TABLE "VerificationToken" ( type "User" (line 58) | CREATE UNIQUE INDEX "user_email_idx" ON "User"("email") FILE: prisma/migrations/20241121210251_add_cart/migration.sql type "Cart" (line 2) | CREATE TABLE "Cart" ( FILE: prisma/migrations/20241125173259_add_order/migration.sql type "Order" (line 2) | CREATE TABLE "Order" ( type "OrderItem" (line 22) | CREATE TABLE "OrderItem" ( FILE: prisma/migrations/20241209181915_add_review/migration.sql type "Review" (line 2) | CREATE TABLE "Review" ( FILE: types/index.ts type Product (line 13) | type Product = z.infer & { type Cart (line 20) | type Cart = z.infer; type CartItem (line 21) | type CartItem = z.infer; type ShippingAddress (line 22) | type ShippingAddress = z.infer; type OrderItem (line 23) | type OrderItem = z.infer; type Order (line 24) | type Order = z.infer & { type PaymentResult (line 35) | type PaymentResult = z.infer; type Review (line 36) | type Review = z.infer & { FILE: types/next-auth.d.ts type JWT (line 11) | interface JWT { type Session (line 22) | interface Session { type User (line 28) | interface User {