diff --git a/src/components/header.jsx b/src/components/header.jsx new file mode 100644 index 0000000..2f00ace --- /dev/null +++ b/src/components/header.jsx @@ -0,0 +1,92 @@ +import Logo from '../assets/logo.png'; +import { Avatar, createStyles, Header, Group, rem, UnstyledButton, Title, ActionIcon, Tooltip } from '@mantine/core'; +import SwitchToggle from './toggle-colorscheme'; +import { IconUserCheck, IconUserEdit, IconUserOff } from '@tabler/icons-react'; +import { logout, useAuth } from '../tools/auth-provider'; +import { useNavigate } from 'react-router-dom'; + +const useStyles = createStyles((theme) => ({ + header: { + paddingLeft: theme.spacing.md, + paddingRight: theme.spacing.md, + }, + + inner: { + height: rem(56), + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + + links: { + [theme.fn.smallerThan('md')]: { + display: 'none', + }, + }, + + search: { + [theme.fn.smallerThan('xs')]: { + display: 'none', + }, + }, + + link: { + display: 'block', + lineHeight: 1, + padding: `${rem(8)} ${rem(12)}`, + borderRadius: theme.radius.sm, + textDecoration: 'none', + color: theme.colorScheme === 'dark' ? theme.colors.dark[0] : theme.colors.gray[7], + fontSize: theme.fontSizes.sm, + fontWeight: 500, + + '&:hover': { + backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[0], + }, + }, +})); + +const links = [ + { label: 'Playlists', link: '/playlists' }, + { label: 'Files', link: '/files' }, + { label: 'Planning', link: '/planning' }, +]; + +const HeaderSearch = () => { + const { classes } = useStyles(); + const { role } = useAuth(); + const navigate = useNavigate(); + + const items = links.map((link) => ( + navigate(link.link)}> + {link.label} + + )); + + return ( +
+
+ + + navigate('/')} className={classes.link}> + Signage + + + + + + {items} + + + + + + + + +
+
+ ); +}; + +export default HeaderSearch; diff --git a/src/components/navbar.jsx b/src/components/navbar.jsx new file mode 100644 index 0000000..242f3f2 --- /dev/null +++ b/src/components/navbar.jsx @@ -0,0 +1,25 @@ +import { Title, Button, Group, Input, Paper } from '@mantine/core'; +import { IconSearch } from '@tabler/icons-react'; + +const NavbarSignage = ({ data }) => { + return ( + + + {data.title} + + data.handlerChange(event)} + icon={} + /> + {data?.buttonCreate && ( + + )} + + + + ); +}; + +export default NavbarSignage; diff --git a/src/components/select-item.jsx b/src/components/select-item.jsx new file mode 100644 index 0000000..a440716 --- /dev/null +++ b/src/components/select-item.jsx @@ -0,0 +1,37 @@ +import { Card, Grid, Text, Image, Button, Center } from '@mantine/core'; +import { useState } from 'react'; + +const SelectorItem = ({ file, clickHandler }) => { + const [selected, setSelected] = useState(false); + const handleClick = () => { + setSelected(!selected); + clickHandler(file); + }; + + return ( + + + + {file.name} + +
+ + {file.name} + +
+ +
+
+ ); +}; + +export default SelectorItem; diff --git a/src/pages/errors/error-notification.jsx b/src/pages/errors/error-notification.jsx new file mode 100644 index 0000000..725f2ec --- /dev/null +++ b/src/pages/errors/error-notification.jsx @@ -0,0 +1,14 @@ +import { notifications } from '@mantine/notifications'; +import { IconCheck, IconX } from '@tabler/icons-react'; + +const setNotification = (fail, message) => { + notifications.show({ + title: fail ? 'Error' : 'Success', + message: message ?? 'Something went wrong', + color: fail ? 'red' : 'green', + icon: fail ? : , + autoClose: 5000, + }); +}; + +export default setNotification;