chore(website): remove old website
46
apps/website/.gitignore
vendored
@ -1,28 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
# Output
|
# Editor directories and files
|
||||||
.output
|
.vscode/*
|
||||||
.vercel
|
!.vscode/extensions.json
|
||||||
.netlify
|
.idea
|
||||||
.wrangler
|
|
||||||
/.svelte-kit
|
|
||||||
/build
|
|
||||||
|
|
||||||
# OS
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
Thumbs.db
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
# Env
|
*.njsproj
|
||||||
.env
|
*.sln
|
||||||
.env.*
|
*.sw?
|
||||||
!.env.example
|
|
||||||
!.env.test
|
|
||||||
|
|
||||||
# Vite
|
|
||||||
vite.config.js.timestamp-*
|
|
||||||
vite.config.ts.timestamp-*
|
|
||||||
|
|
||||||
# Paraglide
|
|
||||||
src/lib/paraglide
|
|
||||||
|
|
||||||
project.inlang/cache
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
engine-strict=true
|
|
@ -1,11 +1,15 @@
|
|||||||
# apps/website
|
# `create-preact`
|
||||||
|
|
||||||
Landing page for Trilium Notes powered by [Svelte](https://github.com/sveltejs/cli) and [Tailwind CSS](https://tailwindcss.com/).
|
<h2 align="center">
|
||||||
|
<img height="256" width="256" src="./src/assets/preact.svg">
|
||||||
|
</h2>
|
||||||
|
|
||||||
## Developing
|
<h3 align="center">Get started using Preact and Vite!</h3>
|
||||||
|
|
||||||
To run a dev server that will hot-reload changes: `pnpm dev`
|
## Getting Started
|
||||||
|
|
||||||
## Building
|
- `npm run dev` - Starts a dev server at http://localhost:5173/
|
||||||
|
|
||||||
To create a production build: `pnpm build`
|
- `npm run build` - Builds for production, emitting to `dist/`. Prerenders all found routes in app to static HTML
|
||||||
|
|
||||||
|
- `npm run preview` - Starts a server at http://localhost:4173/ to test production build locally
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
import js from '@eslint/js';
|
|
||||||
import { includeIgnoreFile } from '@eslint/compat';
|
|
||||||
import svelte from 'eslint-plugin-svelte';
|
|
||||||
import globals from 'globals';
|
|
||||||
import { fileURLToPath } from 'node:url';
|
|
||||||
import ts from 'typescript-eslint';
|
|
||||||
import svelteConfig from './svelte.config.js';
|
|
||||||
|
|
||||||
const gitignorePath = fileURLToPath(new URL('./.gitignore', import.meta.url));
|
|
||||||
|
|
||||||
export default ts.config(
|
|
||||||
includeIgnoreFile(gitignorePath),
|
|
||||||
js.configs.recommended,
|
|
||||||
...ts.configs.recommended,
|
|
||||||
...svelte.configs.recommended,
|
|
||||||
{
|
|
||||||
languageOptions: {
|
|
||||||
globals: { ...globals.browser, ...globals.node }
|
|
||||||
},
|
|
||||||
rules: { // typescript-eslint strongly recommend that you do not use the no-undef lint rule on TypeScript projects.
|
|
||||||
// see: https://typescript-eslint.io/troubleshooting/faqs/eslint/#i-get-errors-from-the-no-undef-rule-about-global-variables-not-being-defined-even-though-there-are-no-typescript-errors
|
|
||||||
"no-undef": 'off' }
|
|
||||||
},
|
|
||||||
{
|
|
||||||
files: [
|
|
||||||
'**/*.svelte',
|
|
||||||
'**/*.svelte.ts',
|
|
||||||
'**/*.svelte.js'
|
|
||||||
],
|
|
||||||
languageOptions: {
|
|
||||||
parserOptions: {
|
|
||||||
projectService: true,
|
|
||||||
extraFileExtensions: ['.svelte'],
|
|
||||||
parser: ts.parser,
|
|
||||||
svelteConfig
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://inlang.com/schema/inlang-message-format",
|
|
||||||
"hello_world": "Hello, {name} from en!"
|
|
||||||
}
|
|
@ -1,37 +1,24 @@
|
|||||||
{
|
{
|
||||||
"name": "website",
|
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.0.1",
|
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview"
|
||||||
"prepare": "svelte-kit sync || echo ''",
|
|
||||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
||||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
||||||
"lint": "eslint ."
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@eslint/compat": "^1.2.5",
|
|
||||||
"@eslint/js": "^9.18.0",
|
|
||||||
"@sveltejs/adapter-auto": "^6.0.0",
|
|
||||||
"@sveltejs/kit": "^2.16.0",
|
|
||||||
"@sveltejs/vite-plugin-svelte": "^6.0.0",
|
|
||||||
"@tailwindcss/typography": "^0.5.15",
|
|
||||||
"@tailwindcss/vite": "^4.0.0",
|
|
||||||
"eslint": "^9.18.0",
|
|
||||||
"eslint-plugin-svelte": "^3.0.0",
|
|
||||||
"globals": "^16.0.0",
|
|
||||||
"mdsvex": "^0.12.3",
|
|
||||||
"svelte": "^5.0.0",
|
|
||||||
"svelte-check": "^4.0.0",
|
|
||||||
"tailwindcss": "^4.0.0",
|
|
||||||
"typescript": "^5.0.0",
|
|
||||||
"typescript-eslint": "^8.20.0",
|
|
||||||
"vite": "^7.0.0"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@inlang/paraglide-js": "^2.0.0"
|
"preact": "^10.26.9",
|
||||||
|
"preact-iso": "^2.10.0",
|
||||||
|
"preact-render-to-string": "^6.6.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@preact/preset-vite": "^2.10.2",
|
||||||
|
"eslint": "^9.36.0",
|
||||||
|
"eslint-config-preact": "^2.0.0",
|
||||||
|
"typescript": "^5.9.2",
|
||||||
|
"vite": "^7.0.4"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"extends": "preact"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +0,0 @@
|
|||||||
dv1iXGpHP2mMvuQQo4
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://inlang.com/schema/project-settings",
|
|
||||||
"modules": [
|
|
||||||
"https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@4/dist/index.js",
|
|
||||||
"https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@2/dist/index.js"
|
|
||||||
],
|
|
||||||
"plugin.inlang.messageFormat": {
|
|
||||||
"pathPattern": "./messages/{locale}.json"
|
|
||||||
},
|
|
||||||
"baseLocale": "en",
|
|
||||||
"locales": [
|
|
||||||
"en"
|
|
||||||
]
|
|
||||||
}
|
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
@ -1,10 +0,0 @@
|
|||||||
@import 'tailwindcss';
|
|
||||||
@plugin '@tailwindcss/typography';
|
|
||||||
|
|
||||||
main a {
|
|
||||||
text-decoration: revert;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.rounded-full, a.rounded-xl {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
13
apps/website/src/app.d.ts
vendored
@ -1,13 +0,0 @@
|
|||||||
// See https://svelte.dev/docs/kit/types#app.d.ts
|
|
||||||
// for information about these interfaces
|
|
||||||
declare global {
|
|
||||||
namespace App {
|
|
||||||
// interface Error {}
|
|
||||||
// interface Locals {}
|
|
||||||
// interface PageData {}
|
|
||||||
// interface PageState {}
|
|
||||||
// interface Platform {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export {};
|
|
@ -1,12 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="%paraglide.lang%">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
||||||
%sveltekit.head%
|
|
||||||
</head>
|
|
||||||
<body data-sveltekit-preload-data="hover" class="dark:bg-black dark:text-white">
|
|
||||||
%sveltekit.body%
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 130 KiB After Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 229 KiB After Width: | Height: | Size: 229 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 253 KiB After Width: | Height: | Size: 253 KiB |
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 375 KiB After Width: | Height: | Size: 375 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 128 KiB After Width: | Height: | Size: 128 KiB |
@ -1,12 +0,0 @@
|
|||||||
import type { Handle } from '@sveltejs/kit';
|
|
||||||
import { paraglideMiddleware } from '$lib/paraglide/server';
|
|
||||||
|
|
||||||
const handleParaglide: Handle = ({ event, resolve }) => paraglideMiddleware(event.request, ({ request, locale }) => {
|
|
||||||
event.request = request;
|
|
||||||
|
|
||||||
return resolve(event, {
|
|
||||||
transformPageChunk: ({ html }) => html.replace('%paraglide.lang%', locale)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
export const handle: Handle = handleParaglide;
|
|
@ -1,6 +0,0 @@
|
|||||||
import { deLocalizeUrl } from '$lib/paraglide/runtime';
|
|
||||||
|
|
||||||
export const reroute = (request: {
|
|
||||||
url: URL;
|
|
||||||
fetch: typeof fetch;
|
|
||||||
}) => deLocalizeUrl(request.url).pathname;
|
|
@ -1,195 +0,0 @@
|
|||||||
import rootPackageJson from '../../../../package.json';
|
|
||||||
|
|
||||||
export type App = "desktop" | "server";
|
|
||||||
|
|
||||||
export type Architecture = 'x64' | 'arm64';
|
|
||||||
|
|
||||||
export type Platform = "macos" | "windows" | "linux" | "pikapod";
|
|
||||||
|
|
||||||
const version = rootPackageJson.version;
|
|
||||||
|
|
||||||
export interface DownloadInfo {
|
|
||||||
recommended?: boolean;
|
|
||||||
name: string;
|
|
||||||
url?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DownloadMatrixEntry {
|
|
||||||
title: Record<Architecture, string> | string;
|
|
||||||
description: Record<Architecture, string> | string;
|
|
||||||
downloads: Record<string, DownloadInfo>;
|
|
||||||
}
|
|
||||||
|
|
||||||
type DownloadMatrix = Record<App, { [ P in Platform ]?: DownloadMatrixEntry }>;
|
|
||||||
|
|
||||||
// Keep compatibility info inline with https://github.com/electron/electron/blob/main/README.md#platform-support.
|
|
||||||
export const downloadMatrix: DownloadMatrix = {
|
|
||||||
desktop: {
|
|
||||||
windows: {
|
|
||||||
title: {
|
|
||||||
x64: "Windows 64-bit",
|
|
||||||
arm64: "Windows on ARM"
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
x64: "Compatible with Intel or AMD devices running Windows 10 and 11.",
|
|
||||||
arm64: "Compatible with ARM devices (e.g. with Qualcomm Snapdragon).",
|
|
||||||
},
|
|
||||||
downloads: {
|
|
||||||
exe: {
|
|
||||||
recommended: true,
|
|
||||||
name: "Download Installer (.exe)"
|
|
||||||
},
|
|
||||||
zip: {
|
|
||||||
name: "Portable (.zip)"
|
|
||||||
},
|
|
||||||
scoop: {
|
|
||||||
name: "Scoop",
|
|
||||||
url: "https://scoop.sh/#/apps?q=triliumnext"
|
|
||||||
},
|
|
||||||
winget: {
|
|
||||||
name: "Winget",
|
|
||||||
url: "https://github.com/microsoft/winget-pkgs/tree/master/manifests/t/TriliumNext/Notes/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
linux: {
|
|
||||||
title: {
|
|
||||||
x64: "Linux 64-bit",
|
|
||||||
arm64: "Linux on ARM"
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
x64: "For most Linux distributions, compatible with x86_64 architecture.",
|
|
||||||
arm64: "For ARM-based Linux distributions, compatible with aarch64 architecture.",
|
|
||||||
},
|
|
||||||
downloads: {
|
|
||||||
deb: {
|
|
||||||
recommended: true,
|
|
||||||
name: "Download .deb"
|
|
||||||
},
|
|
||||||
rpm: {
|
|
||||||
name: ".rpm"
|
|
||||||
},
|
|
||||||
flatpak: {
|
|
||||||
name: ".flatpak"
|
|
||||||
},
|
|
||||||
zip: {
|
|
||||||
name: "Portable (.zip)"
|
|
||||||
},
|
|
||||||
nixpkgs: {
|
|
||||||
name: "nixpkgs",
|
|
||||||
url: "https://search.nixos.org/packages?query=trilium-next"
|
|
||||||
},
|
|
||||||
aur: {
|
|
||||||
name: "AUR",
|
|
||||||
url: "https://aur.archlinux.org/packages/triliumnext-bin"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
macos: {
|
|
||||||
title: {
|
|
||||||
x64: "macOS for Intel",
|
|
||||||
arm64: "macOS for Apple Silicon"
|
|
||||||
},
|
|
||||||
description: {
|
|
||||||
x64: "For Intel-based Macs running macOS Big Sur or later.",
|
|
||||||
arm64: "For Apple Silicon Macs such as those with M1 and M2 chips.",
|
|
||||||
},
|
|
||||||
downloads: {
|
|
||||||
dmg: {
|
|
||||||
recommended: true,
|
|
||||||
name: "Download Installer (.dmg)"
|
|
||||||
},
|
|
||||||
zip: {
|
|
||||||
name: "Portable (.zip)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
server: {
|
|
||||||
linux: {
|
|
||||||
title: "Self-hosted (Linux)",
|
|
||||||
description: "Deploy Trilium Notes on your own server or VPS, compatible with most Linux distributions.",
|
|
||||||
downloads: {
|
|
||||||
docker: {
|
|
||||||
recommended: true,
|
|
||||||
name: "View on Docker Hub",
|
|
||||||
url: "https://hub.docker.com/r/triliumnext/notes"
|
|
||||||
},
|
|
||||||
tarX64: {
|
|
||||||
name: "x86 (.tar.xz)",
|
|
||||||
url: `https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-x64.tar.xz`
|
|
||||||
},
|
|
||||||
tarArm64: {
|
|
||||||
name: "ARM (.tar.xz)",
|
|
||||||
url: `https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-Server-v${version}-linux-arm64.tar.xz`
|
|
||||||
},
|
|
||||||
nixos: {
|
|
||||||
name: "NixOS module",
|
|
||||||
url: "https://search.nixos.org/options?query=trilium-server"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
pikapod: {
|
|
||||||
title: "Paid hosting",
|
|
||||||
description: "Trilium Notes hosted on PikaPods, a paid service for easy access and management.",
|
|
||||||
downloads: {
|
|
||||||
pikapod: {
|
|
||||||
recommended: true,
|
|
||||||
name: "Set up on PikaPods",
|
|
||||||
url: "https://www.pikapods.com/pods?run=trilium-next"
|
|
||||||
},
|
|
||||||
triliumcc: {
|
|
||||||
name: "Alternatively see trilium.cc",
|
|
||||||
url: "https://trilium.cc/"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export function buildDownloadUrl(app: App, platform: Platform, format: string, architecture: Architecture): string {
|
|
||||||
if (app === "desktop") {
|
|
||||||
return downloadMatrix.desktop[platform]?.downloads[format].url ??
|
|
||||||
`https://github.com/TriliumNext/Trilium/releases/download/v${version}/TriliumNotes-v${version}-${platform}-${architecture}.${format}`;
|
|
||||||
} else if (app === "server") {
|
|
||||||
return downloadMatrix.server[platform]?.downloads[format].url ?? "#";
|
|
||||||
} else {
|
|
||||||
return "#";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getArchitecture(): Architecture {
|
|
||||||
const userAgent = navigator.userAgent.toLowerCase();
|
|
||||||
if (userAgent.includes('arm64') || userAgent.includes('aarch64')) {
|
|
||||||
return 'arm64';
|
|
||||||
}
|
|
||||||
|
|
||||||
return "x64";
|
|
||||||
}
|
|
||||||
|
|
||||||
function getPlatform(): Platform {
|
|
||||||
const userAgent = navigator.userAgent.toLowerCase();
|
|
||||||
if (userAgent.includes('macintosh') || userAgent.includes('mac os x')) {
|
|
||||||
return "macos";
|
|
||||||
} else if (userAgent.includes('windows') || userAgent.includes('win32')) {
|
|
||||||
return "windows";
|
|
||||||
} else {
|
|
||||||
return "linux";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getRecommendedDownload() {
|
|
||||||
const architecture = getArchitecture();
|
|
||||||
const platform = getPlatform();
|
|
||||||
|
|
||||||
const downloadInfo = downloadMatrix.desktop[platform]?.downloads;
|
|
||||||
const recommendedDownload = Object.entries(downloadInfo || {}).find(d => d[1].recommended);
|
|
||||||
const format = recommendedDownload?.[0];
|
|
||||||
const url = buildDownloadUrl("desktop", platform, format || 'zip', architecture);
|
|
||||||
|
|
||||||
return {
|
|
||||||
architecture,
|
|
||||||
platform,
|
|
||||||
url
|
|
||||||
}
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
// place files you want to import through the `$lib` alias in this folder.
|
|
@ -1,16 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import '../app.css';
|
|
||||||
import Header from './header.svelte';
|
|
||||||
|
|
||||||
let { children } = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<Header />
|
|
||||||
|
|
||||||
<main>
|
|
||||||
{@render children()}
|
|
||||||
</main>
|
|
||||||
|
|
||||||
<footer class="container max-w-screen mx-0 w-full bg-white dark:bg-gray-900 mt-2 py-6 text-sm text-center text-gray-500">
|
|
||||||
© 2024-2025 <a href="https://github.com/eliandoran" class="text-blue-500 hover:underline">Elian Doran</a> and the <a href="https://github.com/TriliumNext/Notes/graphs/contributors" class="text-blue-500 hover:underline">team</a>. <br/> © 2017-2024 <a href="https://github.com/zadam" class="text-blue-500 hover:underline">zadam</a>.
|
|
||||||
</footer>
|
|
@ -1,176 +0,0 @@
|
|||||||
<script>
|
|
||||||
import DownloadNow from "./download-now.svelte";
|
|
||||||
import FeatureBlock from "./feature-block.svelte";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:head>
|
|
||||||
<title>Trilium Notes</title>
|
|
||||||
<!-- TODO: description?
|
|
||||||
<meta name="description" content="This is where the description goes for search engines" />
|
|
||||||
-->
|
|
||||||
</svelte:head>
|
|
||||||
|
|
||||||
<section class="relative overflow-hidden bg-gradient-to-br from-white dark:from-black to-violet-50 dark:to-violet-900">
|
|
||||||
<!-- Bokeh background circles -->
|
|
||||||
<div class="absolute inset-0 pointer-events-none z-0">
|
|
||||||
<div class="absolute w-72 h-72 bg-violet-300 opacity-30 rounded-full blur-3xl top-[-50px] left-[-80px]"></div>
|
|
||||||
<div class="absolute w-96 h-96 bg-pink-200 opacity-20 rounded-full blur-3xl bottom-[-100px] right-[-60px]"></div>
|
|
||||||
<div class="absolute w-64 h-64 bg-indigo-200 opacity-20 rounded-full blur-2xl top-[200px] left-[50%] transform -translate-x-1/2"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="relative z-10 container mx-auto pt-24 pb-24 px-4">
|
|
||||||
<div class="flex flex-col md:flex-row items-center md:justify-between gap-12">
|
|
||||||
|
|
||||||
<!-- Left: Text Content -->
|
|
||||||
<div class="md:w-1/3">
|
|
||||||
<h2 class="text-4xl font-bold mb-4 text-gray-900 dark:text-white">Organize Your Thoughts.<br/> Build Your Knowledge.</h2>
|
|
||||||
<p class="text-lg mb-6 text-gray-700 dark:text-gray-300">
|
|
||||||
Trilium Notes helps you build and organize complex personal knowledge bases effortlessly.
|
|
||||||
Its unique tree structure, rich editing tools, and powerful search features make managing your information intuitive and flexible.
|
|
||||||
<!-- TODO: remove the squiggly autocorrect lines in the screenshot!! -->
|
|
||||||
<!-- TODO: dark mode screenshot -->
|
|
||||||
</p>
|
|
||||||
<div class="flex items-center gap-6">
|
|
||||||
<DownloadNow big />
|
|
||||||
<a href="/download" class="font-medium text-violet-700 hover:underline">
|
|
||||||
More platforms
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Right: Screenshot -->
|
|
||||||
<div class="md:w-2/3">
|
|
||||||
<img src="screenshots/desktop-win.png" alt="Screenshot of the app on desktop Windows" class="w-full rounded-xl shadow-lg">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="mt-20 max-w-6xl mx-auto px-4">
|
|
||||||
<h2 class="text-3xl font-bold text-center mb-12">Beyond Text: Smarter Note Types</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-10">
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/note-types/canvas.png"
|
|
||||||
imgAlt="Canvas Note Screenshot"
|
|
||||||
title="Canvas Notes"
|
|
||||||
text="Draw and arrange elements freely using an Excalidraw-powered canvas — ideal for diagrams, sketches, and visual planning."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/note-types/mermaid.png"
|
|
||||||
imgAlt="Mermaid Diagram Screenshot"
|
|
||||||
title="Mermaid Diagrams"
|
|
||||||
text="Render flowcharts, Gantt charts, and sequence diagrams with Mermaid markdown syntax directly in your notes."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/note-types/geo-map.png"
|
|
||||||
imgAlt="Geo Map Screenshot"
|
|
||||||
title="Geo Maps"
|
|
||||||
text="Plot locations and GPX tracks to visualize geography-linked notes and movement patterns on interactive maps."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/note-types/mind-map.png"
|
|
||||||
imgAlt="Mind Map Screenshot"
|
|
||||||
title="Mind Maps"
|
|
||||||
text="Organize ideas visually using a drag-and-drop mind map editor powered by Mind Elixir."
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h2 class="text-3xl font-bold text-center mb-12">Technical Features</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-10">
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/technical-features/sync-server.png"
|
|
||||||
imgAlt="TODO"
|
|
||||||
title="Synchronization Server"
|
|
||||||
text="Seamless mirroring of changes acroll all devices."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/technical-features/cross-platform.png"
|
|
||||||
imgAlt="TODO, maybe some icons"
|
|
||||||
title="Cross-platform App + Web UI"
|
|
||||||
text="Use as Electron application or in your browser."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/technical-features/scripting.png"
|
|
||||||
imgAlt="TODO"
|
|
||||||
title="Scripting"
|
|
||||||
text="Custom UI widgets and a REST API for automation."
|
|
||||||
/>
|
|
||||||
|
|
||||||
<FeatureBlock
|
|
||||||
imgSrc="/technical-features/grafana-metrics.png"
|
|
||||||
imgAlt="Mind Map Screenshot"
|
|
||||||
title="Grafana Metrics"
|
|
||||||
text="Measure database metrics over time."
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="mt-20 max-w-6xl mx-auto px-4">
|
|
||||||
<h2 class="text-3xl font-bold text-center mb-12">Feature Highlights</h2>
|
|
||||||
|
|
||||||
<div class="grid gap-12 md:grid-cols-2 max-w-4xl mx-auto text-gray-700 dark:text-gray-300">
|
|
||||||
<!-- Organization & Navigation -->
|
|
||||||
<div>
|
|
||||||
<h3 class="flex items-center text-xl font-semibold mb-6 text-violet-700">Organization & Navigation</h3>
|
|
||||||
<ul class="list-disc list-inside space-y-3">
|
|
||||||
<li>Arbitrarily deep note tree with cloning support.</li>
|
|
||||||
<li>Fast navigation, full-text search, and note hoisting.</li>
|
|
||||||
<li>Note attributes for organization, querying, and scripting.</li>
|
|
||||||
<li>Seamless note versioning.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Editing & Content -->
|
|
||||||
<div>
|
|
||||||
<h3 class="flex items-center text-xl font-semibold mb-6 text-violet-700">Editing & Content</h3>
|
|
||||||
<ul class="list-disc list-inside space-y-3">
|
|
||||||
<li>Rich WYSIWYG editor with tables, images, math, and markdown autoformat.</li>
|
|
||||||
<li>Source code editing with syntax highlighting.</li>
|
|
||||||
<li>Evernote and Markdown import/export.</li>
|
|
||||||
<li>Web Clipper for easy saving of web content.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Security & Sync -->
|
|
||||||
<div>
|
|
||||||
<h3 class="flex items-center text-xl font-semibold mb-6 text-violet-700">Security & Sync</h3>
|
|
||||||
<ul class="list-disc list-inside space-y-3">
|
|
||||||
<li>Direct OpenID and TOTP integration for secure login.</li>
|
|
||||||
<li>Strong note encryption with per-note granularity.</li>
|
|
||||||
<li>Sharing notes publicly on the internet.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Advanced & Customization -->
|
|
||||||
<div>
|
|
||||||
<h3 class="flex items-center text-xl font-semibold mb-6 text-violet-700">Advanced & Customization</h3>
|
|
||||||
<ul class="list-disc list-inside space-y-3">
|
|
||||||
<li>Relation maps and link maps to visualize notes.</li>
|
|
||||||
<li>Touch-optimized mobile frontend and dark/user themes.</li>
|
|
||||||
<li>Customizable UI with sidebar buttons and user widgets.</li>
|
|
||||||
<li>Scales efficiently beyond 100,000 notes.</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
|
|
||||||
<section class="bg-violet-50 dark:bg-black py-16 mt-24">
|
|
||||||
<div class="container mx-auto text-center px-4">
|
|
||||||
<h2 class="text-3xl font-bold mb-4">Ready to get started with Trilium Notes?</h2>
|
|
||||||
<p class="text-lg text-gray-700 dark:text-gray-200 mb-8">Build your personal knowledge base with powerful features and full privacy.</p>
|
|
||||||
|
|
||||||
<div class="flex justify-center gap-6">
|
|
||||||
<a href="download" class="py-3 px-6 bg-violet-600 text-white font-semibold rounded-full shadow hover:bg-violet-700 focus:outline-none focus:ring focus:ring-violet-400 focus:ring-opacity-75">
|
|
||||||
Download Now
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
@ -1 +0,0 @@
|
|||||||
<a href="/demo/paraglide">paraglide</a>
|
|
@ -1,15 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { setLocale } from '$lib/paraglide/runtime';
|
|
||||||
import { page } from '$app/state';
|
|
||||||
import { goto } from '$app/navigation';
|
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h1>{m.hello_world({ name: 'SvelteKit User' })}</h1>
|
|
||||||
<div>
|
|
||||||
<button onclick={() => setLocale('en')}>en</button>
|
|
||||||
</div><p>
|
|
||||||
If you use VSCode, install the <a href="https://marketplace.visualstudio.com/items?itemName=inlang.vs-code-extension" target="_blank">Sherlock i18n extension</a> for a better i18n experience.
|
|
||||||
</p>
|
|
@ -1,18 +0,0 @@
|
|||||||
<script>
|
|
||||||
import { getRecommendedDownload } from "$lib/download-helper";
|
|
||||||
|
|
||||||
export let big = false;
|
|
||||||
const { url, platform, architecture } = getRecommendedDownload();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#if url}
|
|
||||||
<a href="{url}"
|
|
||||||
class:text-xl={big}
|
|
||||||
class:py-4={big}
|
|
||||||
class="py-2 px-5 bg-violet-600 text-white font-semibold rounded-xl shadow-md hover:bg-violet-700 focus:outline-none focus:ring focus:ring-violet-400 focus:ring-opacity-75">
|
|
||||||
Download now
|
|
||||||
<span class="text-sm text-gray-300">
|
|
||||||
({platform} {architecture})
|
|
||||||
</span>
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
@ -1,65 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import type { Platform } from "$lib/download-helper";
|
|
||||||
import { downloadMatrix, getArchitecture } from "$lib/download-helper";
|
|
||||||
import DownloadCard from "./download-card.svelte";
|
|
||||||
|
|
||||||
let architectures = ["x64", "arm64"] as const;
|
|
||||||
let architecture = getArchitecture();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:head>
|
|
||||||
<title>Trilium Notes: Download</title>
|
|
||||||
<!-- TODO: description?
|
|
||||||
<meta name="description" content="This is where the description goes for search engines" />
|
|
||||||
-->
|
|
||||||
</svelte:head>
|
|
||||||
|
|
||||||
<div class="bg-gray-50 dark:bg-black py-20">
|
|
||||||
<section class="max-w-6xl mx-auto px-4">
|
|
||||||
<h2 class="text-4xl font-bold text-center text-gray-900 dark:text-white mb-12">Download the desktop application</h2>
|
|
||||||
|
|
||||||
<!-- Architecture pill selector -->
|
|
||||||
<div class="col-span-3 flex justify-center items-center gap-3 mb-6">
|
|
||||||
<span class="text-gray-600 dark:text-gray-300 font-medium mr-2">Architecture:</span>
|
|
||||||
<div class="inline-flex bg-violet-100 rounded-full shadow p-1">
|
|
||||||
{#each architectures as arch}
|
|
||||||
<button class="py-2 px-6 rounded-full font-semibold focus:outline-none transition
|
|
||||||
text-violet-700 border-violet-700
|
|
||||||
aria-pressed:bg-violet-700 aria-pressed:text-violet-100
|
|
||||||
" aria-pressed={architecture === arch} on:click={() => architecture = arch}>
|
|
||||||
{arch}
|
|
||||||
</button>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-3 gap-10">
|
|
||||||
{#each Object.entries(downloadMatrix.desktop) as [platformId, platform]}
|
|
||||||
{@const textColor = (platformId === "windows" ? "text-blue-600" : platformId === "linux" ? "text-violet-600" : "text-gray-800 dark:text-gray-100")}
|
|
||||||
{@const bgColor = (platformId === "windows" ? "bg-blue-600" : platformId === "linux" ? "bg-violet-600" : "bg-gray-800")}
|
|
||||||
{@const hoverColor = (platformId === "windows" ? "hover:bg-blue-700" : platformId === "linux" ? "hover:bg-violet-700" : "hover:bg-gray-900")}
|
|
||||||
<DownloadCard app="desktop"
|
|
||||||
{textColor} {bgColor} {hoverColor}
|
|
||||||
{platform} {architecture} platformId={platformId as Platform} />
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="max-w-4xl mx-auto px-4 mt-10">
|
|
||||||
<h2 class="text-3xl font-bold text-center text-gray-900 dark:text-white mb-8">Set up a server for access on multiple devices</h2>
|
|
||||||
|
|
||||||
<div class="grid md:grid-cols-2 gap-10">
|
|
||||||
{#each Object.entries(downloadMatrix.server) as [platformId, platform]}
|
|
||||||
{@const textColor = (platformId === "linux" ? "text-violet-600" : "text-gray-800 dark:text-gray-100")}
|
|
||||||
{@const bgColor = (platformId === "linux" ? "bg-violet-600" : "bg-gray-800")}
|
|
||||||
{@const hoverColor = (platformId === "linux" ? "hover:bg-violet-700" : "hover:bg-gray-900")}
|
|
||||||
<DownloadCard app="server"
|
|
||||||
{textColor} {bgColor} {hoverColor}
|
|
||||||
{platform} {architecture} platformId={platformId as Platform} />
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- TODO: mention mobile support here? (alpha Android app / mobile web view) -->
|
|
||||||
|
|
||||||
</div>
|
|
@ -1,31 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import { buildDownloadUrl, type Architecture, type DownloadMatrixEntry, type Platform, type App } from "$lib/download-helper";
|
|
||||||
|
|
||||||
export let app: App = "desktop";
|
|
||||||
export let platformId: Platform;
|
|
||||||
export let platform: DownloadMatrixEntry;
|
|
||||||
export let textColor: string;
|
|
||||||
export let bgColor: string;
|
|
||||||
export let hoverColor: string;
|
|
||||||
export let architecture: Architecture | null = null;
|
|
||||||
const recommended = Object.entries(platform.downloads).find((e) => e[1].recommended);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="bg-white dark:bg-gray-900 border border-gray-200 rounded-2xl shadow-lg p-8 flex flex-col items-start">
|
|
||||||
<h3 class="text-2xl font-semibold {textColor} mb-2">{typeof platform.title === "object" ? platform.title[architecture] : platform.title}</h3>
|
|
||||||
<p class="text-gray-700 dark:text-gray-200 mb-12">{typeof platform.title === "object" ? platform.description[architecture] : platform.description}</p>
|
|
||||||
<div class="space-y-2 mt-auto w-full">
|
|
||||||
{#if recommended}
|
|
||||||
<a href={buildDownloadUrl(app, platformId as Platform, recommended[0], architecture)} class="mt-auto block text-center {bgColor} {hoverColor} text-white font-medium py-2 px-5 rounded-full shadow transition">
|
|
||||||
{recommended[1].name}
|
|
||||||
</a>
|
|
||||||
{/if}
|
|
||||||
<div class="flex flex-wrap justify-center gap-4 text-sm {textColor} mt-2">
|
|
||||||
{#each Object.entries(platform.downloads).filter((e) => !e[1].recommended) as [format, download]}
|
|
||||||
<a href={buildDownloadUrl(app, platformId as Platform, format, architecture)} class="hover:underline block">
|
|
||||||
{download.name}
|
|
||||||
</a>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,14 +0,0 @@
|
|||||||
<script>
|
|
||||||
export let imgSrc = "/404.png";
|
|
||||||
export let imgAlt = "screenshot";
|
|
||||||
export let title = "title";
|
|
||||||
export let text = "text";
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div class="bg-white dark:bg-gray-900 rounded-xl shadow overflow-hidden">
|
|
||||||
<img src="{imgSrc}" alt="{imgAlt}" class="w-full h-56 object-cover object-top">
|
|
||||||
<div class="p-6">
|
|
||||||
<h3 class="text-xl font-semibold mb-2">{title}</h3>
|
|
||||||
<p class="text-gray-600 dark:text-gray-300">{text}</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,23 +0,0 @@
|
|||||||
<script>
|
|
||||||
import DownloadNow from "./download-now.svelte";
|
|
||||||
|
|
||||||
</script>
|
|
||||||
<header class="header bg-white dark:bg-gray-900 sticky dark:text-white top-0 z-50 shadow">
|
|
||||||
<div class="container mx-auto flex items-center py-4">
|
|
||||||
<a href="/" class="flex items-center gap-x-2 w-100">
|
|
||||||
<img src="icon-color.svg" alt="Trilium Notes Logo" class="w-12 h-12">
|
|
||||||
<span class="text-2xl">Trilium Notes</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="group w-full">
|
|
||||||
<nav class="header-nav">
|
|
||||||
<ul class="flex items-center justify-end gap-4">
|
|
||||||
<li><a href="/">User Guide</a></li>
|
|
||||||
<li><a href="/">Technical Guide</a></li>
|
|
||||||
<li><a href="/" class="text-violet-500">Support us</a></li>
|
|
||||||
<li><DownloadNow /></li>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
@ -1 +0,0 @@
|
|||||||
../../../apps/client/src/assets/icon.png
|
|
Before Width: | Height: | Size: 253 KiB |
Before Width: | Height: | Size: 229 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 128 KiB |
Before Width: | Height: | Size: 804 KiB |
Before Width: | Height: | Size: 785 KiB |
@ -1 +0,0 @@
|
|||||||
../../../../docs/User Guide/User Guide/Advanced Usage/1_Metrics_image.png
|
|
@ -1,11 +0,0 @@
|
|||||||
import { mdsvex } from 'mdsvex';
|
|
||||||
import adapter from '@sveltejs/adapter-auto';
|
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
|
||||||
|
|
||||||
const config = {
|
|
||||||
preprocess: [vitePreprocess(), mdsvex()],
|
|
||||||
kit: { adapter: adapter() },
|
|
||||||
extensions: ['.svelte', '.svx']
|
|
||||||
};
|
|
||||||
|
|
||||||
export default config;
|
|
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"extends": "./.svelte-kit/tsconfig.json",
|
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
|
"target": "ES2020",
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "bundler",
|
||||||
|
"noEmit": true,
|
||||||
"allowJs": true,
|
"allowJs": true,
|
||||||
"checkJs": true,
|
"checkJs": true,
|
||||||
"esModuleInterop": true,
|
|
||||||
"forceConsistentCasingInFileNames": true,
|
/* Preact Config */
|
||||||
"resolveJsonModule": true,
|
"jsx": "react-jsx",
|
||||||
|
"jsxImportSource": "preact",
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
"sourceMap": true,
|
"paths": {
|
||||||
"strict": true,
|
"react": ["./node_modules/preact/compat/"],
|
||||||
"moduleResolution": "bundler",
|
"react-dom": ["./node_modules/preact/compat/"]
|
||||||
"composite": true
|
}
|
||||||
}
|
},
|
||||||
// Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
|
"include": ["node_modules/vite/client.d.ts", "**/*"]
|
||||||
// except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
|
|
||||||
//
|
|
||||||
// If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes
|
|
||||||
// from the referenced tsconfig.json - TypeScript does not merge them in
|
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,17 @@
|
|||||||
import tailwindcss from '@tailwindcss/vite';
|
import { defineConfig } from 'vite';
|
||||||
import { paraglideVitePlugin } from '@inlang/paraglide-js';
|
import preact from '@preact/preset-vite';
|
||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
|
||||||
import { defineConfig, type Plugin } from 'vite';
|
|
||||||
|
|
||||||
export default () => {
|
// https://vitejs.dev/config/
|
||||||
// See https://github.com/nrwl/nx/issues/28978.
|
export default defineConfig({
|
||||||
const cwd = process.cwd();
|
plugins: [
|
||||||
process.chdir(__dirname); // Temporarily change the working directory
|
preact({
|
||||||
|
prerender: {
|
||||||
const config = defineConfig({
|
enabled: true,
|
||||||
plugins: [
|
renderTarget: '#app',
|
||||||
tailwindcss(),
|
additionalPrerenderRoutes: ['/404'],
|
||||||
sveltekit(),
|
previewMiddlewareEnabled: true,
|
||||||
paraglideVitePlugin({
|
previewMiddlewareFallback: '/404',
|
||||||
project: './project.inlang',
|
},
|
||||||
outdir: './src/lib/paraglide'
|
}),
|
||||||
})
|
],
|
||||||
] as Plugin[]
|
});
|
||||||
});
|
|
||||||
|
|
||||||
process.chdir(cwd); // Restore the original working directory
|
|
||||||
return config;
|
|
||||||
};
|
|
||||||
|
24
apps/website2/.gitignore
vendored
@ -1,24 +0,0 @@
|
|||||||
# 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?
|
|
@ -1,15 +0,0 @@
|
|||||||
# `create-preact`
|
|
||||||
|
|
||||||
<h2 align="center">
|
|
||||||
<img height="256" width="256" src="./src/assets/preact.svg">
|
|
||||||
</h2>
|
|
||||||
|
|
||||||
<h3 align="center">Get started using Preact and Vite!</h3>
|
|
||||||
|
|
||||||
## Getting Started
|
|
||||||
|
|
||||||
- `npm run dev` - Starts a dev server at http://localhost:5173/
|
|
||||||
|
|
||||||
- `npm run build` - Builds for production, emitting to `dist/`. Prerenders all found routes in app to static HTML
|
|
||||||
|
|
||||||
- `npm run preview` - Starts a server at http://localhost:4173/ to test production build locally
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"private": true,
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "vite build",
|
|
||||||
"preview": "vite preview"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"preact": "^10.26.9",
|
|
||||||
"preact-iso": "^2.10.0",
|
|
||||||
"preact-render-to-string": "^6.6.1"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@preact/preset-vite": "^2.10.2",
|
|
||||||
"eslint": "^9.36.0",
|
|
||||||
"eslint-config-preact": "^2.0.0",
|
|
||||||
"typescript": "^5.9.2",
|
|
||||||
"vite": "^7.0.4"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"extends": "preact"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<svg enable-background="new 0 0 256 256" version="1.1" viewBox="0 0 256 256" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<title>Trilium Notes</title>
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#95C980;}
|
|
||||||
.st1{fill:#72B755;}
|
|
||||||
.st2{fill:#4FA52B;}
|
|
||||||
.st3{fill:#EE8C89;}
|
|
||||||
.st4{fill:#E96562;}
|
|
||||||
.st5{fill:#E33F3B;}
|
|
||||||
.st6{fill:#EFB075;}
|
|
||||||
.st7{fill:#E99547;}
|
|
||||||
.st8{fill:#E47B19;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="m202.9 112.7c-22.5 16.1-54.5 12.8-74.9 6.3l14.8-11.8 14.1-11.3 49.1-39.3-51.2 35.9-14.3 10-14.9 10.5c0.7-21.2 7-49.9 28.6-65.4 1.8-1.3 3.9-2.6 6.1-3.8 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.4 2.8-4.9 5.4-7.4 7.8-3.4 3.5-6.8 6.4-10.1 8.8z"/>
|
|
||||||
<path class="st1" d="m213.1 104c-22.2 12.6-51.4 9.3-70.3 3.2l14.1-11.3 49.1-39.3-51.2 35.9-14.3 10c0.5-18.1 4.9-42.1 19.7-58.6 2.7-1.5 5.7-2.9 8.8-4.1 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.9 65.9-2.3 2.8-4.8 5.4-7.2 7.8z"/>
|
|
||||||
<path class="st2" d="m220.5 96.2c-21.1 8.6-46.6 5.3-63.7-0.2l49.2-39.4-51.2 35.9c0.3-15.8 3.5-36.6 14.3-52.8 27.1-11.1 68.5-15.3 85.2-9.5 0.1 16.2-15.9 45.4-33.8 66z"/>
|
|
||||||
|
|
||||||
<path class="st3" d="m106.7 179c-5.8-21 5.2-43.8 15.5-57.2l4.8 14.2 4.5 13.4 15.9 47-12.8-47.6-3.6-13.2-3.7-13.9c15.5 6.2 35.1 18.6 40.7 38.8 0.5 1.7 0.9 3.6 1.2 5.5 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.1-3.8-7.6-1.6-3.5-2.9-6.8-3.8-10z"/>
|
|
||||||
<path class="st4" d="m110.4 188.9c-3.4-19.8 6.9-40.5 16.6-52.9l4.5 13.4 15.9 47-12.8-47.6-3.6-13.2c13.3 5.2 29.9 15 38.1 30.4 0.4 2.4 0.6 5 0.7 7.7 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8-1.4-2.6-2.7-5.2-3.8-7.7z"/>
|
|
||||||
<path class="st5" d="m114.2 196.5c-0.7-18 8.6-35.9 17.3-47.1l15.9 47-12.8-47.6c11.6 4.4 26.1 12.4 35.2 24.8 0.9 23.1-7.1 54.9-15.9 65.7-12-4.3-29.3-24-39.7-42.8z"/>
|
|
||||||
|
|
||||||
<path class="st6" d="m86.3 59.1c21.7 10.9 32.4 36.6 35.8 54.9l-15.2-6.6-14.5-6.3-50.6-22 48.8 24.9 13.6 6.9 14.3 7.3c-16.6 7.9-41.3 14.5-62.1 4.1-1.8-0.9-3.6-1.9-5.4-3.2-2.3-1.5-4.5-3.2-6.8-5.1-19.9-16.4-40.3-46.4-42.7-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.2 0.8 6.2 1.6 9.1 2.5 4 1.3 7.6 2.8 10.9 4.4z"/>
|
|
||||||
<path class="st7" d="m75.4 54.8c18.9 12 28.4 35.6 31.6 52.6l-14.5-6.3-50.6-22 48.7 24.9 13.6 6.9c-14.1 6.8-34.5 13-53.3 8.2-2.3-1.5-4.5-3.2-6.8-5.1-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3 3.1 0.8 6.2 1.6 9.1 2.6z"/>
|
|
||||||
<path class="st8" d="m66.3 52.2c15.3 12.8 23.3 33.6 26.1 48.9l-50.6-22 48.8 24.9c-12.2 6-29.6 11.8-46.5 10-19.8-16.4-40.2-46.4-42.6-61.5 12.4-6.5 41.5-5.8 64.8-0.3z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.5 KiB |
@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
"compilerOptions": {
|
|
||||||
"target": "ES2020",
|
|
||||||
"module": "ESNext",
|
|
||||||
"moduleResolution": "bundler",
|
|
||||||
"noEmit": true,
|
|
||||||
"allowJs": true,
|
|
||||||
"checkJs": true,
|
|
||||||
|
|
||||||
/* Preact Config */
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
"jsxImportSource": "preact",
|
|
||||||
"skipLibCheck": true,
|
|
||||||
"paths": {
|
|
||||||
"react": ["./node_modules/preact/compat/"],
|
|
||||||
"react-dom": ["./node_modules/preact/compat/"]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"include": ["node_modules/vite/client.d.ts", "**/*"]
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
import { defineConfig } from 'vite';
|
|
||||||
import preact from '@preact/preset-vite';
|
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
|
||||||
export default defineConfig({
|
|
||||||
plugins: [
|
|
||||||
preact({
|
|
||||||
prerender: {
|
|
||||||
enabled: true,
|
|
||||||
renderTarget: '#app',
|
|
||||||
additionalPrerenderRoutes: ['/404'],
|
|
||||||
previewMiddlewareEnabled: true,
|
|
||||||
previewMiddlewareFallback: '/404',
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|