Changelog
A record of all notable changes to Apex Dashboard.
v3.0.0
Twelve dashboard variants, six layout presets, a data grid with pinning and inline editing, a blocks catalog, a world map, an AI module, RBAC, and a typed data layer replacing the direct mock-data imports.
| Measured | v2.3.0 | v3.0.0 |
|---|---|---|
| Route files | 57 | 94 |
| Prerendered HTML files | 173 | 216 |
| sitemap.xml URLs | 28 | 68 |
| Unit tests / files | 8 / 2 | 636 / 26 |
| E2E tests / files | 4 / 1 | 99 / 7 |
| Largest JS chunk | 282 KB | 283 KB |
Both columns were measured by building the tag, not carried over from notes. The surface roughly doubled and the largest chunk grew by 1 KB — that is what collapsing 13 chart tooltips into one primitive and moving the dataset out of the bundle bought.
Added
- Six layout presets with a gallery — expressed in CSS against a class the pre-paint script writes, so switching preset changes no React state and cannot mismatch on hydration
- Seven new dashboard variants (Project, Finance, HR, Marketing, Academy, Logistics, AI Usage), each owning at least two chart forms no other variant uses rather than recolouring the same six cards
- Data grid — column pinning, inline editing, saved views shareable via
?view=, and row virtualization - CSV and real XLSX export with zero new dependencies, plus a print stylesheet. Called “Print / Save as PDF” rather than “PDF export” because with no server there is no headless Chrome
- 114 copy-paste blocks in 14 categories, each a real file whose source is read from disk at build time; a test asserts every entry has a file and every file has an entry, and the catalog page renders
catalog.lengthso its count cannot drift - World map from Natural Earth (public domain), projected offline into static path data — no
d3-geo, notopojson, no runtime projection - AI module — assistant and usage dashboard, a scripted adapter and a typed
AIAdapter. No API keys ship and no provider is called from the browser - RBAC — roles, a permission matrix and guards, documented in the source as UI affordances rather than security, because under static export they cannot be anything else
- Typed data layer replacing direct mock-data imports across 23 files, with fixtures served as static JSON so the dataset leaves the JS bundle entirely
- Seven new documentation pages, and a
:focus-visiblefloor,prefers-reduced-motionsupport and a working skip link on 25 pages that previously pointed at nothing
Fixed
npm run startcould not start — it wasnext start, which refuses to run underoutput: "export", and it failed after printing “Ready”. Six places promised that command. It now servesout/with a zero-dependency server- The documented Dockerfile could not build an image: it copied
.next/standaloneand rannode server.js, neither of which exists in a static export - Dark-mode visitors got a light first paint — the pre-paint script restored five preferences but never read the theme
- The colour-preset reset did nothing. Presets were inline styles, which shadow the
.darkblock and can never be un-set, so--primarywas locked at its light value in both themes - The whole page scrolled sideways on any route with a wide table — two flex items refused to shrink below their content, which also made every
overflow-x-autobelow them inert --primaryand--successfailed WCAG AA contrast in both themes, as did--muted-foregroundand--destructive-foregroundperPage: 100silently truncated — past 100 records rows vanished with no indication- The notification badge was cross-component stale: marking read on the page never updated the header
- The components page documented ten entries that did not work — eight components that never existed and two wrong paths. A test now resolves every module and named export the docs mention
v2.3.0
July 2026Hardening release. A dev-server crash and three pieces of broken tooling are fixed, and CI now exists to stop a repeat.
Fixed
npm run devcrashed withcreateContext is not a functioninsrc/app/not-found.tsx. Core imported Radix'sSlotfrom theradix-uibarrel, which evaluates every primitive on import; several callReact.createContext()at module scope, which does not exist in the RSC graph. Fixed by core ^1.2.1npm run test,npm run lintandnpm run build-storybookcould not run at all — threeoverridesadded to silence audit findings had forced breaking majors onto jsdom, minimatch and react-docgen. All corrected- Auth pages had no heading element —
CardTitlerenders adiv, leaving nothing for screen readers. Now semantich1s - Icon-only buttons gained accessible names;
CLAUDE.mdno longer ships inside the customer zip
Added
- Continuous integration — there was none before, which is why the defects above shipped
npm run check:rsc, which cannot pass locally and fail for a customerpublic/_headerswith security headers and immutable asset caching, plussitemap.xmlandrobots.txt- Next.js 16.2.12, React 19.2.8 and latest across dependencies;
npm auditreports 0 vulnerabilities
v2.2.3
June 2026Fixed the starter template so it installs and builds cleanly.
Fixed
- Starter template (
seed/) now installs and builds — added the missing@dashboardpack/coredependency it imports throughout - Upgraded the starter's Storybook 8.6.17 → 10.4.1, fixing the
next@16peer-dependency ERESOLVE error onnpm install - Added
transpilePackagesand TypeScript core source-resolution so the shared package compiles
v2.2.2
May 2026Dependency refresh with security overrides for transitive vulnerabilities.
Dependencies
- Next.js 16.2.4 → 16.2.6 (fixes 13 published Next.js CVEs)
- React / React-DOM 19.2.5 → 19.2.6, lucide-react 1.11.0 → 1.16.0, framer-motion 12.38 → 12.40, storybook 10.3.5 → 10.4.1, zod 4.3.6 → 4.4.3, plus minor bumps to other direct deps
- react-day-picker pinned to ^9.14.0 (@dashboardpack/core peer dep blocks the v10 major bump)
- npm overrides added for transitive vulns: postcss ^8.5.15, elliptic ^6.6.1, brace-expansion ^5.0.6, fast-uri ^3.1.2, ws ^8.20.1
- npm audit: 4 vulnerabilities (1 high, 3 moderate) → 0
v2.2.1
April 2026Dark mode contrast pass (the original contrasty palette that the rest of the family now mirrors).
Dark mode contrast
- Cards now lift clearly off the background (card surface L 0.125 → 0.19); popover, border, and muted layers bumped proportionally to preserve hierarchy
- Removed the green tint from dark surfaces (chroma 0) so the accent color switcher reads true on every preset
- Sidebar lightened (L 0.06 → 0.11) and given a right border so it reads as a distinct rail rather than blending into the main background
- Sidebar collapse button switched to bg-card and the chevron is no longer at 50% opacity (was failing WCAG 3:1 non-text contrast)
Sidebar UX
- Nav scrollbar fades in only on hover/focus (new scrollbar-fade utility) so the sidebar reads cleaner when idle
Internal
- Layout init script moved to next/script with beforeInteractive strategy, resolving the React script-tag warning while preserving no-flash behavior
- Patch dependency updates: Next 16.2.4, lucide-react 1.11.0, react-hook-form 7.74.0, vitest 4.1.5, jsdom 29.1.0, libphonenumber-js 1.12.42
v2.2.0
April 2026Full dependency update across the entire stack.
Dependencies
- Next.js 16.1.6 to 16.2.3
- React and React DOM 19.2.3 to 19.2.5
- Storybook 8.6.x to 10.3.5 (addon-essentials and blocks consolidated into core)
- TypeScript 5 to 6
- ESLint 9 to 10
- lucide-react 0.564.x to 1.8.0 (brand icons replaced with inline SVGs)
- @dashboardpack/core now installed from npm registry (^1.1.0)
- All remaining dependencies bumped to latest versions
v2.1.0
February 2026User management, Storybook component library, internationalization, and performance optimizations.
User Management
- Users list page with DataTable, role/status filters, and CRUD operations
- User detail page with profile card, permissions grid, and account details
- Create and edit forms with React Hook Form + Zod validation
- 25 mock users with roles, permissions, and departments
Storybook
- Storybook 10.x with 15 component stories across core, form, and dashboard tiers
- Dark mode decorator and responsive viewport presets
- Auto-docs enabled for all stories
Internationalization (i18n)
- Custom i18n with React Context and type-safe translation keys
- 3 languages: English, German, French
- ~80 translation keys covering sidebar, header, and dashboard
- Locale switcher in Theme Customizer and Settings
Performance
- Bundle analyzer integration with npm run analyze
- Dynamic imports for chart components on dashboard home
- LazyChart wrapper using IntersectionObserver for viewport-triggered rendering
v2.0.0
February 2026Major update covering Phases 1-9 of the product roadmap.
Dashboard Variations
- eCommerce dashboard with sales charts, order status donut, top products
- CRM dashboard with pipeline funnel, deal stages, lead sources
- SaaS dashboard with MRR/ARR tracking, subscription plans, churn metrics
App Pages
- Chat application with real-time messaging UI and conversation list
- Email/Inbox client with folders, compose dialog, and search
- File Manager with grid/list views, upload, and storage stats
- Kanban board with drag-and-drop task management
- Calendar with monthly view and event management
- Multi-step wizard form with validation
- User profile page with overview, activity, and connections tabs
- Pricing page with plan comparison
Advanced Components
- TanStack Table upgrade with column filtering, sorting, pagination, CSV export, mobile responsive cards
- Date Picker, Date Range Picker
- Combobox/Autocomplete, Multi-Select, Phone Input
- File Uploader (react-dropzone), OTP Input, Color Picker
- Accordion, Alert, Carousel, Collapsible, Scroll Area, Slider, Toggle Group, Resizable
Charts Showcase
- New /charts page with Radar, Radial Bar, Treemap, Scatter, and Composed charts
- 10 chart types total (Area, Bar, Line, Pie, Sparkline, Radar, RadialBar, Treemap, Scatter, Composed)
Theme Customizer
- Live customizer drawer with color presets, density options
- 6 color presets: Default, Ocean, Sunset, Forest, Berry, Slate
- 3 density levels: Compact, Default, Comfortable
- Reset to defaults
Layout Options
- Horizontal top-nav layout alternative
- Boxed container option (max-width centered)
- All layouts persist to localStorage
RTL Support
- Full right-to-left text direction support
- CSS logical properties across all components
- Toggle in Theme Customizer
Auth & Utility Pages
- Reset Password, Two-Factor Authentication, Email Verification, Lock Screen
- 500 Server Error, 403 Forbidden error pages
- Coming Soon and Maintenance pages
Testing Infrastructure
- Vitest unit testing with jsdom environment
- Playwright E2E tests with Chromium
- Representative test suites for utilities, data, and components
v1.0.0
February 2026Initial release of Apex Dashboard.
Dashboard
- Overview page with stats cards, revenue chart, traffic pie chart, and goals progress
- Analytics page with detailed chart breakdowns
- Collapsible sidebar with icon-only mode
- Responsive header with search, notifications, and user menu
Pages
- Orders page with data table, sorting, filtering, and CRUD operations
- Products catalog with grid and list views
- Customers management with detail panels
- Billing page with plan selection and payment history
- Invoices list with status badges
- Notifications center with read/unread states
- Settings page with profile, appearance, and notification preferences
- Help and support page
Authentication
- Sign-in page with email/password form and social login buttons
- Sign-up page with form validation using React Hook Form and Zod
UI Components
- 25+ vendored shadcn/ui components (Button, Card, Dialog, Table, Tabs, etc.)
- Command palette (Cmd+K) for quick navigation
- Toast notifications via Sonner
- Confirm dialog for destructive actions
Theming
- Dark, light, and system theme modes
- OKLCh color tokens for perceptually uniform colors
- Semantic color system (primary, success, warning, destructive)
- 5-color chart palette
- Custom dark sidebar in both light and dark modes
Tech Stack
- Next.js 16 with App Router
- React 19
- TypeScript 6 with strict mode
- Tailwind CSS v4
- Recharts for data visualization
- Lucide React icons
- React Hook Form + Zod for form validation
- Radix UI primitives
Documentation
- Built-in documentation site at /docs
- Installation guide, folder structure, theming, components, and deployment docs
Back to the Introduction or view the Deployment Guide.