diff --git a/apps/website2/src/index.html b/apps/website2/src/index.html index ae65d349f..28dabd21d 100644 --- a/apps/website2/src/index.html +++ b/apps/website2/src/index.html @@ -34,60 +34,6 @@ -
-
-

Benefits

-
-
Note structure
Notes can be arranged - hierarchically. There's no need for folders, since each note can contain sub-notes. A single note - can be added in multiple places in the hierarchy.
-
Labels and relationships between - notes
Define relations between notes - or add labels for easy categorization. Using promoted attributes, there's an easy way to - enter structured information about the notes which can later be displayed in other formats such as a - table.
-
Note revisions -
Notes are periodically saved in the background and revisions can be used to check the old - content of a note or delete accidental changes. Revisions can also be created on-demand. -
-
Quick search and commands -
Jump quickly to notes across the hierarchy by searching for their title, with - fuzzy matching to account for typos or slight differences. Or search through all the various - commands of the application.
-
Powerful search -
Or search for text inside notes and narrow down the search by filtering by the parent note, or - by depth. -
-
Protected notes -
Protect sensitive personal information by encrypting the notes and locking them behind a - password-protected session. -
-
Import/export -
Easily import Markdown and ENEX formats from other note-taking applications, or export to - Markdown or HTML. -
-
Workspaces and hoisting -
Easily separate your personal and work notes by grouping them under a workspace, which - focuses your note tree to only show a specific set of notes.
-
Web clipper -
Grab web pages (or screenshots) and place them directly into Trilium using the web clipper - browser extension. -
-
Synchronization -
Use a self-hosted or cloud instance to easily synchronize your notes across multiple devices, - and to access it from your mobile phone using a PWA (progressive web application). -
-
Share notes on the web -
If you have a server instance, you can easily use it to share a subset of your notes with - other people.
-
Advanced scripting and REST API -
Create your own integrations within Trilium by writing custom widgets, or - custom-server side logic. Interact externally with the Trilium database by using the built-in REST - API.
-
-
-
-

Note types

diff --git a/apps/website2/src/style.css b/apps/website2/src/style.css deleted file mode 100644 index 4609bd361..000000000 --- a/apps/website2/src/style.css +++ /dev/null @@ -1,232 +0,0 @@ -:root { - --card-bg: #fff; - --brand-1: #e47b19; - --brand-2: #4fa52b; - --brand-3: #e33f3b; - --bg-dark: #0a0e14; - --text-on-dark: #ffffff; -} - -html, -body { - margin: 0; - line-height: 1.5; - font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; -} - -body { - font-family: sans-serif; - background: white; - color: black; -} - -/* #region Header */ -header { - padding: 1em; - position: sticky; - top: 0; - background: rgba(255, 255, 255, 0.75); - box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); - backdrop-filter: blur(20px); - z-index: 1000; -} - -header .content-wrapper { - display: flex; - align-items: center; - justify-items: center; -} - -header > .content-wrapper, -section.hero-section > .content-wrapper { - min-width: 80vw; -} - -header img { - width: 48px; - height: 48px; -} - -header img+span { - font-size: 1.1em; -} - -header nav { - flex-grow: 1; - display: flex; - justify-content: flex-end; -} -/* #endregion */ - -.content-wrapper { - max-width: 1200px; - margin: auto; -} - -section { - padding: 3em 0; -} - -section h2 { - text-align: center; - font-weight: 100; - margin-top: 0; - margin-bottom: 2em; -} - -section.hero-section { - position: relative; - background: linear-gradient(135deg, var(--light-bg-start), var(--light-bg-end)); -} - -section.hero-section.dark { - color: var(--text-on-dark); - background: radial-gradient(circle at top left, #0e141b, var(--bg-dark) 70%), linear-gradient(135deg, #0a0e14, #141c24); -} - -/* Extra colored spots */ -section.hero-section::before { - content: ""; - position: absolute; - inset: 0; - pointer-events: none; - background: - radial-gradient(40vmax 40vmax at 15% 25%, rgba(228, 123, 25, 0.25), transparent 70%), - radial-gradient(35vmax 35vmax at 75% 20%, rgba(79, 165, 43, 0.22), transparent 70%), - radial-gradient(28vmax 28vmax at 60% 75%, rgba(227, 63, 59, 0.22), transparent 70%), - radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.18), transparent 70%), - radial-gradient(15vmax 15vmax at 40% 50%, rgba(79, 165, 43, 0.15), transparent 70%); -} - -section.hero-section.dark::before { - background: - radial-gradient(40vmax 40vmax at 20% 30%, rgba(228, 123, 25, 0.25), transparent 70%), - radial-gradient(30vmax 30vmax at 75% 25%, rgba(79, 165, 43, 0.25), transparent 70%), - radial-gradient(25vmax 25vmax at 60% 75%, rgba(227, 63, 59, 0.25), transparent 70%), - radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.15), transparent 70%); -} - -/* Soft vignette for focus */ -section.hero-section::after { - content: ""; - position: absolute; - inset: 0; - background: radial-gradient(circle, rgba(255, 255, 255, 0) 60%, rgba(0, 0, 0, 0.06) 100%); - pointer-events: none; -} - -/* Optional subtle noise for depth */ -section.hero-section.dark::after { - content: ""; - position: absolute; - inset: 0; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); - opacity: 0.04; - pointer-events: none; -} - -section.hero-section > .content-wrapper { - display: flex; - padding: 3em; - align-items: center; - justify-content: center; - min-height: 60vh; -} - -section.hero-section .title-section { - flex-basis: 40%; -} - -section.hero-section .title-section h1 { - line-height: 1.1; - font-weight: 100; -} - -section.hero-section .image, -section.hero-section .image img { - width: 100%; - height: auto; - position: relative; -} - -section:nth-of-type(2n+1) { - background: linear-gradient(135deg, rgba(228, 123, 25, 0.08), rgba(79, 165, 43, 0.08)); -} - -.benefits-container { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - gap: 1em; -} - -.benefits-container .card { - padding: 1em; -} - -.note-types-container { - display: grid; - grid-template-columns: 1fr 1fr 1fr; - gap: 1em; -} - -.collections-container { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 1em; -} - -.columns-2>div { - flex: 50%; - flex-shrink: 0; - flex-grow: 0; -} - -img { - width: 100%; - height: auto; -} - -footer { - margin: 0; - padding: 1em 0; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); -} - -.card { - border: 0; - box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); - background-color: var(--card-bg); - border-radius: 16px; - overflow: hidden; -} - -.card p { - margin: 0; - padding: 1em; -} - -span.text-big { - font-size: 1.25em; -} - -/* #region Download button */ -.download-button { - text-decoration: none; - background: var(--brand-1); - padding: 0.5em 1em; - border-radius: 6px; - color: white; - box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); - display: inline-block; -} - -.download-button .platform { - font-size: 0.75em; - opacity: 0.75; -} - -.hero-section .download-button { - padding: 1em 2em; - margin: 1em 0; -} -/* #endregion */ \ No newline at end of file diff --git a/apps/website3/src/components/Card.tsx b/apps/website3/src/components/Card.tsx new file mode 100644 index 000000000..ee09c0460 --- /dev/null +++ b/apps/website3/src/components/Card.tsx @@ -0,0 +1,17 @@ +import { ComponentChildren } from "preact"; + +interface CardProps { + title: string; + children: ComponentChildren; +} + +export default function Card({ title, children }: CardProps) { + return ( +
+

+ {title}
+ {children} +

+
+ ) +} diff --git a/apps/website3/src/components/Section.tsx b/apps/website3/src/components/Section.tsx new file mode 100644 index 000000000..c73211802 --- /dev/null +++ b/apps/website3/src/components/Section.tsx @@ -0,0 +1,18 @@ +import { ComponentChildren } from "preact"; + +interface SectionProps { + title?: string; + children: ComponentChildren; + className?: string; +} + +export default function Section({ className, title, children }: SectionProps) { + return ( +
+
+ {title &&

{title}

} + {children} +
+
+ ) +} diff --git a/apps/website3/src/pages/Home/index.tsx b/apps/website3/src/pages/Home/index.tsx index 923de376c..a500b6677 100644 --- a/apps/website3/src/pages/Home/index.tsx +++ b/apps/website3/src/pages/Home/index.tsx @@ -1,39 +1,29 @@ -import preactLogo from '../../assets/preact.svg'; +import Card from '../../components/Card'; +import Section from '../../components/Section'; import './style.css'; export function Home() { return ( -
- - Preact logo - -

Get Started building Vite-powered Preact Apps

-
- - - -
-
- ); -} - -function Resource(props) { - return ( - -

{props.title}

-

{props.description}

-
+
+
+ Notes can be arranged hierarchically. There's no need for folders, since each note can contain sub-notes. A single note can be added in multiple places in the hierarchy. + Define relations between notes + or add labels for easy categorization. Using promoted attributes, there's an easy way to + enter structured information about the notes which can later be displayed in other formats such as a + table. + Notes are periodically saved in the background and revisions can be used to check the old content of a note or delete accidental changes. Revisions can also be created on-demand. + Jump quickly to notes across the hierarchy by searching for their title, with + fuzzy matching to account for typos or slight differences. Or search through all the various + commands of the application. + Or search for text inside notes and narrow down the search by filtering by the parent note, or by depth. + Protect sensitive personal information by encrypting the notes and locking them behind a password-protected session. + Easily import Markdown and ENEX formats from other note-taking applications, or export to Markdown or HTML. + Easily separate your personal and work notes by grouping them under a workspace, which focuses your note tree to only show a specific set of notes. + Grab web pages (or screenshots) and place them directly into Trilium using the web clipper browser extension. + Use a self-hosted or cloud instance to easily synchronize your notes across multiple devices, and to access it from your mobile phone using a PWA (progressive web application). + If you have a server instance, you can easily use it to share a subset of your notes with other people. + Create your own integrations within Trilium by writing custom widgets, or custom-server side logic. Interact externally with the Trilium database by using the built-in REST API. +
+
); } diff --git a/apps/website3/src/style.css b/apps/website3/src/style.css index 13fd2961d..4609bd361 100644 --- a/apps/website3/src/style.css +++ b/apps/website3/src/style.css @@ -1,70 +1,232 @@ :root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; + --card-bg: #fff; + --brand-1: #e47b19; + --brand-2: #4fa52b; + --brand-3: #e33f3b; + --bg-dark: #0a0e14; + --text-on-dark: #ffffff; +} - color: #222; - background-color: #ffffff; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; +html, +body { + margin: 0; + line-height: 1.5; + font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; } body { - margin: 0; -} - -#app { - display: flex; - flex-direction: column; - min-height: 100vh; + font-family: sans-serif; + background: white; + color: black; } +/* #region Header */ header { - display: flex; - justify-content: flex-end; - background-color: #673ab8; + padding: 1em; + position: sticky; + top: 0; + background: rgba(255, 255, 255, 0.75); + box-shadow: 0 0 6px rgba(0, 0, 0, 0.3); + backdrop-filter: blur(20px); + z-index: 1000; +} + +header .content-wrapper { + display: flex; + align-items: center; + justify-items: center; +} + +header > .content-wrapper, +section.hero-section > .content-wrapper { + min-width: 80vw; +} + +header img { + width: 48px; + height: 48px; +} + +header img+span { + font-size: 1.1em; } header nav { - display: flex; + flex-grow: 1; + display: flex; + justify-content: flex-end; +} +/* #endregion */ + +.content-wrapper { + max-width: 1200px; + margin: auto; } -header a { - color: #fff; - padding: 0.75rem; - text-decoration: none; +section { + padding: 3em 0; } -header a.active { - background-color: #0005; +section h2 { + text-align: center; + font-weight: 100; + margin-top: 0; + margin-bottom: 2em; } -header a:hover { - background-color: #0008; +section.hero-section { + position: relative; + background: linear-gradient(135deg, var(--light-bg-start), var(--light-bg-end)); } -main { - flex: auto; - display: flex; - align-items: center; - max-width: 1280px; - margin: 0 auto; - text-align: center; +section.hero-section.dark { + color: var(--text-on-dark); + background: radial-gradient(circle at top left, #0e141b, var(--bg-dark) 70%), linear-gradient(135deg, #0a0e14, #141c24); } -@media (max-width: 639px) { - main { - margin: 2rem; - } +/* Extra colored spots */ +section.hero-section::before { + content: ""; + position: absolute; + inset: 0; + pointer-events: none; + background: + radial-gradient(40vmax 40vmax at 15% 25%, rgba(228, 123, 25, 0.25), transparent 70%), + radial-gradient(35vmax 35vmax at 75% 20%, rgba(79, 165, 43, 0.22), transparent 70%), + radial-gradient(28vmax 28vmax at 60% 75%, rgba(227, 63, 59, 0.22), transparent 70%), + radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.18), transparent 70%), + radial-gradient(15vmax 15vmax at 40% 50%, rgba(79, 165, 43, 0.15), transparent 70%); } -@media (prefers-color-scheme: dark) { - :root { - color: #ccc; - background-color: #1a1a1a; - } +section.hero-section.dark::before { + background: + radial-gradient(40vmax 40vmax at 20% 30%, rgba(228, 123, 25, 0.25), transparent 70%), + radial-gradient(30vmax 30vmax at 75% 25%, rgba(79, 165, 43, 0.25), transparent 70%), + radial-gradient(25vmax 25vmax at 60% 75%, rgba(227, 63, 59, 0.25), transparent 70%), + radial-gradient(20vmax 20vmax at 85% 65%, rgba(228, 123, 25, 0.15), transparent 70%); } + +/* Soft vignette for focus */ +section.hero-section::after { + content: ""; + position: absolute; + inset: 0; + background: radial-gradient(circle, rgba(255, 255, 255, 0) 60%, rgba(0, 0, 0, 0.06) 100%); + pointer-events: none; +} + +/* Optional subtle noise for depth */ +section.hero-section.dark::after { + content: ""; + position: absolute; + inset: 0; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + opacity: 0.04; + pointer-events: none; +} + +section.hero-section > .content-wrapper { + display: flex; + padding: 3em; + align-items: center; + justify-content: center; + min-height: 60vh; +} + +section.hero-section .title-section { + flex-basis: 40%; +} + +section.hero-section .title-section h1 { + line-height: 1.1; + font-weight: 100; +} + +section.hero-section .image, +section.hero-section .image img { + width: 100%; + height: auto; + position: relative; +} + +section:nth-of-type(2n+1) { + background: linear-gradient(135deg, rgba(228, 123, 25, 0.08), rgba(79, 165, 43, 0.08)); +} + +.benefits-container { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 1em; +} + +.benefits-container .card { + padding: 1em; +} + +.note-types-container { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 1em; +} + +.collections-container { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1em; +} + +.columns-2>div { + flex: 50%; + flex-shrink: 0; + flex-grow: 0; +} + +img { + width: 100%; + height: auto; +} + +footer { + margin: 0; + padding: 1em 0; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.3); +} + +.card { + border: 0; + box-shadow: 0 0 3px rgba(0, 0, 0, 0.25); + background-color: var(--card-bg); + border-radius: 16px; + overflow: hidden; +} + +.card p { + margin: 0; + padding: 1em; +} + +span.text-big { + font-size: 1.25em; +} + +/* #region Download button */ +.download-button { + text-decoration: none; + background: var(--brand-1); + padding: 0.5em 1em; + border-radius: 6px; + color: white; + box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); + display: inline-block; +} + +.download-button .platform { + font-size: 0.75em; + opacity: 0.75; +} + +.hero-section .download-button { + padding: 1em 2em; + margin: 1em 0; +} +/* #endregion */ \ No newline at end of file