Background updates
This commit is contained in:
@@ -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>
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
6
src/styles/ScrollArea.module.css
Normal file
6
src/styles/ScrollArea.module.css
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
.default {
|
||||||
|
.thumb {
|
||||||
|
background-color: var(--mantine-color-primary-0);
|
||||||
|
z-index: 1000;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user