Skip to content

Commit 39bd301

Browse files
authored
feat: add mobile navigation (#388)
1 parent 2829baa commit 39bd301

File tree

12 files changed

+153
-39
lines changed

12 files changed

+153
-39
lines changed

pwa/app/(common)/components/Admin.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default function Admin() {
1414
API Platform Admin exposes your data trough a beautiful UI.
1515
</p>
1616
<div className="flex flex-col w-full justify-between items-start py-8 gap-y-8 | sm:flex-row sm:max-w-xl sm:gap-x-24 sm:gap-y-0 sm:mt-8 | md:max-w-none | xl:min-h-[450px]">
17-
<div className="flex flex-col text-left w-full | lg:w-1/4">
17+
<div className="flex flex-col items-center text-center w-full | lg:text-left lg:w-1/4">
1818
<ListPoint direction="left">
1919
Entirely <strong>customizable</strong>
2020
</ListPoint>
@@ -26,7 +26,7 @@ export default function Admin() {
2626
<strong>React Admin</strong>
2727
</ListPoint>
2828
</div>
29-
<div className="flex flex-col text-left w-full | lg:w-1/4">
29+
<div className="flex flex-col items-center text-center w-full | lg:text-left lg:w-1/4">
3030
<ListPoint direction="right">
3131
100% <strong>no code</strong>
3232
</ListPoint>

pwa/app/(common)/components/References.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export default function References({ refs, ossRefs }: ReferencesProps) {
8383
src={`/images/references/${ref.logo}.png`}
8484
height={50}
8585
width={200}
86-
className="max-w-[120px] "
86+
className="max-w-[120px] mx-auto"
8787
/>
8888
</Link>
8989
))}
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
import BreadCrumbs from "components/docs/BreadCrumbs";
2+
13
export default async function Page() {
2-
return <h1>Guides</h1>;
4+
return (
5+
<>
6+
{" "}
7+
<BreadCrumbs breadCrumbs={[{ title: "Guides" }]} />
8+
<h1>Guides</h1>
9+
</>
10+
);
311
}

pwa/app/(common)/docs/[...slug]/layout.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import React from "react";
22
import Sidebar from "components/docs/Sidebar";
33
import { loadV2DocumentationNav } from "api/doc";
44
import { versions, current } from "consts";
5+
import { DocProvider } from "contexts/DocContext";
6+
import MobileSideBar from "components/docs/MobileSidebar";
57

68
async function DocLayout({
79
params: { slug },
@@ -17,10 +19,13 @@ async function DocLayout({
1719

1820
return (
1921
<div className="max-w-8xl mx-auto overflow-x-clip">
20-
<div className="flex flex-row flex-wrap items-start justify-start">
21-
<Sidebar docMenuParts={nav} />
22-
<div className="flex-1 overflow-clip">{children}</div>
23-
</div>
22+
<DocProvider>
23+
<MobileSideBar docMenuParts={nav} />
24+
<div className="flex flex-row flex-wrap items-start justify-start">
25+
<Sidebar docMenuParts={nav} />
26+
<div className="flex-1 overflow-clip">{children}</div>
27+
</div>
28+
</DocProvider>
2429
</div>
2530
);
2631
}

pwa/app/(common)/docs/[...slug]/page.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import classNames from "classnames";
88
import { current, versions } from "consts";
99
import Script from "next/script";
1010
import { Metadata, ResolvingMetadata } from "next";
11+
import BreadCrumbs from "components/docs/BreadCrumbs";
1112

1213
export async function generateStaticParams() {
1314
const slugs: { slug: string[] }[] = [];
@@ -51,6 +52,19 @@ export default async function Page({
5152
);
5253

5354
const html = await getHtmlFromGithubContent({ data, path });
55+
const title = await getDocTitle(version, slug);
56+
57+
const breadCrumbs = [
58+
{
59+
title: version,
60+
link: version === current ? `/docs/${version}` : "/docs",
61+
},
62+
{ title },
63+
];
64+
65+
if (slug.length > 2 || (slug.length === 2 && !versions.includes(slug[0]))) {
66+
breadCrumbs.splice(1, 0, { title: "..." });
67+
}
5468

5569
return (
5670
<div
@@ -59,7 +73,8 @@ export default async function Page({
5973
"dark:text-white/80"
6074
)}
6175
>
62-
<div className="prose max-w-none dark:prose-invert prose-headings:font-title prose-h1:font-bold prose-code:after:hidden prose-code:before:hidden prose-code:py-1 prose-code:px-1.5 prose-code:bg-gray-100 prose-code:dark:bg-blue-darkest prose-h1:border-b-px prose-h1:border-b-gray-300 prose-h1:pb-2 max-md:prose-tr:flex max-md:prose-tr:flex-col max-md:prose-td:px-0 max-md:prose-td:py-1">
76+
<BreadCrumbs breadCrumbs={breadCrumbs} />
77+
<div className="prose max-w-none dark:prose-invert prose-img:max-w-full prose-headings:font-title prose-h1:font-bold prose-code:after:hidden prose-code:before:hidden prose-code:py-1 prose-code:px-1.5 prose-code:bg-gray-100 prose-code:dark:bg-blue-darkest prose-h1:border-b-px prose-h1:border-b-gray-300 prose-h1:pb-2 max-md:prose-tr:flex max-md:prose-tr:flex-col max-md:prose-td:px-0 max-md:prose-td:py-1">
6378
<div className="doc" dangerouslySetInnerHTML={{ __html: html }}></div>
6479
</div>
6580
<Script id="codeselector-switch">

pwa/app/(common)/docs/page.tsx

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import {
44
getHtmlFromGithubContent,
55
} from "api/doc";
66
import classNames from "classnames";
7+
import MobileSideBar from "components/docs/MobileSidebar";
78
import Sidebar from "components/docs/Sidebar";
89
import { current } from "consts";
10+
import { DocProvider } from "contexts/DocContext";
911

1012
export default async function Page() {
1113
const nav = await loadV2DocumentationNav(current);
@@ -14,24 +16,27 @@ export default async function Page() {
1416

1517
return (
1618
<div className="max-w-8xl mx-auto overflow-x-clip">
17-
<div className="flex flex-row flex-wrap items-start justify-start">
18-
<Sidebar docMenuParts={nav} />
19-
<div className="flex-1 overflow-clip">
20-
<div
21-
className={classNames(
22-
"px-6 md:px-10 py-6 leading-loose text-blue-black/80 ",
23-
"dark:text-white/80"
24-
)}
25-
>
26-
<div className="prose max-w-none dark:prose-invert prose-headings:font-title prose-h1:font-bold prose-code:after:hidden prose-code:before:hidden prose-code:py-1 prose-code:px-1.5 prose-code:bg-gray-100 prose-code:dark:bg-blue-darkest prose-h1:border-b-px prose-h1:border-b-gray-300 prose-h1:pb-2 max-md:prose-tr:flex max-md:prose-tr:flex-col max-md:prose-td:px-0 max-md:prose-td:py-1">
27-
<div
28-
className="doc"
29-
dangerouslySetInnerHTML={{ __html: html }}
30-
></div>
19+
<DocProvider>
20+
<MobileSideBar docMenuParts={nav} />
21+
<div className="flex flex-row flex-wrap items-start justify-start">
22+
<Sidebar docMenuParts={nav} />
23+
<div className="flex-1 overflow-clip">
24+
<div
25+
className={classNames(
26+
"px-6 md:px-10 py-6 leading-loose text-blue-black/80 ",
27+
"dark:text-white/80"
28+
)}
29+
>
30+
<div className="prose max-w-none dark:prose-invert prose-img:max-w-full prose-headings:font-title prose-h1:font-bold prose-code:after:hidden prose-code:before:hidden prose-code:py-1 prose-code:px-1.5 prose-code:bg-gray-100 prose-code:dark:bg-blue-darkest prose-h1:border-b-px prose-h1:border-b-gray-300 prose-h1:pb-2 max-md:prose-tr:flex max-md:prose-tr:flex-col max-md:prose-td:px-0 max-md:prose-td:py-1">
31+
<div
32+
className="doc"
33+
dangerouslySetInnerHTML={{ __html: html }}
34+
></div>
35+
</div>
3136
</div>
3237
</div>
3338
</div>
34-
</div>
39+
</DocProvider>
3540
</div>
3641
);
3742
}

pwa/common.tailwind.config.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,15 @@ module.exports = {
5151
white: "#ffffff",
5252
},
5353
extend: {
54+
screens: {
55+
"-lg": { max: "1023px" },
56+
},
57+
height: {
58+
0.75: "3px",
59+
},
60+
width: {
61+
0.75: "3px",
62+
},
5463
fontFamily: {
5564
title: ["var(--font-poppins)"],
5665
},

pwa/components/docs/BreadCrumbs.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export default function BreadCrumbs({
1313

1414
useEffect(() => {
1515
setBreadCrumbs(breadCrumbs);
16+
// eslint-disable-next-line react-hooks/exhaustive-deps
1617
}, []);
1718

1819
return null;

pwa/components/docs/DocMenu.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ export interface NavPartProps {
1616

1717
function NavPart({ title, link, links, basePath, autoOpen }: NavPartProps) {
1818
const pathname = usePathname();
19-
const [isOpen, setOpen] = useState(false);
19+
const [isOpen, setOpen] = useState(
20+
pathname === link || pathname.startsWith(basePath)
21+
);
2022

2123
useEffect(() => {
2224
if (!autoOpen) return;
2325
if (pathname === link || pathname.startsWith(basePath)) setOpen(true);
2426
else setOpen(false);
25-
}, [pathname, autoOpen]);
27+
}, [pathname, autoOpen, basePath, link]);
2628

2729
return (
2830
<div

0 commit comments

Comments
 (0)