import { createStore } from 'zustand'
import type { Features } from './types'
import { Resolution, TransferMethod } from '@/types/app'
export interface FeaturesModal {
showFeaturesModal: boolean
setShowFeaturesModal: (showFeaturesModal: boolean) => void
}
export interface FeaturesState {
features: Features
export interface FeaturesAction {
setFeatures: (features: Features) => void
export type FeatureStoreState = FeaturesState & FeaturesAction & FeaturesModal
export type FeaturesStore = ReturnType<typeof createFeaturesStore>
export const createFeaturesStore = (initProps?: Partial<FeaturesState>) => {
const DEFAULT_PROPS: FeaturesState = {
features: {
moreLikeThis: {
enabled: false,
},
opening: {
suggested: {
text2speech: {
speech2text: {
citation: {
moderation: {
file: {
image: {
detail: Resolution.high,
number_limits: 3,
transfer_methods: [TransferMethod.local_file, TransferMethod.remote_url],
annotationReply: {
return createStore<FeatureStoreState>()(set => ({
...DEFAULT_PROPS,
...initProps,
setFeatures: features => set(() => ({ features })),
showFeaturesModal: false,
setShowFeaturesModal: showFeaturesModal => set(() => ({ showFeaturesModal })),
}))