Catalog
fauziyasin-s2m4qw/studio-ui-patterns

fauziyasin-s2m4qw

studio-ui-patterns

Design system UI patterns for Supabase Studio. Use when building or updating pages, forms, tables, charts, empty states, navigation, cards, alerts, or side panels (sheets). Covers layout selection, component choice, and placement conventions.

v1.0LATEST
NewUpdated Jul 19, 2026

Studio UI Patterns

The Design System docs and demos are the source of truth. Always check the relevant demo file before composing new UI.

Layout

Docs: apps/design-system/content/docs/ui-patterns/layout.mdx

Build pages with PageContainer, PageHeader, and PageSection.

Content type size
Settings / config "default"
Lists / tables "large"
Full-screen views "full"
  • If filters/search exist on a list page, align table actions with the filters (don't use PageHeaderAside/PageSectionAside for those actions)
  • If no filters, actions can go in PageHeaderAside or PageSectionAside

Demos: page-layout-settings.tsx, page-layout-list.tsx, page-layout-list-simple.tsx, page-layout-detail.tsx (all in apps/design-system/registry/default/example/)

Forms

Docs: apps/design-system/content/docs/ui-patterns/forms.mdx

  • Use react-hook-form + zod
  • Use FormItemLayout instead of manually composing FormItem/FormLabel/FormMessage/FormDescription
  • Wrap inputs with FormControl; use _Shadcn_ imports from ui for primitives

Layout selection:

Context Layout Container
Page (settings/config) FormItemLayout layout="flex-row-reverse" Card (CardContent per field; CardFooter for actions)
Side panel — wide FormItemLayout layout="horizontal" SheetSection
Side panel — narrow (size="sm" or below) FormItemLayout layout="vertical" SheetSection

Dirty state / submit:

  • Destructure isDirty from form.formState to show Cancel and disable Save
  • Show loading on submit button via loading prop
  • If submit button is outside <form>, set a stable formId and use form prop on the button

Demos: form-patterns-pagelayout.tsx, form-patterns-sidepanel.tsx

Tables

Docs: apps/design-system/content/docs/ui-patterns/tables.mdx

Pattern Use when
Table Simple, static, semantic display
Data Table TanStack-powered; sorting, filtering, pagination; composed per use-case
Data Grid Virtualization, column resizing, or complex cell editing
  • Actions: above the table, aligned right
  • Search/filters: above the table, aligned left
  • If table is primary content with no filters, actions can live in the page's primary/secondary actions area

Demos: table-demo.tsx, data-table-demo.tsx, data-grid-demo.tsx

Charts

Docs: apps/design-system/content/docs/ui-patterns/charts.mdx

  • Use provided chart building blocks; avoid passing raw Recharts components to ChartContent
  • Use useChart context flags for loading/disabled states
  • Keep composition straightforward — avoid over-abstraction

Demos (in apps/design-system/__registry__/default/block/): chart-composed-demo.tsx, chart-composed-basic.tsx, chart-composed-states.tsx, chart-composed-metrics.tsx, chart-composed-actions.tsx, chart-composed-table.tsx

Empty States

Docs: apps/design-system/content/docs/ui-patterns/empty-states.mdx

Scenario Pattern
Initial / onboarding Presentational empty state with value prop + clear next action
Data-heavy lists Informational empty state matching the list/table layout
Zero results from search Keep layout consistent with data state to avoid jarring transitions
Missing route Centered Admonition

Demos: empty-state-presentational-icon.tsx, empty-state-initial-state-informational.tsx, empty-state-zero-items-table.tsx, data-grid-empty-state.tsx, empty-state-missing-route.tsx

Navigation

Docs: apps/design-system/content/docs/ui-patterns/navigation.mdx

  • Use NavMenu for a horizontal list of related views within a consistent page layout
  • Activating an item must trigger a URL change — no local-only tab state

Cards

  • Group related information in cards
  • CardContent for sections, CardFooter for actions
  • Only use CardHeader/CardTitle when context isn't already provided by surrounding content
  • Use headers/titles when multiple cards represent distinct groups (e.g. multiple settings sections)

Alerts

  • Use Admonition to call out important actions, restrictions, or critical context
  • Place at the top of a page's content (below page title) or top of the relevant section (below section title)
  • Use sparingly

Sheets (Side Panels)

Use a Sheet when switching pages would be disruptive and the user needs to maintain context (e.g. selecting a row from a list to edit).

Structure:

  • SheetContent with size="lg" for forms needing horizontal layout
  • Use SheetHeader, SheetTitle, SheetSection, SheetFooter
  • Submit/cancel actions go in SheetFooter

Forms in sheets:

  • layout="horizontal" for wider sheets
  • layout="vertical" for narrow sheets (size="sm" or below)

Copy

Source of truth: apps/design-system/content/docs/copywriting.mdx — sentence case, title case, proper nouns, voice and tone.

When changing visible copy, grep e2e/studio/ for the old string.

Overall Score

82/100

Grade

B

Good

Grades are signals, not a certification. Always review a skill yourself before use.

Safety

95

Quality

78

Clarity

85

Completeness

72

Summary

Studio UI Patterns is a design system reference skill that guides agents in building pages, forms, tables, charts, empty states, navigation, cards, alerts, and side panels using Supabase Studio conventions. It provides layout selection rules, component recommendations, and links to canonical demo files in the design system repository.

Detected Capabilities

file readcode referencedesign pattern lookup

Trigger Keywords

Phrases that agents use to match this skill to user intent.

design system patternsform layouttable structureside panel sheetempty statepage layoutui component guide

Use Cases

  • Build a settings page with form and card layout
  • Compose a list page with table and filters
  • Create a side panel for editing a row from a data table
  • Implement an empty state for zero search results
  • Add a horizontal navigation menu between related views
  • Design a chart view with state handling
  • Structure form validation using react-hook-form and zod

Quality Notes

  • Clear, well-organized reference material with practical layout and component selection rules
  • Extensive use of demo file references (location and filename) enables agents to quickly find working examples
  • Tabular format for layout context and component patterns is scannable and unambiguous
  • Specific guidance on form state management (isDirty, loading), dirty state UI, and form IDs
  • Instructions on search/filter alignment and action placement reduce ambiguity in layout decisions
  • Strong emphasis on consulting design system docs as source of truth establishes proper guardrails
  • All external references are scoped to a single monorepo (apps/design-system/), reducing discovery friction
  • Copy guidelines with source doc reference ensures consistency with broader style guide
  • Missing: error state patterns (form validation errors, failed submissions, retry flows)
  • Missing: accessibility considerations (keyboard navigation, ARIA labels, focus management)
  • Missing: responsive breakpoint guidance (when to switch layouts for mobile)
  • Missing: animation/transition conventions for entering/exiting sheets and empty states
Model: claude-haiku-4-5-20251001Analyzed: Jul 19, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Use fauziyasin-s2m4qw/studio-ui-patterns in your dev environment

Command Palette

Search for a command to run...