Andersseen
Docs GitHub Storybook
Framework agnostic · Zero runtime dependencies

One UI ecosystem.
Every framework.

Components, layout, motion, icons, headless logic and DOM behaviors — independent libraries built on web standards, not on a framework. Take one, or take all of them.

Explore the ecosystem Documentation
13 Packages
39 Custom elements
86 Icons
135 Animations
Features

Everything You Need

Six independent libraries covering the full span of a modern UI — from a CSS-only layout attribute to a fully accessible modal.

UI Components 39 accessible custom elements. Equally native in React, Angular, Vue, Svelte or plain HTML — a custom element is not a framework component.
Layout System Grid, flex, spacing and typography driven by HTML attributes, with responsive breakpoints. Pure CSS — no class names to memorise, no JavaScript to ship.
Motion Library 135 declarative animations triggered on enter, hover or tap, with configurable duration, delay and easing. Silent under prefers-reduced-motion.
Icon Library 86 hand-drawn SVG icons with tree-shakeable exports and a global registry. Import the three you need, or register the lot.
Headless Core The state machines behind accordion, dropdown, modal, tabs and toast — no DOM, no styles. Reuse the logic, render it your own way.
DOM Behaviors Splitter, drag & drop, tooltip and dialog attached to markup you already have, through and-* attributes.
and-splitterand-draggableand-tooltip
Showcase

See It In Action

Nothing below is a screenshot or a mock. Every control on this page is the published package, running in your browser right now.

Buttons
Five variants, four sizes, loading and icon-only states.
Default Secondary Outline Ghost Destructive Loading
Alerts
Contextual feedback that inherits the active palette.
This is a default informational alert. Something went wrong. Please try again.
Form Controls
Inputs, switches and selects with real labels and focus rings.
Ship without a framework runtime
Accordion
Collapsible sections with WAI-ARIA keyboard support.
Is it accessible? Yes. All components follow WAI-ARIA patterns and support keyboard navigation. Is it framework agnostic? Absolutely. These are native custom elements, so they work in any framework — or in none at all. Can I theme it? Yes. Six colour palettes and five style themes, all switchable at runtime — try the selectors in the header.
Tabs
Roving-tabindex tab list with panels wired by value.
Overview Code Usage

39 custom elements designed for production use — accessible, themeable, and tied to no framework.

<and-button variant="default">Click me</and-button>

Import the loader and call defineCustomElements(). That's it — use the tags anywhere in your HTML.

Animations
Hover any tile to replay it. 135 presets ship in the package.
Bounce
Scale Up
Scale Down
Slide Up
Heart Beat
Flip Y
Shake X
Rubber Band
Tada
Icon Library
86 crisp SVG icons with customisable size, colour and stroke width. Hover for the name.
Layout System — and-layout
Attribute-driven layouts with no CSS classes. Responsive breakpoints, flex, grid, spacing and typography.
<!-- Responsive Grid --> <div and-layout="grid cols:1 cols@md:2 cols@lg:3 gap:md"> <div>Card 1</div> <div>Card 2</div> <div>Card 3</div> </div> <!-- Flex Layout --> <div and-layout="horizontal align:center justify:between gap:md"> <span>Left</span> <span>Right</span> </div> <!-- Typography --> <h2 and-text="h2 weight:bold align:center"> Title </h2>
Responsive Grid
1
2
3
Flex + Justify Between
Left Center Right
Spacing & Typography
Heading 5 Body text with and-text="p-sm" Caption text
Behaviors

Enhance HTML You Already Have

Not every interaction deserves a component. @andersseen/behaviors wires splitters, drag & drop, tooltips and dialogs onto plain elements through and-* attributes — no framework, no wrapper, no re-render.

Splitter
Drag the divider, or focus it and use the arrow keys. Announced as role=separator with live aria-valuenow.
Primary

Resize me.

Secondary

Both panels are ordinary divs.

and-splitter="horizontal" and-splitter-min="20"
Drag & Drop
A sortable list built from list items. Sortable drop zones reorder their children on drop for you.
  • Components
  • Layout
  • Motion
  • Icons
and-drop-zone and-drop-zone-sortable
Tooltip
Hover or focus any element. Wires aria-describedby, and a focused trigger dismisses on Escape.
Top Right Bottom Left
and-tooltip="…" and-tooltip-placement="top"
Dialog
Point a trigger at any element by id. Focus is trapped, body scroll locks, and focus returns to the trigger on close.
Open centred Open from right
and-dialog-trigger="target-id"
Ecosystem

Modular By Design

13 packages, no cross-dependencies between the core six. Every version below is read from the workspace at build time, so this list cannot drift from what is actually released.

CoreFrameworksTooling

The libraries that do the work. Each one is independent — take one, take all six.

@andersseen/web-components UI components
v0.4.1

Accessible, themeable custom elements — buttons, modals, drawers, dropdowns, carousels, tabs, toasts, tooltips and more. Shadow DOM, so your CSS and theirs never collide.

Custom ElementsShadow DOMA11y
npm
@andersseen/layout CSS layouts
v0.0.1

Attribute-driven layout and typography: grid, flex, spacing and text scales with responsive breakpoints. Zero JavaScript — pure CSS.

Zero JSResponsiveAttribute API
npm
@andersseen/motion Animations
v0.2.0

Declarative CSS animations triggered on enter, hover or tap via IntersectionObserver, with configurable duration, delay and easing. Honours prefers-reduced-motion.

CSS KeyframesIntersectionObserverReduced motion
npm
@andersseen/icon SVG icons
v0.1.1

Hand-drawn SVG icon set with tree-shakeable ESM exports and a global registry for on-demand loading. Import three icons or all of them.

Tree-shakeableSVGRegistry
npm
@andersseen/headless-components Headless logic
v0.3.0

Pure state machines for accordion, dropdown, modal, tabs, toast and friends. No DOM, no styles — bring your own renderer.

No DOMState machinesTypeScript
npm
@andersseen/behaviors DOM behaviors
v0.2.0

Progressive enhancement for HTML you already have: splitter, drag & drop, tooltip and dialog, wired up by and-* attributes.

ProgressiveAttribute APINo framework
npm

Thin, generated bindings so the same elements feel native in your framework of choice.

@andersseen/angular-components Angular wrappers
v0.4.1

Generated standalone Angular directives with typed inputs and outputs over the same custom elements.

StandaloneTyped
npm
@andersseen/react-components React wrappers
v0.4.1

Generated React components with typed props and real event handlers instead of manual ref wiring.

RSC-friendlyTyped
npm
@andersseen/vue-components Vue wrappers
v0.4.1

Generated Vue components with typed props and v-model-friendly bindings.

SFCTyped
npm
@andersseen/astro Astro integration
v0.0.2

One-line integration that registers the elements and injects the stylesheets for an Astro site.

IntegrationSSR-safe
npm

How your editor and your AI assistant learn what this ecosystem can actually do.

@andersseen/mcp MCP server
v0.1.2

Serves the live component catalog to AI assistants over the Model Context Protocol, generated from the real custom-elements manifest.

ClaudeCursorVS Code
npm
@andersseen/skills Agent skills
v0.0.2

Installable, per-library skills for coding agents. Teach your assistant one package at a time instead of the whole ecosystem.

Claude CodePer-package
npm
@andersseen/vanilla-components Zero-dependency build
v0.0.2

Experimental proof of concept: the same headless core rendered as plain custom elements with no build-time framework at all.

ExperimentalZero deps
npm

Ready to Build?

Start with the four packages driving this page — everything else is additive, and nothing locks you in.

Get started View on GitHub
npm install @andersseen/web-components @andersseen/layout @andersseen/motion @andersseen/icon
AI Tools

Built for AI-Native Development

However your team codes with AI, this ecosystem meets it there — a live MCP server, installable agent skills, and copy-paste context so assistants generate real components instead of plausible ones.

MCP Server Run npx -y @andersseen/mcp and your assistant queries the live component catalog — generated from the real custom-elements manifest — for correct, framework-specific code.
ClaudeCursorVS Code
Agent Skills Installable, per-library skills for Claude Code, Cursor and other agents. Teach your assistant one package at a time — only the ones your project actually uses.
@andersseen/skills
System Prompts Curated context blocks to paste into any assistant that does not speak MCP — drops hallucinated props, selectors and class names to near zero.
Zero-configAny LLM

Connect the MCP server

No install — it runs on demand. Add it to your assistant, then ask it to build with And Web Components.

npx -y @andersseen/mcp // .mcp.json (Claude) — or .vscode/mcp.json / .cursor/mcp.json { "mcpServers": { "and-web-components": { "command": "npx", "args": ["-y", "@andersseen/mcp"] } } }
Read the docs