Files
blitzkit/packages/preforged/tools/embed/_index.tsx
T

105 lines
3.1 KiB
TypeScript
Raw Normal View History

2024-10-28 10:57:42 -05:00
import { imgur, ImgurSize } from '@blitzkit/core';
2024-11-08 10:34:52 -06:00
import { Box, Flex, Link, Text } from '@radix-ui/themes';
2024-12-27 12:38:38 -06:00
import { PreviewWrapper } from '../../../../components/Embeds/PreviewWrapper';
2024-12-27 14:01:59 -06:00
import { LinkI18n } from '../../../../components/LinkI18n';
2024-12-27 12:38:38 -06:00
import { PageWrapper } from '../../../../components/PageWrapper';
2024-10-28 10:57:42 -05:00
import {
embedConfigurations,
extractEmbedConfigDefaults,
2024-12-27 12:38:38 -06:00
} from '../../../../constants/embeds';
import { Var } from '../../../../core/radix/var';
2025-01-15 13:55:24 -06:00
import {
LocaleProvider,
useLocale,
type LocaleAcceptorProps,
} from '../../../../hooks/useLocale';
2024-12-27 12:38:38 -06:00
import { App } from '../../../../stores/app';
import { EmbedState } from '../../../../stores/embedState';
2024-10-28 10:57:42 -05:00
2025-01-15 13:55:24 -06:00
export function Page({ locale }: LocaleAcceptorProps) {
2024-10-28 10:57:42 -05:00
return (
2025-01-15 13:55:24 -06:00
<LocaleProvider locale={locale}>
<App.Provider>
<Content />
</App.Provider>
</LocaleProvider>
2024-11-01 10:30:36 -05:00
);
}
2024-10-28 10:57:42 -05:00
2024-11-01 10:30:36 -05:00
function Content() {
2025-01-15 13:55:24 -06:00
const { locale, strings } = useLocale();
2024-12-27 14:01:59 -06:00
2024-11-01 10:30:36 -05:00
return (
<PageWrapper color="red">
<Text align="center" mt="3">
2025-01-15 13:55:24 -06:00
{strings.website.tools.embed.coming_soon}{' '}
2024-11-01 10:30:36 -05:00
<Link
underline="always"
href="https://discord.gg/nDt7AjGJQH"
target="_blank"
>
2025-01-15 13:55:24 -06:00
{strings.website.tools.embed.suggest}
2024-11-01 10:30:36 -05:00
</Link>
.
</Text>
<Flex justify="center">
{Object.entries(embedConfigurations).map(([embed, config]) => (
<EmbedState.Provider
key={embed}
data={extractEmbedConfigDefaults(config)}
>
2024-12-27 14:01:59 -06:00
<LinkI18n
locale={locale}
2024-11-01 10:30:36 -05:00
href={`/tools/embed/${embed}`}
color="gray"
highContrast
style={{
width: 'fit-content',
height: 'fit-content',
}}
underline="hover"
>
<Flex
direction="column"
2024-10-28 10:57:42 -05:00
overflow="hidden"
style={{
2024-11-01 10:30:36 -05:00
borderRadius: Var('radius-4'),
backgroundColor: Var('color-panel-solid'),
boxShadow: Var('shadow-3'),
2024-10-28 10:57:42 -05:00
}}
>
2024-11-01 10:30:36 -05:00
<Flex justify="center" p="2">
2025-01-15 13:55:24 -06:00
<Text>
{
strings.website.tools.embed.types[
embed as keyof typeof strings.website.tools.embed.types
].name
}
</Text>
2024-11-01 10:30:36 -05:00
</Flex>
<Box
width="20rem"
height="20rem"
overflow="hidden"
position="relative"
style={{
backgroundImage: `url(${imgur('SO13zur', { format: 'jpeg', size: ImgurSize.SmallThumbnail })})`,
backgroundSize: 'cover',
backgroundPosition: 'center',
}}
>
<PreviewWrapper
naked
name={embed as keyof typeof embedConfigurations}
/>
</Box>
</Flex>
2024-12-27 14:01:59 -06:00
</LinkI18n>
2024-11-01 10:30:36 -05:00
</EmbedState.Provider>
))}
</Flex>
2024-10-28 10:57:42 -05:00
</PageWrapper>
);
}