storytellurx-v1/app/game-engine/shell-provider.tsx
2025-07-13 22:01:50 +02:00

29 lines
856 B
TypeScript

"use client";
import { useContext } from "react";
import { Slot } from "@radix-ui/react-slot";
import { NarrativeContext } from "./narrative-provider.tsx";
import cn from "@bureaudouble/outils/cn.ts";
import { gameStateToVariantState } from "./persona-styles.ts";
export const ShellProvider: React.FC<
React.BaseHTMLAttributes<HTMLDivElement> & {
variant: "classical" | "terminal";
asChild?: boolean;
}
> = (
{ asChild = false, variant, ...props },
) => {
const Comp = asChild ? Slot : "div";
const context = useContext(NarrativeContext);
const gameState = context?.gameState;
const variantState = gameState ? gameStateToVariantState(gameState) : null;
return (
<Comp
{...props}
data-arousal-peak-potential={variantState?.arousalPeakPotential}
className={cn(gameState?.personaId ?? variant)}
/>
);
};