feat: rebrand logos with wordmark/mark variants and pipe-friendly API
R-CMD-check / R CMD check (push) Successful in 2m39s

- Replace old civilytics_logo.png/white.png/jpg/pdf with new rebrand
  assets: civilytics-wordmark.png, civilytics-wordmark-reverse.png,
  civilytics-mark.png, civilytics-mark-reverse.png (all transparent bg)
- make_logo_grob() now accepts type = c("wordmark", "mark") alongside
  variant = c("light", "dark") for 4 combinations
- New civilytics_logo() pipe-friendly convenience function:
    ggplot(df, aes(x, y)) + geom_point() + theme_civilytics() |>
      civilytics_logo()
  R's |> has lower precedence than +, so the full ggplot chain pipes
  through without parentheses
- Remove old icon/favicon assets no longer used
- Wrap showtext-dependent examples in \dontrun{} to prevent R CMD check
  failures in headless PostScript environments
This commit is contained in:
2026-05-17 22:42:40 -06:00
parent 3a6f20b723
commit 7371069379
25 changed files with 204 additions and 754 deletions
-5
View File
@@ -19,10 +19,5 @@ Useful links:
\author{
\strong{Maintainer}: Jared E. Knowles \email{jared@civilytics.com}
Authors:
\itemize{
\item Jared E. Knowles \email{jared@civilytics.com}
}
}
\keyword{internal}
+2
View File
@@ -1,5 +1,6 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/colors.R
\docType{data}
\name{civilytics_colors}
\alias{civilytics_colors}
\title{Civilytics brand colors}
@@ -17,3 +18,4 @@ custom properties defined on www.civilytics.com (`--cv-*` variables).
civilytics_colors["accent"]
civilytics_colors[c("ink", "paper")]
}
\keyword{datasets}
+63
View File
@@ -0,0 +1,63 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/logo.R
\name{civilytics_logo}
\alias{civilytics_logo}
\title{Add a Civilytics logo to a ggplot (pipe-friendly)}
\usage{
civilytics_logo(
plot,
type = c("wordmark", "mark"),
variant = c("light", "dark"),
margin_param = NULL
)
}
\arguments{
\item{plot}{A ggplot object.}
\item{type}{Character. `"wordmark"` (default) or `"mark"`. Passed to
[make_logo_grob()].}
\item{variant}{Character. `"light"` (default) or `"dark"`. Passed to
[make_logo_grob()].}
\item{margin_param}{Numeric or `NULL`. Manual margin adjustment passed to
[add_logo()].}
}
\value{
A grob (from [gridExtra::arrangeGrob()]) ready to draw with
[grid::grid.draw()].
}
\description{
A convenience wrapper that creates the logo grob and attaches it below the
plot in one call. Designed for use with the base pipe `|>`:
}
\details{
```
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics() |>
civilytics_logo()
```
Since `|>` has lower precedence than `+`, the entire ggplot chain is piped
as the first argument — no parentheses needed.
}
\examples{
\dontrun{
library(ggplot2); library(grid)
# Pipe-friendly usage
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics() |>
civilytics_logo() |>
grid.draw()
# Dark theme with mark
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
theme_civilytics_dark() |>
civilytics_logo(variant = "dark", type = "mark") |>
grid.draw()
}
}
+11 -7
View File
@@ -4,22 +4,26 @@
\alias{make_logo_grob}
\title{Get a Civilytics Logo grob}
\usage{
make_logo_grob(variant = c("light", "dark"))
make_logo_grob(type = c("wordmark", "mark"), variant = c("light", "dark"))
}
\arguments{
\item{variant}{Character. `"light"` (default) uses the standard dark logo
suitable for light backgrounds. `"dark"` uses the white logo suitable for
dark backgrounds (pairs with [theme_civilytics_dark()]).}
\item{type}{Character. `"wordmark"` (default) uses the full wordmark.
`"mark"` uses the compact C-pulse icon only.}
\item{variant}{Character. `"light"` (default) uses the dark logo for light
backgrounds. `"dark"` uses the reverse (light) logo for dark backgrounds
(pairs with [theme_civilytics_dark()]).}
}
\value{
A ggplot object (class `"gg"`) containing the logo grob.
}
\description{
Returns a ggplot object containing the Civilytics logo as a rasterGrob,
ready to compose with plots via [add_logo()] or [add_logo_ga()].
ready to compose with plots via [add_logo()], [add_logo_ga()], or the
pipe-friendly [civilytics_logo()].
}
\examples{
logo <- make_logo_grob() # light background
logo_dark <- make_logo_grob("dark") # dark background
logo <- make_logo_grob() # wordmark, light
logo <- make_logo_grob("mark", "dark") # mark, dark
class(logo) # "gg" "ggplot"
}
+3 -1
View File
@@ -21,6 +21,8 @@ a rasterImage
Plot a jpeg image as a raster
}
\examples{
img <- system.file("img","civilytics_logo.jpg",package="civilytics")
\dontrun{
img <- system.file("img","Knowles_Headshot_2019_good.jpg",package="civilytics")
plot_jpeg(img)
}
}
+2
View File
@@ -64,6 +64,7 @@ automatically via [showtext] when the package is attached. Call
[civilytics_load_fonts()] to reload them if needed.
}
\examples{
\dontrun{
library(ggplot2)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
@@ -74,3 +75,4 @@ ggplot(mpg, aes(displ, hwy, colour = class)) +
scale_color_civilytics() +
theme_civilytics()
}
}
+2
View File
@@ -64,6 +64,7 @@ All parameters from [theme_civilytics()] are accepted and override the dark
defaults.
}
\examples{
\dontrun{
library(ggplot2)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
@@ -74,3 +75,4 @@ ggplot(mpg, aes(displ, hwy, colour = class)) +
scale_color_civilytics() +
theme_civilytics_dark()
}
}