mirror of
https://github.com/luminous-devs/lume.git
synced 2024-09-19 11:43:30 +00:00
updated
This commit is contained in:
parent
c80d554630
commit
a898e3013f
@ -4,7 +4,7 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Lume</title>
|
<title>Lume</title>
|
||||||
</head>
|
</head>
|
||||||
<body class="cursor-default select-none overflow-hidden font-sans antialiased h-screen w-screen dark:bg-black dark:text-zinc-100">
|
<body class="cursor-default select-none overflow-hidden font-sans antialiased h-screen w-screen bg-white dark:bg-black text-black dark:text-white">
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="/src/main.tsx"></script>
|
<script type="module" src="/src/main.tsx"></script>
|
||||||
</body>
|
</body>
|
||||||
|
@ -93,7 +93,7 @@
|
|||||||
"eslint": "^8.46.0",
|
"eslint": "^8.46.0",
|
||||||
"eslint-config-prettier": "^8.9.0",
|
"eslint-config-prettier": "^8.9.0",
|
||||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||||
"eslint-plugin-react": "^7.33.0",
|
"eslint-plugin-react": "^7.33.1",
|
||||||
"eslint-plugin-simple-import-sort": "^10.0.0",
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
||||||
"husky": "^8.0.3",
|
"husky": "^8.0.3",
|
||||||
"lint-staged": "^13.2.3",
|
"lint-staged": "^13.2.3",
|
||||||
|
@ -226,8 +226,8 @@ devDependencies:
|
|||||||
specifier: ^6.7.1
|
specifier: ^6.7.1
|
||||||
version: 6.7.1(eslint@8.46.0)
|
version: 6.7.1(eslint@8.46.0)
|
||||||
eslint-plugin-react:
|
eslint-plugin-react:
|
||||||
specifier: ^7.33.0
|
specifier: ^7.33.1
|
||||||
version: 7.33.0(eslint@8.46.0)
|
version: 7.33.1(eslint@8.46.0)
|
||||||
eslint-plugin-simple-import-sort:
|
eslint-plugin-simple-import-sort:
|
||||||
specifier: ^10.0.0
|
specifier: ^10.0.0
|
||||||
version: 10.0.0(eslint@8.46.0)
|
version: 10.0.0(eslint@8.46.0)
|
||||||
@ -3756,8 +3756,8 @@ packages:
|
|||||||
semver: 6.3.1
|
semver: 6.3.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/eslint-plugin-react@7.33.0(eslint@8.46.0):
|
/eslint-plugin-react@7.33.1(eslint@8.46.0):
|
||||||
resolution: {integrity: sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw==}
|
resolution: {integrity: sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
|
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
|
||||||
|
@ -3,20 +3,11 @@
|
|||||||
windows_subsystem = "windows"
|
windows_subsystem = "windows"
|
||||||
)]
|
)]
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
#[macro_use]
|
|
||||||
extern crate objc;
|
|
||||||
|
|
||||||
// use rand::distributions::{Alphanumeric, DistString};
|
// use rand::distributions::{Alphanumeric, DistString};
|
||||||
use tauri::{Manager, WindowEvent};
|
use tauri::{Manager};
|
||||||
use tauri_plugin_autostart::MacosLauncher;
|
use tauri_plugin_autostart::MacosLauncher;
|
||||||
use tauri_plugin_sql::{Migration, MigrationKind};
|
use tauri_plugin_sql::{Migration, MigrationKind};
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
use window_ext::WindowExt;
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
mod window_ext;
|
|
||||||
|
|
||||||
#[derive(Clone, serde::Serialize)]
|
#[derive(Clone, serde::Serialize)]
|
||||||
struct Payload {
|
struct Payload {
|
||||||
args: Vec<String>,
|
args: Vec<String>,
|
||||||
@ -144,29 +135,6 @@ fn main() {
|
|||||||
.plugin(tauri_plugin_process::init())
|
.plugin(tauri_plugin_process::init())
|
||||||
.plugin(tauri_plugin_os::init())
|
.plugin(tauri_plugin_os::init())
|
||||||
.plugin(tauri_plugin_window::init())
|
.plugin(tauri_plugin_window::init())
|
||||||
.setup(|app| {
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
let main_window = app.get_window("main").unwrap();
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
main_window.position_traffic_lights(13.0, 17.0); // set inset for traffic lights (macos)
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
})
|
|
||||||
.on_window_event(|e| {
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
let apply_offset = || {
|
|
||||||
let win = e.window();
|
|
||||||
// keep inset for traffic lights when window resize (macos)
|
|
||||||
win.position_traffic_lights(13.0, 17.0);
|
|
||||||
};
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
match e.event() {
|
|
||||||
WindowEvent::Resized(..) => apply_offset(),
|
|
||||||
WindowEvent::ThemeChanged(..) => apply_offset(),
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.run(tauri::generate_context!())
|
.run(tauri::generate_context!())
|
||||||
.expect("error while running tauri application");
|
.expect("error while running tauri application");
|
||||||
}
|
}
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
use tauri::{Runtime, Window};
|
|
||||||
|
|
||||||
pub trait WindowExt {
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
fn set_transparent_titlebar(&self, transparent: bool);
|
|
||||||
fn position_traffic_lights(&self, x: f64, y: f64);
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: Runtime> WindowExt for Window<R> {
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
fn set_transparent_titlebar(&self, transparent: bool) {
|
|
||||||
use cocoa::appkit::{NSWindow, NSWindowTitleVisibility};
|
|
||||||
|
|
||||||
let window = self.ns_window().unwrap() as cocoa::base::id;
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
window.setTitleVisibility_(NSWindowTitleVisibility::NSWindowTitleHidden);
|
|
||||||
|
|
||||||
if transparent {
|
|
||||||
window.setTitlebarAppearsTransparent_(cocoa::base::YES);
|
|
||||||
} else {
|
|
||||||
window.setTitlebarAppearsTransparent_(cocoa::base::NO);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(target_os = "macos")]
|
|
||||||
fn position_traffic_lights(&self, x: f64, y: f64) {
|
|
||||||
use cocoa::appkit::{NSView, NSWindow, NSWindowButton};
|
|
||||||
use cocoa::foundation::NSRect;
|
|
||||||
|
|
||||||
let window = self.ns_window().unwrap() as cocoa::base::id;
|
|
||||||
|
|
||||||
unsafe {
|
|
||||||
let close = window.standardWindowButton_(NSWindowButton::NSWindowCloseButton);
|
|
||||||
let miniaturize = window.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton);
|
|
||||||
let zoom = window.standardWindowButton_(NSWindowButton::NSWindowZoomButton);
|
|
||||||
|
|
||||||
let title_bar_container_view = close.superview().superview();
|
|
||||||
|
|
||||||
let close_rect: NSRect = msg_send![close, frame];
|
|
||||||
let button_height = close_rect.size.height;
|
|
||||||
|
|
||||||
let title_bar_frame_height = button_height + y;
|
|
||||||
let mut title_bar_rect = NSView::frame(title_bar_container_view);
|
|
||||||
title_bar_rect.size.height = title_bar_frame_height;
|
|
||||||
title_bar_rect.origin.y = NSView::frame(window).size.height - title_bar_frame_height;
|
|
||||||
let _: () = msg_send![title_bar_container_view, setFrame: title_bar_rect];
|
|
||||||
|
|
||||||
let window_buttons = vec![close, miniaturize, zoom];
|
|
||||||
let space_between = NSView::frame(miniaturize).origin.x - NSView::frame(close).origin.x;
|
|
||||||
|
|
||||||
for (i, button) in window_buttons.into_iter().enumerate() {
|
|
||||||
let mut rect: NSRect = NSView::frame(button);
|
|
||||||
rect.origin.x = x + (i as f64 * space_between);
|
|
||||||
button.setFrameOrigin(rect.origin);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -104,7 +104,8 @@
|
|||||||
"title": "Lume",
|
"title": "Lume",
|
||||||
"titleBarStyle": "Overlay",
|
"titleBarStyle": "Overlay",
|
||||||
"transparent": false,
|
"transparent": false,
|
||||||
"width": 1080
|
"width": 1080,
|
||||||
|
"center": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,6 @@ const router = createBrowserRouter([
|
|||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
element: (
|
element: (
|
||||||
// @ts-expect-error, todo
|
|
||||||
<Protected>
|
<Protected>
|
||||||
<Root />
|
<Root />
|
||||||
</Protected>
|
</Protected>
|
||||||
@ -79,7 +78,6 @@ const router = createBrowserRouter([
|
|||||||
{
|
{
|
||||||
path: '/app',
|
path: '/app',
|
||||||
element: (
|
element: (
|
||||||
// @ts-expect-error, todo
|
|
||||||
<Protected>
|
<Protected>
|
||||||
<AppLayout />
|
<AppLayout />
|
||||||
</Protected>
|
</Protected>
|
||||||
@ -96,7 +94,6 @@ const router = createBrowserRouter([
|
|||||||
{
|
{
|
||||||
path: '/settings',
|
path: '/settings',
|
||||||
element: (
|
element: (
|
||||||
// @ts-expect-error, todo
|
|
||||||
<Protected>
|
<Protected>
|
||||||
<SettingsLayout />
|
<SettingsLayout />
|
||||||
</Protected>
|
</Protected>
|
||||||
|
@ -4,23 +4,12 @@ import { ArrowRightCircleIcon } from '@shared/icons/arrowRightCircle';
|
|||||||
|
|
||||||
export function WelcomeScreen() {
|
export function WelcomeScreen() {
|
||||||
return (
|
return (
|
||||||
<div className="grid h-full w-full grid-cols-12 gap-4 px-4 py-4">
|
<div className="flex h-screen w-full flex-col justify-between">
|
||||||
<div className="col-span-5 flex flex-col rounded-xl border-t border-zinc-800/50 bg-zinc-900">
|
<div className="flex flex-1 items-center justify-center">
|
||||||
<div className="flex h-full w-full flex-col justify-center gap-2 px-4 py-4">
|
<h1 className="text-5xl font-semibold">Have fun together!</h1>
|
||||||
<h1 className="text-4xl font-bold leading-none text-transparent text-zinc-700">
|
|
||||||
Preserve your <span className="text-fuchsia-300">freedom</span>
|
|
||||||
</h1>
|
|
||||||
<h2 className="text-4xl font-bold leading-none text-transparent text-zinc-700">
|
|
||||||
Protect your <span className="text-red-300">future</span>
|
|
||||||
</h2>
|
|
||||||
<h3 className="text-4xl font-bold leading-none text-transparent text-zinc-700">
|
|
||||||
Stack <span className="text-orange-300">bitcoin</span>
|
|
||||||
</h3>
|
|
||||||
<h3 className="text-4xl font-bold leading-none text-transparent text-zinc-700">
|
|
||||||
Use <span className="text-purple-300">nostr</span>
|
|
||||||
</h3>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-auto flex w-full flex-col gap-2 px-4 py-4">
|
<div className="flex flex-1 items-end justify-center">
|
||||||
|
<div className="inline-flex w-full flex-col gap-3 px-10 pb-10">
|
||||||
<Link
|
<Link
|
||||||
to="/auth/import"
|
to="/auth/import"
|
||||||
className="inline-flex h-12 w-full items-center justify-between gap-2 rounded-lg bg-fuchsia-500 px-6 font-medium text-zinc-100 hover:bg-fuchsia-600"
|
className="inline-flex h-12 w-full items-center justify-between gap-2 rounded-lg bg-fuchsia-500 px-6 font-medium text-zinc-100 hover:bg-fuchsia-600"
|
||||||
@ -37,18 +26,6 @@ export function WelcomeScreen() {
|
|||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
className="col-span-5 rounded-xl bg-zinc-900 bg-cover bg-center"
|
|
||||||
style={{
|
|
||||||
backgroundImage: `url("https://void.cat/d/Ps1b36vu5pdkEA2w75usuB")`,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
className="col-span-2 rounded-xl bg-zinc-900 bg-cover bg-center"
|
|
||||||
style={{
|
|
||||||
backgroundImage: `url("https://void.cat/d/5FdJcBP5ZXKAjYqV8hpcp3")`,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,66 +1,12 @@
|
|||||||
import { platform } from '@tauri-apps/plugin-os';
|
import { Outlet } from 'react-router-dom'
|
||||||
import { Outlet, useNavigate } from 'react-router-dom';
|
|
||||||
|
|
||||||
import { ArrowLeftIcon, ArrowRightIcon } from '@shared/icons';
|
|
||||||
|
|
||||||
const platformName = await platform();
|
|
||||||
|
|
||||||
export function AuthLayout() {
|
export function AuthLayout() {
|
||||||
const navigate = useNavigate();
|
|
||||||
|
|
||||||
const goBack = () => {
|
|
||||||
navigate(-1);
|
|
||||||
};
|
|
||||||
|
|
||||||
const goForward = () => {
|
|
||||||
navigate(1);
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="h-screen w-screen bg-zinc-50 text-zinc-900 dark:bg-zinc-950 dark:text-zinc-100">
|
<div className="relative h-screen w-screen">
|
||||||
<div className="flex h-screen w-full flex-col">
|
<div className="absolute left-0 top-0 z-50 h-16 w-full" data-tauri-drag-region />
|
||||||
<div
|
|
||||||
data-tauri-drag-region
|
|
||||||
className="relative h-11 shrink-0 border border-zinc-100 bg-white dark:border-zinc-900 dark:bg-black"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
data-tauri-drag-region
|
|
||||||
className="flex h-full w-full flex-1 items-center px-2"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
className={`flex h-full items-center gap-2 ${
|
|
||||||
platformName === 'macos' ? 'pl-[68px]' : ''
|
|
||||||
}`}
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => goBack()}
|
|
||||||
className="group inline-flex h-6 w-6 items-center justify-center rounded-md hover:bg-zinc-900"
|
|
||||||
>
|
|
||||||
<ArrowLeftIcon
|
|
||||||
width={16}
|
|
||||||
height={16}
|
|
||||||
className="text-zinc-500 group-hover:text-zinc-300"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
onClick={() => goForward()}
|
|
||||||
className="group inline-flex h-6 w-6 items-center justify-center rounded-md hover:bg-zinc-900"
|
|
||||||
>
|
|
||||||
<ArrowRightIcon
|
|
||||||
width={16}
|
|
||||||
height={16}
|
|
||||||
className="text-zinc-500 group-hover:text-zinc-300"
|
|
||||||
/>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="relative flex min-h-0 w-full flex-1">
|
<div className="relative flex min-h-0 w-full flex-1">
|
||||||
<Outlet />
|
<Outlet />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user