diff --git a/frontend/libs/components/settings-modal/src/lib/MiscSettingsPane.tsx b/frontend/libs/components/settings-modal/src/lib/MiscSettingsPane.tsx
new file mode 100644
index 0000000000..b80b472f0f
--- /dev/null
+++ b/frontend/libs/components/settings-modal/src/lib/MiscSettingsPane.tsx
@@ -0,0 +1,15 @@
+import { useState } from "react";
+
+interface MiscSettingsPaneProps {
+ test?: string;
+}
+
+export const MiscSettingsPane = (args: MiscSettingsPaneProps) => {
+ return (<>
+
+
+
+ Test
+ Foo Bar Baz
+ >)
+}
diff --git a/frontend/libs/tauri-api/.babelrc b/frontend/libs/tauri-api/.babelrc
new file mode 100644
index 0000000000..1ea870ead4
--- /dev/null
+++ b/frontend/libs/tauri-api/.babelrc
@@ -0,0 +1,12 @@
+{
+ "presets": [
+ [
+ "@nx/react/babel",
+ {
+ "runtime": "automatic",
+ "useBuiltIns": "usage"
+ }
+ ]
+ ],
+ "plugins": []
+}
diff --git a/frontend/libs/tauri-api/.eslintrc.json b/frontend/libs/tauri-api/.eslintrc.json
new file mode 100644
index 0000000000..def19dc990
--- /dev/null
+++ b/frontend/libs/tauri-api/.eslintrc.json
@@ -0,0 +1,36 @@
+{
+ "extends": [
+ "plugin:@nx/react",
+ "../../.eslintrc.json"
+ ],
+ "ignorePatterns": [
+ "!**/*",
+ "**/vite.config.*.timestamp*",
+ "**/vitest.config.*.timestamp*"
+ ],
+ "overrides": [
+ {
+ "files": [
+ "*.ts",
+ "*.tsx",
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.ts",
+ "*.tsx"
+ ],
+ "rules": {}
+ },
+ {
+ "files": [
+ "*.js",
+ "*.jsx"
+ ],
+ "rules": {}
+ }
+ ]
+}
diff --git a/frontend/libs/tauri-api/README.md b/frontend/libs/tauri-api/README.md
new file mode 100644
index 0000000000..eedd302338
--- /dev/null
+++ b/frontend/libs/tauri-api/README.md
@@ -0,0 +1,7 @@
+# @frontend/tauri-api
+
+This library was generated with [Nx](https://nx.dev).
+
+## Running unit tests
+
+Run `nx test @frontend/tauri-api` to execute the unit tests via [Vitest](https://vitest.dev/).
diff --git a/frontend/libs/tauri-api/package.json b/frontend/libs/tauri-api/package.json
new file mode 100644
index 0000000000..bc9fa7a973
--- /dev/null
+++ b/frontend/libs/tauri-api/package.json
@@ -0,0 +1,17 @@
+{
+ "name": "@frontend/tauri-api",
+ "version": "0.0.1",
+ "type": "module",
+ "main": "./dist/index.js",
+ "module": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "development": "./src/index.ts",
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "default": "./dist/index.js"
+ }
+ }
+}
diff --git a/frontend/libs/tauri-api/src/index.ts b/frontend/libs/tauri-api/src/index.ts
new file mode 100644
index 0000000000..32f50b4c7b
--- /dev/null
+++ b/frontend/libs/tauri-api/src/index.ts
@@ -0,0 +1,2 @@
+
+export * from './lib/tauri-api';
diff --git a/frontend/libs/tauri-api/src/lib/tauri-api.module.css b/frontend/libs/tauri-api/src/lib/tauri-api.module.css
new file mode 100644
index 0000000000..d0246c74b9
--- /dev/null
+++ b/frontend/libs/tauri-api/src/lib/tauri-api.module.css
@@ -0,0 +1,7 @@
+/*
+ * Replace this with your own classes
+ *
+ * e.g.
+ * .container {
+ * }
+*/
\ No newline at end of file
diff --git a/frontend/libs/tauri-api/src/lib/tauri-api.spec.tsx b/frontend/libs/tauri-api/src/lib/tauri-api.spec.tsx
new file mode 100644
index 0000000000..20625be67f
--- /dev/null
+++ b/frontend/libs/tauri-api/src/lib/tauri-api.spec.tsx
@@ -0,0 +1,12 @@
+import { render } from '@testing-library/react';
+
+import TauriApi from './tauri-api';
+
+describe('TauriApi', () => {
+
+ it('should render successfully', () => {
+ const { baseElement } = render();
+ expect(baseElement).toBeTruthy();
+ });
+
+});
diff --git a/frontend/libs/tauri-api/src/lib/tauri-api.tsx b/frontend/libs/tauri-api/src/lib/tauri-api.tsx
new file mode 100644
index 0000000000..0121fabea1
--- /dev/null
+++ b/frontend/libs/tauri-api/src/lib/tauri-api.tsx
@@ -0,0 +1,15 @@
+
+import styles from './tauri-api.module.css';
+
+export function TauriApi() {
+ return (
+
+
Welcome to TauriApi!
+
+ );
+}
+
+export default TauriApi;
+
+
+
diff --git a/frontend/libs/tauri-api/src/server.ts b/frontend/libs/tauri-api/src/server.ts
new file mode 100644
index 0000000000..82a91ac5e2
--- /dev/null
+++ b/frontend/libs/tauri-api/src/server.ts
@@ -0,0 +1 @@
+// This file should be used to export ONLY server-code from the library.
\ No newline at end of file
diff --git a/frontend/libs/tauri-api/src/test-setup.ts b/frontend/libs/tauri-api/src/test-setup.ts
new file mode 100644
index 0000000000..59f7836d9c
--- /dev/null
+++ b/frontend/libs/tauri-api/src/test-setup.ts
@@ -0,0 +1,3 @@
+import { installGlobals } from '@remix-run/node';
+import "@testing-library/jest-dom/matchers";
+installGlobals();
\ No newline at end of file
diff --git a/frontend/libs/tauri-api/tsconfig.json b/frontend/libs/tauri-api/tsconfig.json
new file mode 100644
index 0000000000..8c5fc025ff
--- /dev/null
+++ b/frontend/libs/tauri-api/tsconfig.json
@@ -0,0 +1,13 @@
+{
+ "files": [],
+ "include": [],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ },
+ {
+ "path": "./tsconfig.spec.json"
+ }
+ ],
+ "extends": "../../tsconfig.base.json"
+}
diff --git a/frontend/libs/tauri-api/tsconfig.lib.json b/frontend/libs/tauri-api/tsconfig.lib.json
new file mode 100644
index 0000000000..c43e2edbaa
--- /dev/null
+++ b/frontend/libs/tauri-api/tsconfig.lib.json
@@ -0,0 +1,48 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "dist",
+ "types": [
+ "node",
+ "@nx/react/typings/cssmodule.d.ts",
+ "@nx/react/typings/image.d.ts",
+ "vite/client"
+ ],
+ "rootDir": "src",
+ "jsx": "react-jsx",
+ "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo"
+ },
+ "exclude": [
+ "out-tsc",
+ "dist",
+ "**/*.spec.ts",
+ "**/*.test.ts",
+ "**/*.spec.tsx",
+ "**/*.test.tsx",
+ "**/*.spec.js",
+ "**/*.test.js",
+ "**/*.spec.jsx",
+ "**/*.test.jsx",
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "eslint.config.js",
+ "eslint.config.cjs",
+ "eslint.config.mjs"
+ ],
+ "include": [
+ "src/**/*.js",
+ "src/**/*.jsx",
+ "src/**/*.ts",
+ "src/**/*.tsx"
+ ]
+}
diff --git a/frontend/libs/tauri-api/tsconfig.spec.json b/frontend/libs/tauri-api/tsconfig.spec.json
new file mode 100644
index 0000000000..c1faced82c
--- /dev/null
+++ b/frontend/libs/tauri-api/tsconfig.spec.json
@@ -0,0 +1,34 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "compilerOptions": {
+ "outDir": "./out-tsc/vitest",
+ "types": [
+ "vitest/globals",
+ "vitest/importMeta",
+ "vite/client",
+ "node",
+ "vitest"
+ ],
+ "jsx": "react-jsx"
+ },
+ "include": [
+ "vite.config.ts",
+ "vite.config.mts",
+ "vitest.config.ts",
+ "vitest.config.mts",
+ "src/**/*.test.ts",
+ "src/**/*.spec.ts",
+ "src/**/*.test.tsx",
+ "src/**/*.spec.tsx",
+ "src/**/*.test.js",
+ "src/**/*.spec.js",
+ "src/**/*.test.jsx",
+ "src/**/*.spec.jsx",
+ "src/**/*.d.ts"
+ ],
+ "references": [
+ {
+ "path": "./tsconfig.lib.json"
+ }
+ ]
+}
diff --git a/frontend/libs/tauri-api/vite.config.ts b/frontend/libs/tauri-api/vite.config.ts
new file mode 100644
index 0000000000..b5478fa6ee
--- /dev/null
+++ b/frontend/libs/tauri-api/vite.config.ts
@@ -0,0 +1,49 @@
+///
+import { defineConfig } from 'vite';
+import react from '@vitejs/plugin-react';
+import dts from 'vite-plugin-dts';
+import * as path from 'path';
+
+export default defineConfig(() => ({
+root: __dirname,
+cacheDir: '../../node_modules/.vite/libs/tauri-api',
+plugins: [react(), dts({ entryRoot: 'src', tsconfigPath: path.join(__dirname, 'tsconfig.lib.json') })],
+// Uncomment this if you are using workers.
+// worker: {
+// plugins: [ nxViteTsPaths() ],
+// },
+// Configuration for building your library.
+// See: https://vitejs.dev/guide/build.html#library-mode
+build: {
+outDir: './dist',
+emptyOutDir: true,
+reportCompressedSize: true,
+commonjsOptions: {
+transformMixedEsModules: true,
+},
+lib: {
+// Could also be a dictionary or array of multiple entry points.
+entry: 'src/index.ts',
+name: '@frontend/tauri-api',
+fileName: 'index',
+// Change this to the formats you want to support.
+// Don't forget to update your package.json as well.
+formats: ['es' as const]
+},
+rollupOptions: {
+// External packages that should not be bundled into your library.
+external: ['react','react-dom','react/jsx-runtime']
+},
+},
+test: {setupFiles: ['./src/test-setup.ts'],
+watch: false,
+globals: true,
+environment: 'jsdom',
+include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
+reporters: ['default'],
+coverage: {
+reportsDirectory: './test-output/vitest/coverage',
+provider: 'v8' as const,
+}
+},
+}));
\ No newline at end of file