Skip to content

Releases: ColorlibHQ/adminlte-vue

v0.7.1

Choose a tag to compare

@puikinsh puikinsh released this 19 Aug 12:48

A documentation-site fix. @adminlte/vue and @adminlte/nuxt are byte-identical to 0.7.0 — the whole diff is inside apps/docs, which is private and ships to nobody, so there is nothing to reinstall.

Fixed

  • Every docs content page blanked out on hydration (#3). The page rendered from SSR and then lost its content, leaving only the sidebar shell.

    The trigger was a trailing slash: the payload key is doc-/guide/color-mode but route.path at …/guide/color-mode/ is /guide/color-mode/, so useAsyncData missed the server payload. On a hydration key miss Nuxt defers the replacement fetch to onBeforeMount rather than awaiting it, so doc was still undefined when the createError({ fatal: true }) guard ran — and a fatal thrown from an async page setup during hydration is swallowed, rendering no error page and logging nothing.

    A useDocsPath() composable now normalises the path, and a shared useCurrentDoc() keys the query once for both the page and the table of contents. The 404 guard also checks status !== 'idle', so a future key miss degrades to a late render instead of a silent blank.

  • "On this page" was pinned to the first page you visited. <DocsToc> lives in the persistent layout, so its setup ran once and snapshotted its key; every SPA navigation updated the title, sidebar and pager but left the previous page's headings. Pre-existing, and fixed by the same shared composable.

Verified across all 16 docs pages in both URL forms, at the subpath and the domain root, plus the dev server: SSR and post-hydration body text now match exactly, with zero console errors.

v0.6.0

Choose a tag to compare

@puikinsh puikinsh released this 19 Aug 10:42

A dependency and toolchain refresh. No API changes.

Upgraded

Majors: TypeScript 5.9 → 6.0, ApexCharts 5.13 → 6.10 (peer widened to ^4 || ^5 || ^6), @types/node 22 → 26, jsdom 29 → 30.

Minors/patches: Nuxt + @nuxt/kit + @nuxt/schema 4.4.6 → 4.5.2, @nuxt/content 3.14 → 3.15.2, Vite 8.0.14 → 8.2.1, Vue 3.5.35 → 3.5.41, vue-tsc 3.3.10, Vitest 4.1.11, ESLint 10.8.1, typescript-eslint 8.67, Playwright 1.62.1, Tabulator 6.5.2, Tom Select 2.6.2, FullCalendar 6.1.21.

Two fixes the upgrades required

  • packages/nuxt/src/module.ts — Nuxt 4.5.2 surfaced TS2742 (the inferred module type could not be named without a .pnpm/@nuxt+schema path); the export is now annotated NuxtModule<AdminlteModuleOptions>. The emitted types are unchanged.
  • apps/demo/app/shims.d.ts — TypeScript 6's TS2882 rejects side-effect imports of the extensionless CSS subpaths; five ambient declarations added.

Held back, deliberately

  • TypeScript 7typescript-eslint@8.67.0 peers >=4.8.4 <6.1.0; no released build supports TS 7 yet.
  • FullCalendar 7 — only @fullcalendar/core has a stable 7.x; daygrid/timegrid/list/interaction are still 6.1.21 and hard-pin core@~6.1.21.
  • better-sqlite3 13 — works, but @nuxt/content peers ^12.5.0 and it adds ~19 MB of foreign-platform prebuilds to the Nitro bundle.

Verified: build, lint, type-check, 59/59 unit tests, demo and docs builds, and all four demo chart pages loaded headlessly on ApexCharts 6 with no console errors.

npm install @adminlte/vue@0.6.0

v0.5.0

Choose a tag to compare

@puikinsh puikinsh released this 19 Aug 10:42

Tracks AdminLTE core 4.8.1, up from 4.1.0.

What the core bump brings

  • The opt-in extended palettes are now shipped by this package: @adminlte/vue/css/colors (14 designed colours) and @adminlte/vue/css/colors/v3 (the 18 AdminLTE 3 originals).
  • With one of those loaded, <html data-lte-primary="teal"> makes any palette colour Bootstrap's primary — buttons, links, pagination, form focus, progress bars — and data-lte-contrast="aa" fixes the v3 colours that miss WCAG AA.
  • data-lte-print="plain" works from the base stylesheet, for pages that print as documents rather than screens.
  • Plus the core fixes since 4.1.0: the sidebar height fix with a sidebar filter, the restyled header search, d-print-none on the sidebar and app wrapper, and the pagination focus ring.
npm install @adminlte/vue@0.5.0

Full notes: CHANGELOG

v0.4.0 — customizable topbar & footer, menu attrs, sidebar navigate

Choose a tag to compare

@puikinsh puikinsh released this 11 Aug 12:47

Customization work driven by #2, a security hardening pass, and a CI repair.

Everything here is additive. No breaking changes — if you pass no new props or slots, every component renders exactly as it did in 0.3.0 (the timeline's DOM output is asserted byte-identical in tests).

npm i @adminlte/vue@0.4.0
npm i @adminlte/nuxt@0.4.0   # Nuxt module

Added

Reported in #2 by @hkvstore:

Topbar user-dropdown slots

The dropdown's user-header, user-body and user-footer blocks were hard-coded to AdminLTE's demo content (the Followers / Sales / Friends row and the Profile / Sign out buttons). All three are now slots — plus user-menu to replace the dropdown body wholesale — and LteDashboardLayout forwards all four, so you never have to mount LteTopbar yourself. Each receives the resolved user; user-footer also receives profile / logout callbacks so custom buttons keep raising the layout's events.

<LteDashboardLayout :menu-items="menu" :user="user" @logout="signOut">
  <template #user-footer="{ logout }">
    <NuxtLink to="/account" class="btn btn-outline-secondary">Account</NuxtLink>
    <button type="button" class="btn btn-outline-danger float-end" @click="logout()">Log out</button>
  </template>
</LteDashboardLayout>

Footer props on the layout

footerRightText and footerYear props plus a footer-right slot, forwarded to LteFooter — previously reachable only by mounting LteFooter yourself.

attrs on menu nodes

MenuItem.attrs is spread onto the rendered sidebar link and MenuGroup.attrs onto the group's toggle button — data-* test/analytics hooks, aria-*, rel, title. The resolved link target always wins, so attrs can't overwrite href / to.

{ type: 'item', text: 'Profile', href: '/profile', attrs: { 'data-testid': 'nav-profile' } }

Sidebar links honor navigate

The navigate callback now drives sidebar navigation too, not just the ⌘K command palette — client-side routing without passing a linkComponent.

Interception is deliberately conservative: modified and middle clicks, target="_blank", external, protocol-relative and hash-only hrefs all stay native, and a click a router link component already handled is skipped. Passing both linkComponent and navigate never navigates twice — verified against the demo (which passes NuxtLink and navigateTo): exactly one history entry per click, back button intact.

LteTimeline body / footer slots

Escaped, scoped (item, index) alternatives to the raw-HTML fields — see Security below.

Security

A hardening pass over the library, the Nuxt module and the workspace dependencies. No known exploited issue — these close sharp edges found while auditing.

  • LteTimeline raw-HTML fields are flagged and now have a safe alternative. TimelineItem.body / .footer are written with v-html (AdminLTE's markup calls for it), making them a stored-XSS sink for anyone piping user-generated content through a timeline. The JSDoc was also actively misleading — it claimed markup came from the default slot. Both fields now carry an explicit trusted-content warning in the types and docs, and the new slots give an escaped path.
  • The Nuxt module's theme script no longer interpolates config verbatim. initialColorMode was substituted straight into the inline <script> whose head sanitizer the module deliberately disables. It is now validated against light | dark | auto. Not reachable from user input, but an untyped or runtime-assembled nuxt.config value would have been script injection rather than a broken theme.
  • pnpm audit is clean again (was 7 high, now 0). All seven were DoS-class advisories in build-time transitive dependencies of the docs app — none reachable from the published library, which externalizes its dependencies. Fixed with four targeted pnpm.overrides rather than a major bump. @nuxt/content is pinned to ~3.14.0 because 3.15.x pulls @nuxt/kit@4.5.2 → unctx@3.0.0 → unplugin → vite@8.0.14, which adds seven new advisories and three unmet peers.

Fixed

  • CI runs again. It had failed on every run since 2026-06-11 for two reasons unrelated to the code under test: pnpm/action-setup@v4 hard-errors when both a version: input and package.json's packageManager key specify a version, and the root build script passed an unquoted ./packages/* to --filter, which the shell expanded into two paths so pnpm read the second as a script name. The setup failure had masked the second bug entirely.

Full changelog: https://github.com/ColorlibHQ/adminlte-vue/blob/main/CHANGELOG.md
Diff: v0.3.0...v0.4.0

v0.3.0 — AdminLTE core 4.1.0

Choose a tag to compare

@puikinsh puikinsh released this 02 Jul 13:14

Upgrades the bundled AdminLTE core CSS to 4.1.0 across @adminlte/vue and @adminlte/nuxt.

Changed

  • @adminlte/vue/css is ~6 KB gzip smaller — core's duplicate docs styles are gone and the docs/FAQ styling moved to a new, separate stylesheet applications never needed.
  • WCAG AA contrast fix for breadcrumb links on the content-header background; repaired callout link/code colors.

Added

  • @adminlte/vue/css/docs export for the split docs-site stylesheet; the demo's docs layout loads it (SSR-inlined for docs routes only). The build now fails loudly if a promised stylesheet can't be copied.

Docs

  • All 25 cloned documentation pages refreshed from core 4.1.0 — including the new component-lifecycle API reference and the rewritten ColorMode guide.

Notes

  • Core 4.1.0's new JavaScript (ESM bundle, TypeScript declarations, lifecycle API, bundled ColorMode) does not affect this port at runtime: behavior is re-implemented natively in Vue and adminlte.js is never loaded. Theme preferences interoperate with core via the shared lte-theme storage key.

Verified: 36 unit tests, workspace lint + type-checks, demo SSR and static-export builds with per-route docs styling confirmed.

npm i @adminlte/vue bootstrap        # Vue 3
npm i @adminlte/nuxt @adminlte/vue bootstrap   # Nuxt

v0.1.0 — Official AdminLTE 4 for Vue 3 & Nuxt

Choose a tag to compare

@puikinsh puikinsh released this 10 Jun 12:40

The first public release of the official AdminLTE 4 edition for Vue 3 & Nuxt, by Colorlib.

Highlights

  • 45+ typed Vue 3 components covering the full AdminLTE 4 design (Bootstrap 5.3)
  • Composables-first architecture (no Pinia required), SSR-safe theming, dark mode
  • Nuxt module (@adminlte/nuxt) with auto-imports
  • ⌘K command palette, RTL support, TypeScript strict

Live demo: https://adminlte.io/themes/vue-nuxt/

Also available: HTML · React/Next.js · Laravel · Django