diff --git a/site/src/pages/TemplateBuilder/TemplateAlternatives.stories.tsx b/site/src/pages/TemplateBuilder/TemplateAlternatives.stories.tsx new file mode 100644 index 0000000000..ee98c427d7 --- /dev/null +++ b/site/src/pages/TemplateBuilder/TemplateAlternatives.stories.tsx @@ -0,0 +1,12 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { TemplateAlternatives } from "./TemplateAlternatives"; + +const meta: Meta = { + title: "pages/TemplateBuilder/TemplateAlternatives", + component: TemplateAlternatives, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; diff --git a/site/src/pages/TemplateBuilder/TemplateAlternatives.tsx b/site/src/pages/TemplateBuilder/TemplateAlternatives.tsx new file mode 100644 index 0000000000..b1c2d3139d --- /dev/null +++ b/site/src/pages/TemplateBuilder/TemplateAlternatives.tsx @@ -0,0 +1,59 @@ +import { ExternalLinkIcon } from "lucide-react"; +import type { FC } from "react"; +import { Link } from "react-router"; +import { Button } from "#/components/Button/Button"; + +interface AlternativeLink { + label: string; + href: string; + external: boolean; +} + +const alternatives: readonly AlternativeLink[] = [ + { + label: "Start from scratch", + href: "https://coder.com/docs/tutorials/template-from-scratch", + external: true, + }, + { + label: "Upload an existing template", + href: "/starter-templates", + external: false, + }, + { + label: "Browse community templates", + href: "https://registry.coder.com/templates", + external: true, + }, + { + label: "Use template agent skill", + href: "https://registry.coder.com/skills", + external: true, + }, +]; + +export const TemplateAlternatives: FC = () => { + return ( +
+

+ Alternatives to create a template: +

+
+ {alternatives.map((alt) => + alt.external ? ( + + ) : ( + + ), + )} +
+
+ ); +}; diff --git a/site/src/pages/TemplateBuilder/TemplateBuilderPageView.tsx b/site/src/pages/TemplateBuilder/TemplateBuilderPageView.tsx index 728a12094d..73b098b6e9 100644 --- a/site/src/pages/TemplateBuilder/TemplateBuilderPageView.tsx +++ b/site/src/pages/TemplateBuilder/TemplateBuilderPageView.tsx @@ -34,6 +34,7 @@ import { type StepId, WIZARD_STEPS, } from "./steps"; +import { TemplateAlternatives } from "./TemplateAlternatives"; import { TemplateCustomizationsStep } from "./TemplateCustomizationsStep"; import { initialWizardState, @@ -152,6 +153,8 @@ export const TemplateBuilderPageView: FC = ({ {isLastStep ? "Create Template" : "Continue"} + + {currentStep.id === "base-infra" && } {/* Sidebar */}