Skip to content
shadcn.io

shadcn.io is not affiliated with official shadcn/ui

Split Panel Shop Settings Form Block for Solid

Shop settings as three bands, each split into a label column and a fields column with its own Save and its own unsaved count, so saving one band never touches the others.

Framework
UI library

Preview

Preview width

Installation

Part of Pro
Pro unlocks the code and one-line install of every Pro button and text effect, plus the MCP for your AI editor.
Have Pro already? Sign in to open it.Opens here as soon as you're Pro.

Overview

Let people save one part of a long settings page at a time, with this split panel form for Solid with Ark UI. A compact header sits over a hairline frame with a plus mark on each corner. Three bands, each opened by a rule, split into a label column with a title and a sentence and a fields column: Shop details (a name, a Select for opening days and an about text), Billing contact (a name, an email and an optional tax number) and Alerts (three Switches). Every band is its own form with its own Save and its own unsaved count, so saving one never touches the others; only the first band's Save is the colored Shine Button, the other two are outline buttons. A band's foot says what is unsaved or what was saved, and one hidden polite line speaks the same result once. A refused save names the first problem in that band and focuses it. It's built from Input, Textarea, Select, Switch, Button, Shine Button and Guides, with a CSS entrance only. For settings pages, account pages and admin screens where each part saves on its own.

FAQ

How do the bands stay independent?

Each band is a separate form with its own draft, its own saved copy and its own change count (changesOf, billingChangesOf, alertChangesOf). Saving copies one draft into its saved state and says so in that band only, so the other bands keep their unsaved edits.

Why can Save be pressed with nothing changed?

Save is always shown and marked unavailable when the count is zero. Pressing it answers "No changes to save." instead of doing nothing, so a keyboard or screen reader user hears why.

Why is only the first Save colored?

A page has one primary action. The first band's Save is the Shine Button and the others are outline buttons; if a different band is the important one on your page, give it the Shine Button instead.

How does it look on a phone?

Each band stacks: the title and sentence first, then the fields, then the foot with its Save at full width.

What stays local, and how do I connect it for real?

Nothing is saved: each band says "in this demo". To make it real, post each band's draft from its own handler (a request per band, so a failure in one never loses the others) and show the answer in that band's line.

How do I connect it to react-hook-form or TanStack Form?

react-hook-form is a React library; use one TanStack Form per band from its adapter for your framework, so each has its own dirty state and submit.