@@ -8,9 +8,10 @@ import TableRow from "@material-ui/core/TableRow"
88import dayjs from "dayjs"
99import relativeTime from "dayjs/plugin/relativeTime"
1010import { FC } from "react"
11- import { Link as RouterLink } from "react-router-dom"
1211import * as TypesGen from "../../api/typesGenerated"
1312import { AvatarData } from "../../components/AvatarData/AvatarData"
13+ import { CodeExample } from "../../components/CodeExample/CodeExample"
14+ import { EmptyState } from "../../components/EmptyState/EmptyState"
1415import { Margins } from "../../components/Margins/Margins"
1516import { Stack } from "../../components/Stack/Stack"
1617import { TableLoader } from "../../components/TableLoader/TableLoader"
@@ -24,9 +25,17 @@ export const Language = {
2425 nameLabel : "Name" ,
2526 usedByLabel : "Used by" ,
2627 lastUpdatedLabel : "Last updated" ,
27- emptyViewCreateCTA : "Create a template" ,
28- emptyViewCreate : "to standardize development workspaces for your team." ,
29- emptyViewNoPerms : "No templates have been created! Contact your Coder administrator." ,
28+ emptyViewNoPerms : "Contact your Coder administrator to create a template. You can share the code below." ,
29+ emptyMessage : "Create your first template" ,
30+ emptyDescription : (
31+ < >
32+ To create a workspace you need to have a template. You can{ " " }
33+ < Link target = "_blank" href = "https://github.com/coder/coder/blob/main/docs/templates.md" >
34+ create one from scratch
35+ </ Link > { " " }
36+ or use a built-in template using the following Coder CLI command:
37+ </ >
38+ ) ,
3039}
3140
3241export interface TemplatesPageViewProps {
@@ -53,18 +62,12 @@ export const TemplatesPageView: FC<TemplatesPageViewProps> = (props) => {
5362 { ! props . loading && ! props . templates ?. length && (
5463 < TableRow >
5564 < TableCell colSpan = { 999 } >
56- < div className = { styles . welcome } >
57- { props . canCreateTemplate ? (
58- < span >
59- < Link component = { RouterLink } to = "/templates/new" >
60- { Language . emptyViewCreateCTA }
61- </ Link >
62- { Language . emptyViewCreate }
63- </ span >
64- ) : (
65- < span > { Language . emptyViewNoPerms } </ span >
66- ) }
67- </ div >
65+ < EmptyState
66+ message = { Language . emptyMessage }
67+ description = { props . canCreateTemplate ? Language . emptyDescription : Language . emptyViewNoPerms }
68+ descriptionClassName = { styles . emptyDescription }
69+ cta = { < CodeExample code = "coder template init" /> }
70+ />
6871 </ TableCell >
6972 </ TableRow >
7073 ) }
@@ -92,20 +95,9 @@ export const TemplatesPageView: FC<TemplatesPageViewProps> = (props) => {
9295
9396const useStyles = makeStyles ( ( theme ) => ( {
9497 root : {
95- marginTop : theme . spacing ( 3 ) ,
98+ marginTop : theme . spacing ( 10 ) ,
9699 } ,
97- welcome : {
98- paddingTop : theme . spacing ( 12 ) ,
99- paddingBottom : theme . spacing ( 12 ) ,
100- display : "flex" ,
101- flexDirection : "column" ,
102- alignItems : "center" ,
103- justifyContent : "center" ,
104- "& span" : {
105- maxWidth : 600 ,
106- textAlign : "center" ,
107- fontSize : theme . spacing ( 2 ) ,
108- lineHeight : `${ theme . spacing ( 3 ) } px` ,
109- } ,
100+ emptyDescription : {
101+ maxWidth : theme . spacing ( 62 ) ,
110102 } ,
111103} ) )
0 commit comments