frontend client for gemstone. decentralised workplace app

feat: better typing for palette variant use

serenity 7b6e58b1 081a9e7d

Changed files
+6 -3
src
lib
+5 -2
src/lib/facet/src/providers.tsx
···
import type { Facet } from "@/lib/facet/src/facet";
+
import type { FacetVariants } from "@/lib/facet/src/variants";
import type { ReactNode } from "react";
import { createContext, useContext } from "react";
···
return atoms;
};
-
export const useVariant = (variantName: string) => {
+
type VariantName = keyof FacetVariants
+
+
export const useVariant = (variantName: VariantName) => {
const { variants } = useFacet();
const variant = variants[variantName];
if (!variant)
throw new Error(
-
`Provided variant ${variantName} does not exist in the configured Facet. Check the configuration init object.`,
+
`Provided variant ${variantName.toString()} does not exist in the configured Facet. Check the configuration init object.`,
);
return variant;
};
+1 -1
src/lib/facet/src/variants.ts
···
export interface FacetVariants {
pearl?: FacetPalette;
obsidian?: FacetPalette;
-
[x: string]: FacetPalette | undefined;
+
[x: string & {}]: FacetPalette | undefined;
}
// const DEFAULT_LIGHT_MODE: FacetPalette = {