Skip to content

Commit 189f3c1

Browse files
committed
Adds a step by step deploy blank state to Tasks page
1 parent 7b54c35 commit 189f3c1

File tree

3 files changed

+107
-25
lines changed

3 files changed

+107
-25
lines changed

apps/webapp/app/components/BlankStatePanels.tsx

Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
} from "@heroicons/react/20/solid";
1313
import { useLocation } from "react-use";
1414
import { BranchEnvironmentIconSmall } from "~/assets/icons/EnvironmentIcons";
15-
import { TaskIcon } from "~/assets/icons/TaskIcon";
1615
import { WaitpointTokenIcon } from "~/assets/icons/WaitpointTokenIcon";
1716
import openBulkActionsPanel from "~/assets/images/open-bulk-actions-panel.png";
1817
import selectRunsIndividually from "~/assets/images/select-runs-individually.png";
@@ -33,7 +32,7 @@ import {
3332
v3NewSchedulePath,
3433
} from "~/utils/pathBuilder";
3534
import { InlineCode } from "./code/InlineCode";
36-
import { environmentFullTitle } from "./environments/EnvironmentLabel";
35+
import { environmentFullTitle, EnvironmentIcon } from "./environments/EnvironmentLabel";
3736
import { Feedback } from "./Feedback";
3837
import { EnvironmentSelector } from "./navigation/EnvironmentSelector";
3938
import { Button, LinkButton } from "./primitives/Buttons";
@@ -42,7 +41,12 @@ import { InfoPanel } from "./primitives/InfoPanel";
4241
import { Paragraph } from "./primitives/Paragraph";
4342
import { StepNumber } from "./primitives/StepNumber";
4443
import { TextLink } from "./primitives/TextLink";
45-
import { InitCommandV3, PackageManagerProvider, TriggerDevStepV3 } from "./SetupCommands";
44+
import {
45+
InitCommandV3,
46+
PackageManagerProvider,
47+
TriggerDeployStep,
48+
TriggerDevStepV3,
49+
} from "./SetupCommands";
4650
import { StepContentContainer } from "./StepContentContainer";
4751
import { V4Badge } from "./V4Badge";
4852

@@ -87,26 +91,44 @@ export function HasNoTasksDev() {
8791

8892
export function HasNoTasksDeployed({ environment }: { environment: MinimumEnvironment }) {
8993
return (
90-
<InfoPanel
91-
title={`You don't have any deployed tasks in ${environmentFullTitle(environment)}`}
92-
icon={TaskIcon}
93-
iconClassName="text-tasks"
94-
panelClassName="max-w-full"
95-
accessory={
96-
<LinkButton
97-
to={docsPath("deployment/overview")}
98-
variant="docs/small"
99-
LeadingIcon={BookOpenIcon}
100-
>
101-
How to deploy tasks
102-
</LinkButton>
103-
}
104-
>
105-
<Paragraph spacing variant="small">
106-
Run the <TextLink to={docsPath("deployment/overview")}>CLI deploy command</TextLink> to
107-
deploy your tasks to the {environmentFullTitle(environment)} environment.
108-
</Paragraph>
109-
</InfoPanel>
94+
<PackageManagerProvider>
95+
<div>
96+
<div className="mb-6 flex items-center justify-between border-b">
97+
<div className="mb-2 flex items-center gap-2">
98+
<EnvironmentIcon environment={environment} className="-ml-1 size-8" />
99+
<Header1>Deploy your tasks to {environmentFullTitle(environment)}</Header1>
100+
</div>
101+
<div className="flex items-center gap-2">
102+
<LinkButton
103+
variant="minimal/small"
104+
LeadingIcon={BookOpenIcon}
105+
to={docsPath("/troubleshooting#deployment")}
106+
>
107+
Troubleshooting
108+
</LinkButton>
109+
</div>
110+
</div>
111+
<StepNumber stepNumber="1a" title="Run the CLI 'deploy' command" />
112+
<StepContentContainer>
113+
<Paragraph spacing>
114+
This will deploy your tasks to the {environmentFullTitle(environment)} environment. Read
115+
the <TextLink to={docsPath("deployment/overview")}>full guide</TextLink>.
116+
</Paragraph>
117+
<TriggerDeployStep environment={environment} />
118+
</StepContentContainer>
119+
<StepNumber stepNumber="1b" title="Or deploy using GitHub Actions" />
120+
<StepContentContainer>
121+
<Paragraph spacing>
122+
Read the <TextLink to={docsPath("github-actions")}>GitHub Actions guide</TextLink> to
123+
get started.
124+
</Paragraph>
125+
</StepContentContainer>
126+
<StepNumber stepNumber="2" title="Waiting for tasks to deploy" displaySpinner />
127+
<StepContentContainer>
128+
<Paragraph>This page will automatically refresh when your tasks are deployed.</Paragraph>
129+
</StepContentContainer>
130+
</div>
131+
</PackageManagerProvider>
110132
);
111133
}
112134

apps/webapp/app/components/SetupCommands.tsx

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,3 +208,64 @@ export function TriggerLoginStepV3({ title }: TabsProps) {
208208
</ClientTabs>
209209
);
210210
}
211+
212+
export function TriggerDeployStep({ title, environment }: TabsProps & { environment: { type: string } }) {
213+
const triggerCliTag = useTriggerCliTag();
214+
const { activePackageManager, setActivePackageManager } = usePackageManager();
215+
216+
// Generate the environment flag based on environment type
217+
const getEnvironmentFlag = () => {
218+
switch (environment.type) {
219+
case "STAGING":
220+
return " --env staging";
221+
case "PREVIEW":
222+
return " --env preview";
223+
case "PRODUCTION":
224+
default:
225+
return "";
226+
}
227+
};
228+
229+
const environmentFlag = getEnvironmentFlag();
230+
231+
return (
232+
<ClientTabs
233+
defaultValue="npm"
234+
value={activePackageManager}
235+
onValueChange={setActivePackageManager}
236+
>
237+
<div className="flex items-center gap-4">
238+
{title && <Header3>{title}</Header3>}
239+
<ClientTabsList className={title ? "ml-auto" : ""}>
240+
<ClientTabsTrigger value={"npm"}>npm</ClientTabsTrigger>
241+
<ClientTabsTrigger value={"pnpm"}>pnpm</ClientTabsTrigger>
242+
<ClientTabsTrigger value={"yarn"}>yarn</ClientTabsTrigger>
243+
</ClientTabsList>
244+
</div>
245+
<ClientTabsContent value={"npm"}>
246+
<ClipboardField
247+
variant="secondary/medium"
248+
iconButton
249+
className="mb-4"
250+
value={`npx trigger.dev@${triggerCliTag} deploy${environmentFlag}`}
251+
/>
252+
</ClientTabsContent>
253+
<ClientTabsContent value={"pnpm"}>
254+
<ClipboardField
255+
variant="secondary/medium"
256+
iconButton
257+
className="mb-4"
258+
value={`pnpm dlx trigger.dev@${triggerCliTag} deploy${environmentFlag}`}
259+
/>
260+
</ClientTabsContent>
261+
<ClientTabsContent value={"yarn"}>
262+
<ClipboardField
263+
variant="secondary/medium"
264+
iconButton
265+
className="mb-4"
266+
value={`yarn dlx trigger.dev@${triggerCliTag} deploy${environmentFlag}`}
267+
/>
268+
</ClientTabsContent>
269+
</ClientTabs>
270+
);
271+
}

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam._index/route.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ import {
7777
type TaskActivity,
7878
type TaskListItem,
7979
taskListPresenter,
80-
TaskListPresenter,
8180
} from "~/presenters/v3/TaskListPresenter.server";
8281
import {
8382
getUsefulLinksPreference,
@@ -411,7 +410,7 @@ export default function Page() {
411410
<HasNoTasksDev />
412411
</MainCenteredContainer>
413412
) : (
414-
<MainCenteredContainer className="max-w-md">
413+
<MainCenteredContainer className="max-w-prose">
415414
<HasNoTasksDeployed environment={environment} />
416415
</MainCenteredContainer>
417416
)}

0 commit comments

Comments
 (0)