feat: initialize Tauri v2 + Vue 3 project
This commit is contained in:
38
src/App.vue
Normal file
38
src/App.vue
Normal file
@@ -0,0 +1,38 @@
|
||||
<script setup lang="ts">
|
||||
// Main App component - layout placeholder
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="h-full w-full flex flex-col bg-background">
|
||||
<!-- TitleBar placeholder -->
|
||||
<header class="h-10 flex items-center justify-between px-4 bg-surface border-b border-border" data-tauri-drag-region>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-amber font-semibold">ZeroClock</span>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<!-- Window controls would go here -->
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- TimerBar placeholder -->
|
||||
<div class="h-16 flex items-center justify-center bg-surface border-b border-border">
|
||||
<span class="text-text-secondary">Timer Bar Placeholder</span>
|
||||
</div>
|
||||
|
||||
<!-- Main content area -->
|
||||
<div class="flex-1 flex overflow-hidden">
|
||||
<!-- Sidebar placeholder -->
|
||||
<aside class="w-16 flex flex-col items-center py-4 bg-surface border-r border-border">
|
||||
<div class="text-text-secondary text-sm">Sidebar</div>
|
||||
</aside>
|
||||
|
||||
<!-- Main content -->
|
||||
<main class="flex-1 p-6 overflow-auto">
|
||||
<router-view />
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
</style>
|
||||
10
src/main.ts
Normal file
10
src/main.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { createApp } from 'vue'
|
||||
import { createPinia } from 'pinia'
|
||||
import App from './App.vue'
|
||||
import './styles/main.css'
|
||||
|
||||
const app = createApp(App)
|
||||
const pinia = createPinia()
|
||||
|
||||
app.use(pinia)
|
||||
app.mount('#app')
|
||||
57
src/styles/main.css
Normal file
57
src/styles/main.css
Normal file
@@ -0,0 +1,57 @@
|
||||
@import "tailwindcss";
|
||||
|
||||
@theme {
|
||||
--color-background: #0F0F0F;
|
||||
--color-surface: #1A1A1A;
|
||||
--color-surface-elevated: #242424;
|
||||
--color-border: #2E2E2E;
|
||||
--color-text-primary: #FFFFFF;
|
||||
--color-text-secondary: #A0A0A0;
|
||||
--color-amber: #F59E0B;
|
||||
--color-amber-hover: #D97706;
|
||||
--color-amber-light: #FCD34D;
|
||||
--color-success: #22C55E;
|
||||
--color-warning: #F59E0B;
|
||||
--color-error: #EF4444;
|
||||
--font-sans: 'IBM Plex Sans', system-ui, sans-serif;
|
||||
--font-mono: 'IBM Plex Mono', monospace;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html, body, #app {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--font-sans);
|
||||
background-color: var(--color-background);
|
||||
color: var(--color-text-primary);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* Custom scrollbar styles */
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: var(--color-surface);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: var(--color-border);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--color-text-secondary);
|
||||
}
|
||||
7
src/vite-env.d.ts
vendored
Normal file
7
src/vite-env.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
declare module '*.vue' {
|
||||
import type { DefineComponent } from 'vue'
|
||||
const component: DefineComponent<{}, {}, any>
|
||||
export default component
|
||||
}
|
||||
Reference in New Issue
Block a user