--- /dev/null
+const React = require('react');
+
+module.exports = ({ song, artist, album, link }) => {
+ return (
+ <a className="AlbumCard" href={link}>
+ <div
+ className="AlbumCard-Art"
+ style={{
+ backgroundImage: `url('./images/${album.replace(/\s/g, '-')}.jpg')`,
+ }}
+ />
+ <div className="AlbumCard-Details">
+ <span className="AlbumCard-SongName">{song}</span>
+ <span className="AlbumCard-ArtistAndAlbum">
+ {artist} - {album}
+ </span>
+ </div>
+ </a>
+ );
+};
--- /dev/null
+const React = require('react');
+
+module.exports = (props) => {
+ return (
+ <div className="HorizontalScroller">
+ <ul>
+ {props.children.map((item, i) => (
+ <li key={i}>{item}</li>
+ ))}
+ </ul>
+ </div>
+ );
+};
--- /dev/null
+const React = require('react');
+
+const HorizontalScroller = require('./HorizontalScroller');
+const AlbumCard = require('./AlbumCard');
+
+module.exports = (props) => {
+ return (
+ <div className="MusicalInterests">
+ <h2>Music I like</h2>
+ <HorizontalScroller>
+ <AlbumCard
+ song="Gepetto / Pinokkio"
+ artist="Trio Dhoore"
+ album="Momentum"
+ link="https://triodhoore.com/momentum"
+ />
+ <AlbumCard
+ song="The Offbeat Jig / Keep Dreaming"
+ artist="Trio Dhoore"
+ album="Parachute"
+ link="https://triodhoore.com/parachute"
+ />
+ <AlbumCard
+ song="Impossible"
+ artist="Two Steps From Hell"
+ album="Unleashed"
+ link="https://music.apple.com/us/album/unleashed/1287310003"
+ />
+ <AlbumCard
+ song="NOW That's What I Call Polka!"
+ artist={'"Weird Al" Yankovic'}
+ album="Mandatory Fun"
+ link="https://www.weirdal.com/catalog/mandatory-fun/"
+ />
+ </HorizontalScroller>
+ </div>
+ );
+};
--- /dev/null
+.AlbumCard {
+ display: block;
+ color: inherit;
+ background-color: #eee;
+ box-shadow: 0 0.1em 1em rgba(0, 0, 0, 0.2);
+ border-radius: 0.5em;
+ width: 15em;
+ margin-right: 2em;
+}
+
+.AlbumCard-Art {
+ background-size: contain;
+ background-repeat: no-repeat;
+ width: 100%;
+ height: 15em;
+ border-radius: 0.5em 0.5em 0 0;
+}
+
+.AlbumCard-Details {
+ font-size: 0.8em;
+ padding: 0.6em 0;
+}
+
+.AlbumCard-SongName {
+ display: block;
+ padding-bottom: 0.2em;
+}
+
+.AlbumCard-ArtistAndAlbum {
+ font-weight: 400;
+}
header h1 {
font-size: var(--Hero-headerSize);
padding-bottom: 1em;
+ font-weight: 900;
}
header p {
padding: 2em;
}
- h1 {
+ header h1 {
width: 0;
}
}
--- /dev/null
+.HorizontalScroller {
+ width: 100%;
+}
+
+.HorizontalScroller ul {
+ list-style-type: none;
+ white-space: nowrap;
+ overflow-x: scroll;
+}
+
+.HorizontalScroller li {
+ display: inline-block;
+}
.Menu {
+ color: #333;
width: 20em;
height: 100vh;
max-width: 100%;
border-radius: 1em 0 0 1em;
padding: 2em;
background-color: #fff;
+ box-shadow: 0 0 0 rgba(0, 0, 0, 0.2);
+ transition: box-shadow 0.2s;
+}
+
+.isNavOpen .Menu-Body {
+ box-shadow: 0 0 1em rgba(0, 0, 0, 0.2);
}
.Menu h3 {
margin: 1em 0;
}
+.Menu a:hover {
+ box-shadow: 0 3px;
+}
+
@media (max-width: 25em) {
.Menu {
width: 100%;
--- /dev/null
+@import url('./horizontalScroller.css');
+@import url('./albumCard.css');
+
+.MusicalInterests {
+ background: #ddd;
+ padding: 4em 0;
+ text-align: center;
+ color: rgba(0, 0, 0, 0.6);
+}
+
+.MusicalInterests h2 {
+ font-size: 1.5em;
+ padding-bottom: 1em;
+}
+
+.MusicalInterests .HorizontalScroller ul {
+ padding: 1em 4em;
+}
+
+@media (max-width: 40em) {
+ .MusicalInterests .HorizontalScroller ul {
+ padding: 1em 2em;
+ }
+}
const Hero = require('./components/Hero');
const Menu = require('./components/Menu');
+const MusicalInterests = require('./components/MusicalInterests');
ReactDom.render(
<>
'\u2606 Living in Nashville, TN',
]}
/>
+ <MusicalInterests />
</>,
document.querySelector('#app')
);
@import url('https://fonts.larson.zone/inter/index.css');
@import url('./components/hero.css');
@import url('./components/menu.css');
+@import url('./components/musicalInterests.css');
* {
font-family: inherit;
font-family: inter, -apple-system, Roboto, 'Helvetica Neue', sans-serif;
font-weight: bold;
font-size: 1.5em;
- background: #ddd;
- color: #333;
}
a {
color: #46f;
}
-a:hover {
- box-shadow: 0 3px;
-}
-
@media (max-width: 45em) {
body {
font-size: 1em;