SPB Git forge
28commits 1branches 0releases
7.7 MBsize
maindefault branch
10 days agolast push
Python 66.3% TypeScript 22.7% JavaScript 8.6% HTML 1.4% CSS 0.7%
959 B · 24 lines tsx
Raw Blame History
1'use client';2import { createContext, type ReactNode, useCallback, useContext, useMemo, useState } from 'react';3import type { Event } from '@/lib/types';45interface Ctx {6  event: Event | null;7  open: (e: Event) => void;8  close: () => void;9}10const EventDrawerCtx = createContext<Ctx>({ event: null, open: () => undefined, close: () => undefined });1112/** Mounted once in the root layout: any event row can open the evidence drawer with the event it already has. */13export function EventDrawerProvider({ children }: { children: ReactNode }) {14  const [event, setEvent] = useState<Event | null>(null);15  const open = useCallback((e: Event) => setEvent(e), []);16  const close = useCallback(() => setEvent(null), []);17  const value = useMemo(() => ({ event, open, close }), [event, open, close]);18  return <EventDrawerCtx.Provider value={value}>{children}</EventDrawerCtx.Provider>;19}2021export function useEventDrawer() {22  return useContext(EventDrawerCtx);23}24