fix: content page layout - glass card wrapper, FDSA nav brand, sidebar styling

This commit is contained in:
artale 2026-06-03 14:20:50 +02:00
parent 0bd1dd267c
commit 74a9c3cfe0
61 changed files with 318 additions and 277 deletions

View File

@ -21,8 +21,8 @@ export default defineConfig({
appearance: 'dark', appearance: 'dark',
themeConfig: { themeConfig: {
logo: '/logo.svg', logo: false,
siteTitle: false, siteTitle: 'FDSA',
nav: [ nav: [
{ text: 'Course', link: '/modules/m1-foundations', activeMatch: '/modules/' }, { text: 'Course', link: '/modules/m1-foundations', activeMatch: '/modules/' },

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{R as p}from"./chunks/theme.DE1FzPl-.js";import{v as s,am as i,R as u,w as c,p as l,a as f,C as d,a1 as m,k as h,S as g,l as A,r as v,ac as w,N as C,as as R,ag as y,ab as P,aa as b,u as S}from"./chunks/framework.BPKcPtvA.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),E=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return C(()=>{R(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),P(),b(),n.setup&&n.setup(),()=>S(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(E)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp}; import{R as p}from"./chunks/theme.BQD37h-V.js";import{v as s,am as i,R as u,w as c,p as l,a as f,C as d,a1 as m,k as h,S as g,l as A,r as v,ac as w,N as C,as as R,ag as y,ab as P,aa as b,u as S}from"./chunks/framework.BPKcPtvA.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const n=r(p),E=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return C(()=>{R(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&y(),P(),b(),n.setup&&n.setup(),()=>S(n.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),n.enhanceApp&&await n.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function D(){return A(E)}function _(){let e=s;return h(a=>{let t=g(a),o=null;return t&&(e&&(t=t.replace(/\.js$/,".lean.js")),o=import(t)),s&&(e=!1),o},n.NotFound)}s&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{T as createApp};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -61,30 +61,62 @@ body {
/* === TOP NAV === */ /* === TOP NAV === */
.VPNav { .VPNav {
border-bottom: 1px solid var(--vp-c-divider) !important; border-bottom: 1px solid var(--vp-c-divider) !important;
background: rgba(10,10,10,0.8) !important; background: rgba(10,10,10,0.85) !important;
backdrop-filter: blur(16px) !important; backdrop-filter: blur(16px) !important;
} }
/* FDSA brand in nav — orange terminal icon */
.VPNavBarTitle .title { .VPNavBarTitle .title {
display: flex !important;
align-items: center !important;
gap: 8px !important;
font-family: 'DM Sans', sans-serif !important;
font-size: 20px !important;
font-weight: 800 !important; font-weight: 800 !important;
font-size: 18px !important;
letter-spacing: -0.5px !important; letter-spacing: -0.5px !important;
color: #e8e8e8 !important;
}
.VPNavBarTitle .title::before {
content: 'terminal';
font-family: 'Material Symbols Outlined';
font-size: 22px;
color: #d95c41;
}
.VPNavBarTitle .logo {
display: none !important;
}
/* Nav link hover */
.VPNavBarMenuLink:hover, .VPNavBarMenuLink.active {
color: var(--vp-c-brand-1) !important;
} }
/* === SIDEBAR — minimal, collapsible === */ /* === SIDEBAR — FDSA style === */
.VPSidebar { .VPSidebar {
background: var(--vp-c-bg-alt) !important; background: var(--vp-c-bg-alt) !important;
border-right: 1px solid var(--vp-c-divider) !important; border-right: 1px solid var(--vp-c-divider) !important;
width: 240px !important; width: 240px !important;
padding-top: 8px !important;
} }
.VPSidebar .item .text { .VPSidebar .item .text {
font-size: 13px !important; font-size: 13px !important;
font-weight: 500 !important; font-weight: 500 !important;
transition: color 0.15s !important;
} }
.VPSidebar .item .text:hover { .VPSidebar .item .text:hover {
color: var(--vp-c-brand-1) !important; color: var(--vp-c-brand-1) !important;
} }
.VPSidebar .group + .group { .VPSidebar .group + .group {
border-top: 1px solid var(--vp-c-divider) !important; border-top: 1px solid var(--vp-c-divider) !important;
margin-top: 8px !important;
padding-top: 8px !important;
}
/* Active sidebar item */
.VPSidebar .item.active .text {
color: var(--vp-c-brand-1) !important;
font-weight: 600 !important;
}
/* Sidebar link hover bg */
.VPSidebar .item:hover {
background: transparent !important;
} }
/* === CONTENT AREA === */ /* === CONTENT AREA === */
@ -95,11 +127,20 @@ body {
.VPContent { padding-left: 0; } .VPContent { padding-left: 0; }
} }
/* === DOC PAGES — glass card style === */ /* === DOC PAGES — glass card wrapper === */
.VPDoc:not(.VPDoc--blank) > .container > .content {
background: rgba(17,17,17,0.5) !important;
backdrop-filter: blur(8px) !important;
border: 1px solid rgba(255,255,255,0.04) !important;
border-radius: 12px !important;
padding: 0 32px !important;
overflow: hidden;
}
.vp-doc { .vp-doc {
max-width: 800px; max-width: 800px;
margin: 0 auto; margin: 0 auto;
padding: 32px 24px 64px; padding: 32px 0 48px;
} }
.vp-doc h1 { .vp-doc h1 {