Codync
免費、開源的 1:1 替代方案,取代 Grok Bot 與 Muse。從 iPhone、Mac 或 Linux 桌面將 Claude Code、Codex、Cursor 與 40+ 程式碼代理人作為持續機器人傳訊。群組聊天、主題串…
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Morphing status icon for Svelte 5 — idle, loading, success, error, warning with smooth spring morphs
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 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