Codync
A free, open-source 1:1 alternative to Grok Bot and Muse. Message Claude Code, Codex, Cursor and 40+ coding agents as persistent bots from your iPhone, Mac or Linux desktop. Group chats, threads, appr
A Svelte 5 status icon that pours between idle, loading, success, error, and warning.
Developer toolsSvelte · TypeScriptGitHub @EmilM32OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Morphing status icon for Svelte 5 — idle, loading, success, error, warning with smooth spring morphs
Taken from the repository README
Loading the full README.
Read the full README ↗A status icon for Svelte 5. One stroke pours between idle, a spinner, a check, a cross, and a warning. The path is resampled so the spring can carry the same ink into the next shape, with a quiet color shift alongside.
Live demo: morph-status-svelte.vercel.app
npm install morph-status-svelte
Peer dependency: svelte ^5. The icon’s CSS ships inside the component. There are no other runtime dependencies.
<script lang="ts">
import { MorphStatus, type StatusName } from 'morph-status-svelte';
let phase = $state<StatusName>('idle');
</script>
<MorphStatus
state={phase}
size={32}
strokeWidth={10}
stiffness={0.2}
damping={0.72}
onchange={(next) => console.log('morph', next)}
oncomplete={(next) => console.log('settled', next)}
/>
Keep the variable you pass out of the name state — a local called state collides with the $state rune.
A save button is the usual place it shows up. announce={false} leaves the accessible name to the button.
<script lang="ts">
import { MorphStatus, type StatusName } from 'morph-status-svelte';
let phase = $state<StatusName>('idle');
async function save() {
phase = 'loading';
const ok = await persist();
phase = ok ? 'success' : 'error';
}
</script>
<button type="button" onclick={save} disabled={phase === 'loading'}>
<MorphStatus state={phase} size={22} announce={false} />
{phase === 'loading' ? 'Saving' : 'Save'}
</button>
| Prop | Default | |
|---|---|---|
state | 'idle' | 'idle' | 'loading' | 'success' | 'error' | 'warning' |
size | 32 | CSS pixels. The drawing is a 100×100 grid, so it stays sharp at any size. |
strokeWidth | 10 | Stroke width in that 100×100 grid. |
colors | system colors | Partial map of hex or rgb() colors per state. |
stiffness | 0.2 | Svelte spring stiffness, clamped to 0–1. Higher is faster. |
damping | 0.72 | Svelte spring damping, clamped to 0–1. Lower overshoots. |
label | — | One accessible name for every state. |
labels | Idle, Loading, Success, Error, Warning | Accessible name per state. |
announce | true | Polite live region. Set false inside a control that already has a name. |
onchange | — | Called when a morph starts, after the first render. |
oncomplete | — | Called when the springs settle on the new state. |
class | — | Class on the root element. |
Default colors are the Apple system set: gray, blue, green, red, yellow.
<MorphStatus
state={phase}
colors={{ success: '#63E6BE', error: '#FF375F' }}
/>
prefers-reduced-motion: reduce snaps the spring and holds the spinner still.role="status") whose label follows the state. Pass label for a single name, or labels to rename each one.Requires Node >=22.17.
npm install
npm run dev
The demo serves at http://127.0.0.1:4731. npm run build builds the demo site. npm run package writes the library to dist/ and runs publint. npm run check and npm run lint cover types and ESLint.
In this repo the demo imports the component through #lib. Published apps import morph-status-svelte.
MIT © Emil Majer