diff --git a/.gitignore b/.gitignore
index d8e8bbc5..3864ca7c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,7 +29,7 @@ dist/
# Debug
-*.log*
+*.log.*
# Misc
.DS_Store
diff --git a/apps/desktop2/.gitignore b/apps/desktop2/.gitignore
deleted file mode 100644
index 3f7bf98d..00000000
--- a/apps/desktop2/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-node_modules
-
-/.cache
-/build
-/public/build
-.env
diff --git a/apps/desktop2/README.md b/apps/desktop2/README.md
deleted file mode 100644
index e5e8d9b2..00000000
--- a/apps/desktop2/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# templates/spa
-
-This template leverages [Remix SPA Mode](https://remix.run/docs/en/main/future/spa-mode) to build your app as a Single-Page Application using [Client Data](https://remix.run/docs/en/main/guides/client-data) for all of you data loads and mutations.
-
-⚠️ This is built on top of the Remix Vite template. Remix support for Vite is currently unstable and not recommended for production.
-
-📖 See the [Remix Vite docs][remix-vite-docs] for details on supported features.
-
-## Setup
-
-```shellscript
-npx create-remix@latest --template remix-run/remix/templates/spa
-```
-
-## Development
-
-You can develop your SPA app just like you would a normal Remix app, via:
-
-```shellscript
-npm run dev
-```
-
-## Production
-
-When you are ready yo build a production version of your app, `npm run build` will generate your assets and an `index.html` for the SPA.
-
-```shellscript
-npm run build
-```
-
-You can serve this from any server of your choosing, for a simple example, you could use [http-server](https://www.npmjs.com/package/http-server):
-
-```shellscript
-npx http-server build/client/
-```
-
-[remix-vite-docs]: https://remix.run/docs/en/main/future/vite
diff --git a/apps/desktop2/app/entry.client.tsx b/apps/desktop2/app/entry.client.tsx
deleted file mode 100644
index 999c0a12..00000000
--- a/apps/desktop2/app/entry.client.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { RemixBrowser } from "@remix-run/react";
-import { startTransition, StrictMode } from "react";
-import { hydrateRoot } from "react-dom/client";
-
-startTransition(() => {
- hydrateRoot(
- document,
-
-
-
- );
-});
diff --git a/apps/desktop2/app/entry.server.tsx b/apps/desktop2/app/entry.server.tsx
deleted file mode 100644
index bd7fa1e7..00000000
--- a/apps/desktop2/app/entry.server.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import type { EntryContext } from "@remix-run/node";
-import { RemixServer } from "@remix-run/react";
-import { renderToString } from "react-dom/server";
-
-export default function handleRequest(
- request: Request,
- responseStatusCode: number,
- responseHeaders: Headers,
- remixContext: EntryContext
-) {
- let html = renderToString(
-
- );
- if (html.startsWith("
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
-
-export function HydrateFallback() {
- return (
-
-
-
-
-
-
-
-
- Loading...
-
-
-
- );
-}
diff --git a/apps/desktop2/app/routes/_index.tsx b/apps/desktop2/app/routes/_index.tsx
deleted file mode 100644
index 04198afc..00000000
--- a/apps/desktop2/app/routes/_index.tsx
+++ /dev/null
@@ -1,32 +0,0 @@
-import type { MetaFunction } from "@remix-run/node";
-
-export const meta: MetaFunction = () => {
- return [
- { title: "New Remix SPA" },
- { name: "description", content: "Welcome to Remix (SPA Mode)!" },
- ];
-};
-
-export default function Index() {
- return (
-
-
Welcome to Remix (SPA Mode)
-
-
- );
-}
diff --git a/apps/desktop2/env.d.ts b/apps/desktop2/env.d.ts
deleted file mode 100644
index 78ed2345..00000000
--- a/apps/desktop2/env.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-///
-///
diff --git a/apps/desktop2/package.json b/apps/desktop2/package.json
deleted file mode 100644
index a156e1e7..00000000
--- a/apps/desktop2/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "@lume/desktop2",
- "private": true,
- "sideEffects": false,
- "type": "module",
- "scripts": {
- "build": "remix vite:build",
- "dev": "remix vite:dev",
- "start": "http-server build/client/",
- "typecheck": "tsc"
- },
- "dependencies": {
- "@remix-run/node": "^2.6.0",
- "@remix-run/react": "^2.6.0",
- "http-server": "^14.1.1",
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@remix-run/dev": "^2.6.0",
- "@types/react": "^18.2.20",
- "@types/react-dom": "^18.2.7",
- "typescript": "^5.1.6",
- "vite": "^5.0.0",
- "vite-tsconfig-paths": "^4.2.1"
- },
- "engines": {
- "node": ">=18.0.0"
- }
-}
diff --git a/apps/desktop2/public/favicon.ico b/apps/desktop2/public/favicon.ico
deleted file mode 100644
index 8830cf68..00000000
Binary files a/apps/desktop2/public/favicon.ico and /dev/null differ
diff --git a/apps/desktop2/tsconfig.json b/apps/desktop2/tsconfig.json
deleted file mode 100644
index 58c0a473..00000000
--- a/apps/desktop2/tsconfig.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "include": ["env.d.ts", "**/*.ts", "**/*.tsx"],
- "compilerOptions": {
- "lib": ["DOM", "DOM.Iterable", "ES2022"],
- "isolatedModules": true,
- "esModuleInterop": true,
- "jsx": "react-jsx",
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "resolveJsonModule": true,
- "target": "ES2022",
- "strict": true,
- "allowJs": true,
- "skipLibCheck": true,
- "forceConsistentCasingInFileNames": true,
- "baseUrl": ".",
- "paths": {
- "~/*": ["./app/*"]
- },
-
- // Remix takes care of building everything in `remix build`.
- "noEmit": true
- }
-}
diff --git a/apps/desktop2/vite.config.ts b/apps/desktop2/vite.config.ts
deleted file mode 100644
index 028e6f5f..00000000
--- a/apps/desktop2/vite.config.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { unstable_vitePlugin as remix } from "@remix-run/dev";
-import { defineConfig } from "vite";
-import tsconfigPaths from "vite-tsconfig-paths";
-
-export default defineConfig({
- plugins: [
- remix({ unstable_ssr: false, buildDirectory: "../../dist" }),
- tsconfigPaths(),
- ],
-});
diff --git a/packages/tailwindcss/package.json b/packages/tailwindcss/package.json
index 12460629..ad99a49a 100644
--- a/packages/tailwindcss/package.json
+++ b/packages/tailwindcss/package.json
@@ -16,6 +16,6 @@
"tailwindcss": "^3.4.1"
},
"dependencies": {
- "@evilmartians/harmony": "^1.2.0"
+ "tailwindcss-radix-colors": "^1.2.0"
}
}
diff --git a/packages/tailwindcss/tailwind.config.js b/packages/tailwindcss/tailwind.config.js
index 43a5ae57..151458c3 100644
--- a/packages/tailwindcss/tailwind.config.js
+++ b/packages/tailwindcss/tailwind.config.js
@@ -1,53 +1,51 @@
-import harmonyPalette from "@evilmartians/harmony/tailwind";
-
const config = {
- theme: {
- colors: harmonyPalette,
- extend: {
- keyframes: {
- slideDownAndFade: {
- from: { opacity: 0, transform: "translateY(-2px)" },
- to: { opacity: 1, transform: "translateY(0)" },
- },
- slideLeftAndFade: {
- from: { opacity: 0, transform: "translateX(2px)" },
- to: { opacity: 1, transform: "translateX(0)" },
- },
- slideUpAndFade: {
- from: { opacity: 0, transform: "translateY(2px)" },
- to: { opacity: 1, transform: "translateY(0)" },
- },
- slideRightAndFade: {
- from: { opacity: 0, transform: "translateX(-2px)" },
- to: { opacity: 1, transform: "translateX(0)" },
- },
- overlayShow: {
- from: { opacity: 0 },
- to: { opacity: 1 },
- },
- contentShow: {
- from: { opacity: 0, transform: "translate(-50%, -48%) scale(0.96)" },
- to: { opacity: 1, transform: "translate(-50%, -50%) scale(1)" },
- },
- },
- animation: {
- slideDownAndFade:
- "slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
- slideLeftAndFade:
- "slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
- slideUpAndFade: "slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
- slideRightAndFade:
- "slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
- overlayShow: "overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1)",
- contentShow: "contentShow 150ms cubic-bezier(0.16, 1, 0.3, 1)",
- },
- },
- },
- plugins: [
- require("@tailwindcss/forms"),
- require("@tailwindcss/typography"),
- require("tailwind-scrollbar")({ nocompatible: true }),
- ],
+ theme: {
+ extend: {
+ keyframes: {
+ slideDownAndFade: {
+ from: { opacity: 0, transform: "translateY(-2px)" },
+ to: { opacity: 1, transform: "translateY(0)" },
+ },
+ slideLeftAndFade: {
+ from: { opacity: 0, transform: "translateX(2px)" },
+ to: { opacity: 1, transform: "translateX(0)" },
+ },
+ slideUpAndFade: {
+ from: { opacity: 0, transform: "translateY(2px)" },
+ to: { opacity: 1, transform: "translateY(0)" },
+ },
+ slideRightAndFade: {
+ from: { opacity: 0, transform: "translateX(-2px)" },
+ to: { opacity: 1, transform: "translateX(0)" },
+ },
+ overlayShow: {
+ from: { opacity: 0 },
+ to: { opacity: 1 },
+ },
+ contentShow: {
+ from: { opacity: 0, transform: "translate(-50%, -48%) scale(0.96)" },
+ to: { opacity: 1, transform: "translate(-50%, -50%) scale(1)" },
+ },
+ },
+ animation: {
+ slideDownAndFade:
+ "slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
+ slideLeftAndFade:
+ "slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
+ slideUpAndFade: "slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
+ slideRightAndFade:
+ "slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)",
+ overlayShow: "overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1)",
+ contentShow: "contentShow 150ms cubic-bezier(0.16, 1, 0.3, 1)",
+ },
+ },
+ },
+ plugins: [
+ require("tailwindcss-radix-colors"),
+ require("@tailwindcss/forms"),
+ require("@tailwindcss/typography"),
+ require("tailwind-scrollbar")({ nocompatible: true }),
+ ],
};
export default config;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d714ae14..1d4ffcb5 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -272,6 +272,9 @@ importers:
specifier: ^18.2.0
version: 18.2.0(react@18.2.0)
devDependencies:
+ '@lume/tailwindcss':
+ specifier: workspace:^
+ version: link:../../packages/tailwindcss
'@remix-run/dev':
specifier: ^2.6.0
version: 2.6.0(typescript@5.3.3)(vite@5.0.12)
@@ -281,6 +284,15 @@ importers:
'@types/react-dom':
specifier: ^18.2.7
version: 18.2.18
+ autoprefixer:
+ specifier: ^10.4.17
+ version: 10.4.17(postcss@8.4.33)
+ postcss:
+ specifier: ^8.4.33
+ version: 8.4.33
+ tailwindcss:
+ specifier: ^3.4.1
+ version: 3.4.1
typescript:
specifier: ^5.1.6
version: 5.3.3
@@ -1098,9 +1110,9 @@ importers:
packages/tailwindcss:
dependencies:
- '@evilmartians/harmony':
+ tailwindcss-radix-colors:
specifier: ^1.2.0
- version: 1.2.0
+ version: 1.2.0(tailwindcss@3.4.1)
devDependencies:
'@tailwindcss/forms':
specifier: ^0.5.7
@@ -2263,10 +2275,6 @@ packages:
requiresBuild: true
optional: true
- /@evilmartians/harmony@1.2.0:
- resolution: {integrity: sha512-Ua8gpC+28Eo9D2/xynTrrZIrSawgtobwtRLLYq4wH8N19qoMspWZ1vqfsDDVPgQFa+iHsVAk/SbdmoPAj6OH1g==}
- dev: false
-
/@floating-ui/core@1.6.0:
resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==}
dependencies:
@@ -2517,6 +2525,10 @@ packages:
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: false
+ /@radix-ui/colors@3.0.0:
+ resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==}
+ dev: false
+
/@radix-ui/number@1.0.1:
resolution: {integrity: sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==}
dependencies:
@@ -9355,6 +9367,15 @@ packages:
tailwindcss: 3.4.1
dev: true
+ /tailwindcss-radix-colors@1.2.0(tailwindcss@3.4.1):
+ resolution: {integrity: sha512-2rr3l7NV89UEwRTJFN4LlQIm5aasi7OZeJFF7iaDJ2hKwylR8BNMAC6GoiDl0G7wq18keN1YQ3V5sMbvtREO6w==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0'
+ dependencies:
+ '@radix-ui/colors': 3.0.0
+ tailwindcss: 3.4.1
+ dev: false
+
/tailwindcss@3.4.1:
resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==}
engines: {node: '>=14.0.0'}
diff --git a/src-tauri/gen/main.json b/src-tauri/gen/main.json
index 9f952ef2..568b05cb 100644
--- a/src-tauri/gen/main.json
+++ b/src-tauri/gen/main.json
@@ -1,81 +1,74 @@
{
- "$schema": "./schemas/desktop-schema.json",
- "identifier": "desktop-capability",
- "description": "Capability for the desktop",
- "platforms": [
- "linux",
- "macOS",
- "windows"
- ],
- "windows": [
- "main",
- "settings",
- "event-*",
- "user-*",
- "column-*"
- ],
- "permissions": [
- "path:default",
- "event:default",
- "window:default",
- "app:default",
- "resources:default",
- "menu:default",
- "tray:default",
- "shell:open",
- "theme:allow-set-theme",
- "theme:allow-get-theme",
- {
- "identifier": "http:default",
- "allow": [
- {
- "url": "http://**/"
- },
- {
- "url": "https://**/"
- }
- ]
- },
- {
- "identifier": "fs:scope",
- "allow": [
- {
- "path": "$APPDATA/*"
- },
- {
- "path": "$LOCALDATA/*"
- },
- {
- "path": "$DESKTOP/*"
- },
- {
- "path": "$DOCUMENT/*"
- },
- {
- "path": "$DOWNLOAD/*"
- },
- {
- "path": "$HOME/*"
- },
- {
- "path": "$PICTURE/*"
- },
- {
- "path": "$PUBLIC/*"
- },
- {
- "path": "$VIDEO/*"
- },
- {
- "path": "$RESOURCE"
- },
- {
- "path": "$RESOURCE/*"
- },
- {
- "path": "$RESOURCE/locales/*"
- }
- ]
- }
- ]
+ "$schema": "./schemas/desktop-schema.json",
+ "identifier": "desktop-capability",
+ "description": "Capability for the desktop",
+ "platforms": ["linux", "macOS", "windows"],
+ "windows": ["main", "settings", "event-*", "user-*", "column-*"],
+ "permissions": [
+ "path:default",
+ "event:default",
+ "window:default",
+ "app:default",
+ "resources:default",
+ "menu:default",
+ "tray:default",
+ "shell:open",
+ "theme:allow-set-theme",
+ "theme:allow-get-theme",
+ "notification:allow-is-permission-granted",
+ "notification:allow-request-permission",
+ "notification:allow-notify",
+ {
+ "identifier": "http:default",
+ "allow": [
+ {
+ "url": "http://**/"
+ },
+ {
+ "url": "https://**/"
+ }
+ ]
+ },
+ {
+ "identifier": "fs:scope",
+ "allow": [
+ {
+ "path": "$APPDATA/*"
+ },
+ {
+ "path": "$LOCALDATA/*"
+ },
+ {
+ "path": "$DESKTOP/*"
+ },
+ {
+ "path": "$DOCUMENT/*"
+ },
+ {
+ "path": "$DOWNLOAD/*"
+ },
+ {
+ "path": "$HOME/*"
+ },
+ {
+ "path": "$PICTURE/*"
+ },
+ {
+ "path": "$PUBLIC/*"
+ },
+ {
+ "path": "$VIDEO/*"
+ },
+ {
+ "path": "$RESOURCE"
+ },
+ {
+ "path": "$RESOURCE/*"
+ },
+ {
+ "path": "$RESOURCE/locales/*"
+ }
+ ]
+ }
+ ]
}