Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
8879b74
feat(Sidebar): new component
benjamincanac Feb 14, 2026
a4795bd
docs(app): add sidebar
benjamincanac Feb 14, 2026
472b3de
docs: update
benjamincanac Feb 14, 2026
9e28ad7
fix(Sidebar): improve open state
benjamincanac Feb 14, 2026
4bd0801
up
benjamincanac Feb 14, 2026
254eecf
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 14, 2026
51aa144
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 18, 2026
86aab9c
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 18, 2026
1be9f9b
fix(theme): update global css variables
benjamincanac Feb 18, 2026
f61a35c
feat(Sidebar): update
benjamincanac Feb 18, 2026
4c2cfb7
docs: implement chat in sidebar
benjamincanac Feb 18, 2026
93e496c
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 20, 2026
cf207bb
test: update snapshots
benjamincanac Feb 20, 2026
0d47cd3
fix(locale): add missing translations
benjamincanac Feb 20, 2026
411c751
feat: update
benjamincanac Feb 20, 2026
a5bfb69
docs: update
benjamincanac Feb 20, 2026
c4bbbeb
docs(chat): improve
benjamincanac Feb 20, 2026
5be44d8
feat: update
benjamincanac Feb 20, 2026
387117f
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 24, 2026
bee3dba
up
benjamincanac Feb 21, 2026
be8cd61
up
benjamincanac Feb 25, 2026
d3a2181
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 25, 2026
dea21f6
up
benjamincanac Feb 25, 2026
7780b68
up
benjamincanac Feb 25, 2026
a2d6abd
update docs
benjamincanac Feb 25, 2026
f8e0590
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 25, 2026
44cf7af
up
benjamincanac Feb 26, 2026
6d6a0fb
Merge branch 'v4' into feat/sidebar
benjamincanac Feb 26, 2026
bfd0030
docs: update
benjamincanac Feb 26, 2026
7ed0e3a
docs(Chat): update with page links
benjamincanac Feb 26, 2026
c721c58
docs(Chat): update
benjamincanac Feb 26, 2026
9f0f7e8
up
benjamincanac Feb 27, 2026
cc19a87
up
benjamincanac Feb 27, 2026
3b46b69
fix lint
benjamincanac Feb 27, 2026
d5cc65d
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 2, 2026
9156d9b
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 2, 2026
e82d2fe
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 2, 2026
822ade4
up
benjamincanac Mar 3, 2026
cde0eee
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 5, 2026
cd8846e
up
benjamincanac Mar 4, 2026
00d2d1f
docs: switch to Sonnet 4.6 with adaptive thinking and add CSRF protec…
benjamincanac Mar 5, 2026
1a0308d
docs: improve chat components and search API prompt
benjamincanac Mar 5, 2026
2def870
fix(modal/slideover): update header height with css variable
benjamincanac Mar 5, 2026
fed4a93
docs: rename search API endpoint to ai
benjamincanac Mar 5, 2026
03fb1df
docs(ai): improve prompt
benjamincanac Mar 5, 2026
e0724fb
docs(ai): improve chat reliability, caching and prompt quality
benjamincanac Mar 6, 2026
f1253b9
fix(theme) improve
benjamincanac Mar 6, 2026
677846d
feat: update
benjamincanac Mar 6, 2026
7e56978
fix(locale): add missing `sidebar` messages to Icelandic locale
benjamincanac Mar 6, 2026
8054684
fix: remove CSRF protection that breaks on Vercel preview
benjamincanac Mar 6, 2026
27faaf5
refactor(docs): simplify theme system and remove appConfig.theme
benjamincanac Mar 6, 2026
a413db2
refactor(docs): load theme picker fonts dynamically instead of preloa…
benjamincanac Mar 6, 2026
23b99a9
docs(ai): improve prompt
benjamincanac Mar 7, 2026
01b27a0
fix(docs): improve error handling and theme merge reliability
benjamincanac Mar 7, 2026
02b1c05
fix(Sidebar): add accessible labels to icon-only toggle buttons
benjamincanac Mar 7, 2026
0e218ae
fix(app): add `min-w-0` on root div
benjamincanac Mar 7, 2026
625e515
docs(Chat): improve icons
benjamincanac Mar 7, 2026
b514a23
fix(ChatReasoning): improve
benjamincanac Mar 7, 2026
38cfae4
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 8, 2026
d9ac4b3
docs(chat): update components for future integration
benjamincanac Mar 8, 2026
f05cd94
fix(ChatShimmer): improve perfs
benjamincanac Mar 9, 2026
ccd5d0c
docs(Sidebar): rename navbar example to header
benjamincanac Mar 9, 2026
b09b5e0
docs(chat): use UTheme for prose sizing, type guards, and switch to A…
benjamincanac Mar 9, 2026
07483b2
playground(chat): switch to Anthropic with reasoning and web search
benjamincanac Mar 9, 2026
48a351e
docs(sidebar): improve
benjamincanac Mar 9, 2026
d86e0fc
Merge branch 'v4' into feat/sidebar
benjamincanac Mar 10, 2026
599e552
fix(Sidebar): resolve hydration mismatch and improve slot props
benjamincanac Mar 10, 2026
5ac675c
docs(Sidebar): improve documentation and examples
benjamincanac Mar 10, 2026
cb53b0a
fix(Sidebar): make slot props non-optional and pass state to actions …
benjamincanac Mar 10, 2026
0686ed2
fix(docs): remove unused parameter and validate theme settings input
benjamincanac Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions docs/app/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,6 @@ export default defineAppConfig({
max: 5,
expand: true
},
theme: {
radius: 0.25,
blackAsPrimary: false,
icons: 'lucide',
font: 'Public Sans'
},
ui: {
colors: {
primary: 'green',
Expand Down
47 changes: 25 additions & 22 deletions docs/app/app.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { SpeedInsights } from '@vercel/speed-insights/nuxt'
const route = useRoute()
const appConfig = useAppConfig()
const colorMode = useColorMode()
const { style, link } = useTheme()

const { data: navigation } = await useAsyncData('navigation', () => queryCollectionNavigation('docs', ['framework', 'category', 'description']))
const { data: files } = useLazyAsyncData('search', () => queryCollectionSearchSections('docs', {
Expand All @@ -16,24 +17,18 @@ const { data: files } = useLazyAsyncData('search', () => queryCollectionSearchSe
})

const color = computed(() => colorMode.value === 'dark' ? (colors as any)[appConfig.ui.colors.neutral][900] : 'white')
const radius = computed(() => `:root { --ui-radius: ${appConfig.theme.radius}rem; }`)
const blackAsPrimary = computed(() => appConfig.theme.blackAsPrimary ? `:root { --ui-primary: black; } .dark { --ui-primary: white; }` : ':root {}')
const font = computed(() => `:root { --font-sans: '${appConfig.theme.font}', sans-serif; }`)

useHead({
meta: [
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ key: 'theme-color', name: 'theme-color', content: color }
],
link: [
link: computed(() => [
// { rel: 'icon', type: 'image/svg+xml', href: '/icon.svg' },
{ rel: 'canonical', href: `https://ui.nuxt.com${withoutTrailingSlash(route.path)}` }
],
style: [
{ innerHTML: radius, id: 'nuxt-ui-radius', tagPriority: -2 },
{ innerHTML: blackAsPrimary, id: 'nuxt-ui-black-as-primary', tagPriority: -2 },
{ innerHTML: font, id: 'nuxt-ui-font', tagPriority: -2 }
],
{ rel: 'canonical', href: `https://ui.nuxt.com${withoutTrailingSlash(route.path)}` },
...link.value
]),
style,
htmlAttrs: {
lang: 'en'
}
Expand All @@ -58,22 +53,30 @@ provide('navigation', rootNavigation)
<Analytics />
<SpeedInsights />

<div :class="[route.path.startsWith('/docs/') && 'root']">
<template v-if="!route.path.startsWith('/examples')">
<!-- <Banner /> -->
<div class="flex">
<div class="flex-1 min-w-0" :class="[route.path.startsWith('/docs/') && 'root']">
<template v-if="!route.path.startsWith('/examples')">
<!-- <Banner /> -->

<Header />
</template>
<Header />
</template>

<NuxtLayout>
<NuxtPage />
</NuxtLayout>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>

<template v-if="!route.path.startsWith('/examples')">
<Footer />
<template v-if="!route.path.startsWith('/examples')">
<Footer />

<ClientOnly>
<Search :files="files" :navigation="navigationByFramework" />
</ClientOnly>
</template>
</div>

<template v-if="!route.path.startsWith('/examples')">
<ClientOnly>
<Search :files="files" :navigation="navigationByFramework" />
<Chat />
</ClientOnly>
</template>
</div>
Expand Down
Loading
Loading