mirror of
https://github.com/lumehq/lume.git
synced 2025-03-28 18:52:33 +01:00
feat: add desktop2
This commit is contained in:
parent
35c5b5fb78
commit
c809ab6b4e
24
apps/desktop2/.gitignore
vendored
Normal file
24
apps/desktop2/.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
17
apps/desktop2/index.html
Normal file
17
apps/desktop2/index.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Lume Desktop</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body
|
||||||
|
class="relative w-screen h-screen overflow-hidden font-sans antialiased cursor-default select-none text-neutral-950 dark:text-neutral-50">
|
||||||
|
<div class="fixed top-0 left-0 z-50 w-full h-9" data-tauri-drag-region></div>
|
||||||
|
<div id="root"></div>
|
||||||
|
<script type="module" src="/src/app.tsx"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
33
apps/desktop2/package.json
Normal file
33
apps/desktop2/package.json
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"name": "@lume/desktop2",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "tsc && vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@tanstack/react-router": "^1.16.0",
|
||||||
|
"react": "^18.2.0",
|
||||||
|
"react-dom": "^18.2.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@lume/tailwindcss": "workspace:^",
|
||||||
|
"@lume/tsconfig": "workspace:^",
|
||||||
|
"@lume/types": "workspace:^",
|
||||||
|
"@tanstack/router-devtools": "^1.16.0",
|
||||||
|
"@tanstack/router-vite-plugin": "^1.16.1",
|
||||||
|
"@types/react": "^18.2.55",
|
||||||
|
"@types/react-dom": "^18.2.19",
|
||||||
|
"@vitejs/plugin-react-swc": "^3.5.0",
|
||||||
|
"autoprefixer": "^10.4.17",
|
||||||
|
"postcss": "^8.4.33",
|
||||||
|
"tailwindcss": "^3.4.1",
|
||||||
|
"typescript": "^5.2.2",
|
||||||
|
"vite": "^5.1.0",
|
||||||
|
"vite-plugin-top-level-await": "^1.4.1",
|
||||||
|
"vite-tsconfig-paths": "^4.3.1"
|
||||||
|
}
|
||||||
|
}
|
6
apps/desktop2/postcss.config.cjs
Normal file
6
apps/desktop2/postcss.config.cjs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
},
|
||||||
|
};
|
0
apps/desktop2/public/.keep
Normal file
0
apps/desktop2/public/.keep
Normal file
40
apps/desktop2/src/app.css
Normal file
40
apps/desktop2/src/app.css
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
@tailwind base;
|
||||||
|
@tailwind components;
|
||||||
|
@tailwind utilities;
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
@apply cursor-default no-underline !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
@apply cursor-default focus:outline-none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input::-ms-reveal,
|
||||||
|
input::-ms-clear {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-input-placeholder {
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
media-controller {
|
||||||
|
@apply w-full;
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer utilities {
|
||||||
|
.content-break {
|
||||||
|
word-break: break-word;
|
||||||
|
word-wrap: break-word;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shadow-toolbar {
|
||||||
|
box-shadow: 0 0 #0000, 0 0 #0000, 0 8px 24px 0 rgba(0, 0, 0, .2), 0 2px 8px 0 rgba(0, 0, 0, .08), inset 0 0 0 1px rgba(0, 0, 0, .2), inset 0 0 0 2px hsla(0, 0%, 100%, .14)
|
||||||
|
}
|
||||||
|
}
|
28
apps/desktop2/src/app.tsx
Normal file
28
apps/desktop2/src/app.tsx
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { RouterProvider, createRouter } from "@tanstack/react-router";
|
||||||
|
import React, { StrictMode } from "react";
|
||||||
|
import ReactDOM from "react-dom/client";
|
||||||
|
|
||||||
|
// Import the generated route tree
|
||||||
|
import { routeTree } from "./tree.gen";
|
||||||
|
|
||||||
|
// Create a new router instance
|
||||||
|
const router = createRouter({ routeTree });
|
||||||
|
|
||||||
|
// Register the router instance for type safety
|
||||||
|
declare module "@tanstack/react-router" {
|
||||||
|
interface Register {
|
||||||
|
router: typeof router;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Render the app
|
||||||
|
// biome-ignore lint/style/noNonNullAssertion: <explanation>
|
||||||
|
const rootElement = document.getElementById("root")!;
|
||||||
|
if (!rootElement.innerHTML) {
|
||||||
|
const root = ReactDOM.createRoot(rootElement);
|
||||||
|
root.render(
|
||||||
|
<StrictMode>
|
||||||
|
<RouterProvider router={router} />
|
||||||
|
</StrictMode>,
|
||||||
|
);
|
||||||
|
}
|
16
apps/desktop2/src/routes/__root.tsx
Normal file
16
apps/desktop2/src/routes/__root.tsx
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import {
|
||||||
|
Outlet,
|
||||||
|
ScrollRestoration,
|
||||||
|
createRootRoute,
|
||||||
|
} from "@tanstack/react-router";
|
||||||
|
import { TanStackRouterDevtools } from "@tanstack/router-devtools";
|
||||||
|
|
||||||
|
export const Route = createRootRoute({
|
||||||
|
component: () => (
|
||||||
|
<>
|
||||||
|
<ScrollRestoration />
|
||||||
|
<Outlet />
|
||||||
|
<TanStackRouterDevtools />
|
||||||
|
</>
|
||||||
|
),
|
||||||
|
});
|
13
apps/desktop2/src/routes/index.lazy.tsx
Normal file
13
apps/desktop2/src/routes/index.lazy.tsx
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import { createLazyFileRoute } from "@tanstack/react-router";
|
||||||
|
|
||||||
|
export const Route = createLazyFileRoute("/")({
|
||||||
|
component: Index,
|
||||||
|
});
|
||||||
|
|
||||||
|
function Index() {
|
||||||
|
return (
|
||||||
|
<div className="p-2">
|
||||||
|
<h3>Welcome Home!</h3>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
43
apps/desktop2/src/tree.gen.ts
Normal file
43
apps/desktop2/src/tree.gen.ts
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* prettier-ignore-start */
|
||||||
|
|
||||||
|
/* eslint-disable */
|
||||||
|
|
||||||
|
// @ts-nocheck
|
||||||
|
|
||||||
|
// noinspection JSUnusedGlobalSymbols
|
||||||
|
|
||||||
|
// This file is auto-generated by TanStack Router
|
||||||
|
|
||||||
|
import { createFileRoute } from '@tanstack/react-router'
|
||||||
|
|
||||||
|
// Import Routes
|
||||||
|
|
||||||
|
import { Route as rootRoute } from './routes/__root'
|
||||||
|
|
||||||
|
// Create Virtual Routes
|
||||||
|
|
||||||
|
const IndexLazyImport = createFileRoute('/')()
|
||||||
|
|
||||||
|
// Create/Update Routes
|
||||||
|
|
||||||
|
const IndexLazyRoute = IndexLazyImport.update({
|
||||||
|
path: '/',
|
||||||
|
getParentRoute: () => rootRoute,
|
||||||
|
} as any).lazy(() => import('./routes/index.lazy').then((d) => d.Route))
|
||||||
|
|
||||||
|
// Populate the FileRoutesByPath interface
|
||||||
|
|
||||||
|
declare module '@tanstack/react-router' {
|
||||||
|
interface FileRoutesByPath {
|
||||||
|
'/': {
|
||||||
|
preLoaderRoute: typeof IndexLazyImport
|
||||||
|
parentRoute: typeof rootRoute
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create and export the route tree
|
||||||
|
|
||||||
|
export const routeTree = rootRoute.addChildren([IndexLazyRoute])
|
||||||
|
|
||||||
|
/* prettier-ignore-end */
|
14
apps/desktop2/tailwind.config.js
Normal file
14
apps/desktop2/tailwind.config.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import sharedConfig from "@lume/tailwindcss";
|
||||||
|
|
||||||
|
const config = {
|
||||||
|
content: [
|
||||||
|
"./src/**/*.{js,ts,jsx,tsx}",
|
||||||
|
"../../packages/@columns/**/*{.js,.ts,.jsx,.tsx}",
|
||||||
|
"../../packages/ark/**/*{.js,.ts,.jsx,.tsx}",
|
||||||
|
"../../packages/ui/**/*{.js,.ts,.jsx,.tsx}",
|
||||||
|
"index.html",
|
||||||
|
],
|
||||||
|
presets: [sharedConfig],
|
||||||
|
};
|
||||||
|
|
||||||
|
export default config;
|
8
apps/desktop2/tsconfig.json
Normal file
8
apps/desktop2/tsconfig.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"extends": "@lume/tsconfig/base.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "dist"
|
||||||
|
},
|
||||||
|
"include": ["src"],
|
||||||
|
"exclude": ["node_modules", "dist"]
|
||||||
|
}
|
6
apps/desktop2/tsr.config.json
Normal file
6
apps/desktop2/tsr.config.json
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"routesDirectory": "./src/routes",
|
||||||
|
"generatedRouteTree": "./src/tree.gen.ts",
|
||||||
|
"routeFileIgnorePrefix": "-",
|
||||||
|
"quoteStyle": "single"
|
||||||
|
}
|
30
apps/desktop2/vite.config.ts
Normal file
30
apps/desktop2/vite.config.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
import { TanStackRouterVite } from "@tanstack/router-vite-plugin";
|
||||||
|
import react from "@vitejs/plugin-react-swc";
|
||||||
|
import { defineConfig } from "vite";
|
||||||
|
import topLevelAwait from "vite-plugin-top-level-await";
|
||||||
|
import viteTsconfigPaths from "vite-tsconfig-paths";
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [
|
||||||
|
react(),
|
||||||
|
viteTsconfigPaths(),
|
||||||
|
topLevelAwait({
|
||||||
|
promiseExportName: "__tla",
|
||||||
|
promiseImportName: (i) => `__tla_${i}`,
|
||||||
|
}),
|
||||||
|
TanStackRouterVite({
|
||||||
|
routesDirectory: "./src/routes",
|
||||||
|
generatedRouteTree: "./src/tree.gen.ts",
|
||||||
|
routeFileIgnorePrefix: "-",
|
||||||
|
quoteStyle: "single",
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
build: {
|
||||||
|
outDir: "../../dist",
|
||||||
|
},
|
||||||
|
server: {
|
||||||
|
strictPort: true,
|
||||||
|
port: 3000,
|
||||||
|
},
|
||||||
|
clearScreen: false,
|
||||||
|
});
|
68
package.json
68
package.json
@ -1,36 +1,36 @@
|
|||||||
{
|
{
|
||||||
"name": "lume",
|
"name": "lume",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "turbo run build",
|
"build": "turbo run build",
|
||||||
"dev": "turbo run dev",
|
"dev": "turbo run dev",
|
||||||
"web:dev": "turbo run dev --filter web",
|
"web:dev": "turbo run dev --filter web",
|
||||||
"desktop:dev": "turbo run dev --filter desktop",
|
"desktop:dev": "turbo run dev --filter desktop2",
|
||||||
"tauri": "tauri"
|
"tauri": "tauri"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^1.5.3",
|
"@biomejs/biome": "^1.5.3",
|
||||||
"@tauri-apps/cli": "^2.0.0-beta.1",
|
"@tauri-apps/cli": "^2.0.0-beta.1",
|
||||||
"turbo": "^1.12.2"
|
"turbo": "^1.12.2"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.9.0",
|
"packageManager": "pnpm@8.9.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tauri-apps/api": "^2.0.0-beta.0",
|
"@tauri-apps/api": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-autostart": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-autostart": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-clipboard-manager": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-clipboard-manager": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-dialog": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-dialog": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-fs": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-fs": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-http": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-http": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-notification": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-notification": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-os": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-os": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-process": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-process": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-shell": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-shell": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-sql": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-sql": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-updater": "^2.0.0-beta.0",
|
"@tauri-apps/plugin-updater": "^2.0.0-beta.0",
|
||||||
"@tauri-apps/plugin-upload": "^2.0.0-beta.0"
|
"@tauri-apps/plugin-upload": "^2.0.0-beta.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
"tailwindcss": "^3.4.1"
|
"tailwindcss": "^3.4.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@evilmartians/harmony": "^1.2.0"
|
"@evilmartians/harmony": "^1.2.0",
|
||||||
|
"tailwindcss-radix-colors": "^1.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
import harmonyPalette from "@evilmartians/harmony/tailwind";
|
|
||||||
|
|
||||||
const config = {
|
const config = {
|
||||||
theme: {
|
theme: {
|
||||||
colors: harmonyPalette,
|
|
||||||
extend: {
|
extend: {
|
||||||
keyframes: {
|
keyframes: {
|
||||||
slideDownAndFade: {
|
slideDownAndFade: {
|
||||||
@ -46,6 +44,7 @@ const config = {
|
|||||||
plugins: [
|
plugins: [
|
||||||
require("@tailwindcss/forms"),
|
require("@tailwindcss/forms"),
|
||||||
require("@tailwindcss/typography"),
|
require("@tailwindcss/typography"),
|
||||||
|
require("tailwindcss-radix-colors"),
|
||||||
require("tailwind-scrollbar")({ nocompatible: true }),
|
require("tailwind-scrollbar")({ nocompatible: true }),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
3272
pnpm-lock.yaml
generated
3272
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user