Blocks · UX States

The unsexy-but-essential surfaces

Every real app spends most of its life in one of these six states. Six variants per state — 36 ready-to-drop blocks for empty, loading, error, success, unauthorized, and offline conditions.

Empty states

When there's nothing to show — first run, no results, missing permissions. Give the user a path forward.

Basic empty

Icon + heading + supporting copy + primary CTA. Centered.

.state-frame.state-stack

No messages yet

When someone reaches out, their message will land here. Until then, take a breath.

With illustration

CSS-painted illustrative scene + heading + CTA.

.state-empty-illu

Your dashboard is wide open

Connect a project to start streaming data. Setup takes about ninety seconds.

First-time onboarding

Three numbered steps + Get started CTA.

.state-steps.state-step

Welcome — three steps to your first deploy

  1. 1Pick a brand preset or import your tokens.
  2. 2Drop in blocks from the library and arrange your page.
  3. 3Export static HTML, or publish straight to a domain.

No permission

"You don't have access" + Request access CTA.

.state-icon--warn

You don't have access to this workspace

Ask the owner to invite you, or request access — they'll get a notification.

Coming soon

"Nothing here yet" + Get notified email signup.

.state-notify-form

Nothing here yet

This area is under construction. Drop your email and we'll ping you the moment it ships.

Loading states

The user is waiting. Tell them something is happening, and ideally how long it will take.

Centered spinner

SVG spinner with text below.

.state-spinner

Fetching your latest projects…

Skeleton list

Five skeleton rows with shimmer-sweep animation.

.state-sk-list.state-sk-row

Skeleton grid

Six skeleton cards with stagger animation.

.state-sk-grid.state-sk-card

Progress bar

Bar with % + supporting text.

.state-progress

Uploading photos

64 of 100 MB~12s left

You can keep working — we'll let you know when it's done.

Pulse dots

Three dots pulse-fade in sequence.

.state-dots

Thinking…

Galactic loader

Full-page LSD-flair loader with rotating galaxy + center pulse.

.state-galaxy

Composing your universe

Booting the runtime — packing tokens, surfaces, and aurora timelines.

Error states

Something failed. Tell the user what, why if it helps, and how to recover.

Generic error

Error icon + "Something went wrong" + Try again CTA.

.state-icon--error

Inline 404

Small "Not found" inline state (not full page).

.state-frame
404

That widget can't be found

It may have been moved or deleted. Try refreshing the panel.

Network error

Offline icon + "No connection" + Retry CTA.

.state-icon--error

Validation summary

Red-tinted card listing form errors.

.state-err-list

500 server error

Apologetic copy + Status page link.

.lsd-chip--error

Rate limit

"Too many requests" + cooldown timer.

.state-timer

Success states

Confirmation that the user's action landed. Make it feel earned.

Animated checkmark

Draw-in checkmark + "Done" + Continue CTA.

.state-check

Done

Your changes have been saved and synced across your devices.

Form submitted

"Message sent" + Send another CTA.

.state-icon--success

Message sent

Thanks for reaching out — we usually reply within one business day.

Back home

Payment confirmed

Order summary chips + receipt CTA.

.lsd-chip--success

Payment confirmed

Receipt #LSD-2026-04891 is on its way to your inbox.

Pro · annual $120.00 Visa ··4242

Celebration

Confetti burst + headline + CTA.

.state-confetti-wrap

You shipped your first site! 🚀

It's live at your-site.lsd.app. Share it with the world — or keep tinkering.

Saved indicator

Small toast-style saved confirmation.

.state-toast
Saved · just now

File uploaded

File chip + Done CTA.

.state-file-chip

Upload complete

brand-tokens.lsd.json · 4.2 KB

Your tokens have been parsed and applied to the active workspace.

Unauthorized states

Auth walls, expired sessions, locked accounts. The user can't pass — but make the next step obvious.

Sign in to continue

Email/password + social signin.

.state-signin-form.state-social

Sign in to continue

This area is for members. Sign in to keep going.

Premium feature

Upgrade CTA + feature list.

.state-feature-list
Pro feature

Aurora timelines need a Pro plan

You're on the Free tier. Upgrade to unlock:

  • Unlimited Aurora keyframe layers
  • Custom surface tier overrides
  • Priority static-export builds

Session expired

"Session expired" + Sign in again CTA.

.state-icon--warn

Session expired

For your security, we signed you out after 24 hours of inactivity. Sign back in to pick up where you left off.

MFA required

Code input field + Resend code CTA.

.state-mfa

Enter your six-digit code

We sent a code to your authenticator app. It expires in 5 minutes.

Account suspended

Suspension notice + Contact support CTA.

.state-icon--error

Account locked

Locked after failed attempts + Reset password CTA.

.state-icon--warn

Offline & network states

Connectivity is unreliable. Tell the user what's degraded and what still works.

You're offline

Basic offline + Retry CTA.

.state-icon--warn

You're offline

Check your network connection — we'll reconnect automatically when you're back.

Showing cached content

Cached badge + Reconnect CTA.

.lsd-chip--muted
Cached · 14 min ago

Showing your last-known view

You're offline, so we're displaying a snapshot from your last visit. Reconnect to refresh.

Sync pending

"3 changes will sync when online" + spinner chip.

.state-pending

3 changes saved locally

Your edits are safe on this device. They'll sync to the cloud as soon as you're back online.

Waiting for connection…

App update available

"New version available" + Reload CTA.

.lsd-chip--soft
v0.8 ready

A new version is available

Reload to get the latest blocks, motion presets, and bug fixes. Your unsaved work will be preserved.

Scheduled maintenance

ETA + Subscribe to updates.

.state-notify-form

Scheduled maintenance in progress

We're rolling out database upgrades. Expected back online by 21:00 UTC.

Degraded service

"Some features unavailable" + per-service status chips.

.state-status-chips

Running in degraded mode

Some features are temporarily unavailable. Core editing still works.

Editor & canvasOperational
Live previewDegraded
Cloud syncOutage
Static exportOperational