Create and use brand.yml files for consistent branding across Shiny apps and Quarto documents. Covers: (1) Creating new _brand.yml files, (2) Applying to Shiny (R and Python), (3) Using in Quarto, (4) Modifying existing files, and (5) Troubleshooting. Includes complete specifications and integration guides.
_brand.yml files for consistent branding across Shiny applications and Quarto documents._brand.yml file defines:_brand.yml (auto-discovered by Shiny and Quarto)company-brand.yml (requires explicit paths)_brand/ or brand/ subdirectoriesreferences/shiny-r.mdreferences/shiny-python.mdreferences/quarto.mdreferences/brand-yml-in-r.md (R Markdown, theming functions, programmatic access)_brand.yml files from brand guidelines:references/brand-yml-spec.md to understand the complete brand.yml structure, field options, and syntax.color:
palette:
brand-blue: "#0066cc"
primary: brand-blue
background: "#ffffff"
typography:
fonts:
- family: Inter
source: google
weight: [400, 600]
base: Inter
color:
palette:
brand-blue: "#0066cc"
brand-orange: "#ff6600"
brand-gray: "#666666"
primary: brand-blue
secondary: brand-gray
warning: brand-orange
foreground: "#333333"
background: "#ffffff"
typography:
fonts:
- family: Inter
source: google
weight: [400, 600, 700]
style: [normal, italic]
- family: Fira Code
source: google
weight: [400, 500]
base:
family: Inter
size: 16px
line-height: 1.5
headings:
family: Inter
weight: 600
monospace: Fira Code
logo:
small: logos/icon.png
medium: logos/header.png
large: logos/full.svg
meta:
name: Company Name
link: https://example.com
references/brand-yml-spec.md:"#0066cc"brand-blue, success-greenhttps:// in all URLs_brand.yml locationhttps://)_brand.yml files:color.palette, then reference in semantic colorstypography.fonts, ensure weights/styles are availablelight/dark structure for multiple variantslight and dark variants to colorsreferences/shiny-r.md for complete integration guidebs_theme(brand = TRUE) or bs_theme(brand = "path")_brand.yml at app rootpage_fluid(), page_sidebar(), etc.library(shiny)
library(bslib)
ui <- page_fluid(
theme = bs_theme(brand = TRUE),
# ... UI elements
)
references/shiny-python.md for complete integration guideui.Theme.from_brand(__file__)_brand.yml at app rootpip install "shiny[theme]"from shiny.express import ui
ui.page_opts(theme=ui.Theme.from_brand(__file__))
from shiny import App, ui
app_ui = ui.page_fluid(
theme=ui.Theme.from_brand(__file__),
# ... UI elements
)
references/quarto.md for complete integration guide_brand.yml at project root with _quarto.ymlbrand keyword to control precedence---
title: "My Document"
format:
html:
brand: _brand.yml
---
_quarto.yml):project:
brand: _brand.yml
format:
html:
theme: default
_brand.yml (with underscore)bs_theme(brand = "path/to/_brand.yml") or ui.Theme.from_brand("path")libsass is installed_brand.yml is at project root_quarto.yml exists for project-level branding"#0066cc" not #0066ccsource: google or source: bunny is specifiedquarto typst fonts"#447099"primary: blue- family: Interreferences/brand-yml-spec.md: Complete brand.yml specification with all sections, fields, examples, and validation rulesreferences/shiny-r.md: Using brand.yml with Shiny for R via bslib (bs_theme, automatic discovery, Shiny-specific integration)references/shiny-python.md: Using brand.yml with Shiny for Python via ui.Theme (from_brand(), installation, performance)references/quarto.md: Using brand.yml with Quarto (formats, light/dark mode, layering, extensions, Typst)references/brand-yml-in-r.md: General R usage including R Markdown integration, theming functions (ggplot2, gt, flextable, plotly, thematic), and programmatic brand access_brand.yml for auto-detection_brand.yml in git repositorycolor:
primary:
light: "#0066cc"
dark: "#3399ff"
background:
light: "#ffffff"
dark: "#1a1a1a"
foreground:
light: "#333333"
dark: "#e0e0e0"
logo:
images:
logo-dark: logos/logo-dark.svg
logo-white: logos/logo-white.svg
icon: logos/icon.png
small: icon
medium:
light: logo-dark
dark: logo-white
typography:
fonts:
- family: Inter
source: google
weight: [300, 400, 500, 600, 700]
style: [normal, italic]
base:
family: Inter
weight: 400
headings:
family: Inter
weight: 600
color:
palette:
navy: "#003366"
ocean-blue: "#0066cc"
sky-blue: "#3399ff"
primary-color: ocean-blue # Alias
brand-blue: ocean-blue # Alias
blue: sky-blue # Alias for primary colors
primary: brand-blue
blue, indigo, purple, pink, red, orange, yellow, green, teal, cyan, white, black. This is useful for consistency and these colors are picked up automatically by tools that use brand.yml.brand-yml-spec.md when creating or modifying files_brand.yml for automatic discovery