Admin Components
Components for building admin dashboards and user management interfaces.
Components
UserDetailCard
Display detailed user information.
Location: src/components/Admin/UserDetailCard.tsx
Shows:
- User name and email
- Account creation date
- Admin status
- Identity providers
BillingDetailsCard
Display user billing and subscription information.
Location: src/components/Admin/BillingDetailsCard.tsx
Shows:
- Current plan
- Subscription status
- Stripe customer ID
- Billing history
StatsCard
Display statistics and metrics.
Location: src/components/Admin/StatsCard.tsx
Shows:
- Total users
- Active subscriptions
- Revenue metrics
- Growth stats
ModalEditUser
Modal for editing user information.
Location: src/components/Admin/ModalEditUser.tsx
Allows editing:
- Display name
- Admin status
ModalDeleteUser
Confirmation modal for deleting users.
Location: src/components/Admin/ModalDeleteUser.tsx
Features:
- Confirmation dialog
- Soft delete option
- Cascade delete warning
IdentityProvidersList
List of user’s authentication providers.
Location: src/components/Admin/IdentityProvidersList.tsx
Shows:
- Email/password
- Google OAuth
- Other connected providers
Admin Page
The main admin page is at /app/admin/page.tsx.
Features:
- User list with search
- Filtering by plan/status
- Pagination
- Quick actions
User Detail Page
Individual user pages at /app/admin/user/[id]/page.tsx.
Features:
- Full user details
- Billing information
- Edit/delete actions
- Activity log
Protecting Admin Routes
Admin routes should be protected with middleware or auth checks:
import { getServerSession } from 'next-auth'
export default async function AdminPage() {
const session = await getServerSession()
if (!session?.user?.isAdmin) {
redirect('/auth/login')
}
// Admin content
}Next Steps
- User Authentication - Learn about auth implementation
- User Model - User data structure