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 && (
)}
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',