diff --git a/src/apps/admin/components/Sidebar.tsx b/src/apps/admin/components/Sidebar.tsx index 4b0dd49..f91158e 100644 --- a/src/apps/admin/components/Sidebar.tsx +++ b/src/apps/admin/components/Sidebar.tsx @@ -264,8 +264,8 @@ export const Sidebar = (props: { className?: string }) => { {isDropdown1Open && (
- Track Queue - Search + Track Queue + Search
)} diff --git a/src/apps/admin/pages/Music.scss b/src/apps/admin/pages/Music.scss new file mode 100644 index 0000000..c8c175f --- /dev/null +++ b/src/apps/admin/pages/Music.scss @@ -0,0 +1,23 @@ +.musicTitle { + @include font-display('sm'); + color: var(--color-primary-contrast); + margin-bottom: 1vh; + width: fit-content; + text-shadow: 1px 3px 2px darkgrey; +} + +.music-page-switch { + @include font-label('sm', 300); + display: inline-block; + margin-bottom: 5vh; +} + +.music-page-link { + color: var(--color-primary-surface); +} + +.music-page-link:active, +.music-page-link:focus, +.music-page-link:focus-visible { + border-bottom: 2.5px solid #0a98b4 +} \ No newline at end of file diff --git a/src/apps/admin/pages/Music.tsx b/src/apps/admin/pages/Music.tsx new file mode 100644 index 0000000..0cd0579 --- /dev/null +++ b/src/apps/admin/pages/Music.tsx @@ -0,0 +1,22 @@ +import { Link, Outlet } from 'react-router-dom' +import './Music.scss' + +export const Music = () => { + return ( +
+
Music
+ + + Track Queue + {' '} + |{' '} + + Search Tracks + + +
+ +
+
+ ) +} diff --git a/src/apps/admin/pages/MusicQueue.scss b/src/apps/admin/pages/MusicQueue.scss new file mode 100644 index 0000000..309211a --- /dev/null +++ b/src/apps/admin/pages/MusicQueue.scss @@ -0,0 +1,22 @@ +.music-queue_container h1 { + @include font-headline('sm', 600); +} + +.music-queue_container { + display: flex; + flex-direction: column; + gap: 1%; +} + +.next_up_container { + display: flex; + flex-direction: column; + gap: 2vh; +} + +.recently_played_container { + margin-top: 2vh; + display: flex; + flex-direction: column; + gap: 2vh; +} \ No newline at end of file diff --git a/src/apps/admin/pages/MusicQueue.tsx b/src/apps/admin/pages/MusicQueue.tsx new file mode 100644 index 0000000..d2ba810 --- /dev/null +++ b/src/apps/admin/pages/MusicQueue.tsx @@ -0,0 +1,24 @@ +import { mockTrack } from 'src/mock' +import './MusicQueue.scss' +import { Track } from './Track' + +const track = mockTrack +export const MusicQueue = () => { + return ( +
+
+

Next Up

+ + + +
+
+

Recently Played

+ + + + +
+
+ ) +} diff --git a/src/apps/admin/pages/MusicSearch.scss b/src/apps/admin/pages/MusicSearch.scss new file mode 100644 index 0000000..69cce67 --- /dev/null +++ b/src/apps/admin/pages/MusicSearch.scss @@ -0,0 +1,52 @@ +.music-search-title { + @include font-headline('sm'); + padding-bottom: 2vh; +} + +.music-search-form * { + color: var(--color-primary-surface); + @include font-label('sm', 300); + width: 100%; +} + +.music-search-input { + border: 1px solid black; + border-radius: 5px; + opacity: 50%; + padding: 1vh 1vh 1vh 1vh; + height: 5vh; + width: 100%; +} + +.music-search-input:focus { + outline: none; +} + +.music-search-row { + display: block; + height: 2vh; + gap: 20px !important; +} + +.music-search-button-container { + grid-column: 11 / span 2 !important; +} + +.music-search-button { + height: 5vh; + outline: none; + border: none; + border-radius: 50px; + background-color: var(--color-primary-contrast); + color: var(--color-primary-on); +} + +.result-container { + margin-top: 8vh; +} + +.track-container { + display: flex; + flex-direction: column; + gap: 2vh; +} \ No newline at end of file diff --git a/src/apps/admin/pages/MusicSearch.tsx b/src/apps/admin/pages/MusicSearch.tsx new file mode 100644 index 0000000..ac53649 --- /dev/null +++ b/src/apps/admin/pages/MusicSearch.tsx @@ -0,0 +1,71 @@ +import { useState, type ChangeEvent, type FormEvent } from 'react' +import { mockTrack } from 'src/mock' +import './MusicSearch.scss' +import { Track } from './Track' + +const track = mockTrack +const trackArray = [track, track, track, track] +export const MusicSearch = () => { + const [inputs, setInputs] = useState({ track: '', album: '', artist: '' }) + + const handleChange = (event: ChangeEvent) => { + const name = event.target.name + const value = event.target.value + setInputs((values) => ({ ...values, [name]: value })) + } + + const handleSubmit = (event: FormEvent) => { + event.preventDefault() + } + + return ( +
+
Spotify Search
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
Results
+
+ {trackArray.map((track) => { + return + })} +
+
+
+ ) +} \ No newline at end of file diff --git a/src/apps/admin/routes.tsx b/src/apps/admin/routes.tsx index 6a3f935..c101401 100644 --- a/src/apps/admin/routes.tsx +++ b/src/apps/admin/routes.tsx @@ -1,7 +1,10 @@ -import type { RouteObject } from 'react-router-dom' +import { Outlet, type RouteObject } from 'react-router-dom' import { Dashboard } from './layout/Dashboard' import { Overview } from './pages' import { AdminBoard } from './pages/AdminBoard' +import { MusicSearch } from './pages/MusicSearch' +import { Music } from './pages/Music' +import { MusicQueue } from './pages/MusicQueue' export const adminOutlet = @@ -16,21 +19,21 @@ export const adminRoutes: RouteObject[] = [ }, { path: 'music', - element:
Music
, + element: , children: [ { path: 'search', - element:
Music Search
, + element: , }, { path: 'queue', - element:
Music Song Queue
, + element: , }, ], }, { path: 'jam-sessions', - element:
Jam Sessions
, + // element:
Jam Sessions
, children: [ { path: 'leaderboard',