1
0
Fork 0

feat(wiki): add wiki navigation and styles

Extract the static sidebar nav data into sidebarData.ts and add a Wiki
entry (BookOpen) to the main nav. Adds scoped markdown styles
(columns, footnotes, note/warning callouts) under .wiki-markdown.
This commit is contained in:
Jason Fraley 2026-09-05 00:02:20 -04:00
parent f38962c589
commit 28ced660c0
3 changed files with 185 additions and 114 deletions

View file

@ -500,3 +500,62 @@
*::-webkit-scrollbar-corner { *::-webkit-scrollbar-corner {
background: transparent; background: transparent;
} }
/* Wiki markdown — directives, footnotes, callouts (scoped to .wiki-markdown) */
.wiki-markdown .columns {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
gap: 1rem;
}
.wiki-markdown .columns.cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.wiki-markdown .columns.cols-3 {
grid-template-columns: repeat(3, 1fr);
}
.wiki-markdown .column {
min-width: 0;
}
.wiki-markdown .footnotes {
font-size: 0.875rem;
color: var(--color-muted-foreground);
margin-top: 2rem;
border-top: 1px solid var(--color-border);
padding-top: 1rem;
}
.wiki-markdown .note,
.wiki-markdown .warning {
position: relative;
border-left: 3px solid var(--color-border);
border-radius: 0.375rem;
padding: 0.75rem 1rem 0.75rem 2.5rem;
}
.wiki-markdown .note .callout-icon {
position: absolute;
left: 0.75rem;
top: 1.125rem;
color: var(--color-primary);
}
.wiki-markdown .warning .callout-icon {
position: absolute;
left: 0.75rem;
top: 1.125rem;
color: var(--color-destructive);
}
.wiki-markdown .note {
border-left-color: var(--color-primary);
background: color-mix(in oklch, var(--color-primary) 8%, transparent);
}
.wiki-markdown .warning {
border-left-color: var(--color-destructive);
background: color-mix(in oklch, var(--color-destructive) 8%, transparent);
}

View file

@ -2,22 +2,11 @@
import * as React from "react"; import * as React from "react";
import { import {
Award,
ArrowLeftRight, ArrowLeftRight,
ArrowLeftRightIcon, BookOpen,
Backpack,
Bolt, Bolt,
Crosshair,
Kanban,
LifeBuoy,
Search,
Send,
Shield, Shield,
ShoppingBag,
TrendingUp,
UserCog,
Users, Users,
Warehouse,
Maximize, Maximize,
Minimize, Minimize,
SparkleIcon, SparkleIcon,
@ -39,10 +28,11 @@ import Image from "next/image";
import Link from "next/link"; import Link from "next/link";
import XPDisplay from "@/components/frontend/blocks/XPDisplay"; import XPDisplay from "@/components/frontend/blocks/XPDisplay";
import type { ResolvedLevel } from "@/utils/xp/resolveLevel"; import type { ResolvedLevel } from "@/utils/xp/resolveLevel";
import { Rank, User } from "@/payload-types"; import type { User } from "@/payload-types";
import { Progress } from "@/components/ui/progress"; import { Progress } from "@/components/ui/progress";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { updatePreferences } from "@/app/(frontend)/account/actions"; import { updatePreferences } from "@/app/(frontend)/account/actions";
import { sidebarData } from "@/components/frontend/blocks/sidebarData";
const data = { const data = {
navMain: [ navMain: [
@ -61,110 +51,13 @@ const data = {
url: "/transfers", url: "/transfers",
icon: ArrowLeftRight, icon: ArrowLeftRight,
}, },
],
navHelpdesk: [
{ {
title: "Helpdesk", title: "Wiki",
url: "/helpdesk", url: "/wiki",
icon: LifeBuoy, icon: BookOpen,
},
{
title: "Projects",
url: "/projects",
icon: Kanban,
},
{
title: "Search",
url: "/projects/search",
icon: Search,
},
],
navIntelligence: [
{
title: "Intelligence",
url: "#",
icon: Crosshair,
items: [
{
title: "Campaigns",
url: "/intelligence/campaigns",
},
{
title: "Missions",
url: "/intelligence/missions",
},
{
title: "Factions",
url: "/intelligence/factions",
},
],
},
],
navLogistics: [
{
title: "Logistics",
url: "#",
icon: Warehouse,
items: [
{
title: "Structures",
url: "/logistics",
},
{
title: "Resources",
url: "/logistics/resources",
},
{
title: "Vehicles",
url: "/logistics/vehicles",
},
{
title: "Shipments",
url: "/logistics/shipments",
},
{
title: "Deployed Vehicles",
url: "/logistics/game-vehicles",
},
],
},
],
navCommerce: [
{
title: "Banking",
url: "/logistics/banking",
icon: TrendingUp,
},
{
title: "Market",
url: "/logistics/market",
icon: ShoppingBag,
},
],
navPersonal: [
{
title: "Awards",
url: "/awards",
icon: Award,
},
{
title: "Locker",
url: "/locker",
icon: Backpack,
},
{
title: "Account",
url: "/account",
icon: UserCog,
},
],
navSecondary: [
{
title: "Feedback",
url: "https://onyxsimple.youtrack.cloud",
icon: Send,
}, },
], ],
...sidebarData,
}; };
export function AppSidebar({ export function AppSidebar({

View file

@ -0,0 +1,119 @@
import {
Award,
Backpack,
Crosshair,
Kanban,
LifeBuoy,
Search,
Send,
ShoppingBag,
TrendingUp,
UserCog,
Warehouse,
} from "lucide-react";
export const sidebarData = {
navHelpdesk: [
{
title: "Helpdesk",
url: "/helpdesk",
icon: LifeBuoy,
},
{
title: "Projects",
url: "/projects",
icon: Kanban,
},
{
title: "Search",
url: "/projects/search",
icon: Search,
},
],
navIntelligence: [
{
title: "Intelligence",
url: "#",
icon: Crosshair,
items: [
{
title: "Campaigns",
url: "/intelligence/campaigns",
},
{
title: "Missions",
url: "/intelligence/missions",
},
{
title: "Factions",
url: "/intelligence/factions",
},
],
},
],
navLogistics: [
{
title: "Logistics",
url: "#",
icon: Warehouse,
items: [
{
title: "Structures",
url: "/logistics",
},
{
title: "Resources",
url: "/logistics/resources",
},
{
title: "Vehicles",
url: "/logistics/vehicles",
},
{
title: "Shipments",
url: "/logistics/shipments",
},
{
title: "Deployed Vehicles",
url: "/logistics/game-vehicles",
},
],
},
],
navCommerce: [
{
title: "Banking",
url: "/logistics/banking",
icon: TrendingUp,
},
{
title: "Market",
url: "/logistics/market",
icon: ShoppingBag,
},
],
navPersonal: [
{
title: "Awards",
url: "/awards",
icon: Award,
},
{
title: "Locker",
url: "/locker",
icon: Backpack,
},
{
title: "Account",
url: "/account",
icon: UserCog,
},
],
navSecondary: [
{
title: "Feedback",
url: "https://onyxsimple.youtrack.cloud",
icon: Send,
},
],
};