Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
314676d
feat: implement header layout
damian-k-dev Mar 3, 2026
99f730a
fix: lint issues with empty files
damian-k-dev Mar 3, 2026
c9ff358
style: adjust header button styles
damian-k-dev Mar 3, 2026
4486f77
feat: implement hero layout
damian-k-dev Mar 4, 2026
1fdd95e
refactor: exctract title into separate block
damian-k-dev Mar 4, 2026
8976cb4
fix: lint error with font
damian-k-dev Mar 4, 2026
89d0bff
style: adjust hero background position
damian-k-dev Mar 4, 2026
f62c823
feat: implement recommmend layout
damian-k-dev Mar 4, 2026
91799c2
fix: resolve Inter font lint error
damian-k-dev Mar 4, 2026
63c4fdf
style: add page title
damian-k-dev Mar 4, 2026
f78089a
fix: add margin between card elements
damian-k-dev Mar 5, 2026
c4d33e8
fix: export larger product images from Figma for product-card
damian-k-dev Mar 7, 2026
21686e6
fix: rename incorrect product-card-card class to product-card
damian-k-dev Mar 7, 2026
deb9a9b
refactor: replace header logo PNG with SVG
damian-k-dev Mar 7, 2026
7d89c87
fix: change header position from fixed to absolute to improve UX
damian-k-dev Mar 7, 2026
65bafa9
refactor: move logo width from img to logo element
damian-k-dev Mar 7, 2026
4c0c184
fix: correct sound waves img extension from svg to png
damian-k-dev Mar 7, 2026
e740297
refactor: grouped shared styles for call and menu-toggle
damian-k-dev Mar 7, 2026
476dfd6
refactor: replace header icons PNG to SVG
damian-k-dev Mar 7, 2026
134c384
fix: make product card responsive
damian-k-dev Mar 7, 2026
4b11bf3
refactor: convert font size px to rem
damian-k-dev Mar 7, 2026
c1a6098
style: update adjust line-height values for title
damian-k-dev Mar 9, 2026
ca74ae2
feat: implement recommended layout
damian-k-dev Mar 9, 2026
826579f
refactor: simplify section layout
damian-k-dev Mar 9, 2026
9f7c641
feat: implement benefits layout
damian-k-dev Mar 9, 2026
46cfb6e
refactor: add modifier class for last section layout
damian-k-dev Mar 11, 2026
2304749
feat: add media queries breakpoint mixin
damian-k-dev Mar 11, 2026
482e548
fix: restore correct line-height for title
damian-k-dev Mar 11, 2026
819608c
feat: implement contact layout
damian-k-dev Mar 11, 2026
58a8f43
feat: add app.js with handFormSubmit function
damian-k-dev Mar 11, 2026
eb8ef84
add missing index.html to contact layout
damian-k-dev Mar 11, 2026
c188477
feat: implement footer layout
damian-k-dev Mar 11, 2026
42e1225
fix: add type="module" to script tag
damian-k-dev Mar 11, 2026
795437f
refactor: remove duplicate script and merge logic into main script
damian-k-dev Mar 11, 2026
faa07c0
refactor: remove duplicate app.js
damian-k-dev Mar 11, 2026
6f260ab
feat: implement sliding menu
damian-k-dev Mar 12, 2026
a629157
feat: make header responsive
damian-k-dev Mar 12, 2026
d066ca4
fix: restore hover effect for call icon
damian-k-dev Mar 12, 2026
5654e64
feat: make section responsive
damian-k-dev Mar 12, 2026
307db7f
style: remove duplicate styles for section
damian-k-dev Mar 12, 2026
b26f25a
feat: make hero responsive
damian-k-dev Mar 13, 2026
39226ac
feat: make recommended responsive and simplify structure
damian-k-dev Mar 13, 2026
acd03ac
feat: make category-card responsive
damian-k-dev Mar 13, 2026
6874265
fix: correct .section--last modifier and remove duplicated styles
damian-k-dev Mar 13, 2026
5da2f7c
feat: make benefits responsive
damian-k-dev Mar 13, 2026
ca42d11
feat: add base.scss for global styles
damian-k-dev Mar 13, 2026
c29640f
fix: correct category-card reverse grid modifier on small screens
damian-k-dev Mar 13, 2026
90688f9
feat: add hover effect to category card images
damian-k-dev Mar 14, 2026
46923d6
feat: add favicon
damian-k-dev Mar 14, 2026
dd6b598
feat: add typography tokens
damian-k-dev Mar 18, 2026
0d3947e
refactor: replace hardcoded typography values with variables
damian-k-dev Mar 18, 2026
b00c67b
fix: prevent page reload on form submit
damian-k-dev Apr 20, 2026
571514e
fix: remove horizontal scroll on tablet version
damian-k-dev Apr 20, 2026
71a54f4
fix: correct hover and active states
damian-k-dev Apr 20, 2026
ede9aa2
fix: disable body scroll when menu is open
damian-k-dev Apr 20, 2026
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
374 changes: 372 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@
name="viewport"
content="width=device-width, initial-scale=1.0"
/>
<title>Miami</title>
<title>Bose | Headphones, speakers</title>
<link
rel="shortcut icon"
href="./src/images/favicon.ico"
/>
<link
rel="stylesheet"
href="src/styles/main.scss"
Expand All @@ -17,6 +21,372 @@
></script>
</head>
<body>
<h1>Miami</h1>
<div class="page-content">
<header
class="header"
id="header"
>
<a
href="#header"
class="header__logo"
>
<img
src="./src/images/bose-logo-icon.svg"
alt="bose-logo"
/>
</a>

<div class="header__actions">
<a
href="tel:+1 234 5555-55-55"
class="header__call"
aria-label="Call us"
>
<span class="header__phone-number">+1 234 5555-55-55</span>
<img
class="header__call-icon"
src="./src/images/call-icon.svg"
alt=""
/>
</a>
<a
href="#menu"
class="header__menu-toggle"
aria-label="Open menu"
></a>
</div>
</header>
<nav
id="menu"
class="navigation"
>
<div class="navigation__actions-wrapper">
<a
href="#header"
class="navigation__logo"
>
<img
class="navigation__logo-img"
src="./src/images/bose-logo-icon.svg"
alt="Bose logo"
/>
</a>
<a
href="#"
class="navigation__close-menu"
aria-label="Close menu"
>
<img
class="navigation__close-icon"
src="./src/images/close-menu-icon.svg"
alt=""
/>
</a>
</div>
<ul class="navigation__list">
<li class="navigation__item">
<a
class="navigation__link"
href="#"
>
home
</a>
</li>
<li class="navigation__item">
<a
class="navigation__link"
href="#"
>
recommended
</a>
</li>
<li class="navigation__item">
<a
class="navigation__link"
href="#"
>
categories
</a>
</li>
<li class="navigation__item">
<a
class="navigation__link"
href="#"
>
how to buy
</a>
</li>
<li class="navigation__item">
<a
class="navigation__link"
href="#"
>
contacts
</a>
</li>
</ul>
<div class="navigation__order-info">
<a
class="navigation__phone"
href="tel:+1 234 5555-55-55"
>
+1 234 5555-55-55
</a>
<a
href="tel:+1 234 5555-55-55"
class="navigation__order-link"
>
call to order
</a>
</div>
</nav>
<main class="main">
<section class="hero">
<img
class="hero__sound-waves-pic"
src="./src/images/sound-waves.png"
alt=""
/>
<h1 class="title">
<span class="title__line">The world shades.</span>
<span class="title__line">Your music shines.</span>
</h1>
</section>
<section class="section section--first recommended">
<h2 class="title title--secondary">Recommended</h2>
<div class="recommended__cards">
<article class="product-card">
<img
class="product-card_image"
src="./src/images/portable-smart-speaker.png"
alt="bose portable smart speaker"
/>
<p class="product-card__title">Bose portable Smart speaker</p>
<p class="product-card__type">Smart home</p>
<p class="product-card__price">$ 149.00</p>
</article>
<article class="product-card">
<img
class="product-card_image"
src="./src/images/soundlink-flex-speaker.png"
alt="soundlink flex bluetooth speaker"
/>
<p class="product-card__title">
SoundLink Flex Bluetooth speaker
</p>
<p class="product-card__type">Portable bluetooth</p>
<p class="product-card__price">$ 149.00</p>
</article>
<article class="product-card">
<img
class="product-card_image"
src="./src/images/soundlink-color-speaker.png"
alt="soundlink color bluetooth speaker"
/>
<p class="product-card__title">
SoundLink Color Bluetooth speaker II
</p>
<p class="product-card__type">Portable bluetooth</p>
<p class="product-card__price">$ 129.00</p>
</article>
</div>
</section>
<section class="section category">
<h2 class="title title--secondary">
Browse Bose products by
<br />
category
</h2>
<div class="category__list">
<a
href="#"
class="category-card"
>
<div class="category-card__images">
<img
class="category-card__image"
src="./src/images/picture-1.jpg"
alt=""
/>
<img
class="category-card__image"
src="./src/images/picture-2.jpg"
alt=""
/>
</div>
<h3 class="category-card__title">Headphones & earbuds</h3>
</a>
<a
href="#"
class="category-card category-card--offset-left"
>
<div class="category-card__images">
<img
class="category-card__image"
src="./src/images/picture-3.jpg"
alt=""
/>
<img
class="category-card__image"
src="./src/images/picture-4.jpg"
alt=""
/>
</div>
<h3 class="category-card__title">Speakers</h3>
</a>
<a
href="#"
class="category-card category-card--offset-right category-card--reverse-grid"
>
<div class="category-card__images">
<img
class="category-card__image"
src="./src/images/picture-5.jpg"
alt=""
/>
<img
class="category-card__image"
src="./src/images/picture-6.jpg"
alt=""
/>
</div>
<h3 class="category-card__title">Audio sunglasses</h3>
</a>
</div>
<a
href="#"
class="button"
>
View all
</a>
</section>
<section class="benefits section">
<h2 class="title title--secondary">
Why buy direct
<br />
from Bose
</h2>
<div class="benefits__content">
<ul class="benefits__list">
<li class="benefits__item">Free 2-day shipping and returns</li>
<li class="benefits__item">90-day risk-free trial</li>
<li class="benefits__item">World class customer service</li>
<li class="benefits__item">My Bose account management</li>
</ul>
<p class="benefits__text">
A great product is more than what’s in the box. It’s a promise of
premium performance, world-class support, and everything you
expect from a trusted brand. It’s just one of many reasons why
you’ll shop with confidence on Bose.com.
</p>
</div>
</section>
<section class="section contact">
<h2 class="title title--secondary">Contact us</h2>
<div class="contact__content">
<form
action=""
class="form-contact"
>
<div class="form-contact__item">
<label
for="name"
class="form-contact__label"
>
Name
</label>
<input
type="text"
name="name"
class="form-contact__input"
id="name"
placeholder="Name"
required
/>
</div>
<div class="form-contact__item">
<label
for="email"
class="form-contact__label"
>
Email
</label>
<input
type="email"
name="email"
class="form-contact__input"
id="email"
placeholder="Email"
required
/>
</div>
<div class="form-contact__item">
<label
for="message"
class="form-contact__label"
>
Message
</label>
<textarea
name="message"
class="form-contact__textarea"
id="message"
placeholder="Message"
required
></textarea>
</div>
<button
class="button button--secondary form-contact__button"
type="submit"
>
Send
</button>
</form>
<address class="contact__info">
<div class="contact__item">
<p class="contact__label">Phone</p>
<a
class="contact__link"
href="tel:+1 234 5555-55-55"
>
+1 234 5555-55-55
</a>
</div>
<div class="contact__item">
<p class="contact__label">Email</p>
<a
class="contact__link"
href="mailto:[email protected]"
>
[email protected]
</a>
</div>
<div class="contact__item">
<p class="contact__label">Address</p>
<a
href="https://www.google.com/maps?q=400+N+1st+Ave,+Minneapolis,+MN+55401,+USA"
target="_blank"
rel="noopener"
class="contact__address"
>
400 first ave.
<br />
suite 700
<br />
Minneapolis, MN 55401
</a>
</div>
</address>
</div>
</section>
<footer class="section section--last footer">
<img
class="footer__image"
src="./src/images/woman-laying-down-and-listening.jpg"
alt="woman laying down and listening to music"
/>
</footer>
</main>
</div>
</body>
</html>
3 changes: 3 additions & 0 deletions src/blocks/_base.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
html {
scroll-behavior: smooth;
}
Loading
Loading