@@ -40,6 +40,7 @@ import { Badge } from "./ui/badge"
4040import { Button } from "./ui/button"
4141
4242type DeckPlaytesterProps = {
43+ closeSlot ?: ReactNode
4344 deckId : string
4445 deckName : string
4546 initialState : PlaytestState
@@ -405,7 +406,7 @@ function cardZone(state: PlaytestState, cardId: string): PlaytestZone | null {
405406 return zones . find ( ( zone ) => state [ zone ] . some ( ( card ) => card . id === cardId ) ) || null
406407}
407408
408- export function DeckPlaytester ( { deckId, deckName, initialState } : DeckPlaytesterProps ) {
409+ export function DeckPlaytester ( { closeSlot , deckId, deckName, initialState } : DeckPlaytesterProps ) {
409410 const [ snapshot , setSnapshot ] = useState ( ( ) => initialSnapshot ( initialState ) )
410411 const [ history , setHistory ] = useState < PlaytestSnapshot [ ] > ( [ ] )
411412 const [ selectedCardId , setSelectedCardId ] = useState < string | null > ( null )
@@ -1026,9 +1027,9 @@ export function DeckPlaytester({ deckId, deckName, initialState }: DeckPlayteste
10261027 } , [ activeKeyboardCard , changeLife , draw , keepHand , moveActiveKeyboardCard , mulligan , nextTurn , openingHand , shuffle , toggleTapped , undo , untapAll ] )
10271028
10281029 return (
1029- < div className = "h-[100dvh] overflow-hidden border-0 bg-[#0d0e0c] text-base-content shadow-2xl sm:h-[calc(100dvh-1.25rem)] sm: rounded-box sm:border sm:border-base-300 lg:min-h-[42rem] " >
1030+ < div className = "h-full min-h-0 overflow-hidden border-0 bg-[#0d0e0c] text-base-content shadow-2xl sm:rounded-box sm:border sm:border-base-300" >
10301031 < div className = "grid h-full grid-rows-[2.75rem_minmax(0,1fr)_auto_12rem] lg:grid-cols-[minmax(0,1fr)_14rem] lg:grid-rows-[2.75rem_minmax(0,1fr)_10.5rem]" >
1031- < PlaytestTopBar deckId = { deckId } deckName = { deckName } turn = { turn } />
1032+ < PlaytestTopBar closeSlot = { closeSlot } deckId = { deckId } deckName = { deckName } turn = { turn } />
10321033
10331034 < main className = "relative row-start-2 min-h-0 overflow-hidden border-y border-base-300/70 bg-[radial-gradient(circle_at_center,color-mix(in_oklch,var(--color-primary),transparent_88%),transparent_34rem)] lg:col-start-1" >
10341035 < div className = "absolute left-3 top-3 z-10 flex items-center gap-2 text-[0.65rem] font-black uppercase tracking-[0.22em] text-base-content/35" >
@@ -1227,10 +1228,12 @@ export function DeckPlaytester({ deckId, deckName, initialState }: DeckPlayteste
12271228}
12281229
12291230function PlaytestTopBar ( {
1231+ closeSlot,
12301232 deckId,
12311233 deckName,
12321234 turn,
12331235} : {
1236+ closeSlot ?: ReactNode
12341237 deckId : string
12351238 deckName : string
12361239 turn : number
@@ -1243,14 +1246,16 @@ function PlaytestTopBar({
12431246 < div className = "hidden rounded border border-base-300 bg-base-200 px-3 py-1 text-xs font-bold text-base-content/70 sm:block" >
12441247 Turn { turn }
12451248 </ div >
1246- < Link
1247- to = "/decks/$id"
1248- params = { { id : deckId } }
1249- className = "btn btn-ghost btn-xs gap-1 text-base-content/60"
1250- >
1251- < X className = "h-3.5 w-3.5" />
1252- Close
1253- </ Link >
1249+ { closeSlot || (
1250+ < Link
1251+ to = "/decks/$id"
1252+ params = { { id : deckId } }
1253+ className = "btn btn-ghost btn-xs gap-1 text-base-content/60"
1254+ >
1255+ < X className = "h-3.5 w-3.5" />
1256+ Close
1257+ </ Link >
1258+ ) }
12541259 </ header >
12551260 )
12561261}
0 commit comments