Files
luminance/src/providers/SelectedColorProvider.tsx
T
jay 5f6d0f43ee
Test and Build / test-and-build (push) Failing after 2m44s
Completed palette editor, ui overhaul.
2026-03-23 08:24:44 -04:00

38 lines
883 B
TypeScript

import { useMemo, useReducer } from "react";
import type { ReactNode } from "react";
import * as colorlib from "colorlib";
import { colorReducer, createColorActions } from "@/hooks/color";
import { SelectedColorContext } from "./context";
export const SelectedColorProvider = ({
children,
}: {
children: ReactNode;
}) => {
const initialState = {
color: colorlib.Color.from_hex("00C9FA"),
};
const [colorState, colorDispatch] = useReducer(colorReducer, initialState);
const colorActions = useMemo(
() => createColorActions(colorDispatch),
[colorDispatch],
);
const value = useMemo(
() => ({
selectedColor: colorState.color,
selectedColorActions: colorActions,
}),
[colorState.color, colorActions],
);
return (
<SelectedColorContext.Provider value={value}>
{children}
</SelectedColorContext.Provider>
);
};