Docs
Usage
No SDK, no provider component, no import from an @aidxn/* package
at runtime. The CLI's job ends the moment the files are on disk.
What `add` does
- Fetches the component's metadata and file contents from the registry (free components come back inline; paid ones need a stored licence key).
- Writes each file to your project under
--dest(defaultsrc). - Records the slug, version, and a content hash of what it wrote into
velocityx.lock.jsonin your project root. - Never overwrites a file that already exists unless you pass
--force— see do updates overwrite my edits? in the FAQ.
That's it. No build step reaches back out to Aidxn, no component ships a hidden fetch to an Aidxn endpoint, and
nothing in your bundle phones home. The handful of components with an analytics hook (an NPS prompt, a cookie
consent banner) take a plain onSubmit /
onAccept callback prop — you wire it to
your own analytics, or don't.
The theme contract
Components are written against Tailwind's primary and
accent colour scales — never a hardcoded hex, never an
inline style for colour. Those scales resolve through CSS variables (--vx-primary-600
and friends) defined once in velocity-theme.css, which
velocityx theme installs.
41 variables cover the whole library: an 11-stop primary ramp, an 11-stop accent ramp, an 11-stop neutral ramp
(used for text, borders and muted surfaces), 5 semantic surface tokens (background, raised surface, text,
muted text, hairline — light and dark), and 3 shape/type tokens (radius, large radius, font). Override the
handful you actually use — 600 and
700 cover most of a single-brand swap — and
every component that uses that scale re-themes. No component file needs touching.
:root {
--vx-primary-600: 220 38 38; /* #DC2626 — raw RGB channels, not hex */
--vx-primary-700: 185 28 28; /* #B91C1C */
}
One format rule that trips people up: raw RGB channels, space separated — 79 70 229,
not #4F46E5 and not rgb(79 70 229).
Tailwind composes these as rgb(var(--vx-primary-600) / 0.2) so that
opacity modifiers like bg-primary-600/20 work — a hex value there fails
silently, no console error, the colour just doesn't render.
You own the code
Once a component lands in your project it's a normal file in your repo. Rename it, split it, delete the parts you don't need, add your own state management — there's no "ejecting" step because you never installed a package to begin with.