Skip to content

v0.8.0

Choose a tag to compare

@yasmro yasmro released this 19 May 12:35
· 215 commits to develop since this release
81de592

Highlights

  • BREAKING — lucide-react is now an optional peer dependency. Icon props (Button / Badge / Input / Dialog) take a Lucide icon component instead of a string name, eliminating a ~1.37 MB whole-barrel icon import from consumer bundles. (#223)
  • BREAKING — brand-named semantic tokens. New --color-vermillion (朱) and --color-indigo (藍) tokens; --color-accent is removed and Text's color prop drops "accent". (#236)
  • New --indigo-* primitive scale — a traditional Japanese indigo, the second brand color alongside vermillion. (#232)
  • error / destructive split onto a dedicated --red-* primitive — value-identical to vermillion today, a governance seam so brand 朱 and danger red retune independently. (#240)
  • Tree-shakeable lv1 barrel + SSR support — import { Button } drops ~81% (~48 KB → ~9.7 KB), and React bundles now carry a 'use client' directive for Next.js App Router. (#228, #225)

⚠️ Breaking Changes

lucide-react → optional peer dependency, icon props take components (#223)

Install lucide-react yourself (pnpm add lucide-react) and pass the icon component, not a name string:

Before After
<Button icon="Search" /> import { Search } from 'lucide-react'
<Button icon={Search} />

Applies to Button / Badge icon, Input iconLeft / iconRight, and Dialog's actionButton.icon / cancelButton.icon / subActionButton.icon. The IconName type export is removed — icon props are now typed as LucideIcon (import from lucide-react).

--color-accent removed, brand-named tokens added (#236)

Before After
<Text color="accent"> <Text color="vermillion"> (also new: color="indigo")
bg-accent / text-accent / var(--color-accent) bg-vermillion / text-vermillion / var(--color-vermillion)
tokens.color.accent / .accentForeground tokens.color.vermillion / .vermillionForeground (or .indigo / .indigoForeground)

Settled pre-1.0 deliberately — api-stability.md freezes CSS variable names as BREAKING from v1.0.0, so the brand-named tokens land in v0.8.0 to bake before the contract goes live.

What's Changed

Minor Changes

  • BREAKING: brand-named semantic tokens --color-vermillion / --color-indigo; --color-accent removed (#185) — #236
  • feat(tokens): add the --indigo-* primitive color scale (#181) — #232
  • BREAKING: lucide-react optional peerDep + tree-shakeable icon component API (#117, #118) — #223
  • refactor(tokens): add --red-* primitive scale, repoint error / destructive off vermillion (#238) — #240

Patch Changes

  • perf(build): make the components/lv1 barrel tree-shakeable via per-component entries — #228
  • chore: normalize package.json sideEffects to ["*.css", "**/*.css"] — #223
  • feat(lint): add the no-primitive-color Biome GritQL plugin (#122) — #220
  • fix(ssr): inject 'use client' into the lv1 build via tsup banner (#116) — #225

Full Changelog: v0.7.0...v0.8.0