60 | {page.title} 61 |
62 | {page.description && ( 63 |{page.description}
64 | )} 65 |67 |
{text}
} 17 |+180.1% from last month
20 |19 | {description} 20 |
21 |20 | {subtitle} 21 |
22 | ) : null} 23 |16 | Page not found. Back to{" "} 17 | 21 | Homepage 22 | 23 | . 24 |
25 |{text}
32 | )} 33 |46 | {authors[username].name} 47 |
48 |49 | @{authors[username].twitter} 50 |
51 |37 | Enter your email to sign in to your account 38 |
39 |44 | 48 | Don't have an account? Sign Up 49 | 50 |
51 |{page.description}
64 | )} 65 |31 | You are an {user.role}. Back to{" "} 32 | 36 | Dashboard 37 | 38 | . 39 |
40 |43 | {isCanceled 44 | ? "Your plan will be canceled on " 45 | : "Your plan renews on "} 46 | {formatDate(stripeCurrentPeriodEnd)}. 47 |
48 | ) : null} 49 | 50 | {isPaid && stripeCustomerId ? ( 51 |
39 | {JSON.stringify(data, null, 2)}
40 |
41 | ),
42 | });
43 | }
44 |
45 | return (
46 |
73 |
74 | );
75 | }
76 |
--------------------------------------------------------------------------------
/components/sections/testimonials.tsx:
--------------------------------------------------------------------------------
1 | import Image from "next/image";
2 |
3 | import { testimonials } from "@/config/landing";
4 | import { HeaderSection } from "@/components/shared/header-section";
5 |
6 | export default function Testimonials() {
7 | return (
8 | 35 | {item.name} 36 |
37 |38 | {item.job} 39 |
40 |{item.review}43 |
35 | Enter your email below to create your account 36 |
37 |42 | By clicking continue, you agree to our{" "} 43 | 47 | Terms of Service 48 | {" "} 49 | and{" "} 50 | 54 | Privacy Policy 55 | 56 | . 57 |
58 |25 | {data.description} 26 |
27 |
67 |
--------------------------------------------------------------------------------
/prisma/schema.prisma:
--------------------------------------------------------------------------------
1 | // This is your Prisma schema file,
2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema
3 |
4 | generator client {
5 | provider = "prisma-client-js"
6 | }
7 |
8 | datasource db {
9 | provider = "postgresql"
10 | url = env("DATABASE_URL")
11 | }
12 |
13 | enum UserRole {
14 | ADMIN
15 | USER
16 | }
17 |
18 | model Account {
19 | id String @id @default(cuid())
20 | userId String
21 | type String
22 | provider String
23 | providerAccountId String
24 | refresh_token String? @db.Text
25 | access_token String? @db.Text
26 | expires_at Int?
27 | token_type String?
28 | scope String?
29 | id_token String? @db.Text
30 | session_state String?
31 | createdAt DateTime @default(now()) @map(name: "created_at")
32 | updatedAt DateTime @default(now()) @map(name: "updated_at")
33 |
34 | user User @relation(fields: [userId], references: [id], onDelete: Cascade)
35 |
36 | @@unique([provider, providerAccountId])
37 | @@index([userId])
38 | @@map(name: "accounts")
39 | }
40 |
41 | model Session {
42 | id String @id @default(cuid())
43 | sessionToken String @unique
44 | userId String
45 | expires DateTime
46 | user User @relation(fields: [userId], references: [id], onDelete: Cascade)
47 |
48 | @@index([userId])
49 | @@map(name: "sessions")
50 | }
51 |
52 | model User {
53 | id String @id @default(cuid())
54 | name String?
55 | email String? @unique
56 | emailVerified DateTime?
57 | image String?
58 | createdAt DateTime @default(now()) @map(name: "created_at")
59 | updatedAt DateTime @default(now()) @map(name: "updated_at")
60 | role UserRole @default(USER)
61 |
62 | accounts Account[]
63 | sessions Session[]
64 |
65 | stripeCustomerId String? @unique @map(name: "stripe_customer_id")
66 | stripeSubscriptionId String? @unique @map(name: "stripe_subscription_id")
67 | stripePriceId String? @map(name: "stripe_price_id")
68 | stripeCurrentPeriodEnd DateTime? @map(name: "stripe_current_period_end")
69 |
70 | @@map(name: "users")
71 | }
72 |
73 | model VerificationToken {
74 | identifier String
75 | token String @unique
76 | expires DateTime
77 |
78 | @@unique([identifier, token])
79 | @@map(name: "verification_tokens")
80 | }
81 |
--------------------------------------------------------------------------------
/content/docs/configuration/layouts.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: Dashboard Layout Options
3 | description: Choose between two different layout options for your dashboard.
4 | ---
5 |
6 | Explore the different layout options available for customizing your dashboard. You have the choice between two layouts for the dashboard.
7 |
8 | ## Centered Sidebar and Main Content
9 |
10 | In this layout, both the sidebar and the main content are centered in the middle of the page, like **Stripe dashboard**.
11 |
12 | ```tsx
13 | {guide.description}
47 | )} 48 |51 | {formatDate(guide.date)} 52 |
53 | )} 54 |No guides published.
63 | )} 64 |59 | {data.description} 60 |
61 | )} 62 |72 | {formatDate(data.date)} 73 |
74 | )} 75 |33 | This is strictly for demo purposes - only your email and profile 34 | picture will be stored. 35 |
36 |