home page

This commit is contained in:
lightling 2025-03-02 14:17:55 -05:00
parent 308dfeef63
commit b5e383b99a
Signed by: lightling
GPG key ID: F1F29650D537C773
8 changed files with 362 additions and 17 deletions

10
package-lock.json generated
View file

@ -10,6 +10,7 @@
"dependencies": {
"@primeuix/themes": "1.0.0",
"@tauri-apps/api": "2.3.0",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-opener": "2.2.6",
"pinia": "3.0.1",
"primeicons": "7.0.0",
@ -1358,6 +1359,15 @@
"node": ">= 10"
}
},
"node_modules/@tauri-apps/plugin-dialog": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-dialog/-/plugin-dialog-2.2.0.tgz",
"integrity": "sha512-6bLkYK68zyK31418AK5fNccCdVuRnNpbxquCl8IqgFByOgWFivbiIlvb79wpSXi0O+8k8RCSsIpOquebusRVSg==",
"license": "MIT OR Apache-2.0",
"dependencies": {
"@tauri-apps/api": "^2.0.0"
}
},
"node_modules/@tauri-apps/plugin-opener": {
"version": "2.2.6",
"resolved": "https://registry.npmjs.org/@tauri-apps/plugin-opener/-/plugin-opener-2.2.6.tgz",

View file

@ -12,6 +12,7 @@
"dependencies": {
"@primeuix/themes": "1.0.0",
"@tauri-apps/api": "2.3.0",
"@tauri-apps/plugin-dialog": "^2.2.0",
"@tauri-apps/plugin-opener": "2.2.6",
"pinia": "3.0.1",
"primeicons": "7.0.0",

247
src-tauri/Cargo.lock generated
View file

@ -62,6 +62,27 @@ version = "1.0.96"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b964d184e89d9b6b67dd2715bc8e74cf3107fb2b529990c90cf517326150bf4"
[[package]]
name = "ashpd"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9c39d707614dbcc6bed00015539f488d8e3fe3e66ed60961efc0c90f4b380b3"
dependencies = [
"enumflags2",
"futures-channel",
"futures-util",
"rand 0.8.5",
"raw-window-handle",
"serde",
"serde_repr",
"tokio",
"url",
"wayland-backend",
"wayland-client",
"wayland-protocols",
"zbus",
]
[[package]]
name = "async-broadcast"
version = "0.7.2"
@ -759,6 +780,15 @@ dependencies = [
"syn 2.0.98",
]
[[package]]
name = "dlib"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
dependencies = [
"libloading",
]
[[package]]
name = "dlopen2"
version = "0.7.0"
@ -782,6 +812,12 @@ dependencies = [
"syn 2.0.98",
]
[[package]]
name = "downcast-rs"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]]
name = "dpi"
version = "0.1.1"
@ -2048,7 +2084,7 @@ dependencies = [
"gtk",
"keyboard-types",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-core-foundation",
"objc2-foundation 0.3.0",
"once_cell",
@ -2175,6 +2211,22 @@ dependencies = [
"objc2-exception-helper",
]
[[package]]
name = "objc2-app-kit"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
"bitflags 2.9.0",
"block2 0.5.1",
"libc",
"objc2 0.5.2",
"objc2-core-data 0.2.2",
"objc2-core-image 0.2.2",
"objc2-foundation 0.2.2",
"objc2-quartz-core 0.2.2",
]
[[package]]
name = "objc2-app-kit"
version = "0.3.0"
@ -2186,10 +2238,10 @@ dependencies = [
"libc",
"objc2 0.6.0",
"objc2-cloud-kit",
"objc2-core-data",
"objc2-core-data 0.3.0",
"objc2-core-foundation",
"objc2-core-graphics",
"objc2-core-image",
"objc2-core-image 0.3.0",
"objc2-foundation 0.3.0",
"objc2-quartz-core 0.3.0",
]
@ -2205,6 +2257,18 @@ dependencies = [
"objc2-foundation 0.3.0",
]
[[package]]
name = "objc2-core-data"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
"bitflags 2.9.0",
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
]
[[package]]
name = "objc2-core-data"
version = "0.3.0"
@ -2238,6 +2302,18 @@ dependencies = [
"objc2-io-surface",
]
[[package]]
name = "objc2-core-image"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
dependencies = [
"block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
"objc2-metal",
]
[[package]]
name = "objc2-core-image"
version = "0.3.0"
@ -2271,6 +2347,7 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
"bitflags 2.9.0",
"block2 0.5.1",
"dispatch",
"libc",
"objc2 0.5.2",
]
@ -2356,7 +2433,7 @@ dependencies = [
"bitflags 2.9.0",
"block2 0.6.0",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-core-foundation",
"objc2-foundation 0.3.0",
]
@ -2641,7 +2718,7 @@ checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016"
dependencies = [
"base64 0.22.1",
"indexmap 2.7.1",
"quick-xml",
"quick-xml 0.32.0",
"serde",
"time",
]
@ -2771,6 +2848,15 @@ dependencies = [
"memchr",
]
[[package]]
name = "quick-xml"
version = "0.37.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "165859e9e55f79d67b96c5d96f4e88b6f2695a1972849c15a6a3f5c59fc2c003"
dependencies = [
"memchr",
]
[[package]]
name = "quinn"
version = "0.11.6"
@ -3013,6 +3099,31 @@ dependencies = [
"windows-registry",
]
[[package]]
name = "rfd"
version = "0.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a24763657bff09769a8ccf12c8b8a50416fb035fe199263b4c5071e4e3f006f"
dependencies = [
"ashpd",
"block2 0.5.1",
"core-foundation",
"core-foundation-sys",
"glib-sys",
"gobject-sys",
"gtk-sys",
"js-sys",
"log",
"objc2 0.5.2",
"objc2-app-kit 0.2.2",
"objc2-foundation 0.2.2",
"raw-window-handle",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"windows-sys 0.59.0",
]
[[package]]
name = "ring"
version = "0.17.11"
@ -3152,6 +3263,12 @@ dependencies = [
"syn 2.0.98",
]
[[package]]
name = "scoped-tls"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "scopeguard"
version = "1.2.0"
@ -3375,6 +3492,7 @@ dependencies = [
"serde_json",
"tauri",
"tauri-build",
"tauri-plugin-dialog",
"tauri-plugin-opener",
]
@ -3602,7 +3720,7 @@ dependencies = [
"ndk-context",
"ndk-sys",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-foundation 0.3.0",
"once_cell",
"parking_lot",
@ -3657,7 +3775,7 @@ dependencies = [
"mime",
"muda",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-foundation 0.3.0",
"percent-encoding",
"plist",
@ -3764,6 +3882,47 @@ dependencies = [
"walkdir",
]
[[package]]
name = "tauri-plugin-dialog"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b59fd750551b1066744ab956a1cd6b1ea3e1b3763b0b9153ac27a044d596426"
dependencies = [
"log",
"raw-window-handle",
"rfd",
"serde",
"serde_json",
"tauri",
"tauri-plugin",
"tauri-plugin-fs",
"thiserror 2.0.11",
"url",
]
[[package]]
name = "tauri-plugin-fs"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a1edf18000f02903a7c2e5997fb89aca455ecbc0acc15c6535afbb883be223"
dependencies = [
"anyhow",
"dunce",
"glob",
"percent-encoding",
"schemars",
"serde",
"serde_json",
"serde_repr",
"tauri",
"tauri-plugin",
"tauri-utils",
"thiserror 2.0.11",
"toml",
"url",
"uuid",
]
[[package]]
name = "tauri-plugin-opener"
version = "2.2.6"
@ -3772,7 +3931,7 @@ checksum = "2fdc6cb608e04b7d2b6d1f21e9444ad49245f6d03465ba53323d692d1ceb1a30"
dependencies = [
"dunce",
"glob",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-foundation 0.3.0",
"open",
"schemars",
@ -3816,7 +3975,7 @@ dependencies = [
"jni",
"log",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-foundation 0.3.0",
"once_cell",
"percent-encoding",
@ -4017,7 +4176,9 @@ dependencies = [
"libc",
"mio",
"pin-project-lite",
"signal-hook-registry",
"socket2",
"tracing",
"windows-sys 0.52.0",
]
@ -4169,7 +4330,7 @@ dependencies = [
"libappindicator",
"muda",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-core-foundation",
"objc2-core-graphics",
"objc2-foundation 0.3.0",
@ -4476,6 +4637,66 @@ dependencies = [
"web-sys",
]
[[package]]
name = "wayland-backend"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf"
dependencies = [
"cc",
"downcast-rs",
"rustix",
"scoped-tls",
"smallvec",
"wayland-sys",
]
[[package]]
name = "wayland-client"
version = "0.31.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f"
dependencies = [
"bitflags 2.9.0",
"rustix",
"wayland-backend",
"wayland-scanner",
]
[[package]]
name = "wayland-protocols"
version = "0.32.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0781cf46869b37e36928f7b432273c0995aa8aed9552c556fb18754420541efc"
dependencies = [
"bitflags 2.9.0",
"wayland-backend",
"wayland-client",
"wayland-scanner",
]
[[package]]
name = "wayland-scanner"
version = "0.31.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484"
dependencies = [
"proc-macro2",
"quick-xml 0.37.2",
"quote",
]
[[package]]
name = "wayland-sys"
version = "0.31.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615"
dependencies = [
"dlib",
"log",
"pkg-config",
]
[[package]]
name = "web-sys"
version = "0.3.77"
@ -4623,7 +4844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
dependencies = [
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-core-foundation",
"objc2-foundation 0.3.0",
"raw-window-handle",
@ -5065,7 +5286,7 @@ dependencies = [
"libc",
"ndk",
"objc2 0.6.0",
"objc2-app-kit",
"objc2-app-kit 0.3.0",
"objc2-core-foundation",
"objc2-foundation 0.3.0",
"objc2-ui-kit",
@ -5168,6 +5389,7 @@ dependencies = [
"serde",
"serde_repr",
"static_assertions",
"tokio",
"tracing",
"uds_windows",
"windows-sys 0.59.0",
@ -5285,6 +5507,7 @@ dependencies = [
"enumflags2",
"serde",
"static_assertions",
"url",
"winnow 0.7.3",
"zvariant_derive",
"zvariant_utils",

View file

@ -22,4 +22,5 @@ tauri = { version = "2", features = [] }
tauri-plugin-opener = "2"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tauri-plugin-dialog = "2"

View file

@ -2,9 +2,12 @@
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"windows": [
"main"
],
"permissions": [
"core:default",
"opener:default"
"opener:default",
"dialog:default"
]
}
}

View file

@ -7,6 +7,7 @@ fn greet(name: &str) -> String {
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())

View file

@ -1,9 +1,14 @@
import { createMemoryHistory, createRouter } from 'vue-router'
import {
createMemoryHistory,
createRouter,
} from 'vue-router'
import Editor from './views/Editor.vue'
import Home from './views/Home.vue'
export const routes = [
{ path: '/', component: Editor },
{ path: '/', component: Home },
{ path: '/editor', component: Editor },
]
export const router = createRouter({

101
src/views/Home.vue Normal file
View file

@ -0,0 +1,101 @@
<script setup lang="ts">
import {
computed,
ref,
} from 'vue'
import { open } from '@tauri-apps/plugin-dialog'
import { useRouter } from 'vue-router'
import Button from 'primevue/button'
import InputText from 'primevue/inputtext'
import InputGroup from 'primevue/inputgroup'
import InputGroupAddon from 'primevue/inputgroupaddon'
import Panel from 'primevue/panel'
const router = useRouter()
const filePath = ref('')
const fileName = ref('')
const newFileDisabled = computed(() => !filePath.value || !fileName.value)
const onBrowse = async (e: Event) => {
e.preventDefault()
const val = await open({
multiple: false,
directory: true,
})
if (!!val && !Array.isArray(val)) {
filePath.value = val
}
}
const onCreate = async (e: Event) => {
e.preventDefault()
router.push('/editor')
}
</script>
<template lang="pug">
section.home-page
Panel
template(#header)
h2 Open Recent File
.content
p Not Yet Implemented
p or...
Panel
template(#header)
h2 Create A New File
.content
InputGroup
InputText(
v-model='filePath'
placeholder='folder directory'
)
InputGroupAddon
Button(
severity='secondary'
icon='pi pi-folder'
label='Browse...'
@click='onBrowse'
)
InputGroup
InputText(
v-model='fileName'
placeholder='file name'
)
InputGroupAddon
span .json
InputGroup
Button.submit(
label='Create'
:disabled='newFileDisabled'
@click='onCreate'
)
p or...
Panel
template(#header)
h2 Open An Existing File
.content
p Not Yet Implemented
</template>
<style scoped lang="sass">
.home-page
display: flex
flex-direction: column
align-items: center
.p-panel
width: 100%
max-width: 40rem
h2
margin: 0
.content
display: grid
gap: 1rem
justify-items: center
.p-button.submit
margin: auto
padding: 8px 48px
</style>