@bufinance/billing-ui
v0.2.0
Published
Publishable, self-contained, presentational billing plan-cards UI ported from desk-v1's billing-plans component. Renders subscription plan cards (default 3-col grid + minimal variant) with a monthly/annual toggle, savings badge, popular-card gradient, pri
Readme
@bufinance/billing-ui
Presentational subscription plan-cards UI. Fully prop-driven — no app or data
coupling. The consuming app supplies Tailwind and the BUFI palette
(purpleDanis, violetDanis, borderFine, darkTextTertiary, …).
This directory is the source of truth
Published packages are maintained here, in bufinance-publish. A copy of this
package still exists at ghost/packages/billing-ui at the pre-move version —
do not edit that one. Two sources for one published package is how
@bufinance/location ended up with its repo copy behind what was on npm, so
that publishing from source would have shipped a regression.
Dark mode
Every surface carries a dark: variant as of 0.2.0. Before that the cards
declared none at all, so on a dark host the non-popular plans rendered as white
slabs and consumers had to override the package from outside.
Two rules when touching the card styles:
cn()here is a plain join, nottwMerge. Conflicting classes both land and CSS source order decides the winner. Adddark:variants inside the existingisPopular ? … : …ternaries rather than to the shared base string, or the popular card's gradient starts fighting a background-color it was never meant to have.- The popular card needs no dark treatment. It paints its own purple
gradient with white text and already reads correctly in both themes. Its
bg-white/20accents are a different utility than.bg-whiteand must stay.
Build & publish
bun install
bun run build # tsup → dist/ (esm + d.ts + sourcemap)
npm publish # prepublishOnly rebuildstsconfig.json is deliberately self-contained — it used to extend a base file
from the ghost monorepo, which does not exist here and broke the build on move.
