Skip to content

Commit 650044f

Browse files
committed
move readme to a new docs tab
1 parent 7bef779 commit 650044f

File tree

4 files changed

+82
-12
lines changed

4 files changed

+82
-12
lines changed

site/src/AppRouter.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ const CreateTokenPage = lazy(
135135
const TemplateFilesPage = lazy(
136136
() => import("./pages/TemplatePage/TemplateFilesPage/TemplateFilesPage"),
137137
)
138+
139+
const TemplateDocsPage = lazy(
140+
() => import("./pages/TemplatePage/TemplateDocsPage/TemplateDocsPage"),
141+
)
138142
const TemplateSchedulePage = lazy(
139143
() =>
140144
import(
@@ -171,6 +175,8 @@ export const AppRouter: FC = () => {
171175
<Route element={<TemplateLayout />}>
172176
<Route index element={<TemplateSummaryPage />} />
173177

178+
<Route path="docs" element={<TemplateDocsPage />} />
179+
174180
<Route path="files" element={<TemplateFilesPage />} />
175181
</Route>
176182

site/src/components/TemplateLayout/TemplateLayout.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,18 @@ export const TemplateLayout: FC<{ children?: JSX.Element }> = ({
110110
>
111111
Summary
112112
</NavLink>
113+
<NavLink
114+
end
115+
to={`/templates/${templateName}/docs`}
116+
className={({ isActive }) =>
117+
combineClasses([
118+
styles.tabItem,
119+
isActive ? styles.tabItemActive : undefined,
120+
])
121+
}
122+
>
123+
Docs
124+
</NavLink>
113125
{data.permissions.canUpdateTemplate && (
114126
<NavLink
115127
to={`/templates/${templateName}/files`}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import { makeStyles } from "@material-ui/core/styles"
2+
import { MemoizedMarkdown } from "components/Markdown/Markdown"
3+
import { useTemplateLayoutContext } from "components/TemplateLayout/TemplateLayout"
4+
import frontMatter from "front-matter"
5+
import { Helmet } from "react-helmet-async"
6+
import { pageTitle } from "util/page"
7+
8+
export default function TemplateDocsPage() {
9+
const { template, activeVersion } = useTemplateLayoutContext()
10+
const styles = useStyles()
11+
12+
const readme = frontMatter(activeVersion.readme)
13+
14+
return (
15+
<>
16+
<Helmet>
17+
<title>{pageTitle(`${template.name} · Documentation`)}</title>
18+
</Helmet>
19+
20+
<div className={styles.markdownSection} id="readme">
21+
<div className={styles.readmeLabel}>README.md</div>
22+
<div className={styles.markdownWrapper}>
23+
<MemoizedMarkdown>{readme.body}</MemoizedMarkdown>
24+
</div>
25+
</div>
26+
</>
27+
)
28+
}
29+
30+
export const useStyles = makeStyles((theme) => {
31+
return {
32+
markdownSection: {
33+
background: theme.palette.background.paper,
34+
border: `1px solid ${theme.palette.divider}`,
35+
borderRadius: theme.shape.borderRadius,
36+
},
37+
38+
readmeLabel: {
39+
color: theme.palette.text.secondary,
40+
fontWeight: 600,
41+
padding: theme.spacing(2, 3),
42+
borderBottom: `1px solid ${theme.palette.divider}`,
43+
},
44+
45+
markdownWrapper: {
46+
padding: theme.spacing(0, 3, 5),
47+
maxWidth: 800,
48+
margin: "auto",
49+
},
50+
}
51+
})

site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@ import {
55
WorkspaceResource,
66
} from "api/typesGenerated"
77
import { Loader } from "components/Loader/Loader"
8-
import { MemoizedMarkdown } from "components/Markdown/Markdown"
98
import { Stack } from "components/Stack/Stack"
109
import { TemplateResourcesTable } from "components/TemplateResourcesTable/TemplateResourcesTable"
1110
import { TemplateStats } from "components/TemplateStats/TemplateStats"
1211
import { VersionsTable } from "components/VersionsTable/VersionsTable"
13-
import frontMatter from "front-matter"
14-
import { FC } from "react"
12+
import { FC, useEffect } from "react"
1513
import { DAUChart } from "../../../components/DAUChart/DAUChart"
1614
import { TemplateSummaryData } from "./data"
15+
import { useLocation, useNavigate } from "react-router-dom"
1716

1817
export interface TemplateSummaryPageViewProps {
1918
data?: TemplateSummaryData
@@ -26,14 +25,22 @@ export const TemplateSummaryPageView: FC<TemplateSummaryPageViewProps> = ({
2625
template,
2726
activeVersion,
2827
}) => {
29-
const styles = useStyles()
28+
const navigate = useNavigate()
29+
const location = useLocation()
30+
31+
useEffect(() => {
32+
if (location.hash === "#readme") {
33+
// We moved the readme to the docs page, but we known that some users
34+
// have bookmarked the readme or linked it elsewhere. Redirect them to the docs page.
35+
navigate(`/templates/${template.name}/docs`, { replace: true })
36+
}
37+
}, [template, navigate, location])
3038

3139
if (!data) {
3240
return <Loader />
3341
}
3442

3543
const { daus, resources, versions } = data
36-
const readme = frontMatter(activeVersion.readme)
3744

3845
const getStartedResources = (resources: WorkspaceResource[]) => {
3946
return resources.filter(
@@ -45,14 +52,8 @@ export const TemplateSummaryPageView: FC<TemplateSummaryPageViewProps> = ({
4552
<Stack spacing={4}>
4653
<TemplateStats template={template} activeVersion={activeVersion} />
4754

48-
<div className={styles.markdownSection} id="readme">
49-
<div className={styles.readmeLabel}>README.md</div>
50-
<div className={styles.markdownWrapper}>
51-
<MemoizedMarkdown>{readme.body}</MemoizedMarkdown>
52-
</div>
53-
</div>
54-
5555
{daus && <DAUChart daus={daus} />}
56+
5657
<TemplateResourcesTable resources={getStartedResources(resources)} />
5758

5859
<VersionsTable versions={versions} />

0 commit comments

Comments
 (0)