diff --git a/src/views/Settings.vue b/src/views/Settings.vue
index f8efa58..12610a5 100644
--- a/src/views/Settings.vue
+++ b/src/views/Settings.vue
@@ -53,6 +53,44 @@
+
+
+
+
Locale
+
Date and number formatting
+
+
+
+
+
+
+
Currency
+
Currency symbol and formatting
+
+
+
@@ -112,18 +150,14 @@
Default Hourly Rate
Applied to new projects
-
- $
-
-
+
@@ -205,6 +239,9 @@ import { invoke } from '@tauri-apps/api/core'
import { Settings as SettingsIcon, Clock, Receipt, Database, Plus, Minus } from 'lucide-vue-next'
import { useSettingsStore } from '../stores/settings'
import { useToastStore } from '../stores/toast'
+import AppNumberInput from '../components/AppNumberInput.vue'
+import AppSelect from '../components/AppSelect.vue'
+import { LOCALES, getCurrencies } from '../utils/locale'
const settingsStore = useSettingsStore()
const toastStore = useToastStore()
@@ -224,6 +261,9 @@ const hourlyRate = ref(0)
const idleDetection = ref(true)
const reminderInterval = ref(15)
const zoomLevel = ref(100)
+const locale = ref('system')
+const currency = ref('USD')
+const currencyOptions = getCurrencies()
// Dialog state
const showClearDataDialog = ref(false)
@@ -279,6 +319,12 @@ async function saveSettings() {
}
}
+// Save locale/currency settings
+async function saveLocaleSettings() {
+ await settingsStore.updateSetting('locale', locale.value)
+ await settingsStore.updateSetting('currency', currency.value)
+}
+
// Export all data
async function exportData() {
try {
@@ -318,5 +364,7 @@ onMounted(async () => {
idleDetection.value = settingsStore.settings.idle_detection !== 'false'
reminderInterval.value = parseInt(settingsStore.settings.reminder_interval) || 15
zoomLevel.value = parseInt(settingsStore.settings.ui_zoom) || 100
+ locale.value = settingsStore.settings.locale || 'system'
+ currency.value = settingsStore.settings.currency || 'USD'
})