Compose-inspired UI framework for Svelte
Declarative layout · Immutable modifiers · Structural motion · Compose-like navigation
compose-svelted is an experimental but ambitious UI framework that brings the Jetpack Compose mental model to the Svelte ecosystem.
It is not a Material Design clone, and it is not a thin component library.
Instead, it focuses on:
All built on top of Svelte, without virtual DOM abstractions or hidden magic.
UI is a function of state.
Layout, motion, and navigation must be explicit and predictable.
Key ideas:
Layouts are predictable and composable.
Describe intent, not CSS.
Motion is part of the UI structure.
Navigation without external routers.
src/lib: publishable library source.playground: local app for developing and validating the library against live source changes.src/App.svelte and src/samples: legacy examples, not part of the active library/playground workflow.npm install
npm run dev
npm run build
npm run check
npm run playground:build
npm run dev: starts the playground.npm run build: packages the library into dist/.npm run check: type-checks the playground against the current library source.playground/vite.config.ts aliases @danielito1996/compose-svelted to src/lib/index.ts, so playground changes reflect library source immediately.Compose Svelted is layout-deterministic, assumes a neutral CSS baseline.
You MUST include the following reset in your app:
To avoid layout regressions in existing apps, use one of these two paths:
import "@danielito1996/compose-svelted/baseline.css";
import "@danielito1996/compose-svelted/baseline-safe.css";
Use baseline-safe.css if your app already has strong global styles and you want minimal interference.
app.cssIf you prefer full control, keep your app stylesheet and ensure at least:
*,
*::before,
*::after {
box-sizing: border-box;
}
html, body, #app {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
To guarantee consistent and predictable behavior of layout components such as
Box, Column, Row, Surface, Scaffold, and navigation containers,
a neutral CSS baseline is required in the host application.
This is intentional and mirrors the contract-based approach of Jetpack Compose.
Compose Svelted does not:
Instead, it expects a minimal, explicit layout contract. Without this baseline, layout behavior may vary between browsers or projects.
Compose Svelted does not require Tailwind CSS.
Tailwind is used internally as an implementation detail for predictable styling, but consumers of the library are not required to install or configure Tailwind.