params <-
list(family = "violet", preset = "midnight", base_size = 13L, 
    content_width = 80L, style = "minimal")

## ----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
)
`%||%` <- function(a, b) if (is.null(a)) b else a
library(ggplot2)
if (requireNamespace("ggplot2", quietly = TRUE) && requireNamespace("albersdown", quietly = TRUE)) {
  ggplot2::theme_set(albersdown::theme_albers(
    family = params$family,
    preset = params$preset,
    base_size = params$base_size
  ))
}

## ----albers-family, echo=FALSE, results='asis'--------------------------------
cat(sprintf('<script>document.addEventListener("DOMContentLoaded",function(){document.body.classList.add("palette-%s");});</script>', params$family))

## ----albers-preset, echo=FALSE, results='asis'--------------------------------
cat(sprintf('<script>document.addEventListener("DOMContentLoaded",function(){document.body.classList.add("preset-%s");});</script>', params$preset))

## ----albers-style, echo=FALSE, results='asis'---------------------------------
style_class <- switch(
  tolower(params$style %||% "balanced"),
  minimal = "style-minimal",
  assertive = "style-assertive",
  balanced = ""
)
if (nzchar(style_class)) {
  cat(sprintf('<script>document.addEventListener("DOMContentLoaded",function(){document.body.classList.remove("style-minimal","style-assertive");document.body.classList.add("%s");});</script>', style_class))
}
cat(sprintf('<style>:root{--content:%sch}</style>', params$content_width))

## ----dark-preview-------------------------------------------------------------
ggplot(mtcars, aes(wt, mpg, colour = factor(cyl))) +
  geom_point(size = 2.2) +
  albersdown::scale_color_albers_distinct() +
  labs(
    title = "Midnight preset on a vignette page",
    subtitle = "Dark ground with high-contrast family accents",
    colour = "cyl"
  )

## ----accent-families, fig.height=5.6------------------------------------------
families <- c("red", "lapis", "ochre", "teal", "green", "violet")
accent_a700 <- vapply(families, function(f) albersdown::albers_palette(f)[["A700"]], character(1))

plot_df <- do.call(rbind, lapply(seq_along(families), function(i) {
  d <- mtcars
  d$family <- families[[i]]
  d$mpg_offset <- d$mpg + (i - (length(families) + 1) / 2) * 0.25
  d
}))

ggplot(plot_df, aes(wt, mpg_offset, colour = family)) +
  geom_point(alpha = 0.85, size = 1.7) +
  facet_wrap(~family, ncol = 3) +
  scale_color_manual(values = accent_a700) +
  labs(
    title = "A700 accents across all families",
    subtitle = "Same geometry, different accent family",
    x = "wt",
    y = "mpg (offset)"
  ) +
  theme(legend.position = "none")

## ----recipes-table------------------------------------------------------------
recipes <- data.frame(
  profile = c("dark-violet-minimal", "dark-lapis-minimal", "dark-teal-assertive"),
  family = c("violet", "lapis", "teal"),
  preset = c("midnight", "midnight", "midnight"),
  style = c("minimal", "minimal", "assertive"),
  stringsAsFactors = FALSE
)
knitr::kable(recipes, format = "html")

