import { Button, CssVarsProvider, Divider, Input, Select, Option } from "@mui/joy"; import { useEffect, useState } from "react"; import { Toaster, toast } from "react-hot-toast"; import { useShortcutStore } from "@/stores"; import Icon from "./components/Icon"; import Logo from "./components/Logo"; import PullShortcutsButton from "./components/PullShortcutsButton"; import ShortcutsContainer from "./components/ShortcutsContainer"; import { StorageContextProvider, useStorageContext } from "./context"; import useColorTheme from "./hooks/useColorTheme"; import "./style.css"; import { Visibility } from "./types/proto/api/v1/common"; interface SettingState { domain: string; accessToken: string; } const colorThemeOptions = [ { value: "system", label: "System", }, { value: "light", label: "Light", }, { value: "dark", label: "Dark", }, ]; const IndexOptions = () => { const { colorTheme, setColorTheme } = useColorTheme(); const context = useStorageContext(); const [settingState, setSettingState] = useState({ domain: context.instanceUrl || "", accessToken: context.accessToken || "", }); const shortcutStore = useShortcutStore(); const shortcuts = shortcutStore.getShortcutList(); const isInitialized = context.instanceUrl && context.accessToken; useEffect(() => { setSettingState({ domain: context.instanceUrl || "", accessToken: context.accessToken || "", }); }, [context]); const setPartialSettingState = (partialSettingState: Partial) => { setSettingState((prevState) => ({ ...prevState, ...partialSettingState, })); }; const handleSaveSetting = () => { context.setInstanceUrl(settingState.domain); context.setAccessToken(settingState.accessToken); toast.success("Setting saved"); }; const handleSelectColorTheme = async (colorTheme: string) => { setColorTheme(colorTheme as any); }; const handleDefaultVisibilitySelect = (value: Visibility) => { context.setDefaultVisibility(value); }; return (
Need help? Check out the docs

Slash / Setting

Instance URL {context.instanceUrl !== "" && ( Go to my Slash )}
setPartialSettingState({ domain: e.target.value })} />
Access Token
setPartialSettingState({ accessToken: e.target.value })} />

Preference

Color Theme
Default Visibility
{isInitialized && ( <>

Shortcuts ({shortcuts.length})

)}
); }; const Options = () => { return ( ); }; export default Options;