Skip to Content
DocumentationGetting Started

Getting started

@togetheragency/ui is a collection of re-usable headless React components. It ships raw, minimally styled primitives that you compose into your own design system — with first-class animation support via motion  and styling hooks that play nicely with Tailwind CSS .

The library is authored and published by together.agency , initially for use across our internal projects. We’ve open sourced it so others can build on the same foundation we do.

Open sourced

@togetheragency/ui is free, MIT-licensed, and developed in the open. The library was born out of patterns we found ourselves rewriting across client work at together.agency .

  • Peer-dep friendly. react ^17 || ^18 || ^19, motion ^12, and tailwindcss ^4 are peer dependencies — there’s no second copy of React or motion getting bundled into your app.
  • No build step. Components are shipped as raw source. Your bundler transpiles them alongside the rest of your code, so tree-shaking and source maps work the way you expect.
  • Issues and PRs welcome. If something is missing, broken, or could be more ergonomic, open an issue or send a patch.

Composition

Every component in @togetheragency/ui is headless by default — it owns behavior, state, and accessibility, and leaves the look and feel up to you.

That means:

  • Composition over configuration. Instead of a giant prop surface, you get small primitives you compose into the exact shape your design calls for. Slots, render props, and forwardRef’d elements let you reach in wherever you need to.
  • Bring your own styles. Default classes (when any exist) are minimal and always overridable — pass className and it merges last, so your styles win. You’re not fighting the library to make it look like your product.
  • Controlled or uncontrolled. Components support both patterns where it makes sense, and expose internal state through data-* attributes (e.g. data-state, data-open) so you can style or query against them.

AI-Ready

The library is built to be legible to humans and to coding agents alike. Files are small, exports are explicit, folder layout is predictable, and every component lives in its own directory with a README.md next to the source.

Each component ships with a focused skills entry — a machine-readable description of the component’s API, intended usage, and composition patterns — that you can feed directly to Claude Code, Cursor, or any other agentic tool. Point your assistant at @togetheragency/ui and it can scaffold, wire up, and customize components without hallucinating an API that doesn’t exist.

Last updated on