words
Version:
A collection of React hooks for toggles with dynamic noun and verb APIs
43 lines (42 loc) • 1.65 kB
TypeScript
type PositiveVerb = keyof typeof toggleVerbs;
type NegativeVerb = typeof toggleVerbs[PositiveVerb];
type AllVerbKeys = PositiveVerb | NegativeVerb | 'toggle';
export declare const toggleVerbs: {
readonly open: "close";
readonly show: "hide";
readonly turnOn: "turnOff";
readonly check: "uncheck";
readonly enable: "disable";
readonly expand: "collapse";
readonly activate: "deactivate";
readonly start: "end";
readonly connect: "disconnect";
readonly focus: "blur";
readonly mount: "unmount";
readonly reveal: "conceal";
readonly display: "dismiss";
readonly lock: "unlock";
readonly subscribe: "unsubscribe";
};
export declare const positiveVerbs: ("show" | "start" | "open" | "display" | "focus" | "connect" | "mount" | "turnOn" | "check" | "enable" | "expand" | "activate" | "reveal" | "lock" | "subscribe")[];
export declare const negativeVerbs: NegativeVerb[];
export declare const nounState: Record<string, boolean>;
export declare const NounSetter: unique symbol;
export type NounState = {
[K in keyof typeof nounState]: boolean;
};
export type Noun = {
name: string;
} & NounState;
export declare function createNounFromState(name: string, getActive: () => boolean, setActive: (active: boolean) => void): Noun;
export declare function useNoun(initial: boolean): Noun;
export type Verbs = {
[K in AllVerbKeys]: (noun: Noun) => void;
};
export declare function useVerbs(): Verbs;
type Words = [
nouns: Record<string, Noun>,
verbs: Record<string, (noun: Noun) => void>
];
export declare function useWords(...initialValues: boolean[]): Words;
export default useWords;