Variables for {shinydashboard}

library(fresh)

{shinydashboard} is powered by AdminLTE, with variables from adminlte_* functions, you can customize the appearance of your dashboard. Here are some examples of what you can change.

Colors

There’s a fixed list of colors that you can use in valueBox, infoBox, box, but which are also used for other components like the header. Some colors are associated with a status, for example in valueBox you can use color = "light-blue", but in box you have to use status = "pimary" for the same color. The function adminlte_color() allow you to define those colors:

With the following code we are gonna change the light-blue color that is also the color for the primary status and for the header:

adminlte_color(
  light_blue = "#086A87"
)

With classic colors from {shinydashboard}, it look like:

With our new theme, we have changed the color of four elements:

Here, we have modified only one color, but you can set values for all the other ones.

Body

Last set of variables you can use, are for changing background color of the body itself and boxes.

adminlte_global(
  content_bg = "#FFFFFF",
  box_bg = "#D8DEE9", 
  info_box_bg = "#D8DEE9"
)

With classic colors from {shinydashboard}, it look like:

With our new theme:

Full application

Here’s the code to create the theme and use it in a dashboard application:

library(fresh)
# Create the theme
mytheme <- create_theme(
  adminlte_color(
    light_blue = "#434C5E"
  ),
  adminlte_sidebar(
    width = "400px",
    dark_bg = "#D8DEE9",
    dark_hover_bg = "#81A1C1",
    dark_color = "#2E3440"
  ),
  adminlte_global(
    content_bg = "#FFF",
    box_bg = "#D8DEE9", 
    info_box_bg = "#D8DEE9"
  )
)


library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  header = dashboardHeader(title = "My dashboard"),
  sidebar = dashboardSidebar(
    sidebarMenu(
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItem("Settings", tabName = "settings", icon = icon("sliders"))
    )
  ),
  body = dashboardBody(
    
    use_theme(mytheme), # <-- use the theme
    
    tabItems(
      tabItem(
        "dashboard",
        
        # infoBoxes
        fluidRow(
          infoBox(
            "Orders", "123", "Subtitle", icon = icon("credit-card"),
            color = "light-blue"
          ),
          valueBox(
            5846, "New Orders", icon = icon("credit-card"),
            color = "light-blue"
          ),
          box(
            title = "A box", solidHeader = TRUE, width = 4,
            status = "primary",
            "Content of the box"
          )
        )
      )
    )
  )
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)