implement

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.0

Signals, element helpers, and the router. Plain TypeScript that builds real DOM nodes, no compiler.

@implementjs/kit

v0.0.0

File-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.0

Unstyled 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.0

Dark 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.0

Schema-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.0

Scaffolds a new implement app — kit or plain Vite, with Tailwind, primitives, icons, forms, and dark mode as optional addons.

@implementjs/eslint

v0.0.0

Lint 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.0

The full Lucide icon set as icon components. Each icon is its own module, so bundlers only keep the ones you import.