Compare commits

..

4 Commits

Author SHA1 Message Date
Priec
51beca2776 caddyfile prod fix 2026-06-02 23:33:27 +02:00
Priec
0b9df4549e production website 2026-06-02 23:23:48 +02:00
Priec
78407ae9e8 prod ready 2026-06-02 23:06:09 +02:00
Priec
bc670d11dc better for prod 2026-06-02 22:35:13 +02:00
8 changed files with 26556 additions and 35397 deletions

23
Caddyfile Normal file
View File

@@ -0,0 +1,23 @@
tui-pages.farmeris.sk {
encode gzip
# mdbook served under /book (book.toml has site-url = "/book/")
redir /book /book/
handle /book/* {
root * /app/tui-pages-docs
file_server
}
# website at the root (catch-all — must come last)
handle {
root * /app/tui-pages-web
file_server
}
# custom 404 page for the website
handle_errors {
root * /app/tui-pages-web
rewrite * /404.html
file_server
}
}

View File

@@ -37,9 +37,20 @@ the page plays back.
- `SCALE` — source pixel width fed to chafa; scale it up with `SIZE`. - `SCALE` — source pixel width fed to chafa; scale it up with `SIZE`.
After changing `SIZE`, set a matching `font-size` in `static/css/ascii.css` After changing `SIZE`, set a matching `font-size` in `static/css/ascii.css`
(it halves each time you double the grid) so the ASCII fills the screen. (lines 3233, the two `font-size: max(...)` declarations) so the ASCII fills
the screen. The font-size scales **inversely** with the grid: halve the grid →
double the font-size. The two `max()` multipliers are:
Current setup: `480x144`, font-size `max(0.35vw, 0.695vh)`. - vw multiplier ≈ `1 / (cols × 0.6)` (0.6 ≈ JetBrains Mono char aspect ratio)
- vh multiplier ≈ `1 / rows`
| `SIZE` | `font-size` in `ascii.css` |
| --------- | ------------------------------ |
| `480x144` | `max(0.35vw, 0.695vh)` |
| `360x108` | `max(0.463vw, 0.926vh)` |
| `240x72` | `max(0.7vw, 1.39vh)` |
Current setup: `240x72`, font-size `max(0.7vw, 1.39vh)`.
## License ## License

View File

@@ -10,7 +10,7 @@
<title>Examples — tui-pages</title> <title>Examples — tui-pages</title>
<meta name="description" content="Three runnable TUI apps built with tui-pages: a default multi-page app, a canvas login form, and a keybindings modal. Clone, cargo run, learn."> <meta name="description" content="Three runnable TUI apps built with tui-pages: a default multi-page app, a canvas login form, and a keybindings modal. Clone, cargo run, learn.">
<link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml"> <link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml">
<link rel="canonical" href="https://tui-pages.dev/examples.html"> <link rel="canonical" href="https://tui-pages.farmeris.sk/examples.html">
<meta property="og:title" content="Examples — tui-pages"> <meta property="og:title" content="Examples — tui-pages">
<meta property="og:description" content="Three runnable TUI apps built with tui-pages. Clone, cargo run, learn."> <meta property="og:description" content="Three runnable TUI apps built with tui-pages. Clone, cargo run, learn.">
@@ -82,7 +82,7 @@
<ul class="hidden md:flex items-center gap-1 ml-4 text-sm"> <ul class="hidden md:flex items-center gap-1 ml-4 text-sm">
<li><a href="/examples.html" class="px-3 py-1.5 text-white rounded-md bg-zinc-800/60" aria-current="page">Examples</a></li> <li><a href="/examples.html" class="px-3 py-1.5 text-white rounded-md bg-zinc-800/60" aria-current="page">Examples</a></li>
<li><a href="https://tui-pages.farmeris.sk" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Book</a></li> <li><a href="https://tui-pages.farmeris.sk/book" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Book</a></li>
<li><a href="https://docs.rs/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">API</a></li> <li><a href="https://docs.rs/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">API</a></li>
<li><a href="https://gitlab.com/filipriec/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">GitLab</a></li> <li><a href="https://gitlab.com/filipriec/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">GitLab</a></li>
</ul> </ul>
@@ -114,7 +114,7 @@
</nav> </nav>
<p class="text-sm font-medium text-accent uppercase tracking-widest">Examples</p> <p class="text-sm font-medium text-accent uppercase tracking-widest">Examples</p>
<h1 class="mt-3 text-4xl sm:text-5xl font-bold tracking-tight text-zinc-50"> <h1 class="mt-3 text-4xl sm:text-5xl font-bold tracking-tight text-zinc-50">
Three apps in the box. Rich examples out of the box.
</h1> </h1>
<p class="mt-4 text-lg text-zinc-300 max-w-2xl"> <p class="mt-4 text-lg text-zinc-300 max-w-2xl">
Each example is a standalone <code class="font-mono text-zinc-200">cargo</code> project under <code class="font-mono text-zinc-200">examples/</code> in the repo. Clone, run, read, fork. Each example is a standalone <code class="font-mono text-zinc-200">cargo</code> project under <code class="font-mono text-zinc-200">examples/</code> in the repo. Clone, run, read, fork.
@@ -149,21 +149,7 @@
A multi-page app with a focusable list, page navigation, and quit. The minimal end-to-end example — the one to read first to understand the architecture. A multi-page app with a focusable list, page navigation, and quit. The minimal end-to-end example — the one to read first to understand the architecture.
</p> </p>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">Run it</h3>
<div
x-data="{ copied: false }"
class="mt-2 inline-flex items-stretch w-full max-w-md rounded-lg border border-zinc-800 bg-zinc-950/80 overflow-hidden font-mono text-sm"
>
<code class="px-3 py-2.5 text-zinc-100 whitespace-nowrap">cargo run --example default</code>
<button type="button"
@click="navigator.clipboard.writeText('cargo run --example default').then(() => { copied = true; setTimeout(() => copied = false, 1400) })"
class="ml-auto px-3 border-l border-zinc-800 text-zinc-400 hover:text-white hover:bg-zinc-900 transition-colors flex items-center gap-1.5"
>
<svg x-show="!copied" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<svg x-show="copied" x-cloak width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span x-text="copied ? 'Copied' : 'Copy'" class="text-xs"></span>
</button>
</div>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3> <h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3>
<ul class="mt-2 space-y-1.5 text-sm text-zinc-300"> <ul class="mt-2 space-y-1.5 text-sm text-zinc-300">
@@ -209,22 +195,6 @@
A login form with validated inputs, a submit button, and a canvas-owned keymap. Demonstrates the <code class="font-mono text-zinc-200">canvas</code> feature flag: GUI renderers, suggestions, cursor style, validation, computed fields, textareas, and text inputs. A login form with validated inputs, a submit button, and a canvas-owned keymap. Demonstrates the <code class="font-mono text-zinc-200">canvas</code> feature flag: GUI renderers, suggestions, cursor style, validation, computed fields, textareas, and text inputs.
</p> </p>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">Run it</h3>
<div
x-data="{ copied: false }"
class="mt-2 inline-flex items-stretch w-full max-w-md rounded-lg border border-zinc-800 bg-zinc-950/80 overflow-hidden font-mono text-sm"
>
<code class="px-3 py-2.5 text-zinc-100 whitespace-nowrap">cargo run --example canvas --features canvas</code>
<button type="button"
@click="navigator.clipboard.writeText('cargo run --example canvas --features canvas').then(() => { copied = true; setTimeout(() => copied = false, 1400) })"
class="ml-auto px-3 border-l border-zinc-800 text-zinc-400 hover:text-white hover:bg-zinc-900 transition-colors flex items-center gap-1.5"
>
<svg x-show="!copied" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<svg x-show="copied" x-cloak width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span x-text="copied ? 'Copied' : 'Copy'" class="text-xs"></span>
</button>
</div>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3> <h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3>
<ul class="mt-2 space-y-1.5 text-sm text-zinc-300"> <ul class="mt-2 space-y-1.5 text-sm text-zinc-300">
<li class="flex gap-2"><span class="text-accent"></span> Field-level focus with <span class="tp-kbd">tab</span> / <span class="tp-kbd">shift+tab</span></li> <li class="flex gap-2"><span class="text-accent"></span> Field-level focus with <span class="tp-kbd">tab</span> / <span class="tp-kbd">shift+tab</span></li>
@@ -269,21 +239,6 @@
A modal showing all keybindings, opened with <span class="tp-kbd">?</span>. Demonstrates the built-in <code class="font-mono text-zinc-200">dialog</code> feature: content and result types, plus a ratatui renderer. A modal showing all keybindings, opened with <span class="tp-kbd">?</span>. Demonstrates the built-in <code class="font-mono text-zinc-200">dialog</code> feature: content and result types, plus a ratatui renderer.
</p> </p>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">Run it</h3>
<div
x-data="{ copied: false }"
class="mt-2 inline-flex items-stretch w-full max-w-md rounded-lg border border-zinc-800 bg-zinc-950/80 overflow-hidden font-mono text-sm"
>
<code class="px-3 py-2.5 text-zinc-100 whitespace-nowrap">cargo run --example keybindings --features dialog</code>
<button type="button"
@click="navigator.clipboard.writeText('cargo run --example keybindings --features dialog').then(() => { copied = true; setTimeout(() => copied = false, 1400) })"
class="ml-auto px-3 border-l border-zinc-800 text-zinc-400 hover:text-white hover:bg-zinc-900 transition-colors flex items-center gap-1.5"
>
<svg x-show="!copied" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
<svg x-show="copied" x-cloak width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>
<span x-text="copied ? 'Copied' : 'Copy'" class="text-xs"></span>
</button>
</div>
<h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3> <h3 class="mt-6 text-sm font-semibold uppercase tracking-widest text-zinc-400">What it shows</h3>
<ul class="mt-2 space-y-1.5 text-sm text-zinc-300"> <ul class="mt-2 space-y-1.5 text-sm text-zinc-300">
@@ -310,7 +265,7 @@
The book walks you from <code class="font-mono text-zinc-300">cargo new</code> to a working multi-page app. Or read the API reference and dive in. The book walks you from <code class="font-mono text-zinc-300">cargo new</code> to a working multi-page app. Or read the API reference and dive in.
</p> </p>
<div class="mt-8 flex flex-wrap items-center justify-center gap-3"> <div class="mt-8 flex flex-wrap items-center justify-center gap-3">
<a href="https://tui-pages.farmeris.sk" class="inline-flex items-center gap-2 h-11 px-5 rounded-lg bg-accent text-accent-fg font-medium hover:bg-accent/90 transition-colors"> <a href="https://tui-pages.farmeris.sk/book" class="inline-flex items-center gap-2 h-11 px-5 rounded-lg bg-accent text-accent-fg font-medium hover:bg-accent/90 transition-colors">
Start the tutorial Start the tutorial
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg>
</a> </a>

View File

@@ -8,25 +8,27 @@
<meta name="theme-color" content="#fafafa" media="(prefers-color-scheme: light)"> <meta name="theme-color" content="#fafafa" media="(prefers-color-scheme: light)">
<title>tui-pages — a framework for building TUIs in Rust</title> <title>tui-pages — a framework for building TUIs in Rust</title>
<meta name="description" content="A complete framework for building TUIs in Rust on top of ratatui. Pre-programmed focus manager, input pipeline, keymaps, and page navigation. Stop rewriting the same architecture for every project."> <meta name="description" content="A complete UX framework for building TUIs in Rust. Stop rewriting the same architecture for every project.">
<meta name="keywords" content="rust, tui, ratatui, terminal, framework, ui, cargo, crate"> <meta name="keywords" content="rust, tui, ratatui, terminal, framework, ui, cargo, crate">
<meta name="author" content="Filip Riečický"> <meta name="author" content="Filip Riečický">
<link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml"> <link rel="icon" href="/static/img/favicon.svg" type="image/svg+xml">
<link rel="canonical" href="https://tui-pages.dev/"> <link rel="canonical" href="https://tui-pages.farmeris.sk/">
<!-- Open Graph --> <!-- Open Graph -->
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:title" content="tui-pages — a framework for building TUIs in Rust"> <meta property="og:title" content="tui-pages — a framework for building TUIs in Rust">
<meta property="og:description" content="A complete framework for building TUIs in Rust on top of ratatui. Pre-programmed focus manager, input pipeline, keymaps, and page navigation."> <meta property="og:description" content="A complete framework for building TUIs in Rust on top of ratatui. Pre-programmed focus manager, input pipeline, keymaps, and page navigation.">
<meta property="og:url" content="https://tui-pages.dev/"> <meta property="og:url" content="https://tui-pages.farmeris.sk/">
<meta property="og:image" content="/static/img/og-image.svg"> <meta property="og:image" content="/static/img/og-image.svg">
<meta property="og:site_name" content="tui-pages"> <meta property="og:site_name" content="tui-pages">
<!-- Twitter --> <!-- Twitter -->
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="tui-pages — a framework for building TUIs in Rust"> <meta name="twitter:title" content="tui-pages — a framework for building TUIs in Rust">
<meta name="twitter:description" content="Pre-programmed focus, keymaps, and page navigation. Stop rewriting the same architecture for every TUI project."> <meta name="twitter:description" content="UX for TUIs in Rust. Stop rewriting the same architecture for every project.">
<meta name="twitter:image" content="/static/img/og-image.svg"> <meta name="twitter:image" content="/static/img/og-image.svg">
<!-- Preconnect --> <!-- Preconnect -->
@@ -127,7 +129,7 @@
<ul class="hidden md:flex items-center gap-1 ml-4 text-sm"> <ul class="hidden md:flex items-center gap-1 ml-4 text-sm">
<li><a href="/examples.html" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Examples</a></li> <li><a href="/examples.html" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Examples</a></li>
<li><a href="https://tui-pages.farmeris.sk" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Book</a></li> <li><a href="https://tui-pages.farmeris.sk/book" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">Book</a></li>
<li><a href="https://docs.rs/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">API</a></li> <li><a href="https://docs.rs/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">API</a></li>
<li><a href="https://gitlab.com/filipriec/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">GitLab</a></li> <li><a href="https://gitlab.com/filipriec/tui-pages" class="px-3 py-1.5 text-zinc-300 hover:text-white rounded-md hover:bg-zinc-800/50 transition-colors">GitLab</a></li>
</ul> </ul>
@@ -177,7 +179,7 @@
> >
<ul class="px-4 py-3 space-y-1 text-sm"> <ul class="px-4 py-3 space-y-1 text-sm">
<li><a href="/examples.html" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">Examples</a></li> <li><a href="/examples.html" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">Examples</a></li>
<li><a href="https://tui-pages.farmeris.sk" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">Book</a></li> <li><a href="https://tui-pages.farmeris.sk/book" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">Book</a></li>
<li><a href="https://docs.rs/tui-pages" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">API</a></li> <li><a href="https://docs.rs/tui-pages" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">API</a></li>
<li><a href="https://gitlab.com/filipriec/tui-pages" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">GitLab</a></li> <li><a href="https://gitlab.com/filipriec/tui-pages" class="block px-3 py-2 rounded-md text-zinc-300 hover:bg-zinc-800/60">GitLab</a></li>
</ul> </ul>
@@ -208,7 +210,7 @@
</h1> </h1>
<p class="mt-6 text-lg text-zinc-300 max-w-xl leading-relaxed"> <p class="mt-6 text-lg text-zinc-300 max-w-xl leading-relaxed">
<code class="font-mono text-accent">tui-pages</code> gives you a pre-programmed focus manager, input pipeline, keymaps, and page navigation on top of <a href="https://ratatui.rs" class="text-zinc-100 underline decoration-zinc-700 underline-offset-4 hover:decoration-accent">ratatui</a>. Stop rewriting the same architecture for every project. <code class="font-mono text-accent">tui-pages</code> gives you full UX you would ever need. Stop rewriting the same architecture for every project.
</p> </p>
<div class="mt-8 flex flex-wrap items-center gap-3"> <div class="mt-8 flex flex-wrap items-center gap-3">
@@ -216,7 +218,7 @@
Get started Get started
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg>
</a> </a>
<a href="https://tui-pages.farmeris.sk" class="inline-flex items-center gap-2 h-11 px-5 rounded-lg border border-zinc-700 bg-zinc-900/40 text-zinc-100 font-medium hover:border-zinc-500 hover:bg-zinc-900 transition-colors"> <a href="https://tui-pages.farmeris.sk/book" class="inline-flex items-center gap-2 h-11 px-5 rounded-lg border border-zinc-700 bg-zinc-900/40 text-zinc-100 font-medium hover:border-zinc-500 hover:bg-zinc-900 transition-colors">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2zM22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2zM22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
Read the book Read the book
</a> </a>
@@ -568,8 +570,8 @@ pub fn keymaps() -&gt; KeyMap {
<div class="flex flex-wrap items-end justify-between gap-4"> <div class="flex flex-wrap items-end justify-between gap-4">
<div class="max-w-2xl"> <div class="max-w-2xl">
<p class="text-sm font-medium text-accent uppercase tracking-widest">Examples</p> <p class="text-sm font-medium text-accent uppercase tracking-widest">Examples</p>
<h2 class="mt-3 text-3xl sm:text-4xl font-bold tracking-tight text-zinc-50">Three apps in the box.</h2> <h2 class="mt-3 text-3xl sm:text-4xl font-bold tracking-tight text-zinc-50">Rich examples.</h2>
<p class="mt-4 text-lg text-zinc-400 leading-relaxed">Each one is a full <code class="font-mono text-zinc-300">cargo run</code> away. Read the source, run it, fork it.</p> <p class="mt-4 text-lg text-zinc-400 leading-relaxed">Each one is a simple <code class="font-mono text-zinc-300">cargo run</code> away. Read the source, run it, copy it.</p>
</div> </div>
<a href="/examples.html" class="inline-flex items-center gap-1.5 text-sm text-zinc-300 hover:text-white"> <a href="/examples.html" class="inline-flex items-center gap-1.5 text-sm text-zinc-300 hover:text-white">
All examples All examples
@@ -680,7 +682,7 @@ rt.run() // framework handles the rest</code></pre>
The book walks you from <code class="font-mono text-zinc-300">cargo new</code> to a working multi-page app. Or read the API reference and dive in. The book walks you from <code class="font-mono text-zinc-300">cargo new</code> to a working multi-page app. Or read the API reference and dive in.
</p> </p>
<div class="mt-10 flex flex-wrap items-center justify-center gap-3"> <div class="mt-10 flex flex-wrap items-center justify-center gap-3">
<a href="https://tui-pages.farmeris.sk" class="inline-flex items-center gap-2 h-12 px-6 rounded-lg bg-accent text-accent-fg font-medium hover:bg-accent/90 transition-colors"> <a href="https://tui-pages.farmeris.sk/book" class="inline-flex items-center gap-2 h-12 px-6 rounded-lg bg-accent text-accent-fg font-medium hover:bg-accent/90 transition-colors">
Start the tutorial Start the tutorial
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg> <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg>
</a> </a>
@@ -711,7 +713,7 @@ rt.run() // framework handles the rest</code></pre>
<h4 class="text-xs font-semibold uppercase tracking-widest text-zinc-400">Resources</h4> <h4 class="text-xs font-semibold uppercase tracking-widest text-zinc-400">Resources</h4>
<ul class="mt-3 space-y-2 text-sm"> <ul class="mt-3 space-y-2 text-sm">
<li><a href="https://docs.rs/tui-pages" class="text-zinc-300 hover:text-white">API reference</a></li> <li><a href="https://docs.rs/tui-pages" class="text-zinc-300 hover:text-white">API reference</a></li>
<li><a href="https://tui-pages.farmeris.sk" class="text-zinc-300 hover:text-white">The Book</a></li> <li><a href="https://tui-pages.farmeris.sk/book" class="text-zinc-300 hover:text-white">The Book</a></li>
<li><a href="/examples.html" class="text-zinc-300 hover:text-white">Examples</a></li> <li><a href="/examples.html" class="text-zinc-300 hover:text-white">Examples</a></li>
<li><a href="https://crates.io/crates/tui-pages" class="text-zinc-300 hover:text-white">crates.io</a></li> <li><a href="https://crates.io/crates/tui-pages" class="text-zinc-300 hover:text-white">crates.io</a></li>
</ul> </ul>

View File

@@ -1,4 +1,4 @@
User-agent: * User-agent: *
Allow: / Allow: /
Sitemap: https://tui-pages.dev/sitemap.xml Sitemap: https://tui-pages.farmeris.sk/sitemap.xml

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://tui-pages.dev/</loc> <loc>https://tui-pages.farmeris.sk/</loc>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>1.0</priority> <priority>1.0</priority>
</url> </url>
<url> <url>
<loc>https://tui-pages.dev/examples.html</loc> <loc>https://tui-pages.farmeris.sk/examples.html</loc>
<changefreq>weekly</changefreq> <changefreq>weekly</changefreq>
<priority>0.9</priority> <priority>0.9</priority>
</url> </url>

View File

@@ -29,8 +29,8 @@
margin: 0; margin: 0;
padding: 0; padding: 0;
font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace; font-family: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
font-size: max(0.35vw, 0.695vh); /* font-size: max(0.7vw, 1.39vh); */ /* 240p */
font-size: max(0.35vw, 0.695svh); font-size: max(0.463vw, 0.926vh); /* 360p */
line-height: 1.0; line-height: 1.0;
letter-spacing: 0; letter-spacing: 0;
color: var(--tp-mountain-color, #f4a26b); color: var(--tp-mountain-color, #f4a26b);

File diff suppressed because it is too large Load Diff