import { invoke, shell } from '@tauri-apps/api'; import { useRef } from 'react'; import { useAppVersion } from '../hooks/useAppVersion'; import { useExportData } from '../hooks/useExportData'; import { useImportData } from '../hooks/useImportData'; import { useTheme } from '../hooks/useTheme'; import { useUpdateMode } from '../hooks/useUpdateMode'; import { Button } from './core/Button'; import type { DropdownRef } from './core/Dropdown'; import { Dropdown } from './core/Dropdown'; import { Icon } from './core/Icon'; import { IconButton } from './core/IconButton'; import { VStack } from './core/Stacks'; import { useDialog } from './DialogContext'; export function SettingsDropdown() { const importData = useImportData(); const exportData = useExportData(); const { appearance, toggleAppearance } = useTheme(); const appVersion = useAppVersion(); const [updateMode, setUpdateMode] = useUpdateMode(); const dropdownRef = useRef(null); const dialog = useDialog(); return ( , onSelect: () => { dialog.show({ title: 'Import Data', size: 'sm', render: ({ hide }) => { return (

Insomnia or Postman Collection v2/v2.1 formats are supported

); }, }); }, }, { key: 'export-data', label: 'Export', leftSlot: , onSelect: () => exportData.mutate(), }, { key: 'appearance', label: 'Toggle Theme', onSelect: toggleAppearance, leftSlot: , }, { type: 'separator', label: `v${appVersion.data}` }, { key: 'update-mode', label: updateMode === 'stable' ? 'Enable Beta' : 'Disable Beta', onSelect: () => setUpdateMode(updateMode === 'stable' ? 'beta' : 'stable'), leftSlot: , }, { key: 'update-check', label: 'Check for Updates', onSelect: () => invoke('check_for_updates'), leftSlot: , }, { key: 'feedback', label: 'Feedback', onSelect: () => shell.open('https://yaak.canny.io'), leftSlot: , }, ]} >
); }