feat: switch from radix-icons to feathericons

This commit is contained in:
dicedtomato 2022-07-10 00:46:15 +00:00 committed by GitHub
parent 2f90193d7e
commit 2376fd8968
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 276 additions and 152 deletions

View file

@ -24,7 +24,6 @@
"@mantine/next": "^4.2.9", "@mantine/next": "^4.2.9",
"@mantine/notifications": "^4.2.9", "@mantine/notifications": "^4.2.9",
"@mantine/prism": "^4.2.9", "@mantine/prism": "^4.2.9",
"@modulz/radix-icons": "^4.0.0",
"@prisma/client": "^3.15.2", "@prisma/client": "^3.15.2",
"@prisma/migrate": "^3.15.2", "@prisma/migrate": "^3.15.2",
"@prisma/sdk": "^3.15.2", "@prisma/sdk": "^3.15.2",
@ -41,6 +40,7 @@
"prisma": "^3.15.2", "prisma": "^3.15.2",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-feather": "^2.0.10",
"react-redux": "^8.0.2", "react-redux": "^8.0.2",
"react-table": "^7.8.0", "react-table": "^7.8.0",
"redux": "^4.2.0", "redux": "^4.2.0",

View file

@ -1,9 +1,9 @@
import { Button, Card, Group, Image as MImage, Modal, Title } from '@mantine/core'; import { Button, Card, Group, Image as MImage, Modal, Title } from '@mantine/core';
import { useClipboard } from '@mantine/hooks'; import { useClipboard } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CopyIcon, Cross1Icon, StarIcon, TrashIcon } from '@modulz/radix-icons';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
import { useState } from 'react'; import { useState } from 'react';
import { CopyIcon, CrossIcon, DeleteIcon, StarIcon } from './icons';
export default function File({ image, updateImages }) { export default function File({ image, updateImages }) {
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
@ -19,14 +19,14 @@ export default function File({ image, updateImages }) {
title: 'Image Deleted', title: 'Image Deleted',
message: '', message: '',
color: 'green', color: 'green',
icon: <TrashIcon />, icon: <DeleteIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'Failed to delete image', title: 'Failed to delete image',
message: res.error, message: res.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} }

View file

@ -12,15 +12,11 @@ import {
Text, Text,
useMantineTheme, useMantineTheme,
} from '@mantine/core'; } from '@mantine/core';
import {
CopyIcon,
EnterIcon,
TrashIcon,
} from '@modulz/radix-icons';
import { import {
usePagination, usePagination,
useTable, useTable,
} from 'react-table'; } from 'react-table';
import { CopyIcon, DeleteIcon, EnterIcon } from './icons';
const pageSizeOptions = ['10', '25', '50']; const pageSizeOptions = ['10', '25', '50'];
@ -128,7 +124,7 @@ export default function ImagesTable({
))} ))}
<td align='right'> <td align='right'>
<Group noWrap> <Group noWrap>
<ActionIcon color='red' variant='outline' onClick={() => deleteImage(row)}><TrashIcon /></ActionIcon> <ActionIcon color='red' variant='outline' onClick={() => deleteImage(row)}><DeleteIcon /></ActionIcon>
<ActionIcon color='primary' variant='outline' onClick={() => copyImage(row)}><CopyIcon /></ActionIcon> <ActionIcon color='primary' variant='outline' onClick={() => copyImage(row)}><CopyIcon /></ActionIcon>
<ActionIcon color='green' variant='outline' onClick={() => viewImage(row)}><EnterIcon /></ActionIcon> <ActionIcon color='green' variant='outline' onClick={() => viewImage(row)}><EnterIcon /></ActionIcon>
</Group> </Group>

View file

@ -2,13 +2,13 @@ import { AppShell, Box, Burger, Divider, Group, Header, MediaQuery, Navbar, Pape
import { useClipboard } from '@mantine/hooks'; import { useClipboard } from '@mantine/hooks';
import { useModals } from '@mantine/modals'; import { useModals } from '@mantine/modals';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CheckIcon, CopyIcon, Cross1Icon, FileIcon, GearIcon, HomeIcon, Link1Icon, MixerHorizontalIcon, Pencil1Icon, PersonIcon, PinRightIcon, ResetIcon, TextIcon, UploadIcon } from '@modulz/radix-icons';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
import { updateUser } from 'lib/redux/reducers/user'; import { updateUser } from 'lib/redux/reducers/user';
import { useStoreDispatch } from 'lib/redux/store'; import { useStoreDispatch } from 'lib/redux/store';
import Link from 'next/link'; import Link from 'next/link';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { useState } from 'react'; import { useState } from 'react';
import { ActivityIcon, CheckIcon, CopyIcon, CrossIcon, DeleteIcon, FileIcon, HomeIcon, LinkIcon, LogoutIcon, PencilIcon, SettingsIcon, TypeIcon, UploadIcon, UserIcon } from './icons';
import { friendlyThemeName, themes } from './Theming'; import { friendlyThemeName, themes } from './Theming';
function MenuItemLink(props) { function MenuItemLink(props) {
@ -74,12 +74,12 @@ const items = [
link: '/dashboard/files', link: '/dashboard/files',
}, },
{ {
icon: <MixerHorizontalIcon />, icon: <ActivityIcon />,
text: 'Stats', text: 'Stats',
link: '/dashboard/stats', link: '/dashboard/stats',
}, },
{ {
icon: <Link1Icon />, icon: <LinkIcon />,
text: 'URLs', text: 'URLs',
link: '/dashboard/urls', link: '/dashboard/urls',
}, },
@ -89,7 +89,7 @@ const items = [
link: '/dashboard/upload', link: '/dashboard/upload',
}, },
{ {
icon: <TextIcon />, icon: <TypeIcon />,
text: 'Upload Text', text: 'Upload Text',
link: '/dashboard/text', link: '/dashboard/text',
}, },
@ -120,7 +120,7 @@ export default function Layout({ children, user }) {
title: `Theme changed to ${friendlyThemeName[value]}`, title: `Theme changed to ${friendlyThemeName[value]}`,
message: '', message: '',
color: 'green', color: 'green',
icon: <Pencil1Icon />, icon: <PencilIcon />,
}); });
}; };
@ -142,7 +142,7 @@ export default function Layout({ children, user }) {
title: 'Token Reset Failed', title: 'Token Reset Failed',
message: a.error, message: a.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
@ -241,7 +241,7 @@ export default function Layout({ children, user }) {
> >
<Group> <Group>
<ThemeIcon color='primary' variant='filled'> <ThemeIcon color='primary' variant='filled'>
<PersonIcon /> <UserIcon />
</ThemeIcon> </ThemeIcon>
<Text size='lg'>Users</Text> <Text size='lg'>Users</Text>
@ -288,7 +288,7 @@ export default function Layout({ children, user }) {
> >
<Group> <Group>
<ThemeIcon color='primary' variant='filled'> <ThemeIcon color='primary' variant='filled'>
<GearIcon /> <SettingsIcon />
</ThemeIcon> </ThemeIcon>
<Text>{user.username}</Text> <Text>{user.username}</Text>
</Group> </Group>
@ -306,10 +306,10 @@ export default function Layout({ children, user }) {
> >
{user.username} {user.username}
</Text> </Text>
<MenuItemLink icon={<GearIcon />} href='/dashboard/manage'>Manage Account</MenuItemLink> <MenuItemLink icon={<SettingsIcon />} href='/dashboard/manage'>Manage Account</MenuItemLink>
<MenuItem icon={<CopyIcon />} onClick={() => {setOpen(false);openCopyToken();}}>Copy Token</MenuItem> <MenuItem icon={<CopyIcon />} onClick={() => {setOpen(false);openCopyToken();}}>Copy Token</MenuItem>
<MenuItem icon={<ResetIcon />} onClick={() => {setOpen(false);openResetToken();}} color='red'>Reset Token</MenuItem> <MenuItem icon={<DeleteIcon />} onClick={() => {setOpen(false);openResetToken();}} color='red'>Reset Token</MenuItem>
<MenuItemLink icon={<PinRightIcon />} href='/auth/logout' color='red'>Logout</MenuItemLink> <MenuItemLink icon={<LogoutIcon />} href='/auth/logout' color='red'>Logout</MenuItemLink>
<Divider <Divider
variant='solid' variant='solid'
my={theme.spacing.xs / 2} my={theme.spacing.xs / 2}
@ -319,7 +319,7 @@ export default function Layout({ children, user }) {
margin: `${theme.spacing.xs / 2}px -4px`, margin: `${theme.spacing.xs / 2}px -4px`,
})} })}
/> />
<MenuItem icon={<Pencil1Icon />}> <MenuItem icon={<PencilIcon />}>
<Select <Select
size='xs' size='xs'
data={Object.keys(themes).map(t => ({ value: t, label: friendlyThemeName[t] }))} data={Object.keys(themes).map(t => ({ value: t, label: friendlyThemeName[t] }))}

View file

@ -1,7 +1,7 @@
import React from 'react'; import React from 'react';
import { Dropzone as MantineDropzone } from '@mantine/dropzone'; import { Dropzone as MantineDropzone } from '@mantine/dropzone';
import { Group, Text, useMantineTheme } from '@mantine/core'; import { Group, Text, useMantineTheme } from '@mantine/core';
import { UploadIcon, CrossCircledIcon, ImageIcon } from '@modulz/radix-icons'; import { CrossIcon, UploadIcon, ImageIcon } from 'components/icons';
function ImageUploadIcon({ status, ...props }) { function ImageUploadIcon({ status, ...props }) {
if (status.accepted) { if (status.accepted) {
@ -9,7 +9,7 @@ function ImageUploadIcon({ status, ...props }) {
} }
if (status.rejected) { if (status.rejected) {
return <CrossCircledIcon {...props} />; return <CrossIcon {...props} />;
} }
return <ImageIcon {...props} />; return <ImageIcon {...props} />;

View file

@ -0,0 +1,5 @@
import { Activity } from 'react-feather';
export default function ActivityIcon({ ...props }) {
return <Activity size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Check } from 'react-feather';
export default function CheckIcon({ ...props }) {
return <Check size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Copy } from 'react-feather';
export default function CopyIcon({ ...props }) {
return <Copy size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { X } from 'react-feather';
export default function CrossIcon({ ...props }) {
return <X size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Delete } from 'react-feather';
export default function DeleteIcon({ ...props }) {
return <Delete size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Download } from 'react-feather';
export default function DownloadIcon({ ...props }) {
return <Download size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { LogIn } from 'react-feather';
export default function EnterIcon({ ...props }) {
return <LogIn size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { File } from 'react-feather';
export default function FileIcon({ ...props }) {
return <File size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Home } from 'react-feather';
export default function HomeIcon({ ...props }) {
return <Home size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Image as FeatherImage } from 'react-feather';
export default function ImageIcon({ ...props }) {
return <FeatherImage size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Link } from 'react-feather';
export default function LinkIcon({ ...props }) {
return <Link size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { LogOut } from 'react-feather';
export default function LogoutIcon({ ...props }) {
return <LogOut size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Edit2 } from 'react-feather';
export default function PencilIcon({ ...props }) {
return <Edit2 size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Plus } from 'react-feather';
export default function PlusIcon({ ...props }) {
return <Plus size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Settings } from 'react-feather';
export default function SettingsIcon({ ...props }) {
return <Settings size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Star } from 'react-feather';
export default function StarIcon({ ...props }) {
return <Star size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Type } from 'react-feather';
export default function TypeIcon({ ...props }) {
return <Type size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { Upload } from 'react-feather';
export default function UploadIcon({ ...props }) {
return <Upload size={15} {...props} />;
}

View file

@ -0,0 +1,5 @@
import { User } from 'react-feather';
export default function UserIcon({ ...props }) {
return <User size={15} {...props} />;
}

View file

@ -0,0 +1,39 @@
import ActivityIcon from './ActivityIcon';
import CheckIcon from './CheckIcon';
import CopyIcon from './CopyIcon';
import CrossIcon from './CrossIcon';
import DeleteIcon from './DeleteIcon';
import FileIcon from './FileIcon';
import HomeIcon from './HomeIcon';
import LinkIcon from './LinkIcon';
import LogoutIcon from './LogoutIcon';
import PencilIcon from './PencilIcon';
import SettingsIcon from './SettingsIcon';
import TypeIcon from './TypeIcon';
import UploadIcon from './UploadIcon';
import UserIcon from './UserIcon';
import EnterIcon from './EnterIcon';
import PlusIcon from './PlusIcon';
import ImageIcon from './ImageIcon';
import StarIcon from './StarIcon';
export {
ActivityIcon,
CheckIcon,
CopyIcon,
CrossIcon,
DeleteIcon,
FileIcon,
HomeIcon,
LinkIcon,
LogoutIcon,
PencilIcon,
SettingsIcon,
TypeIcon,
UploadIcon,
UserIcon,
EnterIcon,
PlusIcon,
ImageIcon,
StarIcon,
};

View file

@ -1,9 +1,9 @@
import { SimpleGrid, Skeleton, Text, Title } from '@mantine/core'; import { SimpleGrid, Skeleton, Text, Title } from '@mantine/core';
import { randomId, useClipboard } from '@mantine/hooks'; import { randomId, useClipboard } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CopyIcon, Cross1Icon, TrashIcon } from '@modulz/radix-icons';
import Card from 'components/Card'; import Card from 'components/Card';
import File from 'components/File'; import File from 'components/File';
import { CopyIcon, CrossIcon, DeleteIcon } from 'components/icons';
import ImagesTable from 'components/ImagesTable'; import ImagesTable from 'components/ImagesTable';
import Link from 'components/Link'; import Link from 'components/Link';
import MutedText from 'components/MutedText'; import MutedText from 'components/MutedText';
@ -40,14 +40,14 @@ export default function Dashboard() {
title: 'Image Deleted', title: 'Image Deleted',
message: '', message: '',
color: 'green', color: 'green',
icon: <TrashIcon />, icon: <DeleteIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'Failed to delete image', title: 'Failed to delete image',
message: res.error, message: res.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} }

View file

@ -1,6 +1,6 @@
import { Accordion, ActionIcon, Box, Group, Pagination, SimpleGrid, Skeleton, Title } from '@mantine/core'; import { Accordion, ActionIcon, Box, Group, Pagination, SimpleGrid, Skeleton, Title } from '@mantine/core';
import { PlusIcon } from '@modulz/radix-icons';
import File from 'components/File'; import File from 'components/File';
import { PlusIcon } from 'components/icons';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
import Link from 'next/link'; import Link from 'next/link';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';

View file

@ -2,7 +2,8 @@ import { Box, Button, Card, ColorInput, Group, MultiSelect, Space, Text, TextInp
import { randomId, useForm, useInterval } from '@mantine/hooks'; import { randomId, useForm, useInterval } from '@mantine/hooks';
import { useModals } from '@mantine/modals'; import { useModals } from '@mantine/modals';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { Cross1Icon, DownloadIcon, TrashIcon } from '@modulz/radix-icons'; import { CrossIcon, DeleteIcon } from 'components/icons';
import DownloadIcon from 'components/icons/DownloadIcon';
import Link from 'components/Link'; import Link from 'components/Link';
import { SmallTable } from 'components/SmallTable'; import { SmallTable } from 'components/SmallTable';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
@ -117,14 +118,14 @@ export default function Manage() {
))} ))}
</>, </>,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} }
notif.updateNotification(id, { notif.updateNotification(id, {
title: 'Couldn\'t save user', title: 'Couldn\'t save user',
message: newUser.error, message: newUser.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} else { } else {
dispatch(updateUser(newUser)); dispatch(updateUser(newUser));
@ -166,14 +167,14 @@ export default function Manage() {
title: 'Couldn\'t delete files', title: 'Couldn\'t delete files',
message: res.error, message: res.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'Deleted files', title: 'Deleted files',
message: `${res.count} files deleted`, message: `${res.count} files deleted`,
color: 'green', color: 'green',
icon: <TrashIcon />, icon: <DeleteIcon />,
}); });
} }
}; };
@ -245,7 +246,7 @@ export default function Manage() {
</Box> </Box>
<Group> <Group>
<Button onClick={openDeleteModal} rightIcon={<TrashIcon />}>Delete All Data</Button> <Button onClick={openDeleteModal} rightIcon={<DeleteIcon />}>Delete All Data</Button>
<ExportDataTooltip><Button onClick={exportData} rightIcon={<DownloadIcon />}>Export Data</Button></ExportDataTooltip> <ExportDataTooltip><Button onClick={exportData} rightIcon={<DownloadIcon />}>Export Data</Button></ExportDataTooltip>
</Group> </Group>
<Card mt={22}> <Card mt={22}>

View file

@ -1,9 +1,9 @@
import { Button, Collapse, Group, Progress, Title, useMantineTheme } from '@mantine/core'; import { Button, Collapse, Group, Progress, Title, useMantineTheme } from '@mantine/core';
import { randomId, useClipboard } from '@mantine/hooks'; import { randomId, useClipboard } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CrossCircledIcon, UploadIcon } from '@modulz/radix-icons';
import Dropzone from 'components/dropzone/Dropzone'; import Dropzone from 'components/dropzone/Dropzone';
import FileDropzone from 'components/dropzone/DropzoneFile'; import FileDropzone from 'components/dropzone/DropzoneFile';
import { CrossIcon, UploadIcon } from 'components/icons';
import Link from 'components/Link'; import Link from 'components/Link';
import { useStoreSelector } from 'lib/redux/store'; import { useStoreSelector } from 'lib/redux/store';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -68,7 +68,7 @@ export default function Upload() {
title: 'Upload Failed', title: 'Upload Failed',
message: json.error, message: json.error,
color: 'red', color: 'red',
icon: <CrossCircledIcon />, icon: <CrossIcon />,
}); });
} }
setProgress(0); setProgress(0);

View file

@ -1,10 +1,10 @@
import { Button, Collapse, Group, Progress, Select, Title, useMantineTheme } from '@mantine/core'; import { Button, Collapse, Group, Progress, Select, Title, useMantineTheme } from '@mantine/core';
import { randomId, useClipboard } from '@mantine/hooks'; import { randomId, useClipboard } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CrossCircledIcon, LetterCaseCapitalizeIcon, LetterCaseLowercaseIcon, UploadIcon } from '@modulz/radix-icons';
import CodeInput from 'components/CodeInput'; import CodeInput from 'components/CodeInput';
import Dropzone from 'components/dropzone/Dropzone'; import Dropzone from 'components/dropzone/Dropzone';
import FileDropzone from 'components/dropzone/DropzoneFile'; import FileDropzone from 'components/dropzone/DropzoneFile';
import { TypeIcon, UploadIcon } from 'components/icons';
import Link from 'components/Link'; import Link from 'components/Link';
import exts from 'lib/exts'; import exts from 'lib/exts';
import { useStoreSelector } from 'lib/redux/store'; import { useStoreSelector } from 'lib/redux/store';
@ -62,7 +62,7 @@ export default function Upload() {
req.setRequestHeader('Authorization', user.token); req.setRequestHeader('Authorization', user.token);
req.send(body); req.send(body);
}; };
return ( return (
<> <>
<Title mb='md'>Upload Text</Title> <Title mb='md'>Upload Text</Title>
@ -78,7 +78,7 @@ export default function Upload() {
onChange={setLang} onChange={setLang}
dropdownPosition='top' dropdownPosition='top'
data={Object.keys(exts).map(x => ({ value: x, label: exts[x] }))} data={Object.keys(exts).map(x => ({ value: x, label: exts[x] }))}
icon={<LetterCaseCapitalizeIcon />} icon={<TypeIcon />}
/> />
<Button leftIcon={<UploadIcon />} onClick={handleUpload}>Upload</Button> <Button leftIcon={<UploadIcon />} onClick={handleUpload}>Upload</Button>
</Group> </Group>

View file

@ -1,7 +1,7 @@
import { ActionIcon, Button, Card, Group, Modal, SimpleGrid, Skeleton, TextInput, Title } from '@mantine/core'; import { ActionIcon, Button, Card, Group, Modal, SimpleGrid, Skeleton, TextInput, Title } from '@mantine/core';
import { useClipboard, useForm } from '@mantine/hooks'; import { useClipboard, useForm } from '@mantine/hooks';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { CopyIcon, Cross1Icon, Link1Icon, PlusIcon, TrashIcon } from '@modulz/radix-icons'; import { CopyIcon, CrossIcon, DeleteIcon, LinkIcon, PlusIcon } from 'components/icons';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
import { useStoreSelector } from 'lib/redux/store'; import { useStoreSelector } from 'lib/redux/store';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
@ -26,14 +26,14 @@ export default function Urls() {
notif.showNotification({ notif.showNotification({
title: 'Failed to delete URL', title: 'Failed to delete URL',
message: url.error, message: url.error,
icon: <TrashIcon />, icon: <DeleteIcon />,
color: 'red', color: 'red',
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'Deleted URL', title: 'Deleted URL',
message: '', message: '',
icon: <Cross1Icon />, icon: <CrossIcon />,
color: 'green', color: 'green',
}); });
} }
@ -90,14 +90,14 @@ export default function Urls() {
title: 'Failed to create URL', title: 'Failed to create URL',
message: json.error, message: json.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'URL shortened', title: 'URL shortened',
message: json.url, message: json.url,
color: 'green', color: 'green',
icon: <Link1Icon />, icon: <LinkIcon />,
}); });
} }
@ -145,12 +145,12 @@ export default function Urls() {
<Title>{url.vanity ?? url.id}</Title> <Title>{url.vanity ?? url.id}</Title>
</Group> </Group>
<Group position='right'> <Group position='right'>
<ActionIcon href={url.url} component='a' target='_blank'><Link1Icon/></ActionIcon> <ActionIcon href={url.url} component='a' target='_blank'><LinkIcon/></ActionIcon>
<ActionIcon aria-label='copy' onClick={() => copyURL(url)}> <ActionIcon aria-label='copy' onClick={() => copyURL(url)}>
<CopyIcon /> <CopyIcon />
</ActionIcon> </ActionIcon>
<ActionIcon aria-label='delete' onClick={() => deleteURL(url)}> <ActionIcon aria-label='delete' onClick={() => deleteURL(url)}>
<TrashIcon /> <DeleteIcon />
</ActionIcon> </ActionIcon>
</Group> </Group>
</Group> </Group>

View file

@ -2,7 +2,7 @@ import { ActionIcon, Avatar, Button, Card, Group, Modal, SimpleGrid, Skeleton, S
import { useForm } from '@mantine/hooks'; import { useForm } from '@mantine/hooks';
import { useModals } from '@mantine/modals'; import { useModals } from '@mantine/modals';
import { useNotifications } from '@mantine/notifications'; import { useNotifications } from '@mantine/notifications';
import { Cross1Icon, PlusIcon, TrashIcon } from '@modulz/radix-icons'; import { CrossIcon, DeleteIcon, PlusIcon } from 'components/icons';
import useFetch from 'hooks/useFetch'; import useFetch from 'hooks/useFetch';
import { useStoreSelector } from 'lib/redux/store'; import { useStoreSelector } from 'lib/redux/store';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
@ -37,7 +37,7 @@ function CreateUserModal({ open, setOpen, updateUsers }) {
notif.showNotification({ notif.showNotification({
title: 'Failed to create user', title: 'Failed to create user',
message: res.error, message: res.error,
icon: <TrashIcon />, icon: <DeleteIcon />,
color: 'red', color: 'red',
}); });
} else { } else {
@ -91,14 +91,14 @@ export default function Users() {
title: 'Failed to delete user', title: 'Failed to delete user',
message: res.error, message: res.error,
color: 'red', color: 'red',
icon: <Cross1Icon />, icon: <CrossIcon />,
}); });
} else { } else {
notif.showNotification({ notif.showNotification({
title: 'User deleted', title: 'User deleted',
message: '', message: '',
color: 'green', color: 'green',
icon: <TrashIcon />, icon: <DeleteIcon />,
}); });
updateUsers(); updateUsers();
} }
@ -165,7 +165,7 @@ export default function Users() {
</Group> </Group>
<Group position='right'> <Group position='right'>
<ActionIcon aria-label='delete' onClick={() => openDeleteModal(user)}> <ActionIcon aria-label='delete' onClick={() => openDeleteModal(user)}>
<TrashIcon /> <DeleteIcon />
</ActionIcon> </ActionIcon>
</Group> </Group>
</Group> </Group>

195
yarn.lock
View file

@ -126,7 +126,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@azure/core-util@npm:^1.0.0, @azure/core-util@npm:^1.0.0-beta.1": "@azure/core-util@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "@azure/core-util@npm:1.0.0" resolution: "@azure/core-util@npm:1.0.0"
dependencies: dependencies:
@ -136,26 +136,26 @@ __metadata:
linkType: hard linkType: hard
"@azure/identity@npm:^2.0.4": "@azure/identity@npm:^2.0.4":
version: 2.0.5 version: 2.1.0
resolution: "@azure/identity@npm:2.0.5" resolution: "@azure/identity@npm:2.1.0"
dependencies: dependencies:
"@azure/abort-controller": ^1.0.0 "@azure/abort-controller": ^1.0.0
"@azure/core-auth": ^1.3.0 "@azure/core-auth": ^1.3.0
"@azure/core-client": ^1.4.0 "@azure/core-client": ^1.4.0
"@azure/core-rest-pipeline": ^1.1.0 "@azure/core-rest-pipeline": ^1.1.0
"@azure/core-tracing": 1.0.0-preview.13 "@azure/core-tracing": ^1.0.0
"@azure/core-util": ^1.0.0-beta.1 "@azure/core-util": ^1.0.0
"@azure/logger": ^1.0.0 "@azure/logger": ^1.0.0
"@azure/msal-browser": ^2.16.0 "@azure/msal-browser": ^2.26.0
"@azure/msal-common": ^4.5.1 "@azure/msal-common": ^7.0.0
"@azure/msal-node": ^1.3.0 "@azure/msal-node": ^1.10.0
events: ^3.0.0 events: ^3.0.0
jws: ^4.0.0 jws: ^4.0.0
open: ^8.0.0 open: ^8.0.0
stoppable: ^1.1.0 stoppable: ^1.1.0
tslib: ^2.2.0 tslib: ^2.2.0
uuid: ^8.3.0 uuid: ^8.3.0
checksum: c637dcfdc616271cfd019e8606b6d98dbf44d404b8ca0e5c8a17331072568419f5ade2026f56c471eb7ea9941dc37c07104fb17760fff0cc917ff270e2d191c7 checksum: 1f29f1fd46c51f226da06e6e70f113d50f5ef0dd163e2ba1b8bc35cadcf98ccd829bff3d2bf4d90641c369e5d6b74b344f17abec10f2ae9469a74aeb9415d6d4
languageName: node languageName: node
linkType: hard linkType: hard
@ -183,7 +183,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@azure/msal-browser@npm:^2.16.0": "@azure/msal-browser@npm:^2.26.0":
version: 2.27.0 version: 2.27.0
resolution: "@azure/msal-browser@npm:2.27.0" resolution: "@azure/msal-browser@npm:2.27.0"
dependencies: dependencies:
@ -192,23 +192,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@azure/msal-common@npm:^4.5.1": "@azure/msal-common@npm:^7.0.0, @azure/msal-common@npm:^7.1.0":
version: 4.5.1
resolution: "@azure/msal-common@npm:4.5.1"
dependencies:
debug: ^4.1.1
checksum: 9d335771ea65e08d7610253cce68ac29839c01985bc078e2c5bdd53e76f787b2aab6a4bcc0b548ffdc005490032836ab359d2c8e661f386c8c6c4995fc9cfdfa
languageName: node
linkType: hard
"@azure/msal-common@npm:^7.1.0":
version: 7.1.0 version: 7.1.0
resolution: "@azure/msal-common@npm:7.1.0" resolution: "@azure/msal-common@npm:7.1.0"
checksum: 761a8b9363c7b620d831aba7d7e7a66e341685e306034b027b57dc31dae11abdf86c3187c08fc8008448c845ffdcbbc42c767c75355625cf87aba25ba7e2832e checksum: 761a8b9363c7b620d831aba7d7e7a66e341685e306034b027b57dc31dae11abdf86c3187c08fc8008448c845ffdcbbc42c767c75355625cf87aba25ba7e2832e
languageName: node languageName: node
linkType: hard linkType: hard
"@azure/msal-node@npm:^1.3.0": "@azure/msal-node@npm:^1.10.0":
version: 1.11.0 version: 1.11.0
resolution: "@azure/msal-node@npm:1.11.0" resolution: "@azure/msal-node@npm:1.11.0"
dependencies: dependencies:
@ -284,12 +275,12 @@ __metadata:
linkType: hard linkType: hard
"@babel/types@npm:^7.18.6": "@babel/types@npm:^7.18.6":
version: 7.18.7 version: 7.18.8
resolution: "@babel/types@npm:7.18.7" resolution: "@babel/types@npm:7.18.8"
dependencies: dependencies:
"@babel/helper-validator-identifier": ^7.18.6 "@babel/helper-validator-identifier": ^7.18.6
to-fast-properties: ^2.0.0 to-fast-properties: ^2.0.0
checksum: 3114ce161c4ebcb70271e168aa5af5cecedf3278209161d5ba6124bd3f9cb02e3f3ace587ad1b53f7baa153b6b3714720721c72a9ef3ec451663862f9cc1f014 checksum: a485531faa9ff3b83ea94ba6502321dd66e39202c46d7765e4336cb4aff2ff69ebc77d97b17e21331a8eedde1f5490ce00e8a430c1041fc26854d636e6701919
languageName: node languageName: node
linkType: hard linkType: hard
@ -671,19 +662,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@modulz/radix-icons@npm:^4.0.0": "@next/env@npm:12.2.2":
version: 4.0.0 version: 12.2.2
resolution: "@modulz/radix-icons@npm:4.0.0" resolution: "@next/env@npm:12.2.2"
peerDependencies: checksum: ea79db56b3af5076de9b02941e0226d8d68e179101e99cf3bb1a17fb980d30de781311c176ce3a87fc72b9598e311d18e5244e71c553b03875f2dbe27dffa864
react: ^16.x || ^17.x
checksum: 5b88ae6b85f2f07769d3ed57a80eed24b6d5babcd781d5e9980438a9738fc58f76701909dfad891e86a0747572bc8a7d210dc544d1e200a1465e89de539e3ddd
languageName: node
linkType: hard
"@next/env@npm:12.2.0":
version: 12.2.0
resolution: "@next/env@npm:12.2.0"
checksum: 5fb317bdb5eb2d5df12ff55e335368792dba21874c5ece3cabf8cd312cec911a1d54ecf368e69dc08640b0244669b8a98c86cd035c7874b17640602e67c1b9d9
languageName: node languageName: node
linkType: hard linkType: hard
@ -696,93 +678,93 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-android-arm-eabi@npm:12.2.0": "@next/swc-android-arm-eabi@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-android-arm-eabi@npm:12.2.0" resolution: "@next/swc-android-arm-eabi@npm:12.2.2"
conditions: os=android & cpu=arm conditions: os=android & cpu=arm
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-android-arm64@npm:12.2.0": "@next/swc-android-arm64@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-android-arm64@npm:12.2.0" resolution: "@next/swc-android-arm64@npm:12.2.2"
conditions: os=android & cpu=arm64 conditions: os=android & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-darwin-arm64@npm:12.2.0": "@next/swc-darwin-arm64@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-darwin-arm64@npm:12.2.0" resolution: "@next/swc-darwin-arm64@npm:12.2.2"
conditions: os=darwin & cpu=arm64 conditions: os=darwin & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-darwin-x64@npm:12.2.0": "@next/swc-darwin-x64@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-darwin-x64@npm:12.2.0" resolution: "@next/swc-darwin-x64@npm:12.2.2"
conditions: os=darwin & cpu=x64 conditions: os=darwin & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-freebsd-x64@npm:12.2.0": "@next/swc-freebsd-x64@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-freebsd-x64@npm:12.2.0" resolution: "@next/swc-freebsd-x64@npm:12.2.2"
conditions: os=freebsd & cpu=x64 conditions: os=freebsd & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-arm-gnueabihf@npm:12.2.0": "@next/swc-linux-arm-gnueabihf@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-linux-arm-gnueabihf@npm:12.2.0" resolution: "@next/swc-linux-arm-gnueabihf@npm:12.2.2"
conditions: os=linux & cpu=arm conditions: os=linux & cpu=arm
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-arm64-gnu@npm:12.2.0": "@next/swc-linux-arm64-gnu@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-linux-arm64-gnu@npm:12.2.0" resolution: "@next/swc-linux-arm64-gnu@npm:12.2.2"
conditions: os=linux & cpu=arm64 & libc=glibc conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-arm64-musl@npm:12.2.0": "@next/swc-linux-arm64-musl@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-linux-arm64-musl@npm:12.2.0" resolution: "@next/swc-linux-arm64-musl@npm:12.2.2"
conditions: os=linux & cpu=arm64 & libc=musl conditions: os=linux & cpu=arm64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-x64-gnu@npm:12.2.0": "@next/swc-linux-x64-gnu@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-linux-x64-gnu@npm:12.2.0" resolution: "@next/swc-linux-x64-gnu@npm:12.2.2"
conditions: os=linux & cpu=x64 & libc=glibc conditions: os=linux & cpu=x64 & libc=glibc
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-linux-x64-musl@npm:12.2.0": "@next/swc-linux-x64-musl@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-linux-x64-musl@npm:12.2.0" resolution: "@next/swc-linux-x64-musl@npm:12.2.2"
conditions: os=linux & cpu=x64 & libc=musl conditions: os=linux & cpu=x64 & libc=musl
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-win32-arm64-msvc@npm:12.2.0": "@next/swc-win32-arm64-msvc@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-win32-arm64-msvc@npm:12.2.0" resolution: "@next/swc-win32-arm64-msvc@npm:12.2.2"
conditions: os=win32 & cpu=arm64 conditions: os=win32 & cpu=arm64
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-win32-ia32-msvc@npm:12.2.0": "@next/swc-win32-ia32-msvc@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-win32-ia32-msvc@npm:12.2.0" resolution: "@next/swc-win32-ia32-msvc@npm:12.2.2"
conditions: os=win32 & cpu=ia32 conditions: os=win32 & cpu=ia32
languageName: node languageName: node
linkType: hard linkType: hard
"@next/swc-win32-x64-msvc@npm:12.2.0": "@next/swc-win32-x64-msvc@npm:12.2.2":
version: 12.2.0 version: 12.2.2
resolution: "@next/swc-win32-x64-msvc@npm:12.2.0" resolution: "@next/swc-win32-x64-msvc@npm:12.2.2"
conditions: os=win32 & cpu=x64 conditions: os=win32 & cpu=x64
languageName: node languageName: node
linkType: hard linkType: hard
@ -2519,9 +2501,9 @@ __metadata:
linkType: hard linkType: hard
"core-js-pure@npm:^3.20.2": "core-js-pure@npm:^3.20.2":
version: 3.23.3 version: 3.23.4
resolution: "core-js-pure@npm:3.23.3" resolution: "core-js-pure@npm:3.23.4"
checksum: 09a477a56963ca4409ca383d36429ea3b51b658ff85e94331a510543c77c4d1b44cb6b305b0f185d729eb059c71f1289c62fdec6371ff46ce838a16988cdcb2e checksum: 54afc79508ded6c1b59aacdf32fc1621f0246b10401e6228e7b145fe3960335c8863580e6ce8560bb8004aa69ea2328a5baa11d2e15965b6333b8fd839657601
languageName: node languageName: node
linkType: hard linkType: hard
@ -5313,8 +5295,8 @@ __metadata:
linkType: hard linkType: hard
"minio@npm:^7.0.28": "minio@npm:^7.0.28":
version: 7.0.28 version: 7.0.29
resolution: "minio@npm:7.0.28" resolution: "minio@npm:7.0.29"
dependencies: dependencies:
async: ^3.1.0 async: ^3.1.0
block-stream2: ^2.0.0 block-stream2: ^2.0.0
@ -5333,7 +5315,7 @@ __metadata:
web-encoding: ^1.1.5 web-encoding: ^1.1.5
xml: ^1.0.0 xml: ^1.0.0
xml2js: ^0.4.15 xml2js: ^0.4.15
checksum: 07ca35ff232a432dc74da63352ad3b73cb8e4caad1d80e7d1ba446a7b8c5a0c4d73fa09c63fd94a0e3a153b9269d06dc2786a5ddad2bec74bd0257ddd1ddc2f4 checksum: 255355e23f93baff1bf0bb5efd8f451e51dbcc9ae9d4ba56f5d2a7196b216be4a4e1174117fb431c834ca01bba219c657073d824022871cb4cc985999c4df208
languageName: node languageName: node
linkType: hard linkType: hard
@ -5550,23 +5532,23 @@ __metadata:
linkType: hard linkType: hard
"next@npm:^12.1.6": "next@npm:^12.1.6":
version: 12.2.0 version: 12.2.2
resolution: "next@npm:12.2.0" resolution: "next@npm:12.2.2"
dependencies: dependencies:
"@next/env": 12.2.0 "@next/env": 12.2.2
"@next/swc-android-arm-eabi": 12.2.0 "@next/swc-android-arm-eabi": 12.2.2
"@next/swc-android-arm64": 12.2.0 "@next/swc-android-arm64": 12.2.2
"@next/swc-darwin-arm64": 12.2.0 "@next/swc-darwin-arm64": 12.2.2
"@next/swc-darwin-x64": 12.2.0 "@next/swc-darwin-x64": 12.2.2
"@next/swc-freebsd-x64": 12.2.0 "@next/swc-freebsd-x64": 12.2.2
"@next/swc-linux-arm-gnueabihf": 12.2.0 "@next/swc-linux-arm-gnueabihf": 12.2.2
"@next/swc-linux-arm64-gnu": 12.2.0 "@next/swc-linux-arm64-gnu": 12.2.2
"@next/swc-linux-arm64-musl": 12.2.0 "@next/swc-linux-arm64-musl": 12.2.2
"@next/swc-linux-x64-gnu": 12.2.0 "@next/swc-linux-x64-gnu": 12.2.2
"@next/swc-linux-x64-musl": 12.2.0 "@next/swc-linux-x64-musl": 12.2.2
"@next/swc-win32-arm64-msvc": 12.2.0 "@next/swc-win32-arm64-msvc": 12.2.2
"@next/swc-win32-ia32-msvc": 12.2.0 "@next/swc-win32-ia32-msvc": 12.2.2
"@next/swc-win32-x64-msvc": 12.2.0 "@next/swc-win32-x64-msvc": 12.2.2
"@swc/helpers": 0.4.2 "@swc/helpers": 0.4.2
caniuse-lite: ^1.0.30001332 caniuse-lite: ^1.0.30001332
postcss: 8.4.5 postcss: 8.4.5
@ -5614,7 +5596,7 @@ __metadata:
optional: true optional: true
bin: bin:
next: dist/bin/next next: dist/bin/next
checksum: 38456c33935122ac1581367e4982034be23269039a8470a66443d710334336f8f3fb587f25d172d138d84cf18c01d3a76627fb610c2e2e57bd1692277c23fa2b checksum: fb8ced6fb551c60c71a0fb8f443f0a15cd12aed0b1a21fbaba132c47863cccf7517dce8074b1572ba1f20c974d6e5329963a9c4fb89afe88fe22eb1505ba0db8
languageName: node languageName: node
linkType: hard linkType: hard
@ -6399,7 +6381,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"prop-types@npm:^15.6.2, prop-types@npm:^15.8.1": "prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1":
version: 15.8.1 version: 15.8.1
resolution: "prop-types@npm:15.8.1" resolution: "prop-types@npm:15.8.1"
dependencies: dependencies:
@ -6510,6 +6492,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"react-feather@npm:^2.0.10":
version: 2.0.10
resolution: "react-feather@npm:2.0.10"
dependencies:
prop-types: ^15.7.2
peerDependencies:
react: ">=16.8.6"
checksum: 75acb29ee4352cd4e2a509ca81e15f3b553439c069dac19035503d53c0fe2b6133d65f5e32ccdb61ed1514cfda1b615e34de6a9640973a7bda283b7eb98850a1
languageName: node
linkType: hard
"react-is@npm:^16.13.1, react-is@npm:^16.7.0": "react-is@npm:^16.13.1, react-is@npm:^16.7.0":
version: 16.13.1 version: 16.13.1
resolution: "react-is@npm:16.13.1" resolution: "react-is@npm:16.13.1"
@ -8231,7 +8224,6 @@ __metadata:
"@mantine/next": ^4.2.9 "@mantine/next": ^4.2.9
"@mantine/notifications": ^4.2.9 "@mantine/notifications": ^4.2.9
"@mantine/prism": ^4.2.9 "@mantine/prism": ^4.2.9
"@modulz/radix-icons": ^4.0.0
"@prisma/client": ^3.15.2 "@prisma/client": ^3.15.2
"@prisma/migrate": ^3.15.2 "@prisma/migrate": ^3.15.2
"@prisma/sdk": ^3.15.2 "@prisma/sdk": ^3.15.2
@ -8257,6 +8249,7 @@ __metadata:
prisma: ^3.15.2 prisma: ^3.15.2
react: ^18.2.0 react: ^18.2.0
react-dom: ^18.2.0 react-dom: ^18.2.0
react-feather: ^2.0.10
react-redux: ^8.0.2 react-redux: ^8.0.2
react-table: ^7.8.0 react-table: ^7.8.0
redux: ^4.2.0 redux: ^4.2.0