Compare commits
4 Commits
d22dca0a27
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51beca2776 | ||
|
|
0b9df4549e | ||
|
|
78407ae9e8 | ||
|
|
bc670d11dc |
23
Caddyfile
Normal file
23
Caddyfile
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
15
README.md
15
README.md
@@ -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 32–33, 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
|
||||||
|
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
26
index.html
26
index.html
@@ -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() -> 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>
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
61542
static/js/mountain.js
61542
static/js/mountain.js
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user