diff --git a/ui/autoMate/package-lock.json b/ui/autoMate/package-lock.json
index dea39ff..34e0104 100644
--- a/ui/autoMate/package-lock.json
+++ b/ui/autoMate/package-lock.json
@@ -14,6 +14,10 @@
"@icon-park/react": "^1.4.2",
"antd": "^5.18.0",
"electron-updater": "^6.1.7",
+ "localforage": "^1.10.0",
+ "match-sorter": "^6.3.4",
+ "react-router-dom": "^6.23.1",
+ "sort-by": "^1.2.0",
"zustand": "^4.5.2"
},
"devDependencies": {
@@ -1793,6 +1797,14 @@
"react-dom": ">=16.9.0"
}
},
+ "node_modules/@remix-run/router": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmmirror.com/@remix-run/router/-/router-1.16.1.tgz",
+ "integrity": "sha512-es2g3dq6Nb07iFxGk5GuHN20RwBZOsuDQN7izWIisUcv9r+d2C5jQxqmgkdebXgReWfiyUabcki6Fg77mSNrig==",
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.18.0",
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz",
@@ -5955,6 +5967,11 @@
"node": ">= 4"
}
},
+ "node_modules/immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
"node_modules/immutable": {
"version": "4.3.6",
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz",
@@ -6743,6 +6760,14 @@
"node": ">= 0.8.0"
}
},
+ "node_modules/lie": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/lie/-/lie-3.1.1.tgz",
+ "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==",
+ "dependencies": {
+ "immediate": "~3.0.5"
+ }
+ },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -6758,6 +6783,14 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/localforage": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/localforage/-/localforage-1.10.0.tgz",
+ "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
+ "dependencies": {
+ "lie": "3.1.1"
+ }
+ },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -6867,6 +6900,15 @@
"@jridgewell/sourcemap-codec": "^1.4.15"
}
},
+ "node_modules/match-sorter": {
+ "version": "6.3.4",
+ "resolved": "https://registry.npmmirror.com/match-sorter/-/match-sorter-6.3.4.tgz",
+ "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.8",
+ "remove-accents": "0.5.0"
+ }
+ },
"node_modules/matcher": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
@@ -7148,6 +7190,14 @@
"node": ">= 0.4"
}
},
+ "node_modules/object-path": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/object-path/-/object-path-0.6.0.tgz",
+ "integrity": "sha512-fxrwsCFi3/p+LeLOAwo/wyRMODZxdGBtUlWRzsEpsUVrisZbEfZ21arxLGfaWfcnqb8oHPNihIb4XPE8CQPN5A==",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
"node_modules/object.assign": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz",
@@ -8351,6 +8401,36 @@
"node": ">=0.10.0"
}
},
+ "node_modules/react-router": {
+ "version": "6.23.1",
+ "resolved": "https://registry.npmmirror.com/react-router/-/react-router-6.23.1.tgz",
+ "integrity": "sha512-fzcOaRF69uvqbbM7OhvQyBTFDVrrGlsFdS3AL+1KfIBtGETibHzi3FkoTRyiDJnWNc2VxrfvR+657ROHjaNjqQ==",
+ "dependencies": {
+ "@remix-run/router": "1.16.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8"
+ }
+ },
+ "node_modules/react-router-dom": {
+ "version": "6.23.1",
+ "resolved": "https://registry.npmmirror.com/react-router-dom/-/react-router-dom-6.23.1.tgz",
+ "integrity": "sha512-utP+K+aSTtEdbWpC+4gxhdlPFwuEfDKq8ZrPFU65bbRJY+l706qjR7yaidBpo3MSeA/fzwbXWbKBI6ftOnP3OQ==",
+ "dependencies": {
+ "@remix-run/router": "1.16.1",
+ "react-router": "6.23.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "react": ">=16.8",
+ "react-dom": ">=16.8"
+ }
+ },
"node_modules/read-cache": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -8471,6 +8551,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/remove-accents": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/remove-accents/-/remove-accents-0.5.0.tgz",
+ "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A=="
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -8944,6 +9029,14 @@
"npm": ">= 3.0.0"
}
},
+ "node_modules/sort-by": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/sort-by/-/sort-by-1.2.0.tgz",
+ "integrity": "sha512-aRyW65r3xMnf4nxJRluCg0H/woJpksU1dQxRtXYzau30sNBOmf5HACpDd9MZDhKh7ALQ5FgSOfMPwZEtUmMqcg==",
+ "dependencies": {
+ "object-path": "0.6.0"
+ }
+ },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
diff --git a/ui/autoMate/package.json b/ui/autoMate/package.json
index 321e075..03f56e0 100644
--- a/ui/autoMate/package.json
+++ b/ui/autoMate/package.json
@@ -26,6 +26,10 @@
"@icon-park/react": "^1.4.2",
"antd": "^5.18.0",
"electron-updater": "^6.1.7",
+ "localforage": "^1.10.0",
+ "match-sorter": "^6.3.4",
+ "react-router-dom": "^6.23.1",
+ "sort-by": "^1.2.0",
"zustand": "^4.5.2"
},
"devDependencies": {
diff --git a/ui/autoMate/src/main/config/window.ts b/ui/autoMate/src/main/config/window.ts
index 14c63c0..f73e0f3 100644
--- a/ui/autoMate/src/main/config/window.ts
+++ b/ui/autoMate/src/main/config/window.ts
@@ -3,10 +3,11 @@ import { BrowserWindow, shell } from 'electron'
import { is } from '@electron-toolkit/utils'
import icon from '../../../resources/icon.png?asset'
import { join } from 'path'
+import url from 'node:url'
export function createWindow(): BrowserWindow { // Create the browser window.
const win = new BrowserWindow({
- width: 800,
+ width: 600,
height: 500,
center: true,
show: false,
@@ -34,9 +35,16 @@ export function createWindow(): BrowserWindow { // Create the browser window.
// HMR for renderer base on electron-vite cli.
// Load the remote URL for development or the local html file for production.
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
- win.loadURL(process.env['ELECTRON_RENDERER_URL'])
+ win.loadURL(process.env['ELECTRON_RENDERER_URL'] + "/#config")
} else {
- win.loadFile(join(__dirname, '../renderer/index.html'))
+ win.loadURL(
+ url.format({
+ pathname: join(__dirname, '../renderer/index.html'),
+ protocol: 'file',
+ slashes: true,
+ hash: 'config'
+ })
+ )
}
return win
diff --git a/ui/autoMate/src/renderer/src/main.tsx b/ui/autoMate/src/renderer/src/main.tsx
index c7e822d..d8f4100 100644
--- a/ui/autoMate/src/renderer/src/main.tsx
+++ b/ui/autoMate/src/renderer/src/main.tsx
@@ -1,11 +1,12 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
-import App from './App'
import '@renderer/assets/tailwind.css'
import '@renderer/assets/global.scss'
+import { RouterProvider } from 'react-router-dom'
+import router from './router'
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(