shadcn.io is an independent project built on shadcn/ui
Both inputs are disabled. The search field says Searching... and shows a spinner at the end. The request field says Processing... and shows a spinner at the start. Neither spinner leaves on its own.
Show the spinner inside the field that is busy. If the whole page is waiting, use a Spinner beside the content. In Solid, Ark UI does not know when the request has finished.
Installation
Anatomy

Usage
<div class="flex w-full max-w-sm flex-col gap-4">
<InputGroup class="bg-background" data-disabled="true">
<InputGroupInput aria-label="Search" disabled placeholder="Searching..." type="search" />
<InputGroupAddon align="inline-end">
<Spinner />
</InputGroupAddon>
</InputGroup>
<InputGroup class="bg-background" data-disabled="true">
<InputGroupInput aria-label="Request" disabled placeholder="Processing..." type="text" />
<InputGroupAddon>
<Spinner />
</InputGroupAddon>
</InputGroup>
</div>FAQ
How do I put the spinner at the start or the end?
With align on its InputGroupAddon: inline-end for the first field, the default inline-start for the second. Both addons come after the input.
How are the fields disabled?
disabled on each InputGroupInput. data-disabled="true" on InputGroup dims the addons.
How do I show the spinner only while loading?
Render the addon only while your request is pending, and drop disabled when it settles.
API Reference
Input Group
Sets data-disabled, aria-label="Search", disabled, placeholder="Searching...", type="search" and align="inline-end". The rest is on the Input Group page.
Spinner
No extra props in this demo. The rest is on the Spinner page.




