8,391 example visits
Segmented control
Pick one of a few options. The thumb slides to it.
npx shadcn@latest add https://better-design.com/registry/motion/segmented-control.jsonEvery example is live. Install one with a single command, and your agent reads its motion rules first.
8,391 example visits
Pick one of a few options. The thumb slides to it.
npx shadcn@latest add https://better-design.com/registry/motion/segmented-control.jsonTurn a setting on or off. The thumb stretches as you press.
npx shadcn@latest add https://better-design.com/registry/motion/switch.jsonDrag to pick a number. The fill stays under your finger.
npx shadcn@latest add https://better-design.com/registry/motion/slider.jsonnpx shadcn@latest add https://better-design.com/registry/motion/copy-button.jsonCopy a value. The button confirms without changing size.
npx shadcn@latest add https://better-design.com/registry/motion/copy-button.jsonThe new onboarding flow cut setup to two steps.
React with one tap. The count rolls the way it moved.
npx shadcn@latest add https://better-design.com/registry/motion/reactions.jsonYour agent designs forms, dashboards, onboarding, pricing pages
Swap one word in a sentence. Hover to pause it.
npx shadcn@latest add https://better-design.com/registry/motion/word-rotate.jsonType or step a number. Changed digits roll.
npx shadcn@latest add https://better-design.com/registry/motion/number-field.jsonNothing is deleted in this example.
Hold to delete. Let go early and it drains back.
npx shadcn@latest add https://better-design.com/registry/motion/hold-to-confirm.jsonEvery second run fails in this example.
Show where a job stands. The icon and label roll to the new state.
npx shadcn@latest add https://better-design.com/registry/motion/status-badge.jsonNothing is changed in this example.
Keep the main actions in view. The row widens to show the rest.
npx shadcn@latest add https://better-design.com/registry/motion/overflow-actions.jsonDrag the list down and let go. With a keyboard, press Tab.
Pull a list down to reload it. The pull resists, then holds while it loads.
npx shadcn@latest add https://better-design.com/registry/motion/pull-to-refresh.jsonExample page. Nothing is sent.
Every second message fails in this example.
Send a short message. The panel grows from its corner and confirms or retries.
npx shadcn@latest add https://better-design.com/registry/motion/feedback-widget.jsonRevenue, day 1
$48,210Show a dashboard figure. Each digit rolls to the new value.
npx shadcn@latest add https://better-design.com/registry/motion/number-ticker.jsonPoint at the bar or tab into it.
Keep a row of icons small. Point or tab in and each one shows its label.
npx shadcn@latest add https://better-design.com/registry/motion/expandable-action-bar.jsonUnavailable
Unavailable
Open 5 days a week. Nothing is saved in this example.
Set the hours someone is open each week. Days switch on and off, and hours copy across.
npx shadcn@latest add https://better-design.com/registry/motion/availability-scheduler.jsonYou are in Home.
Switch between the places of an app. A pill glides to the one you choose.
npx shadcn@latest add https://better-design.com/registry/motion/dock.jsonPlay a voice message. The waveform fills as it plays, and you drag it to seek.
npx shadcn@latest add https://better-design.com/registry/motion/voice-note.jsonThe example project comes back after you delete it.
Delete without a dialog. The button widens to ask, then acts on the second press.
npx shadcn@latest add https://better-design.com/registry/motion/confirm-button.jsonPress the bell to mark them all as read.
Show unread notifications. The bell swings and the count rolls up when one arrives.
npx shadcn@latest add https://better-design.com/registry/motion/notification-bell.jsonTick off tasks. A done task greys out and slides below the open ones.
npx shadcn@latest add https://better-design.com/registry/motion/checklist.json