mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-23 19:49:50 +02:00
feat: reveal titles
This commit is contained in:
1 parent
fbbfa5307c
commit
b409e26ca5
1 file changed
+58
-2
@@ -1,10 +1,12 @@
|
|||||||
import { Box, Flex } from '@radix-ui/themes';
|
import { Box, Flex, Heading } from '@radix-ui/themes';
|
||||||
import { Suspense } from 'react';
|
import { Suspense } from 'react';
|
||||||
import { awaitableModelDefinitions } from '../../../../core/awaitables/modelDefinitions';
|
import { awaitableModelDefinitions } from '../../../../core/awaitables/modelDefinitions';
|
||||||
import { awaitableProvisionDefinitions } from '../../../../core/awaitables/provisionDefinitions';
|
import { awaitableProvisionDefinitions } from '../../../../core/awaitables/provisionDefinitions';
|
||||||
import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions';
|
import { awaitableTankDefinitions } from '../../../../core/awaitables/tankDefinitions';
|
||||||
|
import { Var } from '../../../../core/radix/var';
|
||||||
import {
|
import {
|
||||||
LocaleProvider,
|
LocaleProvider,
|
||||||
|
useLocale,
|
||||||
type LocaleAcceptorProps,
|
type LocaleAcceptorProps,
|
||||||
} from '../../../../hooks/useLocale';
|
} from '../../../../hooks/useLocale';
|
||||||
import { Duel } from '../../../../stores/duel';
|
import { Duel } from '../../../../stores/duel';
|
||||||
@@ -51,16 +53,70 @@ function Page2() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Content() {
|
function Content() {
|
||||||
|
const { unwrap } = useLocale();
|
||||||
|
const tank = GuessEphemeral.use((state) => state.tank);
|
||||||
|
const guessState = GuessEphemeral.use((state) => state.guessState);
|
||||||
|
const isRevealed = guessState !== null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Flex flexGrow="1" position="relative" overflow="hidden">
|
<Flex flexGrow="1" position="relative" overflow="hidden">
|
||||||
<Background />
|
<Background />
|
||||||
|
|
||||||
<Box position="absolute" width="100%" height="100%" top="0" left="0">
|
<Flex
|
||||||
|
position="absolute"
|
||||||
|
left="50%"
|
||||||
|
top="50%"
|
||||||
|
ml="9"
|
||||||
|
style={{
|
||||||
|
opacity: isRevealed ? 1 : 0,
|
||||||
|
transitionDuration: isRevealed ? '2s' : undefined,
|
||||||
|
transform: 'translateY(-50%)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Heading weight="medium" size="9">
|
||||||
|
{unwrap(tank.name)}
|
||||||
|
</Heading>
|
||||||
|
</Flex>
|
||||||
|
|
||||||
|
<Box
|
||||||
|
position="absolute"
|
||||||
|
width="100%"
|
||||||
|
height="100%"
|
||||||
|
top="0"
|
||||||
|
right={isRevealed ? '16rem' : '0'}
|
||||||
|
style={{
|
||||||
|
transitionDuration: isRevealed ? '2s' : undefined,
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Suspense fallback={<GuessRendererLoader />}>
|
<Suspense fallback={<GuessRendererLoader />}>
|
||||||
<GuessRenderer />
|
<GuessRenderer />
|
||||||
</Suspense>
|
</Suspense>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
|
<Flex
|
||||||
|
position="absolute"
|
||||||
|
left="50%"
|
||||||
|
top="50%"
|
||||||
|
ml="9"
|
||||||
|
style={{
|
||||||
|
opacity: isRevealed ? 1 : 0,
|
||||||
|
transitionDuration: isRevealed ? '2s' : undefined,
|
||||||
|
transform: 'translateY(-50%)',
|
||||||
|
color: 'transparent',
|
||||||
|
WebkitTextStroke: `1px ${Var('gray-12')}`,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Heading
|
||||||
|
style={{
|
||||||
|
WebkitTextStroke: `1px inherit`,
|
||||||
|
}}
|
||||||
|
weight="medium"
|
||||||
|
size="9"
|
||||||
|
>
|
||||||
|
{unwrap(tank.name)}
|
||||||
|
</Heading>
|
||||||
|
</Flex>
|
||||||
|
|
||||||
<Guesser />
|
<Guesser />
|
||||||
</Flex>
|
</Flex>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in new issue
Block a user