-
Notifications
You must be signed in to change notification settings - Fork 0
Various improvements #2
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| import { LoginForm } from "@/components/login-form" | ||
|
|
||
| export default function LoginPage() { | ||
| return ( | ||
| <div className="flex flex-col items-center justify-center min-h-screen"> | ||
| <div className="w-full max-w-sm md:max-w-3xl"> | ||
| <LoginForm /> | ||
| </div> | ||
| </div> | ||
| ) | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| import { SignupForm } from "@/components/signup-form" | ||
|
|
||
| export default function SignupPage() { | ||
| return ( | ||
| <div className="flex flex-col items-center justify-center min-h-screen"> | ||
| <div className="w-full max-w-sm md:max-w-3xl"> | ||
| <SignupForm /> | ||
| </div> | ||
| </div> | ||
| ) | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| import { auth } from "@/lib/auth"; | ||
| import { auth } from "@/lib/auth/auth"; | ||
| import { toNextJsHandler } from "better-auth/next-js"; | ||
|
|
||
| export const { POST, GET } = toNextJsHandler(auth); |
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,31 +1,39 @@ | ||
| import Image from "next/image"; | ||
| import SpotifyStatus from './SpotifyStatus'; | ||
| import SocialMediaLinks from './SocialMediaLinks'; | ||
| import Copyright from './Copyright'; | ||
| import SpotifyStatus from "./SpotifyStatus"; | ||
| import SocialMediaLinks from "./SocialMediaLinks"; | ||
| import Copyright from "./Copyright"; | ||
| import { ASSETS } from "@/lib/constants"; | ||
|
|
||
| export default function Footer() { | ||
| const baseUrl = "/svgs/"; | ||
|
|
||
| return ( | ||
| <footer className="relative max-w-5xl mx-auto w-full mb-3 flex flex-col rounded-2xl px-8 saturate-100 backdrop-blur-[10px] overflow-hidden bg-linear-to-t from-white/30 via-white/10 to-white/0 dark:from-black/30 dark:via-black/10 dark:to-black/0 shadow-xs"> | ||
| {/* Main content container */} | ||
| <div className="relative z-10 flex flex-col md:flex-row items-center md:justify-between w-full md:gap-0"> | ||
|
|
||
| {/* Left side: Spotify Logo and Status */} | ||
| <div className="flex items-center gap-2"> | ||
| <a href="https://open.spotify.com/user/223qjmi62hl4nilhilo6lsdea" target="_blank" rel="noopener noreferrer" className="cursor-pointer"> | ||
| <Image src={`${baseUrl}Spotify.svg`} alt="Spotify Logo" width={20} height={20} className="h-6 w-6" /> | ||
| <a | ||
| href={process.env.Spotify_URL!} | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| className="cursor-pointer" | ||
| > | ||
| <Image | ||
| src={ASSETS.spotifyIcon} | ||
| alt="Spotify Logo" | ||
| width={20} | ||
| height={20} | ||
| className="h-6 w-6" | ||
| /> | ||
| </a> | ||
| <SpotifyStatus /> | ||
| </div> | ||
|
|
||
| {/* Right side: Social Media Links */} | ||
| <SocialMediaLinks /> | ||
|
|
||
| </div> | ||
| <div className="relative flex justify-center items-center"> | ||
| <Copyright /> | ||
| </div> | ||
| </footer> | ||
| ); | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,21 +1,26 @@ | ||
| import Image from 'next/image'; | ||
| import { socialMedia } from '@/lib/socialMedia'; | ||
|
|
||
|
|
||
| export interface SocialMediaItem { | ||
| name: string; | ||
| url: string; | ||
| icon: string; | ||
| } | ||
| import Image from "next/image"; | ||
| import { socialMedia } from "@/lib/socialMedia"; | ||
|
|
||
| export default function SocialMediaLinks() { | ||
| return ( | ||
| <div className="flex flex-row justify-center items-center gap-4 p-4"> | ||
| {socialMedia.map((media) => ( | ||
| <a href={media.url} target="_blank" rel="noopener noreferrer" key={media.name} className="cursor-pointer"> | ||
| <Image src={media.icon} alt={`${media.name} Icon`} width={20} height={20} className="filter dark:invert" /> | ||
| <a | ||
| href={media.url} | ||
| target="_blank" | ||
| rel="noopener noreferrer" | ||
| key={media.name} | ||
| className="cursor-pointer" | ||
| > | ||
| <Image | ||
| src={media.icon} | ||
| alt={`${media.name} Icon`} | ||
| width={20} | ||
| height={20} | ||
| className="filter dark:invert" | ||
| /> | ||
| </a> | ||
| ))} | ||
| </div> | ||
| ); | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -1,26 +1,19 @@ | ||||||
| 'use client'; | ||||||
| import { useEffect, useState } from 'react'; | ||||||
| import { motion, AnimatePresence } from 'framer-motion'; | ||||||
| "use client"; | ||||||
| import { useEffect, useState } from "react"; | ||||||
| import { motion, AnimatePresence } from "framer-motion"; | ||||||
| import type { SpotifyStatus } from "@/lib/types"; | ||||||
|
|
||||||
| interface SpotifyStatus { | ||||||
| isListening: boolean; | ||||||
| trackName?: string; | ||||||
| artistName?: string; | ||||||
| message?: string; | ||||||
| itemType?: string; | ||||||
| } | ||||||
|
|
||||||
| export default function SpotifyStatus() { | ||||||
| export default function SpotifyStatusComponent() { | ||||||
|
||||||
| export default function SpotifyStatusComponent() { | |
| export default function SpotifyStatus() { |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| "use client"; | ||
| import { useState } from "react"; | ||
| import NavbarLinks from "./NavbarLinks"; | ||
|
|
||
| export default function MobileMenuToggle() { | ||
| const [isOpen, setIsOpen] = useState(false); | ||
|
|
||
| return ( | ||
| <> | ||
| <button | ||
| className="md:hidden text-foreground" | ||
| onClick={() => setIsOpen((prev) => !prev)} | ||
| aria-label={isOpen ? "Close menu" : "Open menu"} | ||
| aria-expanded={isOpen} | ||
| > | ||
| <svg className="w-8 h-8" fill="none" stroke="currentColor" strokeWidth={2.5} viewBox="0 0 24 24"> | ||
| <path | ||
| strokeLinecap="round" | ||
| strokeLinejoin="round" | ||
| d={isOpen ? "M6 18L18 6M6 6l12 12" : "M4 6h16M4 12h16M4 18h16"} | ||
| /> | ||
| </svg> | ||
| </button> | ||
|
|
||
| {isOpen && ( | ||
| <div className="absolute top-full left-0 right-0 z-50 md:hidden px-4 mt-2 animate-in fade-in slide-in-from-top-2 duration-300"> | ||
| <div className="py-4 flex flex-col bg-background border rounded-2xl shadow-xl w-full"> | ||
| <NavbarLinks | ||
| className="flex flex-col items-center space-y-4 w-full" | ||
| onLinkClick={() => setIsOpen(false)} | ||
| /> | ||
| </div> | ||
| </div> | ||
| )} | ||
| </> | ||
| ); | ||
| } | ||
|
Comment on lines
+5
to
+37
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The environment variable
process.env.Spotify_URLis used here but there's no evidence this variable exists or is set. Based on the constants file and the removed callback route, this should likely use theEXTERNAL_URLS.spotifyProfileconstant instead to maintain consistency with the centralization effort in this PR.