Files
turnosxpress/txclient/src/Store/OrganizationHeader.Store.ts
T
2026-07-16 20:48:43 -03:00

57 lines
1.9 KiB
TypeScript

import { persist, createJSONStorage } from "zustand/middleware";
import { create } from "zustand";
export enum ORGANIZATION_HEADER_MODES {
LARGE = "large",
SMALL = "small",
}
interface IOrganizationHeaderStore {
state: ORGANIZATION_HEADER_MODES;
headerColor: string;
headerFontColor: string;
headerFontShadowColor: string;
setState: (state: ORGANIZATION_HEADER_MODES) => void;
setHeaderColor: (color: string) => void;
setHeaderFontColor: (color: string) => void;
setHeaderFontShadowColor: (color: string) => void;
toggleState: () => void;
clear: () => void;
}
export type OrganizationHeaderState = IOrganizationHeaderStore;
const useOrganizationHeaderStore = create<OrganizationHeaderState>()(
persist(
(set) => ({
state: ORGANIZATION_HEADER_MODES.LARGE,
headerColor: "",
headerFontColor: "",
headerFontShadowColor: "",
setState: (state: ORGANIZATION_HEADER_MODES) => set(() => ({ state: state })),
setHeaderColor: (color: string) => set(() => ({ headerColor: color })),
setHeaderFontColor: (color: string) => set(() => ({ headerFontColor: color })),
setHeaderFontShadowColor: (color: string) =>
set(() => ({ headerFontShadowColor: color })),
toggleState: () =>
set((state) => ({
state:
state.state === ORGANIZATION_HEADER_MODES.LARGE
? ORGANIZATION_HEADER_MODES.SMALL
: ORGANIZATION_HEADER_MODES.LARGE,
})),
clear: () =>
set(() => ({
state: ORGANIZATION_HEADER_MODES.LARGE,
})),
}),
{
name: "site-organization-header-state",
storage: createJSONStorage(() => localStorage),
}
)
);
export { useOrganizationHeaderStore };