From 1a4789af4c484ffd0afab54394c64540e3abc735 Mon Sep 17 00:00:00 2001 From: Gavin McDonald Date: Thu, 24 Apr 2025 11:24:15 -0400 Subject: [PATCH] animate Settings and Notes --- app/[gameID]/page.tsx | 2 +- components/CopyButton.tsx | 2 +- components/Notes.tsx | 85 ++++++++++++++++++--------------------- components/Settings.tsx | 50 ++++++++++++----------- 4 files changed, 68 insertions(+), 71 deletions(-) diff --git a/app/[gameID]/page.tsx b/app/[gameID]/page.tsx index c69c71e..d7709da 100644 --- a/app/[gameID]/page.tsx +++ b/app/[gameID]/page.tsx @@ -106,7 +106,7 @@ export default function GamePage() { ))} - {cards.every(({ flipped }) => flipped) && } + flipped)} /> ) : null; } diff --git a/components/CopyButton.tsx b/components/CopyButton.tsx index 144c949..6d75865 100644 --- a/components/CopyButton.tsx +++ b/components/CopyButton.tsx @@ -34,7 +34,7 @@ export default function CopyButton({ Array.isArray(tooltip) && tooltip.length > 1 ? (copied ? tooltip[1] : tooltip[0]) : tooltip; return ( - - )} + const showNotes = show && open && (isDM || settings.notes); - {open && ( - setOpen((prev) => !prev)}> -
- note!.join('\n')).join('\n\n')} - className="absolute top-2 right-2 p-2 bg-black/30 hover:bg-black/50 rounded-full text-gray-200 hover:text-white" - /> -
- {notes.map((note, index) => ( -
-
- {note!.map((blurb, index) => ( -

{blurb}

- ))} -
- {index < notes.length - 1 &&
} + return ( +
+ + + setOpen((prev) => !prev)} + className={`transition-all duration-250 ${showNotes ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0'}`} + > +
+ note!.join('\n')).join('\n\n')} + className="absolute top-2 right-2 p-2 transition-all duration-250 bg-black/20 hover:bg-black/40 rounded-full text-gray-300 hover:text-white" + /> +
+ {notes.map((note, index) => ( +
+
+ {note!.map((blurb, index) => ( +

{blurb}

+ ))}
- ))} -
+ {index < notes.length - 1 &&
} +
+ ))}
-
- )} +
+
- ) : null; + ); } diff --git a/components/Settings.tsx b/components/Settings.tsx index 4d604d4..dcb5329 100644 --- a/components/Settings.tsx +++ b/components/Settings.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; -import { Settings as Gear, X } from 'lucide-react'; +import { Settings as Gear } from 'lucide-react'; import CopyButton from '@/components/CopyButton'; import Scrim from '@/components/Scrim'; @@ -78,29 +78,33 @@ export default function Settings({ gameData, changeAction }: SettingsProps) { ); - return open ? ( - setOpen((prev) => !prev)}> -
- - - - -
-
- ) : ( -
+ return ( +
+ setOpen((prev) => !prev)} + className={`transition-all duration-250 ${open ? 'pointer-events-auto opacity-100' : 'pointer-events-none opacity-0'}`} + > +
+ + + + +
+