Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design-handoff | Yoga Studio | UX collab #56

Open
wants to merge 75 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
97b7439
start the file
jingh999 Apr 23, 2024
55d6c49
components
jingh999 Apr 23, 2024
ffa3f11
Add font and stylesheet links in index.html
kathinka Apr 23, 2024
2be1d7c
Update Tailwind CSS stylesheet link in index.html as it had an error
kathinka Apr 23, 2024
f721f46
Header
jingh999 Apr 23, 2024
9db2ec7
Update package.json and index.css, and refactor Copy.jsx and Reviews.jsx
kathinka Apr 23, 2024
32559e0
added basic footer with working translation english/swedish
katarinasj Apr 24, 2024
18db402
CSS style
jingh999 Apr 24, 2024
415bce2
button style
jingh999 Apr 24, 2024
3a8347e
Merge branch 'main' of https://github.com/jingh999/w12-project-design…
kathinka Apr 24, 2024
bc882b2
added some styling for phone and tablet
katarinasj Apr 24, 2024
8ea9e9c
Update Tailwind CSS configuration in tailwind.config.js
kathinka Apr 24, 2024
3d29447
finished translation for footer
katarinasj Apr 25, 2024
cb58d39
added pictures
katarinasj Apr 25, 2024
a6cfe7e
changed language buttons
katarinasj Apr 25, 2024
50f19c4
main image height
jingh999 Apr 25, 2024
22fa149
Merge pull request #1 from jingh999/Header
jingh999 Apr 25, 2024
b2a9fea
Merge branch 'main' into reviews
jingh999 Apr 25, 2024
624bce1
Merge pull request #2 from jingh999/reviews
jingh999 Apr 25, 2024
5ac5e1f
Merge branch 'main' into footer
jingh999 Apr 25, 2024
91610a2
Merge pull request #3 from jingh999/footer
jingh999 Apr 25, 2024
93926db
Fix weird quotes
jingh999 Apr 25, 2024
b674858
Update Tailwind CSS configuration and styles in the project
kathinka Apr 25, 2024
ceb7edc
Update Tailwind CSS configuration and styles in the project - finish …
kathinka Apr 25, 2024
d74cdc4
fixed imagepaths and added philosophy, and refactor Copy.jsx and Revi…
kathinka Apr 25, 2024
e571a11
added text and some basic styling
katarinasj Apr 26, 2024
70eb344
css
jingh999 Apr 26, 2024
39754b8
added some margins because of overlapping issue
katarinasj Apr 26, 2024
7d38186
Merge branch 'main' of github.com:jingh999/w12-project-design-handoff…
katarinasj Apr 26, 2024
21d9cf7
added some margins because of overlapping issue
katarinasj Apr 26, 2024
d9fdef8
text responsive
jingh999 Apr 26, 2024
025a0fb
Merge branch 'strength'
katarinasj Apr 26, 2024
823c6dc
changed mistake in importing header
katarinasj Apr 26, 2024
8b35bfe
Refactor image paths, add Philosophy component, and update styles in …
kathinka Apr 26, 2024
da944f0
removed todolist
kathinka Apr 26, 2024
669469b
Merge branch 'main' of https://github.com/jingh999/w12-project-design…
kathinka Apr 26, 2024
790a13b
typo in tailwind config
kathinka Apr 26, 2024
b0d5608
tailwind
jingh999 Apr 26, 2024
bc0b455
update styles, and fix overlapping issue in Philosophy and Reviews c…
kathinka Apr 26, 2024
456c2b7
Update favicon and manifest links in index.html
kathinka Apr 26, 2024
1f6edc1
tailwind
jingh999 Apr 26, 2024
db14938
Update styles in tailwind.config.js, Reviews.css, index.css, and Phil…
kathinka Apr 26, 2024
6170359
added hero component suggestion and did some overall tweaks
kathinka Apr 26, 2024
c60cd44
added responsiveness to footer
katarinasj Apr 27, 2024
d3fc427
responsive
jingh999 Apr 28, 2024
f3d7ece
Merge branch 'main' into new-header
jingh999 Apr 28, 2024
904ced9
Merge pull request #4 from jingh999/new-header
jingh999 Apr 28, 2024
8019300
Merge branch 'main' into reviewstyles
jingh999 Apr 28, 2024
5b6af46
Merge branch 'main' into reviewstyles
jingh999 Apr 28, 2024
472b509
Merge pull request #5 from jingh999/reviewstyles
jingh999 Apr 28, 2024
3984df4
hero image margin
jingh999 Apr 28, 2024
7021dac
added some more styling for Footer and Strength
katarinasj Apr 28, 2024
3ca8caf
Merge branch 'main' of github.com:jingh999/w12-project-design-handoff…
katarinasj Apr 28, 2024
4d598e2
merge in header and tweaks
kathinka Apr 28, 2024
0bbde3f
fixed word wrap bug in safari
kathinka Apr 28, 2024
e4f082c
added leading tp copy - fixed sidescrolling /overflow issue on smalle…
kathinka Apr 28, 2024
e422fa4
Refactor component imports and update content in App.jsx, Copy.jsx, H…
kathinka Apr 28, 2024
b8bb267
Refactor Footer component and fix language select option in Footer.jsx
kathinka Apr 28, 2024
bd23c2f
added clickable links to scroll on hero text , and links that go nowh…
kathinka Apr 28, 2024
94b753d
Fix links and make text and images clickable in Hero.jsx
kathinka Apr 28, 2024
d107ed8
Fix margins after getting spesific instructions in Philosophy.jsx and…
kathinka Apr 28, 2024
df2158a
added alt text to images to improve seo
kathinka Apr 28, 2024
993721c
Merge branch 'main' of https://github.com/jingh999/w12-project-design…
kathinka Apr 28, 2024
6864944
added copyright to footer and cleaned up some code
katarinasj Apr 28, 2024
6377f4a
fixed tailwind config file
kathinka Apr 29, 2024
8344d5f
small tweaks
kathinka Apr 29, 2024
01d7632
Merge remote-tracking branch 'w12-collab/main'
kathinka Apr 29, 2024
92144b5
Merge remote-tracking branch 'w12-collab/main' into final
kathinka Apr 29, 2024
46c184d
Merge branch 'final'
kathinka Apr 29, 2024
fdfc8bb
Update App.jsx
kathinka Apr 29, 2024
5cd2e4c
Update Philosophy.jsx with some padding to align it
kathinka Apr 29, 2024
aac00e1
app style remove
jingh999 Apr 29, 2024
48c920f
clean files
jingh999 Apr 29, 2024
913f16d
fontsize and style
jingh999 Apr 29, 2024
b3262b7
changed margins and added links
katarinasj Apr 29, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,6 @@ module.exports = {
'warn',
{ allowConstantExport: true },
],
'react/prop-types': "off"
},
}
20 changes: 17 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta name="description"
content="Y Studio - An exclusive yoga studio in central Stockholm or other bigger city, specialized in ashtanga yoga.">
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="apple-touch-icon" sizes="180x180" href="./src/assets/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="./src/assets/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="./src/assets/favicon-16x16.png">
<link rel="manifest" href="/src/site.webmanifest">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Music Releases - Project - Week 5</title>

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap" rel="stylesheet">
<title>Y Studio</title>
</head>

<body>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>

</html>
12 changes: 11 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,33 @@
"version": "0.0.0",
"type": "module",
"scripts": {
"css-build": "postcss src/index.css -o dist/index.css",
"dev": "vite",
"build": "vite build",
"lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"i18next": "^23.11.2",
"postcss-cli": "^11.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react-bootstrap": "^2.10.2",
"react-dom": "^18.2.0",
"react-i18next": "^14.1.1",
"react-router-dom": "^6.23.0",
"react-scroll": "^1.9.0"
},
"devDependencies": {
"@types/react": "^18.2.15",
"@types/react-dom": "^18.2.7",
"@vitejs/plugin-react": "^4.0.3",
"autoprefixer": "^10.4.19",
"eslint": "^8.45.0",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.3",
"postcss": "^8.4.38",
"tailwindcss": "^3.4.3",
"vite": "^4.4.5"
}
}
6 changes: 6 additions & 0 deletions postcss.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}
File renamed without changes
9 changes: 9 additions & 0 deletions public/assets/main-image.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/assets/menu-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/assets/search-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/classes.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/images/leftblob.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/location.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/philosophy.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions public/images/rightblob.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions public/images/strength1.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions public/images/strength2.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions public/images/strength3.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 0 additions & 1 deletion public/vite.svg

This file was deleted.

25 changes: 23 additions & 2 deletions src/App.jsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
import { Footer } from "./components/Footer";
import { Hero } from "./components/Hero";
import { Strength } from "./components/Strength";
import { Reviews } from "./components/Reviews";
import { Philosophy } from "./components/Philosophy";
import { articles as articlesData } from './components/Copy';
import { customerReviews as reviewData } from './components/Copy';
import { mainText as mainData } from './components/Copy';
import { subText as subData } from './components/Copy';
import leftblob from "/images/leftblob.svg";
import rightblob from "/images/rightblob.svg";
import mainImg from "/assets/main-image.svg"

export const App = () => {
return <div>Find me in src/app.jsx!</div>;
};
return (
<div>
<Hero heroImg={mainImg} mainText={mainData} subText={subData} />
<Reviews customerReviews={reviewData} leftBlob={leftblob} rightBlob={rightblob} />
<Philosophy articles={articlesData} />
<Strength />
<Footer />
</div>
)
}
Binary file added src/assets/android-chrome-192x192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/android-chrome-512x512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/favicon.ico
Binary file not shown.
25 changes: 25 additions & 0 deletions src/components/Copy.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
export const customerReviews = ['"High quality yoga classes with skilled teachers"', '"I really appreciate their flexible schedules"', '"These classes are tough – and really get the work done"'];

export const articles = [
{
title: "Our philosophy",
copy: "We believe in your power within. But sometimes it needs a little help.",
image: "./images/philosophy.jpg",
},
{
title: "Our classes",
copy: "We focus on Ashtanga yoga, a physically demanding kind of yoga.",
image: "./images/classes.jpg",
}
,

{
title: "Our locations",
copy: "Choose between any of our high-end yoga studios for your exercise.",
image: "./images/location.jpg",
},
]

export const mainText = "Find your power";

export const subText = "Anywhere. Anytime.";
116 changes: 116 additions & 0 deletions src/components/Footer.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
import { useTranslation } from "react-i18next"

export const Footer = () => {
const { t, i18n } = useTranslation()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is actually super cool! Even cooler if you had implemented for the whole page and not only limited for the footer 😉


return (
<footer className="bottom-0 mt-2 w-full font-Inter text-darkblue">
<section>
<div className="bg-lightblue p-6 text-center">
<h2 className="text-lg pb-1">{t("footer.join")}</h2>
<input type="text" placeholder={t("footer.placeholder")} className="bg-lightblue border border-darkblue py-0.5 rounded-2xl text-center text-darkblue max-sm:w-3/5"/>
<button className=" bg-steelblue px-4 py-0.5 rounded-3xl font-semibold transition hover:text-beige ml-2">{t("footer.sign")}</button>
</div>

<div className="flex flex-col gap-2 text-center bg-steelblue p-4 desktop:hidden">
<label className="text-lg font-semibold">{t("footer.studio")}</label>
<ul className="flex flex-col">
<li>{t("footer.office")}</li>
<li>Stadsgatan 4</li>
<li>111 11 Stockholm</li>
<li>+46 1234</li>
<li>[email protected]</li>
</ul>
</div>

<div className="text-center bg-steelblue p-4 desktop:hidden">
<p className="text-lg font-semibold">{t("footer.shop")}</p>

<nav className="mt-1">
<ul className="gap-2">
<li>
<a className="transition hover:text-beige" href="/">
{t("footer.props")}
</a>
</li>

<li>
<a className="transition hover:text-beige" href="/">
{t("footer.clothing")}
</a>
</li>

<li>
<a className="transition hover:text-beige" href="/">
{t("footer.reading")}
</a>
</li>
</ul>
</nav>
</div>

<div className="text-center bg-steelblue p-4 desktop:hidden">
<p className="text-lg font-semibold">{t("footer.privacy")}</p>

<nav className="mt-1">
<ul className="gap-2">
<li>
<a className="transition hover:text-beige" href="/">
{t("footer.conditions")}
</a>
</li>
</ul>
</nav>
</div>

<div className="bg-steelblue w-full desktop:flex desktop:items-center desktop:justify-center p-1">
<ul className="hidden desktop:flex flex-row justify-center mb-2 space-y-2 lg:mb-0 sm:space-y-0 sm:space-x-20">
<li>
<a href="/" className="transition hover:text-beige">{t("footer.about")}</a>
</li>
<li>
<a href="/" className="transition hover:text-beige">{t("footer.contact")}</a>
</li>
<li>
<a href="/" className="transition hover:text-beige">{t("footer.shop")}</a>
</li>
<li>
<a href="/" className="transition hover:text-beige">{t("footer.privacy")}</a>
</li>
</ul>

<div className="text-center desktop:mb-2 desktop:ml-10">
<select name="" id="" value={i18n.language} onChange={(e) => i18n.changeLanguage(e.target.value)} className="bg-steelblue border-4 border-darkblue rounded-2xl p-1">
<option value="en">{t("footer.en")}</option>
<option value="sv">{t("footer.sw")}</option>
</select>
</div>
</div>

<div className="bg-steelblue text-center py-2 desktop:text-left desktop:py-0">
<p className="text-xs text-darkblue md:text-sm">Copyright &copy; 2024 Y Studio Stockholm</p>
</div>
</section>
</footer>
)
}

/*<div className="bg-steelblue p-6">
<select name="" id="" value={i18n.language} onChange={(e) => i18n.changeLanguage(e.target.value)} className="bg-steelblue border-none">
<option value="" disabled selected>{t("footer.select")}</option>
<option value="en">{t("footer.en")}</option>
<option value="sv">{t("footer.sw")}</option>
</select>
</div>*/

/*<div className="bg-steelblue text-center sm:text-left p-6">
<button onClick={() => changeLanguage("en")} className="border-2 border-beige text-beige transition hover:text-darkblue hover:border-darkblue">{t("footer.en")}</button>
<button onClick={() => changeLanguage("sv")} className="border-2 border-beige text-beige transition hover:text-darkblue hover:border-darkblue ml-2">{t("footer.sw")}</button>
</div>*/

/*const changeLanguage = (language) => {
i18n.changeLanguage(language)
}*/


/* <option value="" selected disabled>{t("footer.select")}</option>*/
Comment on lines +98 to +116

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't forget to delete not used code and comments

64 changes: 64 additions & 0 deletions src/components/Header/Booking.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { useState } from "react";

export const Booking = () => {
const [selectedDateTime, setSelectedDateTime] = useState(null);
const [showDropdown, setShowDropdown] = useState(false);

const handleDateTimeSelection = (date, time) => {
const dateTime = `${date} at ${time}`;
setSelectedDateTime(dateTime);
setShowDropdown(false);
};

const toggleDropdown = () => {
setShowDropdown(!showDropdown);
};

return (
<div className="w-fit-content flex flex-col mt-24 items-start text-darkblue z-3">
<div>
<div className="mb-2 lg:mb-4 font-Roboto font-semibold text-2xl md:text-4xl lg:text-4xl xl:text-4xl">
Find your power
</div>

<div className="mb-4 lg:mb-5 font-roboto text-xl md:text-2xl lg:text-2xl">Anywhere. Anytime.</div>
<div className="relative inline-block">
<button
onClick={toggleDropdown}
className="py-2 px-4 bg-darkblue text-white rounded-full font-roboto font-semibold text-sm lg:text-base xl:text-lg"
>
{selectedDateTime ? `Book for ${selectedDateTime}` : "Book now"}
</button>

{showDropdown && (
<div className="absolute top-10 bg-white shadow-md rounded-md py-2 mt-1">
{/* Date picker */}
<input
type="date"
onChange={(e) =>
handleDateTimeSelection(e.target.value, e.target.value)
}
className="cursor-pointer py-1 px-4 hover:bg-gray-200"
/>
{/* Time picker */}
<select
onChange={(e) =>
handleDateTimeSelection(
e.target.parentElement.firstChild.value,
e.target.value
)
}
className="cursor-pointer py-1 px-4 hover:bg-gray-200"
>
<option value="">Select time</option>
<option value="9:00 AM">9:00 AM</option>
<option value="11:00 AM">11:00 AM</option>
<option value="2:00 PM">2:00 PM</option>
</select>
Comment on lines +35 to +57

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where is this function used? I cannot book anything 😢

</div>
)}
</div>
</div>
</div>
);
};
15 changes: 15 additions & 0 deletions src/components/Header/Header.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { Booking } from "./Booking"
import { Top } from "./Top"

export const Header = () => {
return (
<div className="top-0 w-full h-screen flex flex-col box-border bg-cover bg-center bg-no-repeat" style={{
backgroundImage: `url('/assets/main-image.svg')`,
}}>
<Top />
<div className="absolute bottom-1/2 left-1/4">
<Booking />
</div>
</div>
)
}
24 changes: 24 additions & 0 deletions src/components/Header/Top.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import searchIcon from '/assets/search-icon.svg'
import menuIcon from '/assets/menu-icon.svg'

export const Top = () => {
return (
<div className="z-2 flex flex-row justify-between items-center m-4 box-border">
<div className="flex flex-col justify-center items-center text-darkblue">
<div className="text-4xl md:7xl lg:text-8xl font-medium font-Roboto">Y</div>
<div className="text-sm md:text-2xl lg:text-3xl font-Roboto">Studio</div>
</div>

<div className="flex">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this div can be left out

<div className="flex flex-row gap-5">
<div className="cursor-pointer">
<img src={searchIcon} alt="search-icon" className="w-6 md:w-8 lg:w-10" />
</div>
<div className="cursor-pointer">
<img src={menuIcon} alt="menu-icon" className="w-6 md:w-8 lg:w-10" />
</div>
</div>
</div>
</div>

)}
Loading