diff --git a/client/src/components/Apps/AppCard/AppCard.module.css b/client/src/components/Apps/AppCard/AppCard.module.css index ae5e808..05dce47 100644 --- a/client/src/components/Apps/AppCard/AppCard.module.css +++ b/client/src/components/Apps/AppCard/AppCard.module.css @@ -26,7 +26,7 @@ margin-bottom: -8px; } -.AppCardDetails a { +.AppCardDetails span { color: var(--color-accent); font-weight: 400; font-size: 0.8em; diff --git a/client/src/components/Themer/ThemePreview.module.css b/client/src/components/Themer/ThemePreview.module.css index 2c54f42..11c8c64 100644 --- a/client/src/components/Themer/ThemePreview.module.css +++ b/client/src/components/Themer/ThemePreview.module.css @@ -25,4 +25,11 @@ .ColorPreview { width: 50px; height: 50px; +} + +@media (min-width: 340px) { + .ColorPreview { + width: 40px; + height: 40px; + } } \ No newline at end of file diff --git a/client/src/components/Themer/Themer.module.css b/client/src/components/Themer/Themer.module.css index 6473c62..986f6c5 100644 --- a/client/src/components/Themer/Themer.module.css +++ b/client/src/components/Themer/Themer.module.css @@ -1,11 +1,17 @@ .ThemerGrid { width: 100%; display: grid; - grid-template-columns: 1fr 1fr; + grid-template-columns: 1fr; grid-auto-rows: 100px; } -@media (min-width: 900px) { +@media (min-width: 340px) { + .ThemerGrid { + grid-template-columns: 1fr 1fr; + } +} + +@media (min-width: 680px) { .ThemerGrid { grid-template-columns: 1fr 1fr 1fr; } diff --git a/client/src/components/UI/Buttons/ActionButton/ActionButton.module.css b/client/src/components/UI/Buttons/ActionButton/ActionButton.module.css new file mode 100644 index 0000000..7c7dbf6 --- /dev/null +++ b/client/src/components/UI/Buttons/ActionButton/ActionButton.module.css @@ -0,0 +1,31 @@ +.ActionButton { + /* background-color: var(--color-accent); */ + border: 1.5px solid var(--color-accent); + border-radius: 4px; + color: var(--color-primary); + padding: 5px 15px; + transition: all 0.3s; + display: flex; + justify-content: center; + align-items: center; + max-width: 250px; + margin-right: 10px; + margin-bottom: 20px; +} + +.ActionButton:hover { + background-color: var(--color-accent); + color: var(--color-background); + cursor: pointer; +} + +.ActionButtonIcon { + --size: 20px; + width: var(--size); + height: var(--size); + /* display: flex; */ +} + +.ActionButtonName { + display: flex; +} \ No newline at end of file diff --git a/client/src/components/UI/Buttons/ActionButton/ActionButton.tsx b/client/src/components/UI/Buttons/ActionButton/ActionButton.tsx new file mode 100644 index 0000000..9c9c335 --- /dev/null +++ b/client/src/components/UI/Buttons/ActionButton/ActionButton.tsx @@ -0,0 +1,35 @@ +import { Fragment } from 'react'; +import { Link } from 'react-router-dom'; + +import classes from './ActionButton.module.css'; +import Icon from '../../Icon/Icon'; + +interface ComponentProps { + name: string; + icon: string; + link?: string; + handler?: () => void; +} + +const ActionButton = (props: ComponentProps): JSX.Element => { + const body = ( + +
+ +
+
+ {props.name} +
+
+ ); + + if (props.link) { + return ({body}) + } else if (props.handler) { + return (
{body}
) + } else { + return (
{body}
) + } +} + +export default ActionButton; \ No newline at end of file diff --git a/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.tsx b/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.tsx index 5b9a7bd..8fd2a19 100644 --- a/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.tsx +++ b/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.tsx @@ -1,12 +1,17 @@ +import { Link } from 'react-router-dom'; + import classes from './SectionHeadline.module.css'; interface ComponentProps { title: string; + link: string } const SectionHeadline = (props: ComponentProps): JSX.Element => { return ( -

{props.title}

+ +

{props.title}

+ ) } diff --git a/client/src/components/UI/Icon/Icon.tsx b/client/src/components/UI/Icon/Icon.tsx index 3bdc420..2ea4350 100644 --- a/client/src/components/UI/Icon/Icon.tsx +++ b/client/src/components/UI/Icon/Icon.tsx @@ -11,7 +11,7 @@ const Icon = (props: ComponentProps): JSX.Element => { let iconPath = MDIcons[props.icon]; if (!iconPath) { - console.log('icon not found'); + console.log(`Icon ${props.icon} not found`); iconPath = MDIcons.mdiCancel; } @@ -19,7 +19,7 @@ const Icon = (props: ComponentProps): JSX.Element => { - ) + ) } export default Icon; \ No newline at end of file diff --git a/client/src/components/UI/Modal/Modal.module.css b/client/src/components/UI/Modal/Modal.module.css new file mode 100644 index 0000000..200595b --- /dev/null +++ b/client/src/components/UI/Modal/Modal.module.css @@ -0,0 +1,21 @@ +.Modal { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + z-index: 100; + display: flex; + justify-content: center; + align-items: center; +} + +.ModalClose { + background-color: rgba(0, 0, 0, 0); + visibility: hidden; +} + +.ModalOpen { + background-color: rgba(0, 0, 0, 0.7); + visibility: visible; +} \ No newline at end of file diff --git a/client/src/components/UI/Modal/Modal.tsx b/client/src/components/UI/Modal/Modal.tsx new file mode 100644 index 0000000..da350dd --- /dev/null +++ b/client/src/components/UI/Modal/Modal.tsx @@ -0,0 +1,19 @@ +import classes from './Modal.module.css'; +import Icon from '../Icon/Icon'; + +interface ComponentProps { + isOpen: boolean; + children: JSX.Element; +} + +const Modal = (props: ComponentProps): JSX.Element => { + const modalClasses = [classes.Modal, props.isOpen ? classes.ModalOpen : classes.ModalClose].join(' '); + + return ( +
+ {props.children} +
+ ) +} + +export default Modal; \ No newline at end of file diff --git a/client/src/index.css b/client/src/index.css index 24c1877..5f82a6f 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -27,7 +27,7 @@ body { a { color: var(--color-primary); text-decoration: none; - opacity: 0.75; + /* opacity: 0.75; */ } /* 320px — 480px: Mobile devices.