import { faCheck, faFolder, faXmark } from '@fortawesome/free-solid-svg-icons' import { ActionButton } from '../components/ActionButton' import { AppHeader } from '../components/AppHeader' import { open } from '@tauri-apps/api/dialog' import { useStore } from '../useStore' import { useState } from 'react' import { toast } from 'react-hot-toast' export const Settings = () => { const { defaultDir: originalDefaultDir, setDefaultDir: saveDefaultDir, defaultProjectName: originalDefaultProjectName, setDefaultProjectName: saveDefaultProjectName, } = useStore((s) => ({ defaultDir: s.defaultDir, setDefaultDir: s.setDefaultDir, defaultProjectName: s.defaultProjectName, setDefaultProjectName: s.setDefaultProjectName, })) const [defaultDir, setDefaultDir] = useState(originalDefaultDir) const [defaultProjectName, setDefaultProjectName] = useState( originalDefaultProjectName ) async function handleDirectorySelection() { const newDirectory = await open({ directory: true, defaultPath: (defaultDir.base || '') + (defaultDir.dir || '/'), title: 'Choose a new default directory', }) if (newDirectory && newDirectory !== null && !Array.isArray(newDirectory)) { setDefaultDir({ base: defaultDir.base, dir: newDirectory }) } } const handleSaveClick = () => { saveDefaultDir(defaultDir) saveDefaultProjectName(defaultProjectName) toast.success('Settings saved!') } return ( <> Close

User Settings

{(window as any).__TAURI__ && (
setDefaultDir({ base: originalDefaultDir.base, dir: e.target.value, }) } /> Choose a folder
)} setDefaultProjectName(e.target.value)} /> Save Settings
) } interface SettingsSectionProps extends React.PropsWithChildren { title: string description?: string } function SettingsSection({ title, description, children, }: SettingsSectionProps) { return (

{title}

{description}

{children}
) }