Interplanetary UI

Layouts & Patterns

Common layout patterns using Tailwind utilities with Interplanetary UI components.

Card Layouts

Responsive card grids and arrangements using ip-panel containers.

Card Grid

Responsive 3-column grid that stacks on mobile.

Category
Card Title

Brief description of the card content goes here.

Tag Featured
Category
Another Card

More content for the second card in the grid.

Active
Category
Third Card

Content for the third card completes the row.

Pending
Code
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div class="ip-panel">
    <div class="ip-panel-header">Category</div>
    <div class="ip-panel-body">
      <div class="ip-title">Card Title</div>
      <p class="text-secondary mt-1">Description...</p>
      <div class="flex gap-1 mt-2">
        <span class="ip-tag">Tag</span>
        <span class="ip-tag ip-tag-accent">Featured</span>
      </div>
    </div>
    <div class="ip-panel-footer ip-action-group">
      <a href="#" class="ip-action">View →</a>
    </div>
  </div>
  <!-- More cards... -->
</div>

Featured + List

Large featured card alongside a vertical stack.

Featured
Featured Article

This is the main featured content that takes up more space in the layout. It could be a highlighted article, announcement, or primary action area.

Featured News
Side Item 1

Brief description.

Side Item 2

Brief description.

Side Item 3

Brief description.

Code
<div class="grid grid-cols-1 lg:grid-cols-3 gap-4">
  <div class="lg:col-span-2 ip-panel">
    <div class="ip-panel-header">Featured</div>
    <div class="ip-panel-body">
      <div class="ip-title">Featured Article</div>
      <p class="text-secondary mt-2">Main content...</p>
    </div>
    <div class="ip-panel-footer ip-action-group">
      <a href="#" class="ip-action">Read More →</a>
    </div>
  </div>
  <div class="flex flex-col gap-4">
    <div class="ip-panel flex-1">...</div>
    <div class="ip-panel flex-1">...</div>
    <div class="ip-panel flex-1">...</div>
  </div>
</div>

Horizontal Card

Side-by-side layout that stacks on mobile.

Image
Horizontal Card Title

This card layout places content side by side on larger screens and stacks vertically on mobile devices.

Category Info
Code
<div class="ip-panel">
  <div class="ip-panel-body">
    <div class="flex flex-col md:flex-row gap-4">
      <div class="w-full md:w-48 h-24 bg-secondary/10">Image</div>
      <div class="flex-1">
        <div class="ip-title">Title</div>
        <p class="text-secondary mt-1">Description...</p>
      </div>
      <div class="flex md:flex-col gap-2 shrink-0">
        <button class="ip-btn">Action</button>
      </div>
    </div>
  </div>
</div>

Dashboard Patterns

Metrics, grids, and activity feeds for dashboard interfaces.

Stats Row

Key metrics in a responsive grid using ip-stat in ip-frame containers.

Users
12,847
↑ 12.5%
Revenue
$48.2K
↑ 8.1%
Orders
1,429
↓ 3.2%
Uptime
99.9%
Last 30 days
Code
<div class="grid grid-cols-2 md:grid-cols-4 gap-4">
  <div class="ip-frame">
    <div class="ip-frame-header">Users</div>
    <div class="ip-frame-body">
      <div class="ip-stat">
        <div class="ip-stat-value">12,847</div>
        <div class="ip-stat-trend ip-stat-trend-up">↑ 12.5%</div>
      </div>
    </div>
  </div>
  <!-- More stats... -->
</div>

Dashboard Grid

Mixed-size panels for dashboard layouts.

Chart Area
Chart Placeholder
Quick Stats
247
Active Sessions
18ms
Avg Response
Recent Events
  • User login: admin
  • Config updated
  • Cache cleared
Data Table
NameStatusValue
Item AActive$1,234
Item BPending$567
Code
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
  <div class="lg:col-span-2 ip-window">
    <div class="ip-window-header">Chart Area</div>
    <div class="ip-window-body">...</div>
  </div>
  <div class="ip-window">
    <div class="ip-window-header">Quick Stats</div>
    <div class="ip-window-body">...</div>
  </div>
  <div class="ip-window">...</div>
  <div class="lg:col-span-2 ip-window">...</div>
</div>

Activity Feed

Scrollable list using ip-list-item with ip-scrollable.

Recent Activity
JD
John Doe updated the config
2 minutes ago
AS
Alice Smith deployed to production
15 minutes ago
Success
BW
Bob Wilson created a new branch
1 hour ago
MJ
Mary Johnson merged pull request #42
2 hours ago
TK
Tom Kim added a comment
3 hours ago
Code
<div class="ip-window ip-scrollable">
  <div class="ip-window-header">Recent Activity</div>
  <div class="ip-window-body max-h-48">
    <div class="ip-list-item">
      <div class="ip-list-item-icon">
        <div class="ip-avatar ip-avatar-sm">JD</div>
      </div>
      <div class="ip-list-item-content">
        <div class="ip-list-item-title">John Doe updated...</div>
        <div class="ip-list-item-meta">2 minutes ago</div>
      </div>
    </div>
    <!-- More items... -->
  </div>
</div>

Content Patterns

Layouts for articles, posts, and data lists.

Post List

Article list with tags, metadata, and preview text.

Tutorial CSS

Getting Started with Interplanetary UI

Learn how to integrate the design system into your project with this comprehensive guide.

Jan 15, 2025 5 min read
Release New

Version 2.0 Released

Major update with new components, improved theming, and better mobile support.

Jan 10, 2025 3 min read
Code
<article class="ip-panel">
  <div class="ip-panel-body">
    <div class="flex flex-col md:flex-row md:items-start gap-3">
      <div class="flex-1">
        <div class="flex flex-wrap gap-1 mb-2">
          <span class="ip-tag ip-tag-accent">Tutorial</span>
          <span class="ip-tag">CSS</span>
        </div>
        <h3 class="ip-title">Article Title</h3>
        <p class="text-secondary mt-1">Preview text...</p>
        <div class="text-secondary/50 text-xs mt-2">Jan 15, 2025 • 5 min</div>
      </div>
      <a href="#" class="ip-btn shrink-0">Read →</a>
    </div>
  </div>
</article>

Data List

Structured list with actions and pagination.

Documents
Annual Report 2024.pdf
2.4 MB • Updated Jan 15
Q4 Financials.xlsx
1.1 MB • Updated Jan 12
Meeting Notes.docx
45 KB • Updated Jan 10
Code
<div class="ip-window">
  <div class="ip-window-header">Documents</div>
  <div class="ip-window-body">
    <div class="ip-list-item">
      <div class="ip-list-item-icon"><svg>...</svg></div>
      <div class="ip-list-item-content">
        <div class="ip-list-item-title">File.pdf</div>
        <div class="ip-list-item-meta">2.4 MB</div>
      </div>
      <div class="ip-list-item-action">
        <button class="ip-btn">Download</button>
      </div>
    </div>
  </div>
  <div class="ip-window-footer flex justify-center">
    <nav class="ip-pagination">...</nav>
  </div>
</div>

App Shell Patterns

Application layouts with navigation, sidebars, and multi-pane views.

Full Page Layout

Complete page structure with header navigation, main content, and footer.

Welcome to the App

This layout demonstrates a complete page structure with header navigation and footer. The main content area grows to fill available space.

Feature One

Content for the first feature section.

Feature Two

Content for the second feature section.

Code
<div class="flex flex-col min-h-screen">
  <header class="shrink-0 border-b border-secondary p-3">
    <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3">
      <div class="flex items-center gap-4">
        <span class="font-display text-sm text-accent uppercase">Brand</span>
        <nav class="ip-nav-list hidden sm:flex">
          <a href="#" class="active">Home</a>
          <a href="#">Products</a>
        </nav>
      </div>
      <div class="flex items-center gap-2">
        <button class="ip-btn">Sign In</button>
        <button class="ip-btn-primary">Sign Up</button>
      </div>
    </div>
  </header>
  <main class="flex-1 p-4">
    <!-- Main content -->
  </main>
  <footer class="shrink-0 border-t border-secondary p-3">
    <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2">
      <div class="font-nav text-xs text-secondary/50 uppercase">© 2025 Brand</div>
      <nav class="ip-nav-list">
        <a href="#">Privacy</a>
        <a href="#">Terms</a>
      </nav>
    </div>
  </footer>
</div>

Sidebar Layout

Fixed navigation sidebar with main content area. Stacks on mobile.

Dashboard

Main content area that takes remaining space. The sidebar collapses to a horizontal nav on mobile.

Overview
1,234
Total Users
Activity
  • User signup
  • Config updated
Code
<div class="flex flex-col lg:flex-row min-h-screen">
  <aside class="w-full lg:w-56 shrink-0 border-b lg:border-r border-secondary p-3">
    <div class="font-display text-sm text-accent uppercase mb-4">App Name</div>
    <div class="ip-nav-group">
      <div class="ip-nav-group-label">Main</div>
      <nav class="ip-nav-list-vertical">
        <a href="#" class="active">Dashboard</a>
        <a href="#">Analytics</a>
      </nav>
    </div>
  </aside>
  <main class="flex-1 p-4">
    <h2 class="ip-title">Dashboard</h2>
    <!-- Content -->
  </main>
</div>

Master-Detail

List panel with detail view. Stacks on mobile.

JD
John Doe
Administrator
AS
Alice Smith
Editor
BW
Bob Wilson
Viewer
JD
Administrator
Active
Code
<div class="flex flex-col md:flex-row min-h-screen">
  <div class="w-full md:w-1/3 shrink-0 border-r border-secondary">
    <div class="p-2 border-b border-secondary">
      <input type="text" class="ip-input w-full" placeholder="Search...">
    </div>
    <div class="ip-list-item bg-accent/10">
      <!-- Selected item -->
    </div>
    <div class="ip-list-item">...</div>
  </div>
  <div class="flex-1 p-4">
    <!-- Detail view -->
  </div>
</div>

Loading States

Skeleton placeholders and empty states using ip-skeleton and ip-empty.

Card Skeleton

Loading placeholder for card grids.

Code
<div class="ip-panel">
  <div class="ip-panel-header">
    <div class="ip-skeleton ip-skeleton-text w-20"></div>
  </div>
  <div class="ip-panel-body space-y-2">
    <div class="ip-skeleton ip-skeleton-text w-3/4"></div>
    <div class="ip-skeleton ip-skeleton-text w-full"></div>
    <div class="ip-skeleton ip-skeleton-text w-1/2"></div>
  </div>
</div>

List Skeleton

Loading placeholder for list items with avatars.

Loading...
Code
<div class="ip-list-item">
  <div class="ip-list-item-icon">
    <div class="ip-skeleton ip-skeleton-circle"></div>
  </div>
  <div class="ip-list-item-content space-y-1">
    <div class="ip-skeleton ip-skeleton-text w-1/3"></div>
    <div class="ip-skeleton ip-skeleton-text w-1/4"></div>
  </div>
</div>

Empty State

Placeholder for when no data is available.

Documents
No Documents
Upload your first document to get started.
Code
<div class="ip-empty">
  <div class="ip-empty-icon">
    <svg>...</svg>
  </div>
  <div class="ip-empty-title">No Documents</div>
  <div class="ip-empty-message">Upload your first document.</div>
  <div class="ip-empty-action">
    <button class="ip-btn-primary">Upload File</button>
  </div>
</div>