Marketing · Community template · Complete page
SaaS product launch page
A complete product launch page adapted from Leopoldo Miranda’s MIT template: layered hero cards, product capabilities, services, workflow, customer perspectives, exact-price billing choices, host-connected updates and native FAQ disclosures.
Interactive · 1200px viewport · Scroll inside the preview
Install the complete page
One command installs the page component, its matching blocks, shared helpers, and MIT notices into your configured components directory. Prepare your existing project once, then run the page install command.
Before the first install
- 1.
Open your existing React project
Use React 19+, TypeScript/TSX, and a working Tailwind CSS 4 build. Keep the project's existing router, dependencies, and global stylesheet.
- 2.
Check components.json before installing
Reuse an existing components.json. Its aliases.components must resolve in TypeScript and the bundler, and tailwind.css must point to the stylesheet your app loads. Do not reinitialize an already configured project.
Only if components.json is missing; run inside the existing app and follow its framework setup.
npx shadcn@latest init - 3.
Include the installed sources in Tailwind
Keep the host's standard shadcn theme variables, Tailwind @theme mappings, and base border styles loaded (background, foreground, border, sidebar, and chart tokens). Ensure Tailwind scans the actual installed components directory. Restricted source(none), ignored paths, and monorepos may need an @source path relative to the stylesheet. For theme='dark', use a class-based dark variant in the host CSS.
- 4.
Import through your configured components alias
The @components/ entry is a registry target placeholder, not a JavaScript import. Replace the example's @/components prefix with components.json aliases.components, verify the file printed by the CLI, and mount it in an existing host route.
Missing styles or class-based dark mode?
Merge only the directives your Tailwind CSS 4 stylesheet needs. This source path example assumes src/styles.css and components installed under src/components; adjust it to your actual directory. Keep your host’s existing dark-mode selector and use theme="inherit", or configure this class variant when using theme="dark".
/* Example: src/styles.css */
/* Add only if this directory is outside your existing scan scope. */
@source "./components/uiblocks";
/* Required for the recipe theme="dark" class switch. */
@custom-variant dark (&:where(.dark, .dark *));Setup references: shadcn configuration · Tailwind source scanning · Dark mode
Install this page
npx shadcn@latest add https://uiblocks.org/r/recipe-product-launch.jsonImport one component
import ProductLaunchRecipe from "@/components/uiblocks/recipe-product-launch/recipe-product-launch";
export default function ProductPage() {
return (
<ProductLaunchRecipe
brand="Your product"
primaryHref="/app"
copy={{ title: "Your actual product promise.", accent: "A clear next step.", description: "Describe the product you really provide." }}
features={[{ id: "actual-feature", title: "Your capability", description: "Explain the actual workflow.", illustration: "growth" }]}
plans={[{ id: "team", name: "Your team plan", description: "Your verified plan description", prices: { monthly: { amount: "Your actual price", period: "/month" } }, benefits: ["Your actual included feature"] }]}
/>
);
}The import example uses the standard @/components alias. Keep your project’s existing alias and use the installed entry printed by shadcn. Pass your own copy, links, and callbacks through the component options below.
Local interface demo · no upload or conversion
import ProductLaunchRecipe from "@/components/uiblocks/recipe-product-launch/recipe-product-launch";
export default function DemoPage() {
return <ProductLaunchRecipe mode="demo" theme="dark" />;
}Component options and callbacks
- mode, theme, className
- Controlled by default. Explicit mode="demo" enables fictional content and local interactions; demo service callbacks are never called. Theme inherits the host or can be scoped to dark.
- brand, copy, primaryHref, secondaryHref, homeHref, navigation, footerLinks, copyright
- Provide actual product copy and ordinary host-owned URLs. Copy is a typed partial object covering every section. Missing primary URLs disable the CTA; executable URL schemes are rejected.
- features, services, steps, highlights, metrics, testimonials, faq
- Readonly host-owned collections update directly from props; explicit [] remains empty even in demo mode. Features can choose growth/reflecting/lookingAhead original inline code illustrations; testimonials use initials and contain no inferred endorsements.
- plans, billingPeriod, onBillingPeriodChange
- Plans contain id/name/description/benefits and prices.monthly/annual objects with exact amount/period/note strings. Never calculate discounts. A missing period shows Not offered. A single-period offering selects that available period unless the host explicitly controls billingPeriod.
- onSelectPlan(planId, period)
- Optional awaited host callback. Missing callback disables selection; rejection keeps an error and retry action. It performs no payment. Demo chooses locally and never calls the callback.
- onSubscribe(email), subscriptionSuccessMessage
- Optional awaited real host subscription callback. Missing callback disables the email field and submit. Pending guards duplicate submits, rejection preserves the address and retry, and success appears only after resolution. Demo never sends the address or invokes this callback.
Template source
Adapted from Shadcn/UI Landing Page Template by Leopoldo Miranda.
MIT licensed. The original notice and adaptation record are included in the installable page bundle.
Source revision: ae3716dbce5c8a26815222bb743994b5717938f1
- Adapted the original complete Vite/React page composition and layered hero-card visual structure into one self-contained installable React/Tailwind 4 page.
- Replaced Radix primitives, global CSS and theme provider with native disclosures, scoped Tailwind utilities and a host-inheriting theme; no Next.js imports, fonts or new dependencies.
- Replaced upstream PNG illustrations and hand-drawn Icons.tsx paths because README and assets supplied no separate asset provenance or license; no upstream PNG or SVG paths are redistributed. The new product-launch-art.tsx SVG primitives are original code authored for this adaptation. The hero uses the existing lucide Lightbulb.
- Removed external avatars and customer brands; initials and actual host-supplied testimonials replace them. Fictional business records appear only with explicit mode="demo".
- Added typed live host content, exact monthly/annual display prices, controlled billing period, awaited subscription and plan callbacks, pending/error/retry states and safe disconnected defaults. Demo callbacks never contact host services.
- Changed fixed/absolute hero-card layout to an intrinsically sized staggered grid and added mobile/long-content/reduced-motion handling.
Keep the design intact
- Supply verified product capabilities, prices, customer permissions and metrics in controlled mode; empty defaults contain no sample business records.
- Keep the original layered-card hero and complete section progression; adapt section copy through typed props instead of replacing the page with unrelated blocks.
- Wire onSubscribe and onSelectPlan to actual host services before enabling those actions. A resolved callback means the host accepted the request; this page does not provide checkout, billing or subscription infrastructure.
- For each billing period supply the exact display amount and period. Annual values are never calculated from monthly values and no savings badge is invented.
- Original upstream PNGs and hand-drawn SVG paths have unconfirmed asset provenance and are not included. The replacement SVG illustrations are self-contained code; there are no external image/font URLs.
- Verify real long Chinese copy at mobile/desktop sizes and use mode="demo" only for explicitly labelled illustrations.
Hand this recipe to your AI assistant
Install the complete UIBlocks recipe-product-launch page and use its ProductLaunchRecipe implementation. Preserve the MIT-author-attributed layered hero, emerald/neutral visual system, actual nine-section page and native FAQ/mobile navigation. Supply my real product copy, features, services, workflow, exact billing prices, authorized testimonials, FAQs and routes. Connect subscription and plan callbacks to my real host services with pending/error/retry behavior; leave actions disabled until connected. Keep mode controlled for production and use explicit demo only for labelled fictional examples. Do not add Next.js dependencies, external fonts, unverified customer logos or unsupported original illustrations.
Read the recipe JSON