Packages
Everything ships from one repo as separate packages. Start with the framework, then pull in the pieces you need.
Framework
The core runtime everything else builds on.
@implementjs/core
v0.0.0Signals, element helpers, and the router. Plain TypeScript that builds real DOM nodes, no compiler.
@implementjs/kit
v0.0.0File-based routing, SSR, and prerendering on top of Vite. Write pages and layouts as files; kit wires up the router with typed params.
Components
Composable pieces you assemble into interfaces.
@implementjs/primitives
v0.0.0Unstyled building blocks for common UI patterns. They own the behavior and the accessibility; you own the look.
Theming
What decides which of your two palettes the page is wearing.
@implementjs/mode-watcher
v0.0.0Dark mode: the visitor's choice, the system preference, and the class on <html> — applied before the first paint, so there is no flash of the wrong theme.
Forms
State and validation for the parts of a page users type into.
@implementjs/formish
v0.0.0Schema-first forms. The schema types the fields, validates the input and produces the submit handler's output — valibot, zod and arktype all fit.
Tooling
What you reach for before the first line of app code.
create-implement-app
v0.0.0Scaffolds a new implement app — kit or plain Vite, with Tailwind, primitives, icons, forms, and dark mode as optional addons.
@implementjs/eslint
v0.0.0Lint rules for the mistakes types cannot catch: a subscription whose unsubscribe went missing, a misspelled aria attribute, a Lifecycle that wanted to be a Watch. An ESLint plugin, and oxlint runs it too.
Icons
Icon sets packaged as implement components.
@implementjs/lucide
v0.0.0The full Lucide icon set as icon components. Each icon is its own module, so bundlers only keep the ones you import.