···11-# slides.rs
11+# lantern
2233> A modern, fast, terminal presentation tool inspired by [`maaslalani/slides`](https://github.com/maaslalani/slides), built with Rust.
4455+## Quickstart
66+77+### Installation
88+99+```bash
1010+cargo install lantern
1111+```
1212+1313+### Create Your First Deck
1414+1515+Create a markdown file `presentation.md`:
1616+1717+````markdown
1818+---
1919+theme: nord
2020+---
2121+2222+# Welcome to lantern
2323+2424+A terminal presentation tool built with Rust
2525+2626+---
2727+2828+## Features
2929+3030+- Base16 theming system
3131+- Syntax highlighting
3232+- Live reload
3333+- Export to image/video
3434+3535+---
3636+3737+## Code Example
3838+3939+```rust
4040+fn main() {
4141+ println!("Hello, lantern!");
4242+}
4343+```
4444+4545+---
4646+4747+## That's it
4848+4949+Press `q` to quit, `←/→` to navigate
5050+5151+````
5252+5353+### Present
5454+5555+```bash
5656+# Interactive TUI mode
5757+lantern present presentation.md
5858+5959+# Print to stdout
6060+lantern print presentation.md
6161+6262+# With custom theme
6363+lantern present presentation.md --theme catppuccin-mocha
6464+```
6565+6666+### Navigation
6767+6868+| Key | Action |
6969+| ------------ | ------------------- |
7070+| `→`, `j`, `n` | Next slide |
7171+| `←`, `k`, `p` | Previous slide |
7272+| `1-9` | Jump to slide |
7373+| `q` | Quit |
7474+575## Design Principles
676777__Color as Data:__
878All color use flows through typed wrappers using `owo-colors`. No ad-hoc ANSI escapes.
9791080__Themeable:__
1111-Multiple built-in color schemes (basic, monokai, dracula, solarized, nord) with automatic light/dark variant detection based on terminal background. Themes can be selected via frontmatter, CLI flags, or environment variables, with optional explicit variant override using `:light` or `:dark` suffix.
8181+Built on the [Base16](https://github.com/chriskempson/base16) theming system with 10 prebuilt themes (Catppuccin, Nord, Gruvbox Material, Solarized, Oxocarbon). Each theme defines 16 semantic colors mapped to content and UI elements. Themes can be selected via frontmatter, CLI flags, or environment variables.
12821383__Reproducible:__
1414-Everything is reproducible in plain text — decks can render without TUI (using `slides print`).
8484+Everything is reproducible in plain text — decks can render without TUI (using `lantern print`).
15851686__Composable:__
1787Parser → Model → Renderer are independent modules with tests and traits.
···11# Themes
2233-slides.rs uses the [Base16](https://github.com/chriskempson/base16) theming system for customizing the appearance of your presentations. Base16 provides a standardized way to define color schemes that work consistently across dark and light backgrounds.
33+lantern uses the [Base16](https://github.com/chriskempson/base16) theming system for customizing the appearance of your presentations. Base16 provides a standardized way to define color schemes that work consistently across dark and light backgrounds.
4455## Base16 Color System
66···27272828## Color Mapping
29293030-slides.rs maps base16 colors to semantic roles:
3030+lantern maps base16 colors to semantic roles:
31313232### Content Colors
3333···51515252## Available Themes
53535454-slides.rs includes 10 prebuilt base16 themes, embedded at compile time:
5454+lantern includes 10 prebuilt base16 themes, embedded at compile time:
55555656### Catppuccin
5757···109109Override the theme with the `--theme` flag:
110110111111```bash
112112-slides present slides.md --theme nord
113113-slides print slides.md --theme catppuccin-latte
112112+lantern present presentation.md --theme nord
113113+lantern print presentation.md --theme catppuccin-latte
114114```
115115116116### Via Environment Variable
117117118118-Set a default theme using the `SLIDES_THEME` environment variable:
118118+Set a default theme using the `LANTERN_THEME` environment variable:
119119120120```bash
121121-export SLIDES_THEME=gruvbox-material-dark
122122-slides present slides.md
121121+export LANTERN_THEME=gruvbox-material-dark
122122+lantern present presentation.md
123123```
124124125125## Theme Priority
···1281281291291. Command line flag (`--theme`)
1301302. Frontmatter metadata (`theme:` field)
131131-3. Environment variable (`SLIDES_THEME`)
131131+3. Environment variable (`LANTERN_THEME`)
1321324. Default theme (nord for dark terminals, nord-light for light terminals)
133133134134## Custom Themes (Coming Soon)
+11-11
docs/src/quickstart.md
···11# Quickstart
2233-Get started with slides-rs in minutes.
33+Get started with lantern in minutes.
4455## Installation
6677Currently, you'll need to build from source:
8899```bash
1010-git clone https://github.com/yourusername/slides-rs.git
1111-cd slides-rs
1010+git clone https://github.com/yourusername/lantern.git
1111+cd lantern
1212cargo build --release
1313```
14141515-The binary will be available at `target/release/slides`.
1515+The binary will be available at `target/release/lantern`.
16161717## Creating Your First Deck
1818···46464747```rust
4848fn main() {
4949- println!("Hello, slides!");
4949+ println!("Hello, lantern!");
5050}
5151```
5252···7373Run the interactive TUI presenter:
74747575```bash
7676-slides present presentation.md
7676+lantern present presentation.md
7777```
78787979### Navigation Keys
···8989Print all slides to stdout with formatting:
90909191```bash
9292-slides print presentation.md
9292+lantern print presentation.md
9393```
94949595Adjust output width:
96969797```bash
9898-slides print presentation.md --width 100
9898+lantern print presentation.md --width 100
9999```
100100101101Use a specific theme:
102102103103```bash
104104-slides print presentation.md --theme dark
104104+lantern print presentation.md --theme nord
105105```
106106107107## Slide Separators
···186186Customize defaults with environment variables:
187187188188```bash
189189-# Set default theme (options: default, dark, light, monokai, dracula, solarized_dark, nord)
190190-export SLIDES_THEME=dark
189189+# Set default theme
190190+export LANTERN_THEME=nord
191191192192# Set default author (used if not in frontmatter)
193193export USER=YourName
···11+use lantern_core::{metadata::Meta, slide::Slide, term::InputEvent, theme::ThemeColors};
12use ratatui::{Terminal as RatatuiTerminal, backend::Backend};
22-use slides_core::{metadata::Meta, slide::Slide, term::InputEvent, theme::ThemeColors};
33use std::io;
44use std::time::{Duration, Instant};
55···9191#[cfg(test)]
9292mod tests {
9393 use super::*;
9494- use slides_core::slide::{Block, TextSpan};
9494+ use lantern_core::slide::{Block, TextSpan};
95959696 fn create_test_app() -> App {
9797 let slides = vec![
+1-1
ui/src/lib.rs
···88pub use renderer::render_slide_content;
99pub use viewer::SlideViewer;
10101111-pub use slides_core::{
1111+pub use lantern_core::{
1212 slide::{Block, Slide, TextSpan},
1313 theme::ThemeColors,
1414};
+6-6
ui/src/renderer.rs
···22 style::{Modifier, Style},
33 text::{Line, Span, Text},
44};
55-use slides_core::{
55+use lantern_core::{
66 highlighter,
77 slide::{Block, CodeBlock, List, Table, TextSpan, TextStyle},
88 theme::ThemeColors,
···202202}
203203204204/// Convert theme Color to ratatui Style with RGB colors
205205-fn to_ratatui_style(color: &slides_core::theme::Color, bold: bool) -> Style {
205205+fn to_ratatui_style(color: &lantern_core::theme::Color, bold: bool) -> Style {
206206 let mut style = Style::default().fg(ratatui::style::Color::Rgb(color.r, color.g, color.b));
207207208208 if bold {
···214214215215#[cfg(test)]
216216mod tests {
217217- use slides_core::slide::ListItem;
217217+ use lantern_core::slide::ListItem;
218218219219 use super::*;
220220···275275276276 #[test]
277277 fn to_ratatui_style_converts_color() {
278278- use slides_core::theme::Color;
278278+ use lantern_core::theme::Color;
279279280280 let color = Color::new(255, 128, 64);
281281 let style = to_ratatui_style(&color, false);
···285285286286 #[test]
287287 fn to_ratatui_style_applies_bold() {
288288- use slides_core::theme::Color;
288288+ use lantern_core::theme::Color;
289289290290 let color = Color::new(100, 150, 200);
291291 let style = to_ratatui_style(&color, true);
···296296297297 #[test]
298298 fn to_ratatui_style_no_bold_when_false() {
299299- use slides_core::theme::Color;
299299+ use lantern_core::theme::Color;
300300301301 let color = Color::new(100, 150, 200);
302302 let style = to_ratatui_style(&color, false);