BankliPlus/temparea/solarbank/frontend/node_modules/.cache/babel-loader/3f0d96246eb7c5afe41376deedec9f6951cb6aa156f8dd41310826d4a43c0ec2.json
2025-08-13 18:05:26 +02:00

1 line
38 KiB
JSON

{"ast":null,"code":"import React,{useState}from'react';import{FiSave,FiRefreshCw,FiDownload,FiUpload}from'react-icons/fi';import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";const Settings=()=>{// General settings\nconst[siteName,setSiteName]=useState('SolarBank IoT Dashboard');const[timezone,setTimezone]=useState('Europe/Zurich');const[dateFormat,setDateFormat]=useState('DD/MM/YYYY HH:mm:ss');// Map settings\nconst[mapboxToken,setMapboxToken]=useState('');const[defaultLatitude,setDefaultLatitude]=useState(47.3769);const[defaultLongitude,setDefaultLongitude]=useState(8.5417);const[defaultZoom,setDefaultZoom]=useState(13);// Notification settings\nconst[emailNotifications,setEmailNotifications]=useState(false);const[emailAddress,setEmailAddress]=useState('');const[lowBatteryThreshold,setLowBatteryThreshold]=useState(30);const[criticalBatteryThreshold,setCriticalBatteryThreshold]=useState(15);const[offlineAlertTimeout,setOfflineAlertTimeout]=useState(24);// API settings\nconst[apiRefreshInterval,setApiRefreshInterval]=useState(60);// State for form submission\nconst[saving,setSaving]=useState(false);const[saveSuccess,setSaveSuccess]=useState(false);const handleSaveSettings=e=>{e.preventDefault();setSaving(true);// Simulate API call to save settings\nsetTimeout(()=>{setSaving(false);setSaveSuccess(true);// Reset success message after 3 seconds\nsetTimeout(()=>{setSaveSuccess(false);},3000);},1000);};const handleBackupSettings=()=>{// In a real app, this would generate a JSON file with all settings\nconst settings={general:{siteName,timezone,dateFormat},map:{mapboxToken,defaultLatitude,defaultLongitude,defaultZoom},notifications:{emailNotifications,emailAddress,lowBatteryThreshold,criticalBatteryThreshold,offlineAlertTimeout},api:{apiRefreshInterval}};// Create a blob and download it\nconst blob=new Blob([JSON.stringify(settings,null,2)],{type:'application/json'});const url=URL.createObjectURL(blob);const a=document.createElement('a');a.href=url;a.download='solarbank-settings.json';document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);};const handleRestoreSettings=e=>{// This would be implemented with a file input and parser\nalert('Restore settings functionality would be implemented here');};return/*#__PURE__*/_jsxs(\"div\",{className:\"space-y-6\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"flex justify-between items-center\",children:[/*#__PURE__*/_jsx(\"h1\",{className:\"text-2xl font-semibold text-gray-800\",children:\"Settings\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"flex space-x-2\",children:[/*#__PURE__*/_jsxs(\"button\",{className:\"flex items-center gap-2 px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50 transition-colors\",onClick:handleBackupSettings,children:[/*#__PURE__*/_jsx(FiDownload,{}),/*#__PURE__*/_jsx(\"span\",{children:\"Backup\"})]}),/*#__PURE__*/_jsxs(\"button\",{className:\"flex items-center gap-2 px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50 transition-colors\",onClick:handleRestoreSettings,children:[/*#__PURE__*/_jsx(FiUpload,{}),/*#__PURE__*/_jsx(\"span\",{children:\"Restore\"})]})]})]}),saveSuccess&&/*#__PURE__*/_jsx(\"div\",{className:\"bg-success-100 border border-success-200 text-success-700 px-4 py-3 rounded relative\",role:\"alert\",children:/*#__PURE__*/_jsx(\"span\",{className:\"block sm:inline\",children:\"Settings saved successfully!\"})}),/*#__PURE__*/_jsxs(\"form\",{onSubmit:handleSaveSettings,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"dashboard-card mb-6\",children:[/*#__PURE__*/_jsx(\"h2\",{className:\"text-lg font-semibold text-gray-800 mb-4\",children:\"General Settings\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"grid grid-cols-1 md:grid-cols-2 gap-4\",children:[/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"siteName\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Site Name\"}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",id:\"siteName\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:siteName,onChange:e=>setSiteName(e.target.value)})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"timezone\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Timezone\"}),/*#__PURE__*/_jsxs(\"select\",{id:\"timezone\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:timezone,onChange:e=>setTimezone(e.target.value),children:[/*#__PURE__*/_jsx(\"option\",{value:\"Europe/Zurich\",children:\"Europe/Zurich\"}),/*#__PURE__*/_jsx(\"option\",{value:\"Europe/London\",children:\"Europe/London\"}),/*#__PURE__*/_jsx(\"option\",{value:\"America/New_York\",children:\"America/New_York\"}),/*#__PURE__*/_jsx(\"option\",{value:\"America/Los_Angeles\",children:\"America/Los_Angeles\"}),/*#__PURE__*/_jsx(\"option\",{value:\"Asia/Tokyo\",children:\"Asia/Tokyo\"}),/*#__PURE__*/_jsx(\"option\",{value:\"Australia/Sydney\",children:\"Australia/Sydney\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"dateFormat\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Date Format\"}),/*#__PURE__*/_jsxs(\"select\",{id:\"dateFormat\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:dateFormat,onChange:e=>setDateFormat(e.target.value),children:[/*#__PURE__*/_jsx(\"option\",{value:\"DD/MM/YYYY HH:mm:ss\",children:\"DD/MM/YYYY HH:mm:ss\"}),/*#__PURE__*/_jsx(\"option\",{value:\"MM/DD/YYYY HH:mm:ss\",children:\"MM/DD/YYYY HH:mm:ss\"}),/*#__PURE__*/_jsx(\"option\",{value:\"YYYY-MM-DD HH:mm:ss\",children:\"YYYY-MM-DD HH:mm:ss\"}),/*#__PURE__*/_jsx(\"option\",{value:\"DD.MM.YYYY HH:mm:ss\",children:\"DD.MM.YYYY HH:mm:ss\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"apiRefreshInterval\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Dashboard Refresh Interval (seconds)\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"apiRefreshInterval\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:apiRefreshInterval,onChange:e=>setApiRefreshInterval(parseInt(e.target.value)),min:\"10\",max:\"3600\"})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"dashboard-card mb-6\",children:[/*#__PURE__*/_jsx(\"h2\",{className:\"text-lg font-semibold text-gray-800 mb-4\",children:\"Map Settings\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"grid grid-cols-1 md:grid-cols-2 gap-4\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"md:col-span-2\",children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"mapboxToken\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Mapbox Access Token\"}),/*#__PURE__*/_jsx(\"input\",{type:\"text\",id:\"mapboxToken\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:mapboxToken,onChange:e=>setMapboxToken(e.target.value),placeholder:\"Enter your Mapbox access token\"}),/*#__PURE__*/_jsxs(\"p\",{className:\"mt-1 text-xs text-gray-500\",children:[\"Leave empty to use OpenStreetMap. Get a token at \",/*#__PURE__*/_jsx(\"a\",{href:\"https://www.mapbox.com/\",className:\"text-primary-600 hover:text-primary-700\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"mapbox.com\"})]})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"defaultLatitude\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Default Latitude\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"defaultLatitude\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:defaultLatitude,onChange:e=>setDefaultLatitude(parseFloat(e.target.value)),step:\"0.000001\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"defaultLongitude\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Default Longitude\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"defaultLongitude\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:defaultLongitude,onChange:e=>setDefaultLongitude(parseFloat(e.target.value)),step:\"0.000001\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"defaultZoom\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Default Zoom Level\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"defaultZoom\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:defaultZoom,onChange:e=>setDefaultZoom(parseInt(e.target.value)),min:\"1\",max:\"18\"})]})]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"dashboard-card mb-6\",children:[/*#__PURE__*/_jsx(\"h2\",{className:\"text-lg font-semibold text-gray-800 mb-4\",children:\"Notification Settings\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"grid grid-cols-1 md:grid-cols-2 gap-4\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"md:col-span-2\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"flex items-center\",children:[/*#__PURE__*/_jsx(\"input\",{type:\"checkbox\",id:\"emailNotifications\",className:\"h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded\",checked:emailNotifications,onChange:e=>setEmailNotifications(e.target.checked)}),/*#__PURE__*/_jsx(\"label\",{htmlFor:\"emailNotifications\",className:\"ml-2 block text-sm text-gray-700\",children:\"Enable Email Notifications\"})]})}),emailNotifications&&/*#__PURE__*/_jsxs(\"div\",{className:\"md:col-span-2\",children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"emailAddress\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Email Address\"}),/*#__PURE__*/_jsx(\"input\",{type:\"email\",id:\"emailAddress\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:emailAddress,onChange:e=>setEmailAddress(e.target.value),placeholder:\"Enter email address for notifications\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"lowBatteryThreshold\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Low Battery Threshold (%)\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"lowBatteryThreshold\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:lowBatteryThreshold,onChange:e=>setLowBatteryThreshold(parseInt(e.target.value)),min:\"0\",max:\"100\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"criticalBatteryThreshold\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Critical Battery Threshold (%)\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"criticalBatteryThreshold\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:criticalBatteryThreshold,onChange:e=>setCriticalBatteryThreshold(parseInt(e.target.value)),min:\"0\",max:\"100\"})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"label\",{htmlFor:\"offlineAlertTimeout\",className:\"block text-sm font-medium text-gray-700 mb-1\",children:\"Offline Alert Timeout (hours)\"}),/*#__PURE__*/_jsx(\"input\",{type:\"number\",id:\"offlineAlertTimeout\",className:\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\",value:offlineAlertTimeout,onChange:e=>setOfflineAlertTimeout(parseInt(e.target.value)),min:\"1\",max:\"72\"})]})]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"flex justify-end\",children:/*#__PURE__*/_jsxs(\"button\",{type:\"submit\",className:`flex items-center gap-2 px-4 py-2 bg-primary-500 text-white rounded-md hover:bg-primary-600 transition-colors ${saving?'opacity-50 cursor-not-allowed':''}`,disabled:saving,children:[saving?/*#__PURE__*/_jsx(FiRefreshCw,{className:\"animate-spin\"}):/*#__PURE__*/_jsx(FiSave,{}),/*#__PURE__*/_jsx(\"span\",{children:saving?'Saving...':'Save Settings'})]})})]})]});};export default Settings;","map":{"version":3,"names":["React","useState","FiSave","FiRefreshCw","FiDownload","FiUpload","jsx","_jsx","jsxs","_jsxs","Settings","siteName","setSiteName","timezone","setTimezone","dateFormat","setDateFormat","mapboxToken","setMapboxToken","defaultLatitude","setDefaultLatitude","defaultLongitude","setDefaultLongitude","defaultZoom","setDefaultZoom","emailNotifications","setEmailNotifications","emailAddress","setEmailAddress","lowBatteryThreshold","setLowBatteryThreshold","criticalBatteryThreshold","setCriticalBatteryThreshold","offlineAlertTimeout","setOfflineAlertTimeout","apiRefreshInterval","setApiRefreshInterval","saving","setSaving","saveSuccess","setSaveSuccess","handleSaveSettings","e","preventDefault","setTimeout","handleBackupSettings","settings","general","map","notifications","api","blob","Blob","JSON","stringify","type","url","URL","createObjectURL","a","document","createElement","href","download","body","appendChild","click","removeChild","revokeObjectURL","handleRestoreSettings","alert","className","children","onClick","role","onSubmit","htmlFor","id","value","onChange","target","parseInt","min","max","placeholder","rel","parseFloat","step","checked","disabled"],"sources":["/home/m3mo/Desktop/temparea/solarbank/frontend/src/pages/Settings.js"],"sourcesContent":["import React, { useState } from 'react';\nimport { FiSave, FiRefreshCw, FiDownload, FiUpload } from 'react-icons/fi';\n\nconst Settings = () => {\n // General settings\n const [siteName, setSiteName] = useState('SolarBank IoT Dashboard');\n const [timezone, setTimezone] = useState('Europe/Zurich');\n const [dateFormat, setDateFormat] = useState('DD/MM/YYYY HH:mm:ss');\n \n // Map settings\n const [mapboxToken, setMapboxToken] = useState('');\n const [defaultLatitude, setDefaultLatitude] = useState(47.3769);\n const [defaultLongitude, setDefaultLongitude] = useState(8.5417);\n const [defaultZoom, setDefaultZoom] = useState(13);\n \n // Notification settings\n const [emailNotifications, setEmailNotifications] = useState(false);\n const [emailAddress, setEmailAddress] = useState('');\n const [lowBatteryThreshold, setLowBatteryThreshold] = useState(30);\n const [criticalBatteryThreshold, setCriticalBatteryThreshold] = useState(15);\n const [offlineAlertTimeout, setOfflineAlertTimeout] = useState(24);\n \n // API settings\n const [apiRefreshInterval, setApiRefreshInterval] = useState(60);\n \n // State for form submission\n const [saving, setSaving] = useState(false);\n const [saveSuccess, setSaveSuccess] = useState(false);\n \n const handleSaveSettings = (e) => {\n e.preventDefault();\n setSaving(true);\n \n // Simulate API call to save settings\n setTimeout(() => {\n setSaving(false);\n setSaveSuccess(true);\n \n // Reset success message after 3 seconds\n setTimeout(() => {\n setSaveSuccess(false);\n }, 3000);\n }, 1000);\n };\n \n const handleBackupSettings = () => {\n // In a real app, this would generate a JSON file with all settings\n const settings = {\n general: {\n siteName,\n timezone,\n dateFormat\n },\n map: {\n mapboxToken,\n defaultLatitude,\n defaultLongitude,\n defaultZoom\n },\n notifications: {\n emailNotifications,\n emailAddress,\n lowBatteryThreshold,\n criticalBatteryThreshold,\n offlineAlertTimeout\n },\n api: {\n apiRefreshInterval\n }\n };\n \n // Create a blob and download it\n const blob = new Blob([JSON.stringify(settings, null, 2)], { type: 'application/json' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = 'solarbank-settings.json';\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n };\n \n const handleRestoreSettings = (e) => {\n // This would be implemented with a file input and parser\n alert('Restore settings functionality would be implemented here');\n };\n\n return (\n <div className=\"space-y-6\">\n <div className=\"flex justify-between items-center\">\n <h1 className=\"text-2xl font-semibold text-gray-800\">Settings</h1>\n <div className=\"flex space-x-2\">\n <button \n className=\"flex items-center gap-2 px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50 transition-colors\"\n onClick={handleBackupSettings}\n >\n <FiDownload />\n <span>Backup</span>\n </button>\n <button \n className=\"flex items-center gap-2 px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50 transition-colors\"\n onClick={handleRestoreSettings}\n >\n <FiUpload />\n <span>Restore</span>\n </button>\n </div>\n </div>\n\n {saveSuccess && (\n <div className=\"bg-success-100 border border-success-200 text-success-700 px-4 py-3 rounded relative\" role=\"alert\">\n <span className=\"block sm:inline\">Settings saved successfully!</span>\n </div>\n )}\n\n <form onSubmit={handleSaveSettings}>\n {/* General Settings */}\n <div className=\"dashboard-card mb-6\">\n <h2 className=\"text-lg font-semibold text-gray-800 mb-4\">General Settings</h2>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <label htmlFor=\"siteName\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Site Name\n </label>\n <input\n type=\"text\"\n id=\"siteName\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={siteName}\n onChange={(e) => setSiteName(e.target.value)}\n />\n </div>\n <div>\n <label htmlFor=\"timezone\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Timezone\n </label>\n <select\n id=\"timezone\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={timezone}\n onChange={(e) => setTimezone(e.target.value)}\n >\n <option value=\"Europe/Zurich\">Europe/Zurich</option>\n <option value=\"Europe/London\">Europe/London</option>\n <option value=\"America/New_York\">America/New_York</option>\n <option value=\"America/Los_Angeles\">America/Los_Angeles</option>\n <option value=\"Asia/Tokyo\">Asia/Tokyo</option>\n <option value=\"Australia/Sydney\">Australia/Sydney</option>\n </select>\n </div>\n <div>\n <label htmlFor=\"dateFormat\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Date Format\n </label>\n <select\n id=\"dateFormat\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={dateFormat}\n onChange={(e) => setDateFormat(e.target.value)}\n >\n <option value=\"DD/MM/YYYY HH:mm:ss\">DD/MM/YYYY HH:mm:ss</option>\n <option value=\"MM/DD/YYYY HH:mm:ss\">MM/DD/YYYY HH:mm:ss</option>\n <option value=\"YYYY-MM-DD HH:mm:ss\">YYYY-MM-DD HH:mm:ss</option>\n <option value=\"DD.MM.YYYY HH:mm:ss\">DD.MM.YYYY HH:mm:ss</option>\n </select>\n </div>\n <div>\n <label htmlFor=\"apiRefreshInterval\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Dashboard Refresh Interval (seconds)\n </label>\n <input\n type=\"number\"\n id=\"apiRefreshInterval\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={apiRefreshInterval}\n onChange={(e) => setApiRefreshInterval(parseInt(e.target.value))}\n min=\"10\"\n max=\"3600\"\n />\n </div>\n </div>\n </div>\n\n {/* Map Settings */}\n <div className=\"dashboard-card mb-6\">\n <h2 className=\"text-lg font-semibold text-gray-800 mb-4\">Map Settings</h2>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"md:col-span-2\">\n <label htmlFor=\"mapboxToken\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Mapbox Access Token\n </label>\n <input\n type=\"text\"\n id=\"mapboxToken\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={mapboxToken}\n onChange={(e) => setMapboxToken(e.target.value)}\n placeholder=\"Enter your Mapbox access token\"\n />\n <p className=\"mt-1 text-xs text-gray-500\">\n Leave empty to use OpenStreetMap. Get a token at <a href=\"https://www.mapbox.com/\" className=\"text-primary-600 hover:text-primary-700\" target=\"_blank\" rel=\"noopener noreferrer\">mapbox.com</a>\n </p>\n </div>\n <div>\n <label htmlFor=\"defaultLatitude\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Default Latitude\n </label>\n <input\n type=\"number\"\n id=\"defaultLatitude\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={defaultLatitude}\n onChange={(e) => setDefaultLatitude(parseFloat(e.target.value))}\n step=\"0.000001\"\n />\n </div>\n <div>\n <label htmlFor=\"defaultLongitude\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Default Longitude\n </label>\n <input\n type=\"number\"\n id=\"defaultLongitude\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={defaultLongitude}\n onChange={(e) => setDefaultLongitude(parseFloat(e.target.value))}\n step=\"0.000001\"\n />\n </div>\n <div>\n <label htmlFor=\"defaultZoom\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Default Zoom Level\n </label>\n <input\n type=\"number\"\n id=\"defaultZoom\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={defaultZoom}\n onChange={(e) => setDefaultZoom(parseInt(e.target.value))}\n min=\"1\"\n max=\"18\"\n />\n </div>\n </div>\n </div>\n\n {/* Notification Settings */}\n <div className=\"dashboard-card mb-6\">\n <h2 className=\"text-lg font-semibold text-gray-800 mb-4\">Notification Settings</h2>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div className=\"md:col-span-2\">\n <div className=\"flex items-center\">\n <input\n type=\"checkbox\"\n id=\"emailNotifications\"\n className=\"h-4 w-4 text-primary-600 focus:ring-primary-500 border-gray-300 rounded\"\n checked={emailNotifications}\n onChange={(e) => setEmailNotifications(e.target.checked)}\n />\n <label htmlFor=\"emailNotifications\" className=\"ml-2 block text-sm text-gray-700\">\n Enable Email Notifications\n </label>\n </div>\n </div>\n {emailNotifications && (\n <div className=\"md:col-span-2\">\n <label htmlFor=\"emailAddress\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Email Address\n </label>\n <input\n type=\"email\"\n id=\"emailAddress\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={emailAddress}\n onChange={(e) => setEmailAddress(e.target.value)}\n placeholder=\"Enter email address for notifications\"\n />\n </div>\n )}\n <div>\n <label htmlFor=\"lowBatteryThreshold\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Low Battery Threshold (%)\n </label>\n <input\n type=\"number\"\n id=\"lowBatteryThreshold\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={lowBatteryThreshold}\n onChange={(e) => setLowBatteryThreshold(parseInt(e.target.value))}\n min=\"0\"\n max=\"100\"\n />\n </div>\n <div>\n <label htmlFor=\"criticalBatteryThreshold\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Critical Battery Threshold (%)\n </label>\n <input\n type=\"number\"\n id=\"criticalBatteryThreshold\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={criticalBatteryThreshold}\n onChange={(e) => setCriticalBatteryThreshold(parseInt(e.target.value))}\n min=\"0\"\n max=\"100\"\n />\n </div>\n <div>\n <label htmlFor=\"offlineAlertTimeout\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n Offline Alert Timeout (hours)\n </label>\n <input\n type=\"number\"\n id=\"offlineAlertTimeout\"\n className=\"block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm\"\n value={offlineAlertTimeout}\n onChange={(e) => setOfflineAlertTimeout(parseInt(e.target.value))}\n min=\"1\"\n max=\"72\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"flex justify-end\">\n <button\n type=\"submit\"\n className={`flex items-center gap-2 px-4 py-2 bg-primary-500 text-white rounded-md hover:bg-primary-600 transition-colors ${saving ? 'opacity-50 cursor-not-allowed' : ''}`}\n disabled={saving}\n >\n {saving ? <FiRefreshCw className=\"animate-spin\" /> : <FiSave />}\n <span>{saving ? 'Saving...' : 'Save Settings'}</span>\n </button>\n </div>\n </form>\n </div>\n );\n};\n\nexport default Settings;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}