Skip to content

Releases: ANIBIT14/boldkit

v3.4.6 — Vue components all build on Nuxt

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 14 Jul 02:24

Installing and building the entire Vue library in a real Nuxt 4 project surfaced latent SFC compile errors — components BoldKit's own app never compiled (unused ones are tree-shaken, and vue-tsc doesn't enforce these compiler-only rules).

🐛 Fixes

  • <script setup> cannot contain ES module exports — 8 components declared an injection-key export const … = Symbol() inside <script setup>, breaking the consumer's build: Carousel, Dropzone, ChartContainer, ToggleGroup, Timeline, SidebarProvider, Stepper, StepperItem. Each key (and cross-imported context type) moved to a paired <script> block.
  • GaugeChartwithDefaults referenced a setup-local DEFAULT_ZONES (defineProps() cannot reference locally declared variables). Moved to module scope.

Verified end-to-end: all 364 components compile in one Nuxt 4 build; vue-tsc clean; registry:audit clean.

Bumps

  • React: 3.4.5 → 3.4.6
  • Vue: 3.2.5 → 3.2.6

v3.4.5 — Nuxt compatibility, motion a11y & SEO prerender

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 13 Jul 18:19

Makes BoldKit install cleanly on Nuxt 4 (verified end-to-end in a real project), plus an animation-audit pass and a docs-site SEO upgrade.

🐛 Nuxt compatibility (#10)

  • srcDir component resolution — files no longer pin to hardcoded components/ui/… targets; they install under whatever your aliases resolve to (app/components/ui on Nuxt 4).
  • Alias-relative registry paths@boldkit/utils no longer mis-installs to app/lib/default/lib/utils.ts; the registry/default/ prefix that collapsed the CLI's common-root is gone. Verified live on Nuxt 4.
  • Docs import fix — all 66 Vue usage examples now show per-file imports (import Button from '@/components/ui/Button.vue') instead of a non-existent barrel.
  • Nuxt componentDir docs added; internal ui barrel synced.

🎬 Motion (React + Vue)

  • Universal prefers-reduced-motion guard in the shipped theme.
  • transition-all → scoped transition (zero visual change).
  • Overlays scale from their trigger (Radix/Reka transform-origin vars).
  • Command palette fades instead of zooming.

🚀 Docs site

  • Route prerendering — every route ships fully-rendered HTML for crawlers & AI crawlers.

Bumps

  • React: 3.4.4 → 3.4.5
  • Vue: 3.2.4 → 3.2.5

v3.4.4 — Chart export fidelity & fullscreen fixes

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 06 Jul 16:39

Patch fixes for the <ChartToolbar> shipped in 3.4.3, across React and Vue. If you installed chart-toolbar or chart-export, re-run the CLI to pull these fixes.

🐛 Fixes

PNG / SVG export now downloads the chart, not a toolbar icon. The export grabbed the container's first <svg> — which was a toolbar button icon — so downloads came out as a tiny glyph. It now skips the toolbar controls and serializes the actual chart.

Exports keep their colors in every viewer. Chart colors come from CSS variables (hsl(var(--primary))) that don't survive serialization. The export now resolves each element's computed color and writes it as a concrete presentation attribute (not just inline style), plus an opaque white backdrop — so Preview, Quick Look, Illustrator, and browsers all render the real chart instead of a colorless outline.

Fullscreen no longer leaves a black gap. A fullscreened chart kept its fixed height, letting the browser's black backdrop show below it. The container now takes the page background and lays the chart out with a definite height, so Recharts and ECharts grow to fill.

Crisper canvas exports. ECharts (canvas) PNGs are composited onto white so a transparent background doesn't export as black.

Bumps

  • React: 3.4.3 → 3.4.4
  • Vue: 3.2.3 → 3.2.4

Full diff: v3.4.3...v3.4.4

v3.4.3 — Vue Motion parity, chart export toolbar & CI

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 06 Jul 05:39

Vue Motion parity, a chart export toolbar, and a real CI pipeline. This release closes the last framework gap left open in 3.4.2 — the Vue motion adapter now ships — and adds a brutalist chart export toolbar for both React and Vue, automated accessibility testing, and repo cleanup.

✨ Vue Motion adapter — parity with React

The <Motion>, <Reveal>, and <Stagger> components plus useShake / useViewTransition composables now ship for Vue 3, wrapping the same framework-agnostic motion-core the React adapter uses. New Vue registry items motion + motion-core mirror the React motion-core / motion-react split, so the full six-recipe motion language — press, stamp-in, shake, reveal, slide-hard, pulse-shadow — is now identical across both frameworks.

npx shadcn-vue@latest add @boldkit/motion

✨ Chart export toolbar (React + Vue)

New <ChartToolbar> wraps any chart with a brutalist overlay to export PNG, SVG, or CSV, and toggle fullscreen. It's engine-agnostic — reading the wrapped <svg> (Recharts) or <canvas> (ECharts) — so a single shared chart-export core drives both frameworks.

npx shadcn@latest add @boldkit/chart-toolbar          # React
npx shadcn-vue@latest add @boldkit/chart-toolbar      # Vue

♿ Automated accessibility

axe-core now runs in the test suite over core components (Button, Input, Label, Badge, Alert, Card, Checkbox, Switch). Accessibility regressions fail the build instead of waiting for a manual audit.

🩹 Continuous integration

A real CI pipeline — lint + React tsc + Vue vue-tsc + tests + registry audit — replaces the old React-Native-only workflow.

🧹 Internals

  • Removed the phantom react-native package (no source — only an Expo example and committed build cache).
  • Hardened .gitignore against Expo / Android / iOS build artifacts.
  • New live docs at /components/chart-toolbar.

Setup

No breaking changes — every existing React and Vue component is untouched. Vue Motion pulls motion-core transitively; remember to import styles/motion.css into your globals.


Full diff: v3.4.2...v3.4.3

v3.4.2 — Motion system + buttery component retrofit

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 18 Jun 14:56

[3.4.2] — 2026-06-18 — Motion system + buttery component retrofit

The signature "hard look, buttery feel" release. Neubrutalism's reputation is harsh and static — this patch keeps the hard visual language (3px borders, 4px offset shadows, sharp corners) but gives every interaction a premium, settled motion so the kit feels world-class to use.

Highlights

Motion system (React). New motion, motion-core, and motion-react registry items. A framework-agnostic, zero-runtime CSS core (--bk-* tokens, canonical keyframes, a reduced-motion guard) drives six signature recipes — press, stamp-in, shake, reveal, slide-hard, pulse-shadow — exposed through <Motion>, <Reveal>, <Stagger> components plus useShake / useViewTransition hooks. SSR-safe. Live docs at /components/motion.

Buttery retrofit, by default (React + Vue). Button, Card, Input, Toggle, and Switch now route their press/hover/focus through a shared .bk-interactive timing on a new snap easing curve — the chunky shadow-collapse settles with a small overshoot instead of a flat slide. Easing is split: overshoot applies only to transform/box-shadow, while colour/border/opacity stay on a smooth ease-out (no hover flicker).

🩹 .bk-press press choreography. Animates transform + a hard offset box-shadow (composes correctly with a background colour), replacing an earlier pseudo-element approach that could invert under the hover transform.

Reduced-motion throughout. Every recipe and the .bk-interactive timing collapse to near-instant under prefers-reduced-motion: reduce; reveals show their content immediately.

Notes

  • The Vue <Motion>/<Reveal> adapter is not in this release — the buttery retrofit ships for Vue now; the Vue adapter components follow in a focused update.

Bumps

  • React: 3.4.1 → 3.4.2
  • Vue: 3.2.1 → 3.2.2

v3.4.1 — custom easing system + docs Theming fix

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 10 Jun 10:18

A motion-polish + docs fix patch. Every transition and animation in BoldKit now runs on a custom easing system based on the animations.dev easing blueprint. The browser's built-in ease-out / ease-in-out curves are too weak to read as "snappy" on hard neubrutalist surfaces — so they're replaced with stronger custom cubic-bezier curves, applied identically across React and Vue 3.

✨ Custom easing system

  • New easing tokens in @theme: --ease-out (out-quart), --ease-in-out (in-out-cubic), --ease-in, plus a named scale --ease-out-quad…expo / --ease-in-out-quad…quint sorted weakest→strongest.
  • --default-transition-timing-function is now ease-out — every transition-* utility gets responsive motion for free, no per-element easing needed.
  • ~37 keyframe animations retrofitted per stylesheet (accordion, collapsible, bounce, pop, shake, wiggle, jello, …) to reference the tokens. Continuous linear motion (marquee, spin) and the caret blink are intentionally left as-is.

🩹 Overlays animate with intent

All 16 React + 18 Vue overlay components — Popover, Dialog, Dropdown, Tooltip, Sheet, Select, Menubar, Context Menu, Hover Card, Command, Tour, and more — now apply the custom ease-out curve on enter/exit instead of falling back to the browser default.

🐛 Docs fix

  • "Theming" in the docs sidebar now opens the full-width standalone Theme Builder (/themes) in a new tab, instead of rendering it embedded in the narrow docs column where it didn't lay out fully.

Install

The easing system ships with the theme stylesheet — re-add it to pick up the tokens:

# React
npx shadcn@latest add "https://boldkit.dev/r/styles.json"
# Vue
npx shadcn-vue@latest add "https://boldkit.dev/r/vue/styles.json"

Bumps: React 3.4.0 → 3.4.1 · Vue 3.2.0 → 3.2.1

Full diff: v3.4.0...v3.4.1

v3.4.0 - 9 new components + full Vue parity

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 08 Jun 08:19

BoldKit now ships every classic shadcn primitive - nine new components, each with full React and Vue 3 parity, installable straight from the registry. Plus a manifest-driven docs refactor and a batch of UI fixes found while building them.

✨ New components

The four classics — the only standard shadcn primitives BoldKit was missing:

  • Context Menu — right-click menus
  • Menubar — desktop-style application toolbars
  • Navigation Menu — site navigation with dropdown panels
  • Resizable — draggable split panes & dashboard layouts

Five form / layout adds:

  • Button Group — join buttons into one bordered unit
  • Input Group — inputs with leading/trailing addons
  • Field — label + control + description + error composition
  • Native Select — a11y-first styled <select>
  • Date Picker — a single-date button → calendar popover

Every one ships matching React + Vue 3 implementations and registry entries — no placeholders.

🐛 Fixes

  • Resizable vertical panels no longer collapse — demos use min-h-* (the lib sets an inline height:100% that beats h-*). The npm dep is pinned to react-resizable-panels@^2.1.0.
  • Navigation Menu dropdown now renders reliably (panel renders in place instead of via the brittle measured-height viewport).
  • Date Range Picker presets restyled as proper neubrutalist buttons; single Date Picker correctly tracks a controlled value.

🛠 Internals

  • Docs routes are now manifest-driven (src/config/component-docs.tsx) — App.tsx shrank 336 → ~165 lines, and adding a component is a one-line entry.
  • New components wired into ⌘K search, sitemap, and llms-full.txt.

Install

# React
npx shadcn@latest add "https://boldkit.dev/r/navigation-menu.json"
# Vue
npx shadcn-vue@latest add "https://boldkit.dev/r/vue/navigation-menu.json"

Bumps: React 3.3.9 → 3.4.0 · Vue 3.1.9 → 3.2.0

Full diff: v3.3.9...v3.4.0

v3.3.9 — Next.js + Tailwind v4 compatibility

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 29 May 15:04

Three install-time bugs reported against v3.3.8 — all in the path between BoldKit's docs/registry and a fresh Next.js + Tailwind v4 + shadcn project. None affect existing Vite users.

Highlights

🩹 import.meta.env.DEV no longer breaks Next.js builds (#8). Five components emitted Vite-only import.meta.env.DEV reads — fine under Vite, fatal under next build because Next.js does not type ImportMeta.env. Replaced with process.env.NODE_ENV === 'development' everywhere (works in both Vite and Next): React ErrorBoundary, Tour, Slider, SankeyChart, Invoice block, and the Vue ErrorBoundary (hoisted to an isDev const so the template binding stays SSR-safe). Registry JSONs regenerated.

🩹 Theme Builder now emits a Tailwind v4 @theme bridge (#7). The generator at /theme-builder shipped only :root { --background: 60 9% 98%; } etc. — raw HSL channels with no --color-* mapping. Pasted into a Tailwind v4 + shadcn project that expects --color-background: var(--background), the utilities resolved to background-color: 60 9% 98% (invalid). Generator now prepends a full @theme { --color-background: hsl(var(--background)); … } block matching the shipped registry styles, plus the --radius-sm/md/lg/xl shorthands. Every preset funnels through generateCSS(), so all themes inherit the fix.

🩹 Registry alias docs use the {name}.json template (#9). shadcn 4.x requires the templated item URL in the registries map — BoldKit's install docs showed "@boldkit": "https://boldkit.dev/r" (and Vue …/r/vue), which fails to resolve @boldkit/button. Updated Installation page, Introduction page (both copy-buttons), and README to:

  • React: https://boldkit.dev/r/{name}.json
  • Vue: https://boldkit.dev/r/vue/{name}.json

Internals

  • tsconfig.app.json now includes "node" in types and adds @types/node to devDeps — required so the new process.env.NODE_ENV reads type-check under BoldKit's own tsc -b. Downstream Next.js users already have these via Next.

Bumps

  • React: 3.3.8 → 3.3.9
  • Vue: 3.1.8 → 3.1.9

v3.3.8 - Registry recheck + chart family fix

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 29 May 03:22

A follow-up stability pass after a full source-vs-registry recheck. 36 install-breakers that were silently shipping in v3.3.7 - caught by extending the audit script to cover relative imports, fixed in this release.

Highlights

🩹 React chart family is installable. All 9 standalone chart entries (donut-chart, radar-chart, radial-bar-chart, gauge-chart, sparkline, funnel-chart, treemap-chart, heatmap-chart, sankey-chart) shipped with install targets at components/ui/chart/<name>.tsx while their relative ./chart import resolved to a path nothing shipped. Flattened all chart targets to components/ui/<name>.tsx so ./chart correctly hits the base chart entry. Added missing @boldkit/chart registryDep on the four entries that import ./empty.

🩹 8 Vue entries had missing registryDependencies or stale file lists. alert-dialog, calendar, pagination now declare button. toggle-group declares toggle. dropzone declares progress + spinner. stat-card declares card + progress. empty-state and layered-card now ship their -variants.ts sibling. pagination and dropdown-menu had stale files: lists referencing components that don't exist on disk — corrected.

🩹 20 Vue shapes were missing from the registry. SHAPE_FILES had drifted 20 entries behind the 55 on disk. Replaced with disk auto-discovery so any new shape ships automatically.

Vue parity for ascii-shapes and error-boundary. Both existed on the React side but had no Vue install path. ASCII Shapes now ship all 17 components + constants via a new subdirectory codepath. ErrorBoundary now has a Vue equivalent using onErrorCaptured with the same neubrutalism fallback UI.

New /components/error-boundary docs page. Framework-switched preview/code/install with a live "Trigger error" demo button.

🐛 Blocks page no longer shows broken install commands. All 15 block cards were displaying npx shadcn add boldkit.dev/r/<block>.json commands that 404'd — the block registry entries don't exist (blocks remain copy/paste-grade). Removed the install bar UI. Each block doc page now has React + Vue "View on GitHub" source links.

Setup

No migration required. Existing @boldkit/* install paths remain unchanged. Anyone who couldn't install a chart entry before v3.3.8 can now do so directly:

npx shadcn@latest add @boldkit/donut-chart
npx shadcn-vue@latest add @boldkit/error-boundary

Internals

scripts/audit-registry-imports.mjs was previously blind to relative imports — only checked from '@/...' aliases. Extended to resolve from './x' and from '../x' against each file's install target, verifying the resolved path is shipped by the same entry or by a declared registryDependency. That single change exposed all 36 issues above in one audit run, and will catch the same class of bug going forward.

Commits

  • 3db6e19 release: v3.3.8 — registry recheck + chart family fix

Full diff: v3.3.7...v3.3.8

v3.3.7 - Registry health pass

Choose a tag to compare

@ANIBIT14 ANIBIT14 released this 28 May 18:17

BoldKit 3.3.7 - Registry health pass

A focused stability release that fixes install-time failures consumers have been hitting and adds permanent guards so the same classes of bug can't silently return.

Highlights

🩹 @boldkit/* install path now works end-to-end.
Cross-component deps (button, utils, math-curves, etc.) were resolving against shadcn's default registry instead of BoldKit's. All 74 references across React + Vue are now properly scoped.

🩹 Vue math-curve-* family is installable.
MathCurveLoader, MathCurveProgress, MathCurveBackground, and the shared math-curves engine were missing from shadcn-vue entirely. Now registered.

🩹 Chart components ship current source.
React chart-X files synced from src/components/ui/chart/ with import rewriting. Vue chart entries now bundle ChartEmpty.vue and chart-types.ts so installs compile.

🩹 37 UI mirrors caught up with src/.
Months of bug fixes (focus-visible, ARIA attrs, edge cases) and security helpers (safeHref, sanitizeCssValue) had never reached the registry. rating.tsx registry was an entirely different implementation from src.

Two new MathCurveLoader curves. spiral and heart, both already in the runtime — TypeScript just needed widening.

🐛 /components/sidebar no longer crashes. Active-state demo was missing its <SidebarProvider> wrapper.

⚠️ Required setup (positive break)

Add the @boldkit alias to your components.json:

{
  "registries": {
    "@boldkit": "https://boldkit.dev/r"
  }
}

(Vue: https://boldkit.dev/r/vue.)

Then install components as:

npx shadcn@latest add @boldkit/button @boldkit/card
# or for Vue
npx shadcn-vue@latest add @boldkit/button @boldkit/card

Single-file installs of leaf items (utils, styles) still work via direct URL, but any component with cross-deps requires the alias.

Internals - drift can't recur

New scripts/sync-registry-from-src.js runs as a pre-step in registry:build. It copies src/components/ui/*.tsx and selected libs into registry/default/ and self-verifies — if any in-scope mirror still drifts after sync, the build fails. This protects against the silent-drift class of bug going forward.

Commits

  • 2f68fd1 registry: scope cross-references with @boldkit/ namespace
  • 86397c2 registry+docs: finish scoping pass, fix build order, update install docs
  • 9b70d71 registry: migrate 6 hand-written Vue entries into build script
  • 2c016b0 math-curves: add spiral + heart to LoaderCurveKey
  • f9151fa registry: close Vue math-curve gap + sync 37 drifted React mirrors
  • b74270f registry: chart family drift — sync React, complete Vue bundling
  • de251ec docs: wrap Active State sidebar demo in SidebarProvider

Full diff: v3.3.6...v3.3.7