mirror of
https://github.com/Myzel394/kleckrelay-website.git
synced 2025-06-23 09:30:30 +02:00
feat: Add EmptyStateScreen.tsx for reserved aliases
This commit is contained in:
parent
30ccdbce13
commit
652837838b
@ -295,7 +295,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"userAmount_one": "Forwards to one user",
|
"userAmount_one": "Forwards to one user",
|
||||||
"userAmount_other": "Forwards to {{count}} users"
|
"userAmount_other": "Forwards to {{count}} users",
|
||||||
|
"emptyState": {
|
||||||
|
"title": "Create your first reserved alias",
|
||||||
|
"description": "Reserved aliases are aliases that will be forwarded to selected admin users. This is useful if you want to create aliases that are meant to be public, like contact@example.com or hello@example.com."
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"ReservedAliasDetailRoute": {
|
"ReservedAliasDetailRoute": {
|
||||||
"title": "Reserved Alias Details",
|
"title": "Reserved Alias Details",
|
||||||
|
37
src/route-widgets/ReservedAliasesRoute/EmptyStateScreen.tsx
Normal file
37
src/route-widgets/ReservedAliasesRoute/EmptyStateScreen.tsx
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import {ReactElement} from "react"
|
||||||
|
import {useTranslation} from "react-i18next"
|
||||||
|
|
||||||
|
import {Container, Grid, Typography} from "@mui/material"
|
||||||
|
import {BsStarFill} from "react-icons/bs"
|
||||||
|
|
||||||
|
export default function EmptyStateScreen(): ReactElement {
|
||||||
|
const {t} = useTranslation()
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Container maxWidth="xs">
|
||||||
|
<Grid
|
||||||
|
container
|
||||||
|
spacing={4}
|
||||||
|
direction="column"
|
||||||
|
alignItems="center"
|
||||||
|
maxWidth="80%"
|
||||||
|
alignSelf="center"
|
||||||
|
marginX="auto"
|
||||||
|
>
|
||||||
|
<Grid item>
|
||||||
|
<Typography variant="h6" component="h2">
|
||||||
|
{t("routes.ReservedAliasesRoute.emptyState.title")}
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid item>
|
||||||
|
<BsStarFill size={40} />
|
||||||
|
</Grid>
|
||||||
|
<Grid item>
|
||||||
|
<Typography variant="body1">
|
||||||
|
{t("routes.ReservedAliasesRoute.emptyState.description")}
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Container>
|
||||||
|
)
|
||||||
|
}
|
@ -18,7 +18,8 @@ import {useQuery} from "@tanstack/react-query"
|
|||||||
|
|
||||||
import {PaginationResult, ReservedAlias} from "~/server-types"
|
import {PaginationResult, ReservedAlias} from "~/server-types"
|
||||||
import {getReservedAliases} from "~/apis"
|
import {getReservedAliases} from "~/apis"
|
||||||
import {QueryResult, SimplePage} from "~/components"
|
import {NoSearchResults, QueryResult, SimplePage} from "~/components"
|
||||||
|
import EmptyStateScreen from "~/route-widgets/ReservedAliasesRoute/EmptyStateScreen"
|
||||||
|
|
||||||
export default function ReservedAliasesRoute(): ReactElement {
|
export default function ReservedAliasesRoute(): ReactElement {
|
||||||
const {t} = useTranslation()
|
const {t} = useTranslation()
|
||||||
@ -33,8 +34,10 @@ export default function ReservedAliasesRoute(): ReactElement {
|
|||||||
query: queryValue,
|
query: queryValue,
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
onSuccess: () => {
|
onSuccess: ({items}) => {
|
||||||
|
if (items.length) {
|
||||||
setShowSearch(true)
|
setShowSearch(true)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -81,7 +84,16 @@ export default function ReservedAliasesRoute(): ReactElement {
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
<QueryResult<PaginationResult<ReservedAlias>, AxiosError> query={query}>
|
<QueryResult<PaginationResult<ReservedAlias>, AxiosError> query={query}>
|
||||||
{({items: aliases}) => (
|
{({items: aliases}) => {
|
||||||
|
if (aliases.length === 0) {
|
||||||
|
if (searchValue === "") {
|
||||||
|
return <EmptyStateScreen />
|
||||||
|
} else {
|
||||||
|
return <NoSearchResults />
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
<List>
|
<List>
|
||||||
{aliases.map(alias => (
|
{aliases.map(alias => (
|
||||||
<ListItemButton
|
<ListItemButton
|
||||||
@ -106,7 +118,8 @@ export default function ReservedAliasesRoute(): ReactElement {
|
|||||||
</ListItemButton>
|
</ListItemButton>
|
||||||
))}
|
))}
|
||||||
</List>
|
</List>
|
||||||
)}
|
)
|
||||||
|
}}
|
||||||
</QueryResult>
|
</QueryResult>
|
||||||
</SimplePage>
|
</SimplePage>
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user