diff --git a/client/public/index.html b/client/public/index.html index aa069f2..4b73f3a 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -24,6 +24,8 @@ work correctly both with client-side routing and a non-root public URL. Learn how to configure a non-root public URL by running `npm run build`. --> + + React App diff --git a/client/src/App.tsx b/client/src/App.tsx index bede25d..ec52781 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -21,7 +21,7 @@ const App = (): JSX.Element => { - + diff --git a/client/src/components/Apps/AppCard/AppCard.module.css b/client/src/components/Apps/AppCard/AppCard.module.css new file mode 100644 index 0000000..ae5e808 --- /dev/null +++ b/client/src/components/Apps/AppCard/AppCard.module.css @@ -0,0 +1,34 @@ +.AppCard { + width: 100%; + /* height: 50px; */ + /* max-width: 150px; */ + /* border: 1px solid red; */ + display: flex; + align-items: center; + margin-bottom: 20px; +} + +.AppCardIcon { + width: 40px; +} + +.AppCardDetails { + text-transform: uppercase; + /* display: flex; + flex-direction: column; + justify-content: center; */ +} + +.AppCardDetails h5 { + font-size: 1em; + font-weight: 500; + color: var(--color-primary); + margin-bottom: -8px; +} + +.AppCardDetails a { + color: var(--color-accent); + font-weight: 400; + font-size: 0.8em; + opacity: 1; +} \ No newline at end of file diff --git a/client/src/components/Apps/AppCard/AppCard.tsx b/client/src/components/Apps/AppCard/AppCard.tsx new file mode 100644 index 0000000..ec4518a --- /dev/null +++ b/client/src/components/Apps/AppCard/AppCard.tsx @@ -0,0 +1,18 @@ +import classes from './AppCard.module.css'; +import Icon from '../../UI/Icon/Icon'; + +const AppCard = (): JSX.Element => { + return ( +
+
+ +
+
+
plex
+ plex.example.com +
+
+ ) +} + +export default AppCard; \ No newline at end of file diff --git a/client/src/components/Apps/Apps.module.css b/client/src/components/Apps/Apps.module.css index e69de29..302fb5b 100644 --- a/client/src/components/Apps/Apps.module.css +++ b/client/src/components/Apps/Apps.module.css @@ -0,0 +1,28 @@ +.Apps { + display: grid; + grid-template-columns: repeat(1, 1fr); +} + +@media (min-width: 430px) { + .Apps { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 670px) { + .Apps { + grid-template-columns: repeat(3, 1fr); + } +} + +@media (min-width: 900px) { + .Apps { + grid-template-columns: repeat(4, 1fr); + } +} + +/* 320px — 480px: Mobile devices. +481px — 768px: iPads, Tablets. +769px — 1024px: Small screens, laptops. +1025px — 1200px: Desktops, large screens. +1201px and more — Extra large screens, TV. */ \ No newline at end of file diff --git a/client/src/components/Apps/Apps.tsx b/client/src/components/Apps/Apps.tsx index a8d16da..8084b25 100644 --- a/client/src/components/Apps/Apps.tsx +++ b/client/src/components/Apps/Apps.tsx @@ -1,16 +1,31 @@ -import { Link } from 'react-router-dom'; +import { Fragment } from 'react'; import classes from './Apps.module.css'; import { Container } from '../UI/Layout/Layout'; -import Headline from '../UI/Headline/Headline'; +import Headline from '../UI/Headlines/Headline/Headline'; +import AppCard from './AppCard/AppCard'; const Apps = (): JSX.Element => { return ( - - - settings - +
+ + + + + + + + + + + + + + + + +
) } diff --git a/client/src/components/UI/Headline/Headline.module.css b/client/src/components/UI/Headlines/Headline/Headline.module.css similarity index 62% rename from client/src/components/UI/Headline/Headline.module.css rename to client/src/components/UI/Headlines/Headline/Headline.module.css index f2646fb..268189a 100644 --- a/client/src/components/UI/Headline/Headline.module.css +++ b/client/src/components/UI/Headlines/Headline/Headline.module.css @@ -1,7 +1,10 @@ .HeadlineTitle { color: var(--color-primary); + font-weight: 700; } .HeadlineSubtitle { color: var(--color-primary); + margin-bottom: 20px; + font-weight: 400; } \ No newline at end of file diff --git a/client/src/components/UI/Headline/Headline.tsx b/client/src/components/UI/Headlines/Headline/Headline.tsx similarity index 77% rename from client/src/components/UI/Headline/Headline.tsx rename to client/src/components/UI/Headlines/Headline/Headline.tsx index 10276e9..bb70b65 100644 --- a/client/src/components/UI/Headline/Headline.tsx +++ b/client/src/components/UI/Headlines/Headline/Headline.tsx @@ -3,13 +3,13 @@ import classes from './Headline.module.css'; interface ComponentProps { title: string; - subtitle?: string; + subtitle?: string | JSX.Element; } const Headline = (props: ComponentProps): JSX.Element => { return ( -

{props.title}

+

{props.title}

{props.subtitle &&

{props.subtitle}

}
) diff --git a/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.module.css b/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.module.css new file mode 100644 index 0000000..357fdbd --- /dev/null +++ b/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.module.css @@ -0,0 +1,7 @@ +.SectionHeadline { + text-transform: uppercase; + color: var(--color-primary); + font-weight: 900; + font-size: 20px; + margin-bottom: 16px; +} \ 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 new file mode 100644 index 0000000..5b9a7bd --- /dev/null +++ b/client/src/components/UI/Headlines/SectionHeadline/SectionHeadline.tsx @@ -0,0 +1,13 @@ +import classes from './SectionHeadline.module.css'; + +interface ComponentProps { + title: string; +} + +const SectionHeadline = (props: ComponentProps): JSX.Element => { + return ( +

{props.title}

+ ) +} + +export default SectionHeadline; \ No newline at end of file diff --git a/client/src/components/UI/Layout/Layout.module.css b/client/src/components/UI/Layout/Layout.module.css index 0688765..6ad351e 100644 --- a/client/src/components/UI/Layout/Layout.module.css +++ b/client/src/components/UI/Layout/Layout.module.css @@ -1,4 +1,22 @@ .Container { width: 100%; - padding: var(--space-p-x); + padding: 20px; +} + +/* 320px — 480px: Mobile devices. +481px — 768px: iPads, Tablets. +769px — 1024px: Small screens, laptops. +1025px — 1200px: Desktops, large screens. +1201px and more — Extra large screens, TV. */ + +@media (min-width: 769px) { + .Container { + padding: 25px 40px; + } +} + +@media (min-width: 1201px) { + .Container { + padding: 50px 250px; + } } \ No newline at end of file diff --git a/client/src/index.css b/client/src/index.css index 4c67514..a08e967 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -2,6 +2,8 @@ margin: 0; padding: 0; box-sizing: border-box; + transition: all 0.3s; + user-select: none; } body { @@ -9,8 +11,26 @@ body { --color-primary: #EFF1FC; --color-accent: #6677EB; - --space-p-x: 16px; - background-color: var(--color-background); + /* font weights + light 300 + regular 400 + semi-bold 600 + bold 700 + extra-bold 800 + */ font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, Roboto, sans-serif; -} \ No newline at end of file + font-size: 14px; +} + +a { + color: var(--color-primary); + text-decoration: none; + opacity: 0.75; +} + +/* 320px — 480px: Mobile devices. +481px — 768px: iPads, Tablets. +769px — 1024px: Small screens, laptops. +1025px — 1200px: Desktops, large screens. +1201px and more — Extra large screens, TV. */ \ No newline at end of file