Style updates

This commit is contained in:
Sean Edmunds
2025-07-03 14:41:09 -05:00
parent 28eb342fc7
commit 1e704b0300
5 changed files with 126 additions and 45 deletions

View File

@@ -80,6 +80,8 @@ Backend .env.example
DB_HOST='127.0.0.1' DB_HOST='127.0.0.1'
DB_USER='triggeradmin' DB_USER='triggeradmin'
DB_PASS='trigger' DB_PASS='trigger'
DB_PORT='3306'
API_PORT='5000'
``` ```
## Run/build ## Run/build
@@ -91,7 +93,6 @@ npm run dev
To build the application for production: To build the application for production:
#### ⚠️ Add any background images to public/backgrounds to include them in the build ⚠️
```shell ```shell
npm run build npm run build
@@ -113,4 +114,4 @@ sudo pm2 start server.cjs
### TODO ### TODO
- Image uploads for backgrounds? - Mobile improvements

View File

@@ -290,7 +290,7 @@ const BookmarkSettings = () => {
w={'100%'} w={'100%'}
align='center' align='center'
> >
<Group w={isMobile ? undefined : '75%'} align='start' justify='center'> <Group w={isMobile ? undefined : '80%'} align='start' justify='center'>
{groups.length > 0 ? ( {groups.length > 0 ? (
groups?.map((group: BookmarkGroup) => ( groups?.map((group: BookmarkGroup) => (
<DebouncedGroupSettingsItem <DebouncedGroupSettingsItem

View File

@@ -1,7 +1,16 @@
import { ActionIcon, Card, Stack, Switch, Text, TextInput, Tooltip } from '@mantine/core'; import {
ActionIcon,
Card,
Group,
Stack,
Switch,
Text,
TextInput,
Tooltip,
} from '@mantine/core';
import { useDisclosure } from '@mantine/hooks'; import { useDisclosure } from '@mantine/hooks';
import { useCommonHooks } from 'hooks'; import { useCommonHooks } from 'hooks';
import { FiTrash } from 'react-icons/fi'; import { FiPower, FiTrash } from 'react-icons/fi';
import { cardClasses, switchClasses, textInputClasses } from 'styles'; import { cardClasses, switchClasses, textInputClasses } from 'styles';
import type { Message } from 'types'; import type { Message } from 'types';
import DeleteItemModal from '../Shared/DeleteItemModal'; import DeleteItemModal from '../Shared/DeleteItemModal';
@@ -18,7 +27,12 @@ function DebouncedMessage({
const { handleDelete } = useCommonHooks(); const { handleDelete } = useCommonHooks();
const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false); const [modalOpened, { open: openModal, close: closeModal }] = useDisclosure(false);
return ( return (
<Card className={cardClasses.settingsItem} classNames={cardClasses}> <Card
className={cardClasses.settingsItem}
classNames={cardClasses}
w={'100%'}
style={{ alignItems: 'center' }}
>
<DeleteItemModal <DeleteItemModal
modalOpened={modalOpened} modalOpened={modalOpened}
handleClose={closeModal} handleClose={closeModal}
@@ -42,48 +56,76 @@ function DebouncedMessage({
</Stack> </Stack>
} }
/> />
<Tooltip <Group
c={'var(--mantine-color-primary-0)'} style={{
bg={'var(--mantine-color-background-0)'} position: 'absolute',
bd={'solid 1px var(--mantine-color-border-0)'} right: '1rem',
label={'Delete'} top: '.5rem',
width: 'fit-content',
backgroundColor:
'color-mix(in srgb, var(--mantine-color-background-0), transparent 50%)',
padding: '.5rem',
borderRadius: '10px',
color: 'var(--mantine-color-search-0)',
backdropFilter: 'brightness(0.5)',
}}
> >
<ActionIcon <Tooltip
pos={'absolute'} c={'var(--mantine-color-primary-0)'}
right={'1rem'} bg={'var(--mantine-color-background-0)'}
color='red' bd={'solid 1px var(--mantine-color-border-0)'}
onClick={() => { label={message.customGreeting === 1 ? 'Enabled' : 'Disabled'}
openModal(); refProp='rootRef'
styles={{
tooltip: { marginTop: '-.5rem' },
arrow: { border: 'solid 1px var(--mantine-color-accent-0)' },
}} }}
withArrow
> >
<FiTrash color='black' /> <Switch
</ActionIcon> className={switchClasses.enable}
</Tooltip> classNames={switchClasses}
<Tooltip defaultChecked={message.customGreeting === 1}
c={'var(--mantine-color-primary-0)'} defaultValue={message.customGreeting}
bg={'var(--mantine-color-background-0)'} thumbIcon={
bd={'solid 1px var(--mantine-color-border-0)'} <FiPower
label={'Enabled'} style={{
> color:
<Switch message.customGreeting === 1
className={switchClasses.default} ? 'var(--mantine-color-accent-0)'
classNames={switchClasses} : 'red',
label={'Enabled'} }}
labelPosition='left' />
pos={'absolute'} }
left={'1rem'} onChange={(event) => {
defaultChecked={message.customGreeting === 1} setMessage({
defaultValue={message.customGreeting} ...message,
onChange={(event) => { customGreeting: event.target.checked ? 1 : 0,
setMessage({ });
...message, }}
customGreeting: event.target.checked ? 1 : 0, />
}); </Tooltip>
}} |
/> <Tooltip
</Tooltip> c={'var(--mantine-color-primary-0)'}
bg={'var(--mantine-color-background-0)'}
bd={'solid 1px var(--mantine-color-border-0)'}
label={'Delete'}
>
<ActionIcon
color='red'
onClick={() => {
openModal();
}}
>
<FiTrash color='black' />
</ActionIcon>
</Tooltip>
</Group>
<TextInput <TextInput
label={label} label={label}
disabled={message.customGreeting === 0}
w={'100%'}
className={textInputClasses.settingsItem} className={textInputClasses.settingsItem}
classNames={textInputClasses} classNames={textInputClasses}
defaultValue={message.message} defaultValue={message.message}
@@ -93,6 +135,7 @@ function DebouncedMessage({
message: event.target.value, message: event.target.value,
}); });
}} }}
styles={{ root: { paddingTop: '1.25rem' } }}
/> />
</Card> </Card>
); );

View File

@@ -2,7 +2,7 @@
&.root { &.root {
color: var(--mantine-color-primary-0); color: var(--mantine-color-primary-0);
background-color: transparent; background-color: transparent;
backdrop-filter: blur(5px) brightness(1.25) !important; backdrop-filter: blur(5px) brightness(1.25);
} }
} }
@@ -10,7 +10,7 @@
&.root { &.root {
color: var(--mantine-color-primary-0); color: var(--mantine-color-primary-0);
background-color: transparent; background-color: transparent;
backdrop-filter: blur(5px) brightness(1.25) !important; backdrop-filter: blur(5px) brightness(1.25);
cursor: pointer; cursor: pointer;
&:hover { &:hover {
color: var(--mantine-color-accent-0); color: var(--mantine-color-accent-0);

View File

@@ -34,3 +34,40 @@
} }
} }
} }
.enable {
@media (max-width: 600px) {
&.root {
.label {
position: absolute;
top: -22px;
left: -8px;
}
}
}
&.root {
.track {
transition: all .2s ease !important;
background-color: color-mix(in srgb, var(--mantine-color-primary-0), transparent 90%);
overflow: visible;
height: 2px;
}
.thumb {
transition: all .2s ease !important;
border: none;
background-color: var(--mantine-color-background-0);
height: 1.5rem;
width: 1.5rem;
font-size: 1rem;
margin-left: -4px;
}
.input:checked + * > .thumb {
transition: all .2s ease !important;
background-color: var(--mantine-color-background-0);
}
.input:checked + .track {
transition: all .2s ease !important;
background-color: color-mix(in srgb, var(--mantine-color-primary-0), transparent 30%);
}
}
}