Install
Three packages — tokens, design, icons — publish to GitHub Packages under @8maverik8. Wire your registry once, then install across all your Twenty extensions and standalone Next.js apps. For front-component code add twenty-sdk too — it unlocks the /twenty-ui bridge subpath (see Step 3).
Configure GitHub Packages
The packages publish to npm.pkg.github.com under the @8maverik8 scope. Add an .npmrc at the root of your project:
GITHUB_PACKAGES_TOKEN is a fine-grained Personal Access Token with the read:packages scope. For CI, set it as a secret on the workflow and inject as an env var. Never commit the raw token to .npmrc.Install the three packages
Each one is small and depends only on tokens (no transitive Twenty SDK). Install all three at once:
@8maverik8/twenty-tokens — TypeScript dictionary + CSS files exporting all --t-* variables and component interactive states.@8maverik8/twenty-design — the React components (Button, Input, Modal, DataTable, …).@8maverik8/twenty-icons — Tabler-icon re-export plus a typed TwentyIconName literal union for autocomplete on metadata fields.Use inside a Twenty front-component
Twenty's front-component host renders inside a sandboxed Remote DOM bridge. The bridge strips all data-* attributes except data-testid, which breaks our Radix-based primitives (Button, Tag, Modal, Tooltip, etc — they use [data-state]/[data-variant] selectors). Use two import paths:
@8maverik8/twenty-design/twenty-ui— re-exportstwenty-sdk/ui(Twenty's own DS, verified inside front-component'ы) for the ~19 overlapping primitives.@8maverik8/twenty-design— pull our recipes (PanelHeader, LineItemCard, TotalsBlock, etc — pure inline-styles + useState, no Radix).
HTML_COMMON_PROPERTIES_CONFIG in twenty-front-component-renderer): id, className, style, title, tabIndex, role, aria-label, aria-hidden, data-testid — everything else is stripped. CSS-class-based styling works because className survives; data-state/data-variantattribute selectors don't. Don't fight it — use the bridge + recipes.Use in a standalone Next.js / Vite app
Outside Twenty you need to do two extra things: import the theme CSS, and wrap your tree in the providers used by Tooltip and Toast.
.light or .dark class on the <html> element (and update color-scheme). Every --t-* variable, including the syntax-highlight palette inside CodeBlock, switches automatically.Verify the install
Render any component to confirm the chain is wired:
Hover the button — the background should shift to--t-color-blue10. Tab into it — a 3 px ring of --t-accent-tertiary should appear. If both happen, you're set.License
All three packages publish under AGPL-3.0-only, consistent with twenty-sdk. Source lives at github.com/8Maverik8/twenty-platform .