Section of the SaaS Dashboard Coding Template

Empty State Section

Reusable empty state pattern for the SaaS admin. Used across the users table, notifications, team, and any list-based view when there is no data. Centered icon, headline, subtitle, and primary CTA button.

Section preview

Loading preview

Or build this section with a prompt

Paste the prompt into your AI coding tool. Each version is scoped to just this section, part of the SaaS Dashboard Coding Template.

Build the Empty State section for a Next.js 14+ SaaS admin dashboard in Cursor. Design system: white background (#FFFFFF), black text on white, muted grey (#6B7280) for secondary text, brand blue (#2B65F6) reserved for primary CTAs only, Switzer font, font-medium max (never bold), 12-14px body copy, 16-20px headings, minimal line icons only. Layout: a centered vertical stack: a small line icon at the top (48px, muted grey #6B7280, single-color, minimal), a headline below (16-18px, font-medium, black), a subtitle below the headline (12-13px, muted grey, max-width 280px for line breaks), and a primary CTA button at the bottom (brand blue background, white text, small pill shape). Fill the parent container. Accept props: icon (ReactNode), title, subtitle, ctaLabel, onCtaClick. Ship as a single .tsx file using only Tailwind classes and native React state. No motion library required. This section belongs to the SaaS admin dashboard template family; reference the shared layout (left sidebar nav + top bar) but do not duplicate it here.

How to use this Empty State Section as a prompt

  1. Paste the prompt into Cursor, Claude Code, or Lovable to build the Empty State Section as a reusable component in a Next.js SaaS admin app.
  2. Best as a reusable empty state for the users table, notifications list, team members, and any zero-data screen in a SaaS admin panel.
  3. Ask Codex or Lovable to add variants for filtered-empty vs never-created-empty, or wire the CTA action to a callback prop.

How to use this Empty State Section as code

  1. Drop the React + Tailwind file into `components/EmptyState.tsx` and pass `title`, `subtitle`, `ctaLabel`, and `onCtaClick` props.
  2. Uses a single Lucide icon (or hand-drawn SVG) as the illustration. Zero external image dependency.
  3. Compatible with Next.js App Router, any list-based interface, and both server and client components.

Other sections in the SaaS Dashboard Coding Template

More sections you can compose alongside the Empty State Section. Each ships with matching prompts for Claude Code, Cursor, Codex, Lovable, Replit, and Google Stitch.

FAQ

How do I build a reusable empty state component in React?+

Copy the prompt on this page into Claude Code, Cursor, Lovable, Codex, Replit, or Google Stitch. The generated `EmptyState` component drops into `components/EmptyState.tsx` and accepts `icon`, `title`, `subtitle`, `ctaLabel`, `onCtaClick` props. Drop it into any list-based screen (users table, notifications, team) as the fallback when the data array is empty.

Should I show a different empty state when a search returns nothing vs no data ever?+

Yes. The template ships with a generic empty state (no data ever created). For search-empty, render a variant with the search query in the message ("No results for \"payment\"") and a Clear filters button instead of the Create CTA. Both variants use the same component with different props.

Can I use these templates and sections copyright-free in my website or app?+

Yes. Every template, section, code file, and included image is free to use in your website, app, client project, SaaS product, or open-source build with no attribution required. There is no license fee, no royalty, and no copyright restriction. The code is yours to keep, modify, and ship commercially the moment you copy it.

What do I get on each template page?+

A visual preview of the template, the full multi-file source code as a single copy-paste string with `// === filename ===` headers so Cursor and Claude Code can split it into the correct files automatically, and the prompt that regenerates the template in Claude Code, Cursor, Codex, Lovable, Replit, or Google Stitch. Every template ships with the shared design system used across the AI Library: white background, black on grey typography, brand blue reserved for primary CTAs, small type, minimal icons.

What is the difference between a template and a component?+

A component is a single UI unit (a chat interface, a bento grid, a scroll progress bar). A template is a full app made up of many components: routes, layout, navigation, data flow, and interactions wired together. The AI Library ships both. Templates live under /prompts/ai-library/templates. Components live under /prompts/ai-library/website-sections. Templates use components under the hood, and every template page cross-links to the AI Library components used inside its sections.

Are the templates licensed for commercial use?+

Yes. Every template can be copied, adapted, sold, and shipped in commercial projects with no attribution required. This applies to the full-app parent code and every child section. The AI prompts are also unrestricted. Use them for client work, indie SaaS, agency deliverables, internal tools, and open-source projects.

What technology stack do these templates use?+

Every template is built on Next.js 14+ App Router + Tailwind CSS v3 + Switzer font, and written in TypeScript. Backend choices are yours: templates work with Supabase, Clerk, or Auth.js for authentication, and with Postgres, Convex, PlanetScale, or Neon for data. Templates deploy on Vercel, Cloudflare Pages, or Netlify. No motion library is required. No CSS files are used; all styling is Tailwind utility classes.

How do I use a template with Cursor or Claude Code?+

Open the template page, click Copy full code, and paste it directly into a Cursor or Claude Code chat. Cursor and Claude Code both detect the `// === filename ===` headers and split the paste into the correct files in your project. From there you can ask them to swap the auth provider, change the color palette, wire the data to your API, or generate the missing routes. The prompt tab gives you the exact starting instruction to hand off.

Do the templates work with my auth provider and database?+

Yes. Auth is wrapped behind a `src/lib/auth.ts` helper so you can swap Supabase, Clerk, Auth.js, or your own SSO by changing one file. The same pattern applies to the database client: swap Supabase for Postgres, Convex, PlanetScale, or Neon without changing the UI. Every template ships a Supabase reference implementation by default because it is the most common choice for AI-native SaaS.

Do templates include TypeScript, dark mode, and responsive design?+

Yes to TypeScript across every file (typed props, typed data models, typed helpers). Dark mode is opt-in via Tailwind's `dark:` variant — the base color palette is defined for both light and dark and every section renders correctly in both. Every section is responsive from 375px up to desktop, with sensible breakpoints for tablet (sm: 640px, md: 768px, lg: 1024px).

Can I combine sections from multiple templates?+

Yes. Every child section is a standalone page and standalone code file. Copy the Users Table section from the SaaS Dashboard template into an Admin Panel template and it works with no modification, because they share the same design system, typography, spacing scale, and layout primitives. The prompt tab for each section is scoped to that section so an AI tool can build just what you need.

Why include a prompt if the code is already here?+

Three reasons. First, the prompt regenerates the template in your own codebase matched to your design tokens, brand color, file structure, and preferred auth or database — faster than editing someone else's code. Second, the prompt is a starting instruction you can extend ("build this dashboard but replace analytics with a Kanban board") instead of a fixed snapshot. Third, each prompt is written specifically for the tool it targets: Claude Code, Cursor, Codex, Lovable, Replit, or Google Stitch. The output is consistent because the design constraints are the same across all six versions.

Which AI coding tool is best for these templates?+

All six prompts produce the same visual output. Cursor and Claude Code are best for dropping full multi-file code into an existing repo where you want the AI to manage imports, run type checks, and iterate. Lovable and Replit are best if you want a fresh working preview URL in seconds without setting up a local dev environment. Codex fits agent-driven workflows where you want the AI to work autonomously across multiple files. Google Stitch is best if you want to iterate on the design visually in Google Labs before dropping the generated React code into your project.

Can I customize the design system for my brand?+

Yes. The design system is Tailwind-native: change the brand color in `tailwind.config.ts` and every primary CTA updates. Change the font in `next/font` and every heading and body copy updates. Change the border-radius in the shared component variants and every card, button, and modal updates. Because the templates lean minimal (white background, black text, blue only on CTAs) they adapt easily to any brand system without visual conflict.