group docs navigation by audience
This commit is contained in:
+16
-1
@@ -69,6 +69,21 @@ canvas {
|
|||||||
display: grid;
|
display: grid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.docs-nav-group {
|
||||||
|
display: grid;
|
||||||
|
border-bottom: 2px solid #d8d0c4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.docs-nav-group h2 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 13px 16px 8px;
|
||||||
|
color: #a9a196;
|
||||||
|
font-size: 10px;
|
||||||
|
font-weight: 800;
|
||||||
|
letter-spacing: 0.14em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
|
||||||
.docs-sidebar a {
|
.docs-sidebar a {
|
||||||
color: #f4efe7;
|
color: #f4efe7;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
@@ -80,7 +95,7 @@ canvas {
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
min-height: 46px;
|
min-height: 46px;
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
border-bottom: 2px solid #d8d0c4;
|
border-top: 1px solid rgba(216, 208, 196, 0.35);
|
||||||
color: #f4efe7;
|
color: #f4efe7;
|
||||||
transition:
|
transition:
|
||||||
background 160ms ease,
|
background 160ms ease,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Link, Outlet } from "@tanstack/react-router";
|
import { Link, Outlet } from "@tanstack/react-router";
|
||||||
import { Home } from "lucide-react";
|
import { Home } from "lucide-react";
|
||||||
import { DocsLanguageProvider } from "@/pages/docs/DocsLanguageProvider";
|
import { DocsLanguageProvider } from "@/pages/docs/DocsLanguageProvider";
|
||||||
import { docSections } from "@/pages/docs/docsSections";
|
import { docGroups } from "@/pages/docs/docsSections";
|
||||||
|
|
||||||
export function DocsLayout(): React.JSX.Element {
|
export function DocsLayout(): React.JSX.Element {
|
||||||
return (
|
return (
|
||||||
@@ -20,7 +20,11 @@ export function DocsLayout(): React.JSX.Element {
|
|||||||
</header>
|
</header>
|
||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
{docSections.map((section) => (
|
{docGroups.map((group) => (
|
||||||
|
<section className="docs-nav-group" key={group.label}>
|
||||||
|
<h2>{group.label}</h2>
|
||||||
|
|
||||||
|
{group.sections.map((section) => (
|
||||||
<Link
|
<Link
|
||||||
activeProps={{
|
activeProps={{
|
||||||
className: "docs-nav-item docs-nav-item--active",
|
className: "docs-nav-item docs-nav-item--active",
|
||||||
@@ -37,6 +41,8 @@ export function DocsLayout(): React.JSX.Element {
|
|||||||
<span className="docs-nav-item__meta">{section.meta}</span>
|
<span className="docs-nav-item__meta">{section.meta}</span>
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
|
</section>
|
||||||
|
))}
|
||||||
</nav>
|
</nav>
|
||||||
</aside>
|
</aside>
|
||||||
|
|
||||||
|
|||||||
@@ -24,12 +24,24 @@ const LazyDocsTargetArchitecturePage = lazy(() =>
|
|||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const LazyDocsTechnicalEditorPage = lazy(() =>
|
||||||
|
import("@/pages/docs/technical-editor/page").then((module) => ({
|
||||||
|
default: module.DocsTechnicalEditorPage,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
|
||||||
const LazyDocsFeaturesPage = lazy(() =>
|
const LazyDocsFeaturesPage = lazy(() =>
|
||||||
import("@/pages/docs/features/page").then((module) => ({
|
import("@/pages/docs/features/page").then((module) => ({
|
||||||
default: module.DocsFeaturesPage,
|
default: module.DocsFeaturesPage,
|
||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const LazyDocsEditorPage = lazy(() =>
|
||||||
|
import("@/pages/docs/editor/page").then((module) => ({
|
||||||
|
default: module.DocsEditorPage,
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
|
||||||
export function DocsLayoutRoute(): React.JSX.Element {
|
export function DocsLayoutRoute(): React.JSX.Element {
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={null}>
|
<Suspense fallback={null}>
|
||||||
@@ -62,6 +74,14 @@ export function DocsTargetArchitectureRoute(): React.JSX.Element {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function DocsTechnicalEditorRoute(): React.JSX.Element {
|
||||||
|
return (
|
||||||
|
<Suspense fallback={null}>
|
||||||
|
<LazyDocsTechnicalEditorPage />
|
||||||
|
</Suspense>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
export function DocsFeaturesRoute(): React.JSX.Element {
|
export function DocsFeaturesRoute(): React.JSX.Element {
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={null}>
|
<Suspense fallback={null}>
|
||||||
@@ -69,3 +89,11 @@ export function DocsFeaturesRoute(): React.JSX.Element {
|
|||||||
</Suspense>
|
</Suspense>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function DocsEditorRoute(): React.JSX.Element {
|
||||||
|
return (
|
||||||
|
<Suspense fallback={null}>
|
||||||
|
<LazyDocsEditorPage />
|
||||||
|
</Suspense>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@@ -5,7 +5,15 @@ export interface DocSection {
|
|||||||
meta: string;
|
meta: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const docSections: DocSection[] = [
|
export interface DocGroup {
|
||||||
|
label: string;
|
||||||
|
sections: DocSection[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export const docGroups: DocGroup[] = [
|
||||||
|
{
|
||||||
|
label: "Technical",
|
||||||
|
sections: [
|
||||||
{
|
{
|
||||||
path: "/docs",
|
path: "/docs",
|
||||||
title: "README",
|
title: "README",
|
||||||
@@ -14,20 +22,39 @@ export const docSections: DocSection[] = [
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/docs/architecture",
|
path: "/docs/architecture",
|
||||||
title: "Architecture actuelle",
|
title: "Current Architecture",
|
||||||
subtitle: "Runtime structure",
|
subtitle: "Runtime structure",
|
||||||
meta: "02",
|
meta: "02",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/docs/target-architecture",
|
path: "/docs/target-architecture",
|
||||||
title: "Architecture cible",
|
title: "Target Architecture",
|
||||||
subtitle: "Next direction",
|
subtitle: "Next direction",
|
||||||
meta: "03",
|
meta: "03",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: "/docs/features",
|
path: "/docs/technical-editor",
|
||||||
title: "Fonctionnalités",
|
title: "Editor Technical Notes",
|
||||||
subtitle: "Implemented scope",
|
subtitle: "Implementation details",
|
||||||
meta: "04",
|
meta: "04",
|
||||||
},
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "User",
|
||||||
|
sections: [
|
||||||
|
{
|
||||||
|
path: "/docs/features",
|
||||||
|
title: "Features",
|
||||||
|
subtitle: "Implemented scope",
|
||||||
|
meta: "05",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/docs/editor",
|
||||||
|
title: "Editor User Guide",
|
||||||
|
subtitle: "Editing workflow",
|
||||||
|
meta: "06",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ export function DocsFeaturesPage(): React.JSX.Element {
|
|||||||
<DocsDocument
|
<DocsDocument
|
||||||
content={features}
|
content={features}
|
||||||
frContent={featuresFr}
|
frContent={featuresFr}
|
||||||
meta="04"
|
meta="05"
|
||||||
title="Fonctionnalités"
|
title="Features"
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ import { HomePage } from "@/pages/HomePage";
|
|||||||
import { EditorPage } from "@/pages/editor/EditorPage";
|
import { EditorPage } from "@/pages/editor/EditorPage";
|
||||||
import {
|
import {
|
||||||
DocsArchitectureRoute,
|
DocsArchitectureRoute,
|
||||||
|
DocsEditorRoute,
|
||||||
DocsFeaturesRoute,
|
DocsFeaturesRoute,
|
||||||
DocsLayoutRoute,
|
DocsLayoutRoute,
|
||||||
DocsReadmeRoute,
|
DocsReadmeRoute,
|
||||||
DocsTargetArchitectureRoute,
|
DocsTargetArchitectureRoute,
|
||||||
|
DocsTechnicalEditorRoute,
|
||||||
} from "@/pages/docs/DocsRouteComponents";
|
} from "@/pages/docs/DocsRouteComponents";
|
||||||
|
|
||||||
const rootRoute = createRootRoute({
|
const rootRoute = createRootRoute({
|
||||||
@@ -54,12 +56,24 @@ const docsTargetArchitectureRoute = createRoute({
|
|||||||
component: DocsTargetArchitectureRoute,
|
component: DocsTargetArchitectureRoute,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const docsTechnicalEditorRoute = createRoute({
|
||||||
|
getParentRoute: () => docsRoute,
|
||||||
|
path: "/technical-editor",
|
||||||
|
component: DocsTechnicalEditorRoute,
|
||||||
|
});
|
||||||
|
|
||||||
const docsFeaturesRoute = createRoute({
|
const docsFeaturesRoute = createRoute({
|
||||||
getParentRoute: () => docsRoute,
|
getParentRoute: () => docsRoute,
|
||||||
path: "/features",
|
path: "/features",
|
||||||
component: DocsFeaturesRoute,
|
component: DocsFeaturesRoute,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const docsEditorRoute = createRoute({
|
||||||
|
getParentRoute: () => docsRoute,
|
||||||
|
path: "/editor",
|
||||||
|
component: DocsEditorRoute,
|
||||||
|
});
|
||||||
|
|
||||||
const routeTree = rootRoute.addChildren([
|
const routeTree = rootRoute.addChildren([
|
||||||
indexRoute,
|
indexRoute,
|
||||||
editorRoute,
|
editorRoute,
|
||||||
@@ -67,7 +81,9 @@ const routeTree = rootRoute.addChildren([
|
|||||||
docsIndexRoute,
|
docsIndexRoute,
|
||||||
docsArchitectureRoute,
|
docsArchitectureRoute,
|
||||||
docsTargetArchitectureRoute,
|
docsTargetArchitectureRoute,
|
||||||
|
docsTechnicalEditorRoute,
|
||||||
docsFeaturesRoute,
|
docsFeaturesRoute,
|
||||||
|
docsEditorRoute,
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user