mirror of
https://github.com/morten-olsen/refocus.dev.git
synced 2026-02-08 00:46:25 +01:00
30 lines
699 B
TypeScript
30 lines
699 B
TypeScript
import { TSchema } from '@sinclair/typebox';
|
|
import { createContext, useState } from 'react';
|
|
import { Widget } from './types';
|
|
|
|
type WidgetsContextValue = {
|
|
widgets: Widget<TSchema>[];
|
|
};
|
|
|
|
type WidgetsProviderProps = {
|
|
children: React.ReactNode;
|
|
widgets?: Widget<TSchema>[];
|
|
};
|
|
|
|
const WidgetsContext = createContext<WidgetsContextValue | null>(null);
|
|
|
|
const WidgetsProvider: React.FC<WidgetsProviderProps> = ({
|
|
children,
|
|
widgets: initialWidgets,
|
|
}) => {
|
|
const [widgets] = useState<Widget<TSchema>[]>(initialWidgets || []);
|
|
|
|
return (
|
|
<WidgetsContext.Provider value={{ widgets }}>
|
|
{children}
|
|
</WidgetsContext.Provider>
|
|
);
|
|
};
|
|
|
|
export { WidgetsContext, WidgetsProvider };
|