--- title: 'Theme Lab: Tune Family, Preset, and Rhythm' name: theme-lab description: Interactive controls for palette family, preset, style intensity, and content width. output: rmarkdown::html_vignette: toc: yes toc_depth: 2 css: albers.css includes: in_header: albers-header.html params: family: red preset: homage base_size: 13 content_width: 80 style: minimal resource_files: - albers.css - albers.js - albers-header.html vignette: | %\VignetteIndexEntry{Theme Lab: Tune Family, Preset, and Rhythm} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r setup, include=FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.align = "center", fig.retina = 2, out.width = "100%", fig.width = 7, fig.asp = 0.618, message = FALSE, warning = FALSE ) library(ggplot2) if (requireNamespace("ragg", quietly = TRUE)) knitr::opts_chunk$set(dev = "ragg_png") if (requireNamespace("systemfonts", quietly = TRUE)) albersdown::albers_register_fonts() if (requireNamespace("ggplot2", quietly = TRUE) && requireNamespace("albersdown", quietly = TRUE)) { if (requireNamespace("ggplot2", quietly = TRUE) && requireNamespace("albersdown", quietly = TRUE)) ggplot2::theme_set(albersdown::theme_albers(family = params$family, preset = params$preset)) } ``` ```{r albers-classes, echo=FALSE, results='asis'} cat(sprintf( paste0( '' ), params$family, params$preset )) ``` ```{r albers-style, echo=FALSE, results='asis'} cat(sprintf( paste0( '' ), params$style, params$style )) cat(sprintf('', params$content_width)) ``` ## What Is This Page For? Use this page to choose a visual direction before you retrofit or create vignettes. You can tune one parameter at a time and immediately see the effect on hierarchy, contrast, and page rhythm.
Start with family and preset, then tune style, then adjust content width. That order gives the fastest path to a coherent page.
## How Do You Use It? 1. Pick a family for color character (the four chips show its tones). 2. Pick a direction: warm **homage** or cool **interaction**. 3. Toggle style intensity to set structural emphasis (marker + rule weight). 4. Adjust content width to match prose density.
A900 A700 A500 A300

family=red | preset=homage | style=minimal | width=80ch

## What Does Each Control Change? - `family`: accent hue and contrast character for links, rules, the nested-square marker, and plot palettes (the four chips above show the active family's tones). - `preset` (direction): warm **homage** (cream ground, serif body, light code) vs cool **interaction** (grey ground, grotesk, dark code). - `style`: structural weight (`minimal`, `balanced`, `assertive`). - `content_width`: reading measure in `ch` units. ## Can You Validate The Palette Quickly? ```{r palette-check} pal <- albersdown::albers_palette(params$family) stopifnot( identical(names(pal), c("A900", "A700", "A500", "A300")), all(nzchar(unname(pal))) ) knitr::kable(data.frame(tone = names(pal), hex = unname(pal)), format = "html") ``` ## Copy Into YAML ```yaml params: family: red preset: homage base_size: 13 content_width: 80 style: minimal ``` ## Example Plot ```{r example-plot} mtcars$grp <- factor(mtcars$cyl) stopifnot(length(levels(mtcars$grp)) >= 3) ggplot(mtcars, aes(wt, mpg, colour = grp)) + geom_point(size = 2.2) + labs( title = "Theme Lab preview", subtitle = "Tune family + preset + style, then copy YAML" ) ```