From 94d7958936b2fbf1dd8813acb9f452dc588395ed Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 29 Apr 2025 17:51:03 +0000 Subject: [PATCH 1/2] chore: make the template docs view the default --- .../src/pages/TemplatePage/TemplateLayout.tsx | 7 +-- .../pages/TemplatePage/TemplatePageHeader.tsx | 4 ++ .../TemplateResourcesPage.tsx} | 12 ++--- .../TemplateResourcesPageView.stories.tsx} | 13 ++--- .../TemplateResourcesPageView.tsx | 32 ++++++++++++ .../TemplateStats.stories.tsx | 0 .../TemplateStats.tsx | 0 .../TemplateSummaryPageView.tsx | 52 ------------------- site/src/router.tsx | 8 +-- 9 files changed, 54 insertions(+), 74 deletions(-) rename site/src/pages/TemplatePage/{TemplateSummaryPage/TemplateSummaryPage.tsx => TemplateResourcesPage/TemplateResourcesPage.tsx} (69%) rename site/src/pages/TemplatePage/{TemplateSummaryPage/TemplateSummaryPageView.stories.tsx => TemplateResourcesPage/TemplateResourcesPageView.stories.tsx} (57%) create mode 100644 site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx rename site/src/pages/TemplatePage/{TemplateSummaryPage => }/TemplateStats.stories.tsx (100%) rename site/src/pages/TemplatePage/{TemplateSummaryPage => }/TemplateStats.tsx (100%) delete mode 100644 site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx diff --git a/site/src/pages/TemplatePage/TemplateLayout.tsx b/site/src/pages/TemplatePage/TemplateLayout.tsx index d81c2156970e3..c36a5bca18d02 100644 --- a/site/src/pages/TemplatePage/TemplateLayout.tsx +++ b/site/src/pages/TemplatePage/TemplateLayout.tsx @@ -20,6 +20,7 @@ import { import { useQuery } from "react-query"; import { Outlet, useLocation, useNavigate, useParams } from "react-router-dom"; import { TemplatePageHeader } from "./TemplatePageHeader"; +import { TemplateStats } from "./TemplateStats"; const templatePermissions = ( templateId: string, @@ -132,9 +133,6 @@ export const TemplateLayout: FC = ({ - - Summary - Docs @@ -143,6 +141,9 @@ export const TemplateLayout: FC = ({ Source Code )} + + Resources + Versions diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index 98e9fc6df378e..213d08ecfec49 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -36,6 +36,7 @@ import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink, useNavigate } from "react-router-dom"; import { useDeletionDialogState } from "./useDeletionDialogState"; +import { TemplateStats } from "./TemplateStats"; type TemplateMenuProps = { organizationName: string; @@ -238,6 +239,9 @@ export const TemplatePageHeader: FC = ({ +
+ +
); }; diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPage.tsx similarity index 69% rename from site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx rename to site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPage.tsx index d118ce0a3e188..d75c884b526ee 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage.tsx +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPage.tsx @@ -4,9 +4,9 @@ import type { FC } from "react"; import { Helmet } from "react-helmet-async"; import { useQuery } from "react-query"; import { getTemplatePageTitle } from "../utils"; -import { TemplateSummaryPageView } from "./TemplateSummaryPageView"; +import { TemplateResourcesPageView } from "./TemplateResourcesPageView"; -export const TemplateSummaryPage: FC = () => { +export const TemplateResourcesPage: FC = () => { const { template, activeVersion } = useTemplateLayoutContext(); const { data: resources } = useQuery({ queryKey: ["templates", template.id, "resources"], @@ -18,13 +18,9 @@ export const TemplateSummaryPage: FC = () => { {getTemplatePageTitle("Template", template)} - + ); }; -export default TemplateSummaryPage; +export default TemplateResourcesPage; diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx similarity index 57% rename from site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx rename to site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx index 1cc281334f489..2ad817348b5f1 100644 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.stories.tsx +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.stories.tsx @@ -1,24 +1,22 @@ import type { Meta, StoryObj } from "@storybook/react"; import { MockTemplate, - MockTemplateVersion, MockWorkspaceResource, MockWorkspaceVolumeResource, } from "testHelpers/entities"; -import { TemplateSummaryPageView } from "./TemplateSummaryPageView"; +import { TemplateResourcesPageView } from "./TemplateResourcesPageView"; -const meta: Meta = { - title: "pages/TemplatePage/TemplateSummaryPageView", - component: TemplateSummaryPageView, +const meta: Meta = { + title: "pages/TemplatePage/TemplateResourcesPageView", + component: TemplateResourcesPageView, }; export default meta; -type Story = StoryObj; +type Story = StoryObj; export const Example: Story = { args: { template: MockTemplate, - activeVersion: MockTemplateVersion, resources: [MockWorkspaceResource, MockWorkspaceVolumeResource], }, }; @@ -26,7 +24,6 @@ export const Example: Story = { export const NoIcon: Story = { args: { template: { ...MockTemplate, icon: "" }, - activeVersion: MockTemplateVersion, resources: [MockWorkspaceResource, MockWorkspaceVolumeResource], }, }; diff --git a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx new file mode 100644 index 0000000000000..b20b5ff723235 --- /dev/null +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx @@ -0,0 +1,32 @@ +import type { Template, WorkspaceResource } from "api/typesGenerated"; +import { Loader } from "components/Loader/Loader"; +import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; +import { type FC } from "react"; +import { Navigate, useLocation } from "react-router-dom"; + +export interface TemplateResourcesPageViewProps { + resources?: WorkspaceResource[]; + template: Template; +} + +export const TemplateResourcesPageView: FC = ({ + resources, +}) => { + const location = useLocation(); + + if (location.hash === "#readme") { + return ; + } + + if (!resources) { + return ; + } + + const getStartedResources = (resources: WorkspaceResource[]) => { + return resources.filter( + (resource) => resource.workspace_transition === "start", + ); + }; + + return ; +}; diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx b/site/src/pages/TemplatePage/TemplateStats.stories.tsx similarity index 100% rename from site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.stories.tsx rename to site/src/pages/TemplatePage/TemplateStats.stories.tsx diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx b/site/src/pages/TemplatePage/TemplateStats.tsx similarity index 100% rename from site/src/pages/TemplatePage/TemplateSummaryPage/TemplateStats.tsx rename to site/src/pages/TemplatePage/TemplateStats.tsx diff --git a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx b/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx deleted file mode 100644 index c113302770c5a..0000000000000 --- a/site/src/pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPageView.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import type { - Template, - TemplateVersion, - WorkspaceResource, -} from "api/typesGenerated"; -import { Loader } from "components/Loader/Loader"; -import { Stack } from "components/Stack/Stack"; -import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; -import { type FC, useEffect } from "react"; -import { useLocation, useNavigate } from "react-router-dom"; -import { TemplateStats } from "./TemplateStats"; - -export interface TemplateSummaryPageViewProps { - resources?: WorkspaceResource[]; - template: Template; - activeVersion: TemplateVersion; -} - -export const TemplateSummaryPageView: FC = ({ - resources, - template, - activeVersion, -}) => { - const navigate = useNavigate(); - const location = useLocation(); - - // biome-ignore lint/correctness/useExhaustiveDependencies: consider refactoring - useEffect(() => { - if (location.hash === "#readme") { - // We moved the readme to the docs page, but we known that some users - // have bookmarked the readme or linked it elsewhere. Redirect them to the docs page. - navigate("docs", { replace: true }); - } - }, [template, navigate, location]); - - if (!resources) { - return ; - } - - const getStartedResources = (resources: WorkspaceResource[]) => { - return resources.filter( - (resource) => resource.workspace_transition === "start", - ); - }; - - return ( - - - - - ); -}; diff --git a/site/src/router.tsx b/site/src/router.tsx index cd7cd56b690cc..76e9adfd00b09 100644 --- a/site/src/router.tsx +++ b/site/src/router.tsx @@ -92,8 +92,9 @@ const TemplatePermissionsPage = lazy( "./pages/TemplateSettingsPage/TemplatePermissionsPage/TemplatePermissionsPage" ), ); -const TemplateSummaryPage = lazy( - () => import("./pages/TemplatePage/TemplateSummaryPage/TemplateSummaryPage"), +const TemplateResourcesPage = lazy( + () => + import("./pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPage"), ); const CreateWorkspaceExperimentRouter = lazy( () => import("./pages/CreateWorkspacePage/CreateWorkspaceExperimentRouter"), @@ -329,9 +330,10 @@ const templateRouter = () => { }> }> - } /> + } /> } /> } /> + } /> } /> } /> } /> From 880b8bcff568fb3bf86f846c0785e987241684fa Mon Sep 17 00:00:00 2001 From: McKayla Washburn Date: Tue, 29 Apr 2025 18:33:56 +0000 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/TemplatePage/TemplatePageHeader.tsx | 2 +- .../TemplateResourcesPage/TemplateResourcesPageView.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/site/src/pages/TemplatePage/TemplatePageHeader.tsx b/site/src/pages/TemplatePage/TemplatePageHeader.tsx index 213d08ecfec49..e9970df30c174 100644 --- a/site/src/pages/TemplatePage/TemplatePageHeader.tsx +++ b/site/src/pages/TemplatePage/TemplatePageHeader.tsx @@ -35,8 +35,8 @@ import type { WorkspacePermissions } from "modules/permissions/workspaces"; import type { FC } from "react"; import { useQuery } from "react-query"; import { Link as RouterLink, useNavigate } from "react-router-dom"; -import { useDeletionDialogState } from "./useDeletionDialogState"; import { TemplateStats } from "./TemplateStats"; +import { useDeletionDialogState } from "./useDeletionDialogState"; type TemplateMenuProps = { organizationName: string; diff --git a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx index b20b5ff723235..d17796b41d336 100644 --- a/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx +++ b/site/src/pages/TemplatePage/TemplateResourcesPage/TemplateResourcesPageView.tsx @@ -1,7 +1,7 @@ import type { Template, WorkspaceResource } from "api/typesGenerated"; import { Loader } from "components/Loader/Loader"; import { TemplateResourcesTable } from "modules/templates/TemplateResourcesTable/TemplateResourcesTable"; -import { type FC } from "react"; +import type { FC } from "react"; import { Navigate, useLocation } from "react-router-dom"; export interface TemplateResourcesPageViewProps { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy