Data

Data tables, Kanban boards, searchable tables, and timeline components.

Full Data Table

Feature-rich data table with sorting, filtering, pagination, and bulk actions.

Preview
NameEmailRoleStatus
Alice Johnsonalice@example.comAdminActive
Bob Smithbob@example.comMemberActive
Carol Whitecarol@example.comMemberInactive
Dave Browndave@example.comViewerActive

0 of 4 row(s) selected

Rows per page:
Page 1 of 1
NameEmailRoleStatus
Alice Johnsonalice@example.comAdminActive
Bob Smithbob@example.comMemberActive
Carol Whitecarol@example.comMemberInactive
Dave Browndave@example.comViewerActive

0 of 4 row(s) selected

Rows per page:
Page 1 of 1
NameEmailRoleStatus
Alice Johnsonalice@example.comAdminActive
Bob Smithbob@example.comMemberActive
Carol Whitecarol@example.comMemberInactive
Dave Browndave@example.comViewerActive

0 of 4 row(s) selected

Rows per page:
Page 1 of 1
Full Data Table.tsx
import { FullDataTable } from "@launchapp/design-system/blocks/data";import type { ColumnDef } from "@tanstack/react-table";interface User {  id: string;  name: string;  email: string;  role: string;  status: "active" | "inactive";}const columns: ColumnDef<User>[] = [  { accessorKey: "name", header: "Name" },  { accessorKey: "email", header: "Email" },  { accessorKey: "role", header: "Role" },  { accessorKey: "status", header: "Status" },];const data: User[] = [  { id: "1", name: "Alice Johnson", email: "alice@example.com", role: "Admin", status: "active" },  { id: "2", name: "Bob Smith", email: "bob@example.com", role: "Member", status: "active" },  { id: "3", name: "Carol White", email: "carol@example.com", role: "Member", status: "inactive" },];export default function Page() {  return <FullDataTable columns={columns} data={data} searchColumn="name" />;}

Kanban Board

Drag-and-drop Kanban board with columns and cards.

Preview

To Do

2

Research competitors

Research

Design wireframes

Design

In Progress

2

Build API endpoints

Engineering

Write unit tests

QA

Done

1

Project kickoff

Planning

To Do

2

Research competitors

Research

Design wireframes

Design

In Progress

2

Build API endpoints

Engineering

Write unit tests

QA

Done

1

Project kickoff

Planning

To Do

2

Research competitors

Research

Design wireframes

Design

In Progress

2

Build API endpoints

Engineering

Write unit tests

QA

Done

1

Project kickoff

Planning
Kanban Board.tsx
import { KanbanBoard } from "@launchapp/design-system/blocks/data";const initialColumns = [  {    id: "todo",    title: "To Do",    cards: [      { id: "1", title: "Research competitors", badge: "Research" },      { id: "2", title: "Design wireframes", badge: "Design" },    ],  },  {    id: "in-progress",    title: "In Progress",    cards: [      { id: "3", title: "Build API endpoints", badge: "Engineering" },    ],  },  {    id: "done",    title: "Done",    cards: [      { id: "4", title: "Project kickoff", badge: "Planning" },    ],  },];export default function Page() {  return <KanbanBoard initialColumns={initialColumns} />;}

Searchable Data Table

Data table with search input and column visibility controls.

Preview

4 results

NameEmailRoleStatus
Alice Johnsonalice@example.comAdminActive
Bob Smithbob@example.comMemberActive
Carol Whitecarol@example.comMemberInactive
Dave Browndave@example.comViewerActive

Page 1 of 1

Rows:
Searchable Data Table.tsx
import { SearchableDataTable } from "@launchapp/design-system/blocks/data";import type { ColumnDef } from "@tanstack/react-table";interface Product {  id: string;  name: string;  category: string;  price: number;}const columns: ColumnDef<Product>[] = [  { accessorKey: "name", header: "Name" },  { accessorKey: "category", header: "Category" },  { accessorKey: "price", header: "Price" },];const data: Product[] = [  { id: "1", name: "Wireless Headphones", category: "Electronics", price: 99 },  { id: "2", name: "Running Shoes", category: "Sports", price: 75 },  { id: "3", name: "Coffee Maker", category: "Appliances", price: 49 },];export default function Page() {  return (    <SearchableDataTable      columns={columns}      data={data}      searchColumn="name"      searchPlaceholder="Search products..."    />  );}

Timeline

Vertical timeline for displaying chronological events with icons and badges.

Preview
  1. Completed

    Project kickoff

    Initial planning meeting with all stakeholders.

  2. Completed

    Design phase

    Created wireframes and design system tokens.

  3. In Progress

    Development sprint

    Building core features and API integration.

  4. Upcoming

    Launch

    Public release and marketing campaign.

  1. Completed

    Project kickoff

    Initial planning meeting with all stakeholders.

  2. Completed

    Design phase

    Created wireframes and design system tokens.

  3. In Progress

    Development sprint

    Building core features and API integration.

  4. Upcoming

    Launch

    Public release and marketing campaign.

  1. Completed

    Project kickoff

    Initial planning meeting with all stakeholders.

  2. Completed

    Design phase

    Created wireframes and design system tokens.

  3. In Progress

    Development sprint

    Building core features and API integration.

  4. Upcoming

    Launch

    Public release and marketing campaign.

Timeline.tsx
import { Timeline } from "@launchapp/design-system/blocks/data";const items = [  {    id: "1",    title: "Project kickoff",    description: "Initial planning meeting with all stakeholders.",    date: "Jan 15, 2025",    status: "completed",  },  {    id: "2",    title: "Design phase",    description: "Created wireframes and design system.",    date: "Feb 1, 2025",    status: "completed",  },  {    id: "3",    title: "Development sprint",    description: "Building core features and API integration.",    date: "Mar 10, 2025",    status: "current",  },  {    id: "4",    title: "Launch",    description: "Public release and marketing campaign.",    date: "Apr 1, 2025",    status: "upcoming",  },];export default function Page() {  return <Timeline items={items} />;}

Stats Card

Single-metric stat card with trend indicator and sparkline.

Preview

Total Revenue

$45,231

Monthly recurring revenue

+20.1%
vs last month
Stats Card.tsx
import { StatsCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <StatsCard      label="Total Revenue"      value="$45,231"      trend="up"      trendValue="+20.1% from last month"      sparklineData={[30, 40, 35, 50, 49, 60, 70]}    />  );}

Metric Grid

Responsive grid of metric cards for dashboard overview sections.

Preview

Revenue

$45,231
+20.1%

Active Users

2,350
+8.2%

Churn Rate

3.2%
-1.1%
Metric Grid.tsx
import { MetricGrid } from "@launchapp/design-system/blocks/data";const metrics = [  { id: "revenue", label: "Revenue", value: "$45,231", trend: "up" as const, trendValue: "+20.1%" },  { id: "users", label: "Active Users", value: "2,350", trend: "up" as const, trendValue: "+15.3%" },  { id: "orders", label: "Orders", value: "1,247", trend: "down" as const, trendValue: "-4.2%" },  { id: "conversion", label: "Conversion", value: "3.24%", trend: "neutral" as const, trendValue: "0.0%" },];export default function Page() {  return <MetricGrid metrics={metrics} />;}

Activity Feed

Paginated activity feed for data dashboards with filtering.

Preview

Recent Activity

AL

Alice Johnson

Invalid Date

BO

Bob Smith

Invalid Date

CA

Carol White

Invalid Date

Activity Feed.tsx
import { ActivityFeed } from "@launchapp/design-system/blocks/data";const items = [  { id: "1", user: { name: "Alice", initials: "AJ" }, action: "Created a project", timestamp: "2 min ago", actionType: "create" },  { id: "2", user: { name: "Bob", initials: "BS" }, action: "Merged a PR", timestamp: "1 hour ago", actionType: "merge" },];export default function Page() {  return <ActivityFeed items={items} />;}

Empty State

Empty state placeholder with icon, title, description, and CTA.

Preview

No projects yet

Get started by creating your first project.

Empty State.tsx
import { EmptyState } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <EmptyState      title="No projects yet"      description="Get started by creating your first project."      action={<button type="button">Create project</button>}    />  );}

Calendar View

Monthly calendar view with event markers and day selection.

Preview

Calendar

Plan customer touchpoints, internal milestones, and admin work.

April 2026
Sun
Mon
Tue
Wed
Thu
Fri
Sat

Wednesday

April 29, 2026

No events scheduled

Create an event or drag one here.

Calendar View.tsx
import { CalendarView, type CalendarEvent } from "@launchapp/design-system/blocks/data";const events: CalendarEvent[] = [  { id: "1", title: "Team standup", date: new Date(), allDay: true },  { id: "2", title: "Design review", date: new Date(), color: "secondary" },];export default function Page() {  return (    <CalendarView      events={events}      defaultView="week"      onEventCreate={(event) => console.log("created", event)}      onEventReschedule={(event) => console.log("rescheduled", event)}    />  );}

Chart Card

Card wrapper for charts with title, description, period selector, and actions.

Preview

Revenue Over Time

Monthly revenue for the past 6 months

Chart visualization goes here
Chart Card.tsx
import { ChartCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <ChartCard      title="Revenue Over Time"      description="Monthly revenue for the past 6 months"      periods={["1W", "1M", "3M", "6M", "1Y"]}    >      <div className="h-48 flex items-center justify-center text-muted-foreground text-sm">        Chart goes here      </div>    </ChartCard>  );}

Data Trend

Trend indicator card showing metric value with percentage change and sparkline.

Preview
12450Monthly Active Users
+15.3%
Data Trend.tsx
import { DataTrend } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <DataTrend      label="Monthly Active Users"      value={12450}      previousValue={10800}      format="number"      sparklineData={[8200, 9100, 10200, 10800, 11400, 12450]}    />  );}

Empty State Card

Card-styled empty state for table and list components.

Preview

No results found

Try adjusting your search or filters.

Empty State Card.tsx
import { EmptyStateCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <EmptyStateCard      title="No results found"      description="Try adjusting your search or filters to find what you're looking for."    />  );}

Filter Bar

Horizontal filter bar with multi-select dropdowns and active filter chips.

Preview
Filter Bar.tsx
import { FilterBar } from "@launchapp/design-system/blocks/data";const filters = [  { id: "status", label: "Status", options: ["Active", "Inactive", "Pending"] },  { id: "role", label: "Role", options: ["Admin", "Member", "Viewer"] },];export default function Page() {  return (    <FilterBar      filters={filters}      onFilterChange={(id, values) => console.log("filter", id, values)}      onClearAll={() => console.log("clear all")}    />  );}

Funnel Chart Card

Card displaying a conversion funnel chart with stage-by-stage breakdown.

Preview

Checkout Funnel

Conversion funnel for this month

Visitors
10,000
Sign Ups
4,20042%
Trial
1,80043%
Paid
62034%
Funnel Chart Card.tsx
import { FunnelChartCard } from "@launchapp/design-system/blocks/data";const stages = [  { label: "Visitors", value: 10000 },  { label: "Sign-ups", value: 3500 },  { label: "Activated", value: 1200 },  { label: "Converted", value: 420 },];export default function Page() {  return <FunnelChartCard title="Conversion Funnel" stages={stages} />;}

Gauge Card

Card with circular gauge meter for displaying a single KPI as a percentage.

Preview

CPU Usage

Current server load

68%
Normal: 60%
Warning: 80%
Gauge Card.tsx
import { GaugeCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <GaugeCard      title="System Health"      value={87}      unit="%"      threshold={{ warning: 60, critical: 30 }}    />  );}

KPI Comparison Card

Side-by-side KPI comparison card showing current vs previous period.

Preview

Monthly Revenue

$45,231
vs $37,890
+19.6%vs last month

Total recurring revenue

KPI Comparison Card.tsx
import { KPIComparisonCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <KPIComparisonCard      title="Revenue"      current={{ value: 45231, label: "This Month", formatted: "$45,231" }}      previous={{ value: 37600, label: "Last Month", formatted: "$37,600" }}    />  );}

Sparkline Card

Compact metric card with inline sparkline chart for trend visualization.

Preview

Revenue

++20.1%
$45,231

vs last month

Sparkline Card.tsx
import { SparklineCard } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <SparklineCard      label="Weekly Signups"      value={342}      trend="up"      trendValue="+12%"      data={[180, 220, 195, 280, 310, 290, 342]}    />  );}

Data Table Card

Card-wrapped data table with header, title, and export button.

Preview

Recent Users

Latest registered users

NameEmailRole
Alice Johnsonalice@example.comAdmin
Bob Smithbob@example.comMember
Carol Whitecarol@example.comViewer
Data Table Card.tsx
import { DataTableCard } from "@launchapp/design-system/blocks/data";import type { ColumnDef } from "@tanstack/react-table";const columns: ColumnDef<{ name: string; email: string; status: string }>[] = [  { accessorKey: "name", header: "Name" },  { accessorKey: "email", header: "Email" },  { accessorKey: "status", header: "Status" },];const data = [  { name: "Alice Johnson", email: "alice@example.com", status: "Active" },  { name: "Bob Smith", email: "bob@example.com", status: "Pending" },];export default function Page() {  return <DataTableCard title="Users" columns={columns} data={data} />;}

Column Filters

Per-column filter controls for data tables with type-aware input components.

Preview
Filters:
Column Filters.tsx
import { ColumnFilters } from "@launchapp/design-system/blocks/data";const filters = [  { id: "name", label: "Name", type: "text" as const },  { id: "status", label: "Status", type: "select" as const, options: ["active", "inactive"] },];export default function Page() {  return (    <ColumnFilters      filters={filters}      onFiltersChange={(values) => console.log("filters changed", values)}    />  );}

Data Table Toolbar

Toolbar for data tables with global search, filter, column visibility, and bulk actions.

Preview
Data Table Toolbar.tsx
import { DataTableToolbar } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <DataTableToolbar      onSearch={(q) => console.log("search", q)}      onAddNew={() => console.log("add new")}      onExport={() => console.log("export")}    />  );}

Checkout Funnel

Funnel chart visualization showing step-by-step conversion rates through checkout.

Preview

Visitors

10,000

Sign Ups

4,200
-58.0%(5,800)

Trial Started

1,800
-57.1%(2,400)

Paid

620
-65.6%(1,180)
Overall conversion6.2%
Checkout Funnel.tsx
import { CheckoutFunnel } from "@launchapp/design-system/blocks/data";const steps = [  { id: "visitors", label: "Visitors", value: 10000 },  { id: "signups", label: "Sign Ups", value: 4200 },  { id: "trial", label: "Trial", value: 1800 },  { id: "paid", label: "Paid", value: 620 },];export default function Page() {  return (    <CheckoutFunnel      steps={steps}      showDropoff      showValues    />  );}

Data Export Wizard

Multi-step wizard for selecting data types, fields, and export format before downloading.

Preview

Export Data

Step 1 of 3Format

Format

Choose the output format for your export.

Best for spreadsheets and data analysis tools.

Best for developers and programmatic data processing.

Best for Excel with formatting preserved.

Best for legacy systems and structured documents.

Data Export Wizard.tsx
import { DataExportWizard } from "@launchapp/design-system/blocks/data";const dataTypes = [  { id: "users", label: "Users", count: 1250 },  { id: "orders", label: "Orders", count: 8430 },];export default function Page() {  return (    <DataExportWizard      availableDataTypes={dataTypes}      onExport={(options) => console.log("export", options)}    />  );}

Empty State

Centered empty state with icon, title, description, and optional action button.

Preview

No projects yet

Create your first project to get started.

Empty State.tsx
import { EmptyState } from "@launchapp/design-system/blocks/data";export default function Page() {  return (    <EmptyState      title="No projects yet"      description="Create your first project to get started."      primaryAction={{ label: "Create project", onClick: () => console.log("create") }}    />  );}

Calendar Widget

Mini calendar widget with event dots and date selection.

Preview
April 2026
Su
Mo
Tu
We
Th
Fr
Sa
Calendar Widget.tsx
import { CalendarWidget } from "@launchapp/design-system/blocks/data";const events = [  { id: "1", title: "Team standup", date: new Date(), color: "primary" },  { id: "2", title: "Product launch", date: new Date(Date.now() + 5 * 86400000), color: "secondary" },];export default function Page() {  return (    <CalendarWidget      events={events}      onDateSelect={(date) => console.log("selected", date)}      onEventClick={(event) => console.log("event", event.id)}    />  );}

Comparison Table

Side-by-side product comparison table with attributes, ratings, and add-to-cart.

Preview
Compare
Popular
IMG

Starter Plan

USD9.00
Best Value
IMG

Pro Plan

USD29.00
IMG

Enterprise

USD99.00
Price/mo
$9
$29
$99
Rating
4.2 / 5
4.8 / 5
5 / 5
Highlights
5 projects, 10 GB storage
Unlimited projects, 100 GB storage
Everything in Pro, SSO
Pros
5 projects
10 GB storage
Community support
Unlimited projects
100 GB storage
Priority support
Analytics
Everything in Pro
SSO
Dedicated support
SLA
Cons
No SSO
Limited API access
No dedicated support
Comparison Table.tsx
import { ComparisonTable } from "@launchapp/design-system/blocks/data";const products = [  { id: "1", name: "Starter Plan", price: 9, badge: "Popular", rating: 4.5, pros: ["Easy setup", "Good support"], cons: ["Limited features"] },  { id: "2", name: "Pro Plan", price: 29, badge: "Best Value", rating: 4.8, pros: ["All features", "Priority support"], cons: ["Higher cost"] },  { id: "3", name: "Enterprise", price: 99, rating: 4.9, pros: ["Unlimited everything", "Dedicated support"], cons: [] },];const attributes = [  { key: "price", label: "Price" },  { key: "rating", label: "Rating" },];export default function Page() {  return (    <ComparisonTable      products={products}      attributes={attributes}      onAddToCart={(p) => console.log("add", p.id)}    />  );}

Project Board

Kanban-style project board with task cards, priorities, and column management.

Preview

To Do

2

Design onboarding flow

High
design

Write API docs

Medium
docs

In Progress

1

Implement auth

High
BS
auth

Review

0

Done

1

Setup CI/CD

Medium
CW
Project Board.tsx
import { ProjectBoard } from "@launchapp/design-system/blocks/data";const columns = [  {    id: "backlog",    title: "Backlog",    status: "backlog",    tasks: [      { id: "1", title: "Research competitors", priority: "low" },      { id: "2", title: "Design new onboarding", priority: "medium" },    ],  },  {    id: "in-progress",    title: "In Progress",    status: "in_progress",    tasks: [      { id: "3", title: "Build API endpoints", priority: "high", assignee: { name: "Alice", initials: "AJ" } },    ],  },  {    id: "done",    title: "Done",    status: "done",    tasks: [      { id: "4", title: "Project kickoff", priority: "low" },    ],  },];export default function Page() {  return (    <ProjectBoard      initialColumns={columns}      onCardClick={(card) => console.log("card", card.id)}    />  );}

Project Kanban

Kanban board for project management with priority badges, assignees, and due dates.

Preview

Backlog

2

In Progress

1

Review

1

Done

1
Project Kanban.tsx
import { ProjectKanban } from "@launchapp/design-system/blocks/project";const columns = [  {    id: "todo",    title: "To Do",    color: "bg-slate-500",    cards: [      { id: "1", title: "Research competitors", priority: "low", labels: ["Research"] },      { id: "2", title: "Design wireframes", priority: "medium", labels: ["Design"] },    ],  },  {    id: "in-progress",    title: "In Progress",    color: "bg-blue-500",    cards: [      { id: "3", title: "Build API endpoints", priority: "high", assignee: { name: "Alice Johnson", initials: "AJ" }, dueDate: "2024-02-15" },    ],  },  {    id: "done",    title: "Done",    color: "bg-emerald-500",    cards: [      { id: "4", title: "Project kickoff", priority: "low", labels: ["Planning"] },    ],  },];export default function Page() {  return (    <ProjectKanban      columns={columns}      onCardClick={(card) => console.log("card", card.id)}      onAddCard={(colId) => console.log("add to", colId)}    />  );}

Timeline View

Vertical timeline with event entries, avatars, badges, and click handlers.

Preview

Project Timeline

1
2
3
4
5
Timeline View.tsx
import { TimelineView } from "@launchapp/design-system/blocks/timeline";const events = [  { id: "1", date: "Jan 15, 2025", title: "Project kicked off", description: "Initial planning meeting with all stakeholders.", badge: "Completed", badgeVariant: "secondary", avatarFallback: "AJ" },  { id: "2", date: "Feb 1, 2025", title: "Design phase complete", description: "Wireframes and design tokens finalized.", badge: "Completed", badgeVariant: "secondary", avatarFallback: "BS" },  { id: "3", date: "Mar 10, 2025", title: "Development sprint", description: "Building core features and API integration.", badge: "In Progress", badgeVariant: "default", avatarFallback: "CW" },  { id: "4", date: "Apr 1, 2025", title: "Public launch", description: "Go-live and marketing campaign.", badge: "Upcoming", badgeVariant: "outline" },];export default function Page() {  return (    <TimelineView      events={events}      title="Project Timeline"      onEventClick={(event) => console.log("event", event.id)}    />  );}

Data Table Advanced

Advanced data table with multi-column filtering, sorting, pagination, column resizing, row selection, and CSV/JSON export. Ideal for CRM and admin panels.

Preview
NameEmailCompanyRoleStatus
Alice Johnsonalice@acme.comAcme CorpAdminactive
Bob Smithbob@globex.comGlobexMemberinactive
Carol Whitecarol@initech.comInitechMemberlead
David Leedavid@acme.comAcme CorpVieweractive
Eva Greeneva@globex.comGlobexAdminactive

0 of 5 row(s) selected

Rows per page:
Page 1 of 1
Data Table Advanced.tsx
import { DataTableAdvanced } from "@launchapp/design-system/blocks/data";import type { ColumnDef } from "@tanstack/react-table";import { Badge } from "@launchapp/design-system";interface Contact {  id: string;  name: string;  email: string;  company: string;  status: "active" | "inactive" | "lead";  role: string;}const columns: ColumnDef<Contact>[] = [  { accessorKey: "name", header: "Name" },  { accessorKey: "email", header: "Email" },  { accessorKey: "company", header: "Company" },  { accessorKey: "role", header: "Role" },  {    accessorKey: "status",    header: "Status",    cell: ({ getValue }) => {      const v = getValue<string>();      const color = v === "active" ? "default" : v === "lead" ? "secondary" : "outline";      return <Badge variant={color}>{v}</Badge>;    },  },];const data: Contact[] = [  { id: "1", name: "Alice Johnson", email: "alice@acme.com", company: "Acme Corp", role: "Admin", status: "active" },  { id: "2", name: "Bob Smith", email: "bob@globex.com", company: "Globex", role: "Member", status: "inactive" },  { id: "3", name: "Carol White", email: "carol@initech.com", company: "Initech", role: "Member", status: "lead" },  { id: "4", name: "David Lee", email: "david@acme.com", company: "Acme Corp", role: "Viewer", status: "active" },  { id: "5", name: "Eva Green", email: "eva@globex.com", company: "Globex", role: "Admin", status: "active" },];export default function Page() {  return (    <DataTableAdvanced      title="Contacts"      columns={columns}      data={data}      searchColumn="name"      searchPlaceholder="Search contacts..."      filterColumns={[        {          column: "status",          label: "Status",          options: [            { label: "Active", value: "active" },            { label: "Inactive", value: "inactive" },            { label: "Lead", value: "lead" },          ],        },        {          column: "company",          label: "Company",          options: [            { label: "Acme Corp", value: "Acme Corp" },            { label: "Globex", value: "Globex" },            { label: "Initech", value: "Initech" },          ],        },      ]}      enableExport      onBulkDelete={(rows) => console.log("Delete", rows)}      pageSize={10}    />  );}
← PreviousNavigation
Next →E-commerce