3 Commits
Author SHA1 Message Date
John O'Keefe 5d726595fc fix(auth): center home and login layouts with full viewport height
Release / build-and-push (push) Successful in 41s
- Remove content margins when logged out in App
- Switch Home to minH 100dvh full width
- Center LoginForm vertically in full-height flex layout
- Tidy Create Game button padding and border
2026-09-08 20:25:38 -04:00
john-okeefe 315c22de65 style(theme): lighten global text-selection highlight
Release / build-and-push (push) Successful in 36s
Native ::selection was near-invisible on dark surfaces, hiding selected
text inside inputs. Add a global ::selection using the hover-selection
treatment (gray.200 light / whiteAlpha.300 dark) and leave the text
color untouched so contrast holds everywhere.
2026-09-06 16:41:15 -04:00
john-okeefe 19a80d1c74 fix(filters): inherit tag color for the search-term link
The active search pill renders its term through a Chakra Link, which
painted link-blue while every sibling filter pill renders the tag
contrast color. Set color=inherit so the term matches the other tags;
the hover underline now draws in the tag's own color too.
2026-09-06 16:41:02 -04:00
6 changed files with 17 additions and 9 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ function App() {
<>
<ToastContainer position='bottom-right' hideProgressBar />
{loggedIn ? <Header /> : ''}
<Box mt={loadedPreferences.get().stickyNav ? "20" : "4"} mb={'4'}>
<Box mt={loggedIn ? (loadedPreferences.get().stickyNav ? "20" : "4") : "0"} mb={loggedIn ? '4' : '0'}>
{/*<Box mt={loadedPreferences.get().stickyNav ? isSmallerThan768 ? "15%" : "9%" : "4"} mb={'4'}>*/}
<Routes>
<Route path='/*' element={loggedIn ? <Navigate to='games' /> : <Home />} />
+1
View File
@@ -80,6 +80,7 @@ const ActiveFilters = () => {
)
}}
><Link
color="inherit"
onMouseDown={() => setSearchModalOpen.set(true)}>{searchParams}</Link>
</Tag>
</>
+3 -2
View File
@@ -191,9 +191,10 @@ export default function NavBar() {
colorPalette={'blue'}
size={'md'}
asChild
w={'70%'}
px={4}
borderWidth={0}
>
<RouteLink to="/games/create"><LuPlus/> <Text mt="1">Create Game</Text></RouteLink>
<RouteLink to="/games/create"><LuPlus/><Text mt="1">Create Game</Text></RouteLink>
</Button>
<Separator/>
<Heading as={'h3'} size={'md'}>Keyboard Shortcuts</Heading>
+1 -1
View File
@@ -4,7 +4,7 @@ import { VStack, Image, Button, Heading, Flex, Center } from '@chakra-ui/react'
const Home = () => {
return (
<Flex align={'center'} bgImage={'linear-gradient(to bottom right, #314755, #26a0da)'} height={'100vh'}>
<Flex align={'center'} bgImage={'linear-gradient(to bottom right, #314755, #26a0da)'} minH={'100dvh'} w={'100%'}>
<Center w={'100%'}>
<VStack gap={4} align={'center'} margin={'auto'}>
<Image src="/assets/Logo.svg" alt="Games Database Logo"/>
+6 -5
View File
@@ -5,7 +5,7 @@ import { login } from '../../stateManagement/userState'
import {
Container,
Button,
Input, HStack, Center,
Input, Center, Flex,
} from '@chakra-ui/react'
import {Field} from '../ui/field'
import {useColorModeValue} from '../ui/color-mode'
@@ -35,7 +35,8 @@ export default function LoginForm() {
)
return (
<Container style={{ marginTop: '7rem', paddingBottom: '5rem' }}>
<Flex minH={'100dvh'} w={'100%'} align={'center'} justify={'center'}>
<Container maxW={'md'} w={'full'} py={'4'}>
<form onSubmit={onSubmit}>
<Field label="Email" invalid={Boolean(errors.email)} errorText={errors.email?.type === 'required' ? errors.email.message?.toString() : errors.email?.type === 'pattern' ? 'Invalid Email Address' : undefined} mb={'3'}>
<Input
@@ -65,8 +66,7 @@ export default function LoginForm() {
{...register('password', { required: 'You must specify a password' })}
/>
</Field>
<br/>
<HStack>
<Center mt={'6'}>
<Button
type="submit"
colorPalette="blue"
@@ -75,11 +75,12 @@ export default function LoginForm() {
>
Submit
</Button>
</HStack>
</Center>
<Center mt={'5rem'}>
<Button asChild variant="outline"><Link to={'/forgotpassword'}>Forgot Password</Link></Button>
</Center>
</form>
</Container>
</Flex>
)
}
+5
View File
@@ -349,6 +349,11 @@ const config = defineConfig({
bg: { base: 'gray.200', _dark: 'gray.800' },
fontSize: '1.0625rem',
},
// Native text-selection was near-invisible on dark surfaces.
// Match the hover-selection treatment (gray.200 / whiteAlpha.300).
'::selection': {
bg: { base: 'gray.200', _dark: 'whiteAlpha.300' },
},
},
})