Background updates

This commit is contained in:
Sean Edmunds
2025-06-19 13:06:02 -05:00
parent 715b8a091f
commit a6ec8dab0b
4 changed files with 108 additions and 33 deletions

View File

@@ -11,7 +11,7 @@ import {
FiUser, FiUser,
} from 'react-icons/fi'; } from 'react-icons/fi';
import { useNavigate, useParams } from 'react-router-dom'; import { useNavigate, useParams } from 'react-router-dom';
import { actionIconClasses, tabClasses, textClasses } from 'styles'; import { actionIconClasses, scrollAreaClasses, tabClasses, textClasses } from 'styles';
import Applications from './components/Applications/Applications'; import Applications from './components/Applications/Applications';
import Bookmarks from './components/Bookmarks/Bookmarks'; import Bookmarks from './components/Bookmarks/Bookmarks';
import Messages from './components/Messages/Messages'; import Messages from './components/Messages/Messages';
@@ -79,42 +79,74 @@ export function Settings() {
</Tabs.Tab> </Tabs.Tab>
</Tabs.List> </Tabs.List>
<Tabs.Panel value='personalization'> <Tabs.Panel value='personalization'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<Personalization /> <Personalization />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='messages'> <Tabs.Panel value='messages'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<Messages /> <Messages />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='applications'> <Tabs.Panel value='applications'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<Applications /> <Applications />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='bookmarks'> <Tabs.Panel value='bookmarks'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<Bookmarks /> <Bookmarks />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='themes'> <Tabs.Panel value='themes'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<Themes /> <Themes />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='themePlaylists'> <Tabs.Panel value='themePlaylists'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<ThemePlaylists /> <ThemePlaylists />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='providers'> <Tabs.Panel value='providers'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<SearchProviders /> <SearchProviders />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>
<Tabs.Panel value='wolClients'> <Tabs.Panel value='wolClients'>
<ScrollArea h={'100%'}> <ScrollArea
h={'100%'}
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
>
<WolClients /> <WolClients />
</ScrollArea> </ScrollArea>
</Tabs.Panel> </Tabs.Panel>

View File

@@ -4,6 +4,7 @@ import {
Card, Card,
FileInput, FileInput,
Group, Group,
Image,
Modal, Modal,
ScrollArea, ScrollArea,
SimpleGrid, SimpleGrid,
@@ -13,7 +14,7 @@ import { useCommonHooks } from 'hooks';
import { useFileUploadAPI, useMutationAPI } from 'hooks/useAPI'; import { useFileUploadAPI, useMutationAPI } from 'hooks/useAPI';
import { useState } from 'react'; import { useState } from 'react';
import { FiTrash } from 'react-icons/fi'; import { FiTrash } from 'react-icons/fi';
import { modalClasses } from 'styles'; import { modalClasses, scrollAreaClasses } from 'styles';
function BackgroundModal({ function BackgroundModal({
backgroundModalOpened, backgroundModalOpened,
@@ -34,9 +35,10 @@ function BackgroundModal({
setErr(false); setErr(false);
setBackground(e); setBackground(e);
}; };
console.log(background);
return ( return (
<Modal.Root <Modal.Root
size={'50%'} size={'75%'}
className={modalClasses.editThemeModal} className={modalClasses.editThemeModal}
classNames={modalClasses} classNames={modalClasses}
opened={backgroundModalOpened} opened={backgroundModalOpened}
@@ -57,11 +59,16 @@ function BackgroundModal({
</Modal.Header> </Modal.Header>
<Modal.Body p={'2rem'}> <Modal.Body p={'2rem'}>
<ScrollArea <ScrollArea
className={scrollAreaClasses.default}
classNames={scrollAreaClasses}
type={'always'} type={'always'}
style={{ style={{
width: '100%', width: '100%',
height: '20rem', height: '30rem',
backgroundColor: 'var(--mantine-color-background-0)', backgroundColor: 'var(--mantine-color-search-0)',
padding: '1rem',
borderRadius: '.5rem',
backgroundFilter: 'blur(5px)',
}} }}
> >
<SimpleGrid w={'100%'} cols={3} p={'.5rem'}> <SimpleGrid w={'100%'} cols={3} p={'.5rem'}>
@@ -96,8 +103,8 @@ function BackgroundModal({
}} }}
/> />
<ActionIcon <ActionIcon
color='var(--mantine-color-red-6)'
style={{ style={{
color: 'red',
position: 'absolute', position: 'absolute',
bottom: '.5rem', bottom: '.5rem',
right: '.5rem', right: '.5rem',
@@ -117,25 +124,53 @@ function BackgroundModal({
))} ))}
</SimpleGrid> </SimpleGrid>
</ScrollArea> </ScrollArea>
<FileInput <Group w={'100%'} align={'center'}>
clearable <FileInput
accept='image/png,image/jpeg' clearable
value={background} accept='image/png,image/jpeg'
onChange={handleFileUpload} value={background}
label={'Upload Background'} onChange={handleFileUpload}
placeholder={'Upload Background'} label={'Upload Background'}
p={'xl'} placeholder={'Select...'}
w={'100%'} description={
error={err && 'Please upload a background'} 'Max size: 50MB for upload. Images are resized to 300kb after upload.'
styles={{ }
input: { p={'xl'}
color: 'var(--mantine-color-primary-0)', w={'60%'}
}, error={err && 'Please upload a background'}
placeholder: { styles={{
color: 'var(--mantine-color-accent-0)', input: {
}, color: 'var(--mantine-color-primary-0)',
}} borderColor: 'var(--mantine-color-primary-0)',
/> },
placeholder: {
color: 'var(--mantine-color-accent-0)',
},
}}
/>
<Card
style={{
aspectRatio: '16/9',
width: '30%',
backgroundSize: 'cover',
backgroundPosition: 'center',
backgroundRepeat: 'no-repeat',
backgroundColor: 'var(--mantine-color-search-0)',
padding: '2rem',
margin: '1rem',
}}
>
{background ? (
<Image src={URL.createObjectURL(background)} w={'100%'} h={'100%'} />
) : (
<Image
src={'https://placehold.co/800x450?text=Select%20an%20Image'}
w={'100%'}
h={'100%'}
/>
)}
</Card>
</Group>
<Button <Button
onClick={() => { onClick={() => {
if (background) { if (background) {

View File

@@ -0,0 +1,6 @@
.default {
.thumb {
background-color: var(--mantine-color-primary-0);
z-index: 1000;
}
}

View File

@@ -6,6 +6,7 @@ import menuClasses from './Menu.module.css';
import modalClasses from './Modal.module.css'; import modalClasses from './Modal.module.css';
import multiSelectClasses from './MultiSelect.module.css'; import multiSelectClasses from './MultiSelect.module.css';
import popoverClasses from './Popover.module.css'; import popoverClasses from './Popover.module.css';
import scrollAreaClasses from './ScrollArea.module.css';
import selectClasses from './Select.module.css'; import selectClasses from './Select.module.css';
import sliderClasses from './Slider.module.css'; import sliderClasses from './Slider.module.css';
import stackClasses from './Stack.module.css'; import stackClasses from './Stack.module.css';
@@ -24,6 +25,7 @@ export {
modalClasses, modalClasses,
multiSelectClasses, multiSelectClasses,
popoverClasses, popoverClasses,
scrollAreaClasses,
selectClasses, selectClasses,
sliderClasses, sliderClasses,
stackClasses, stackClasses,