R/themes.R

Defines functions void clean sunrise midnightblue midnight hoverlight hoverdark pff nytimes fivethirtyeight espn superhero spacelab slate sandstone minty lux journal flatly darkly cyborg cosmo cerulean default

Documented in cerulean clean cosmo cyborg darkly default espn fivethirtyeight flatly hoverdark hoverlight journal lux midnight midnightblue minty nytimes pff sandstone slate spacelab sunrise superhero void

#' Theme default
#'
#' Reactable-inspired default theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #333333.
#'
#' @param header_font_family Font family for the header text.
#'      Default is -apple-system, BlinkMacSystemFont, Helvetica, Arial, sans-serif.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #333333.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard default theme
#' reactable(data,
#'           theme = default())
#'
#' ## Default theme with additional options applied
#' reactable(data,
#'           theme = default(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

default <- function(font_family = "-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif",
                    font_size = 15,
                    font_color = "#333333",
                    header_font_family = "-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif",
                    header_font_size = 15,
                    header_font_color = "#333333",
                    cell_padding = 6) {

  reactableTheme(
    color = font_color,
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      fontFamily = header_font_family,
      color = header_font_color,
      fontSize = header_font_size
    ),
    groupHeaderStyle = list(fontFamily = header_font_family,
                            color = font_color,
                            fontSize = header_font_size)
  )
}


#' Theme cerulean
#'
#' Bootstrap-inspired cerulean theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #141415.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #cfe9f7.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard cerulean theme
#' reactable(data,
#'           theme = cerulean())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = cerulean(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

cerulean <- function(font_family = "Verdana",
                     font_size = 14,
                     font_color = "#141415",
                     header_font_family = "Verdana",
                     header_font_size = 15,
                     header_font_color = "#cfe9f7",
                     cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#e9ecef",
    borderWidth = "1px",
    stripedColor = "#e9ecef",
    highlightColor = "#e9ecef",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#3ba9e8",
      borderBottomColor = "#eaedf0",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontFamily = header_font_family,
      fontSize = header_font_size
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#1782c0"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#141415",
      "&:focus" = list(color = "#141415")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#141415"),
    rowSelectedStyle = list(backgroundColor = "rgba(52, 156, 244, 0.5)"),
    selectStyle = list(
      backgroundColor = "#2fa4e7",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#e9ecef", color = "#2fa4e7")
    ),
    pageButtonStyle = list(
      backgroundColor = "#ffffff",
      color = "#2fa4e7",
      "&:hover" = list(backgroundColor = "#e9ecef", color = "#2fa4e7")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#e9ecef", color = "#2fa4e7"),
    pageButtonActiveStyle = list(backgroundColor = "#2fa4e7", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#2fa4e7", color = "#ffffff")
  )
}


#' Theme cosmo
#'
#' Bootstrap-inspired cosmo theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #141415.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #ffffff.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard cosmo theme
#' reactable(data,
#'           theme = cosmo())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = cosmo(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

cosmo <- function(font_family = "Verdana",
                  font_size = 14,
                  font_color = "#141415",
                  header_font_family = "Verdana",
                  header_font_size = 15,
                  header_font_color = "#ffffff",
                  cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#f8f9fa",
    borderColor = "#f8f9fa",
    borderWidth = "1px",
    stripedColor = "white",
    highlightColor = "white",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#373a3c",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#111111"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#9a9a9a",
      borderColor = "#b3cecc",
      "&:focus" = list(color = "#888888")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#9a9a9a"),
    rowSelectedStyle = list(backgroundColor = "#78c2ad", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#2780e3",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      backgroundColor = "#ffffff",
      color = "#2780e3",
      "&:hover" = list(backgroundColor = "#2780e3", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#2780e3", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#2780e3", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#2780e3", color = "#ffffff")
  )
}


#' Theme cyborg
#'
#' Bootstrap-inspired cyborg theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #888888.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #7b7b7b.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard cyborg theme
#' reactable(data,
#'           theme = cyborg())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = cyborg(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

cyborg <- function(font_family = "Verdana",
                   font_size = 14,
                   font_color = "#888888",
                   header_font_family = "Verdana",
                   header_font_size = 15,
                   header_font_color = "#7b7b7b",
                   cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#060606",
    borderColor = "#888888",
    borderWidth = "1px",
    stripedColor = "#282828",
    highlightColor = "#282828",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#060606",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(backgroundColor = "#2a9fd6", color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(backgroundColor = "#2a9fd6", color = "#ffffff"),
      fontSize = "15px"
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#349cf4"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#888888",
      "&:focus" = list(color = "#888888")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#888888"),
    rowSelectedStyle = list(backgroundColor = "#2a9fd6", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#282828",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#2a9fd6", color = "#ffffff")
    ),
    pageButtonStyle = list(
      backgroundColor = "#282828",
      color = "#ffffff",
      "&:hover" = list(backgroundColor = "#2a9fd6", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#2a9fd6", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#2a9fd6", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#2a9fd6", color = "#ffffff")
  )
}


#' Theme darkly
#'
#' Bootstrap-inspired darkly theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Georgia.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #ffffff.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Georgia.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #afbdcc.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard darkly theme
#' reactable(data,
#'           theme = darkly())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = darkly(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

darkly <- function(font_family = "Georgia",
                   font_size = 14,
                   font_color = "#ffffff",
                   header_font_family = "Georgia",
                   header_font_size = 15,
                   header_font_color = "#afbdcc",
                   cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#222222",
    borderColor = "#222222",
    borderWidth = "1px",
    stripedColor = "#adb5bd",
    highlightColor = "#adb5bd",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#375a7f",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontFamily = header_font_family,
                             fontSize = header_font_size),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#afbdcc"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#212529",
      borderColor = "#222222",
      "&:focus" = list(color = "#212529")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#212529"),
    rowSelectedStyle = list(backgroundColor = "#375a7f", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#00bc8c",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#00efb2")
    ),
    pageButtonStyle = list(
      backgroundColor = "#00bc8c",
      color = "#ffffff",
      "&:hover" = list(backgroundColor = "#00efb2")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#00efb2", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#00efb2", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#00efb2", color = "#ffffff")
  )
}


#' Theme flatly
#'
#' Bootstrap-inspired flatly theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Georgia.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #212529.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Georgia.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #ffffff.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard flatly theme
#' reactable(data,
#'           theme = flatly())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = flatly(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

flatly <- function(font_family = "Georgia",
                   font_size = 14,
                   font_color = "#212529",
                   header_font_family = "Georgia",
                   header_font_size = 15,
                   header_font_color = "#ffffff",
                   cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#ffffff",
    borderWidth = "1px",
    stripedColor = "#ecf0f1",
    highlightColor = "#ecf0f1",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#2c3e50",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#1cbc9c"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#1cbc9c"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontFamily = header_font_family,
                             fontSize = header_font_size),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#1cbc9c"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#212529",
      "&:focus" = list(color = "#212529")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#212529"),
    rowSelectedStyle = list(backgroundColor = "#2c3e50", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#18bc9c",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#0f7864")
    ),
    pageButtonStyle = list(
      backgroundColor = "#18bc9c",
      color = "#ffffff",
      "&:hover" = list(backgroundColor = "#0f7864")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#0f7864", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#0f7864", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#0f7864", color = "#ffffff")
  )
}


#' Theme journal
#'
#' Bootstrap-inspired journal theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Tahoma.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #222222.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Tahoma.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #fad9d8.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard journal theme
#' reactable(data,
#'           theme = journal())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = journal(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

journal <- function(font_family = "Tahoma",
                    font_size = 14,
                    font_color = "#222222",
                    header_font_family = "Tahoma",
                    header_font_size = 15,
                    header_font_color = "#fad9d8",
                    cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#aaaaaa",
    borderWidth = "1px",
    stripedColor = "#eeeeee",
    highlightColor = "#eeeeee",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#ef8683",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#000000"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#212529",
      borderColor = "#df9696",
      "&:focus" = list(color = "#212529")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#212529"),
    rowSelectedStyle = list(backgroundColor = "#f9d5d4", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#ffffff",
      color = "#eb6864",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#eb6864", color = "#ffffff")
    ),
    pageButtonStyle = list(
      backgroundColor = "#ffffff",
      color = "#eb6864",
      "&:hover" = list(backgroundColor = "#eb6864", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#eb6864", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#eb6864", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#eb6864", color = "#ffffff")
  )
}


#' Theme lux
#'
#' Bootstrap-inspired lux theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Tahoma.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #8c8c8c.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Tahoma.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #7f7f7f.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard lux theme
#' reactable(data,
#'           theme = lux())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = lux(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

lux <- function(font_family = "Tahoma",
                font_size = 14,
                font_color = "#8c8c8c",
                header_font_family = "Tahoma",
                header_font_size = 15,
                header_font_color = "#7f7f7f",
                cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#f7f7f9",
    borderWidth = "1px",
    stripedColor = "#dadada",
    highlightColor = "#f7f7f9",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#1a1a1a",
      color = header_font_color,
      textTransform = "uppercase",
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(textTransform = "uppercase",
                             color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#000000"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#f7f7f9",
      color = "#8c8c8c",
      borderColor = "#f7f7f9",
      "&:focus" = list(color = "#888888")
    ),
    inputStyle = list(backgroundColor = "#f7f7f9", color = "#8c8c8c"),
    rowSelectedStyle = list(backgroundColor = "#1a1a1a", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#282828",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#f7f7f9", color = "#1a1a1a")
    ),
    pageButtonStyle = list(
      backgroundColor = "#ffffff",
      color = "#1a1a1a",
      "&:hover" = list(backgroundColor = "#f7f7f9", color = "#1a1a1a")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#f7f7f9", color = "#1a1a1a"),
    pageButtonActiveStyle = list(backgroundColor = "#1a1a1a", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#1a1a1a", color = "#ffffff")
  )
}


#' Theme minty
#'
#' Bootstrap-inspired minty theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Helvetica.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #9a9a9a.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Helvetica.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 16.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #c9e7de.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard minty theme
#' reactable(data,
#'           theme = minty())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = minty(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

minty <- function(font_family = "Helvetica",
                  font_size = 15,
                  font_color = "#9a9a9a",
                  header_font_family = "Helvetica",
                  header_font_size = 16,
                  header_font_color = "#c9e7de",
                  cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#f7f7f9",
    borderWidth = "1px",
    stripedColor = "#ededed",
    highlightColor = "#f7f7f9",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#78c2ad",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#111111"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#9a9a9a",
      borderColor = "#b3cecc",
      "&:focus" = list(color = "#888888")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#9a9a9a"),
    rowSelectedStyle = list(backgroundColor = "#78c2ad", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#f3969a",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      backgroundColor = "#78c2ad",
      color = "#ffffff",
      "&:hover" = list(backgroundColor = "#f3969a", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#f3969a", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#f3969a", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#f3969a", color = "#ffffff")
  )
}


#' Theme sandstone
#'
#' Bootstrap-inspired sandstone theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Georgia.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #3e3f3a.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Georgia.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 16.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #7c7a78.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard sandstone theme
#' reactable(data,
#'           theme = sandstone())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = sandstone(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

sandstone <- function(font_family = "Georgia",
                      font_size = 15,
                      font_color = "#3e3f3a",
                      header_font_family = "Georgia",
                      header_font_size = 16,
                      header_font_color = "#7c7a78",
                      cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#f8f5f0",
    borderWidth = "1px",
    stripedColor = "#ededed",
    highlightColor = "#f8f5f0",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#f8f5f0",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#000000"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#000000"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#000000"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#3e3f3a",
      borderColor = "#bcbfc1",
      "&:focus" = list(color = "#3e3f3a")
    ),
    inputStyle = list(
      backgroundColor = "#ffffff",
      borderColor = "#bcbfc1",
      color = "#3e3f3a"
    ),
    rowSelectedStyle = list(backgroundColor = "#dfd7ca", color = "#8e8c84"),
    selectStyle = list(
      backgroundColor = "#dfd7ca",
      color = "#8e8c84",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      backgroundColor = "#f8f5f0",
      color = "#8e8c84",
      "&:hover" = list(backgroundColor = "#f3969a", color = "#8e8c84")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#dfd7ca", color = "#8e8c84"),
    pageButtonActiveStyle = list(backgroundColor = "#dfd7ca", color = "#8e8c84"),
    pageButtonCurrentStyle = list(backgroundColor = "#dfd7ca", color = "#8e8c84")
  )
}


#' Theme slate
#'
#' Bootstrap-inspired slate theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Arial.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #aaaaaa.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Arial.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 16.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #97999b.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard slate theme
#' reactable(data,
#'           theme = slate())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = slate(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

slate <- function(font_family = "Arial",
                  font_size = 15,
                  font_color = "#aaaaaa",
                  header_font_family = "Arial",
                  header_font_size = 16,
                  header_font_color = "#97999b",
                  cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#272b30",
    borderColor = "#272b30",
    borderWidth = "1px",
    stripedColor = "#464a4d",
    highlightColor = "#464a4d",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#3a3f44",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(backgroundColor = "#141516", color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(backgroundColor = "#141516", color = "#ffffff"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontSize = header_font_size,
                             fontFamily = header_font_family),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#aaaaaa",
      borderColor = "#dfe3e7",
      "&:focus" = list(color = "#aaaaaa")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#aaaaaa"),
    rowSelectedStyle = list(backgroundColor = "#181a1c", color = "#ffffff"),
    selectStyle = list(
      backgroundColor = "#41464c",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff",
      "&:hover" = list(backgroundColor = "#17191b", color = "#ffffff")
    ),
    pageButtonStyle = list(
      backgroundColor = "#41464c",
      color = "#ffffff",
      "&:hover" = list(backgroundColor = "#17191b", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#17191b", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#17191b", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#17191b", color = "#ffffff")
  )
}


#' Theme spacelab
#'
#' Bootstrap-inspired spacelab theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Georgia.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #8e8e8e.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Georgia.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #8e8e8e.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard spacelab theme
#' reactable(data,
#'           theme = spacelab())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = spacelab(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

spacelab <- function(font_family = "Georgia",
                     font_size = 14,
                     font_color = "#8e8e8e",
                     header_font_family = "Georgia",
                     header_font_size = 15,
                     header_font_color = "#8e8e8e",
                     cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#eeeeee",
    borderWidth = "1px",
    stripedColor = "#dadada",
    highlightColor = "#dadada",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#ededed",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort]" = list(color = "#349cf4"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#349cf4"),
      fontFamily = header_font_family,
      fontSize = header_font_size
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontFamily = header_font_family,
                             fontSize = header_font_size),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#349cf4"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#8e8e8e",
      "&:focus" = list(color = "#8e8e8e")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#8e8e8e"),
    rowSelectedStyle = list(backgroundColor = "rgba(52, 156, 244, 0.5)"),
    selectStyle = list(
      backgroundColor = "#436d99",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonHoverStyle = list(backgroundColor = "#ededed", color = "#8e8e8e"),
    pageButtonActiveStyle = list(backgroundColor = "#436d99", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#436d99", color = "#ffffff")
  )
}


#' Theme superhero
#'
#' Bootstrap-inspired superhero theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Georgia.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #ebebeb.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Georgia.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #ebebeb.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard superhero theme
#' reactable(data,
#'           theme = superhero())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = superhero(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

superhero <- function(font_family = "Georgia",
                      font_size = 14,
                      font_color = "#ebebeb",
                      header_font_family = "Georgia",
                      header_font_size = 15,
                      header_font_color = "#ebebeb",
                      cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#2b3e50",
    borderColor = "#2b3e50",
    borderWidth = "1px",
    stripedColor = "#4a5969",
    highlightColor = "#4a5969",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      backgroundColor = "#4e5d6c",
      color = header_font_color,
      transitionDuration = "0.5s",
      "&:hover[aria-sort], &:focus" = list(color = "#ffffff"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(color = "#ffffff"),
      fontFamily = header_font_family,
      fontSize = header_font_size
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(color = font_color,
                             fontFamily = header_font_family,
                             fontSize = header_font_size),
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      border = "none",
      "&:focus" = list(color = "#2b3e50", border = "none")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#2b3e50"),
    rowSelectedStyle = list(backgroundColor = "rgba(223, 105, 26, 1)"),
    selectStyle = list(backgroundColor = "rgba(223, 105, 26, 1)", color = "#ebebeb"),
    pageButtonHoverStyle = list(backgroundColor = "#abb6c2"),
    pageButtonActiveStyle = list(backgroundColor = "rgba(223, 105, 26, 1)"),
    pageButtonCurrentStyle = list(backgroundColor = "rgba(223, 105, 26, 1)")
  )
}


#' Theme espn
#'
#' ESPN-inspired table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Arial.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 12.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #6C6D6F.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Arial.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 11.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #48494a.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 7.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard espn theme
#' reactable(data,
#'           theme = espn())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = espn(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

espn <- function(font_family = "Arial",
                 font_size = 12,
                 font_color = "#6C6D6F",
                 header_font_family = "Arial",
                 header_font_size = 11,
                 header_font_color = "#48494a",
                 cell_padding = 7) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderWidth = "1px",
    borderColor = "#ededed",
    stripedColor = "#fafafa",
    highlightColor = "#fafafa",
    cellPadding = cell_padding,
    tableStyle = list(fontSize = font_size,
                      fontFamily = font_family),
    headerStyle = list(
      borderTop = "1px solid #e1e2e4",
      borderBottom = "1px solid #e1e2e4",
      padding = "4px",
      background = "#ffffff",
      borderColor = "#ffffff",
      color = header_font_color,
      textTransform = "uppercase",
      "&:hover" = list(color = "#004D9A"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      borderTop = "1px solid #e1e2e4",
      borderLeft = "1px solid #e1e2e4",
      borderRight = "1px solid #e1e2e4",
      backgroundColor = "#ffffff",
      textTransform = "uppercase",
      fontSize = "11px",
      color = font_color,
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    searchInputStyle = list(color = "#6C6D6F",
                            fontSize = "13px"),
    inputStyle = list(backgroundColor = "#ffffff", color = "#6C6D6F"),
    rowSelectedStyle = list(backgroundColor = "#48494a"),
    selectStyle = list(color = "#48494a"),
    pageButtonStyle = list(color = "#48494a", fontSize = "13px"),
    paginationStyle = list(color = "#48494a", fontSize = "13px")
  )
}


#' Theme fivethirtyeight
#'
#' 538-inspired table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Helvetica.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #222222.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Helvetica.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 12.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #000000.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 5.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard fivethirtyeight theme
#' reactable(data,
#'           theme = fivethirtyeight())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = fivethirtyeight(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

fivethirtyeight <- function(font_family = "Helvetica",
                            font_size = 14,
                            font_color = "#222222",
                            header_font_family = "Helvetica",
                            header_font_size = 12,
                            header_font_color = "#000000",
                            cell_padding = 5) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderWidth = "1px",
    borderColor = "#dddddd",
    stripedColor = "#dddddd",
    highlightColor = "#f0f0f0",
    cellPadding = cell_padding,
    tableStyle = list(
      fontFamily = font_family,
      fontSize = font_size,
      borderBottom = "3px solid #222222"
    ),
    headerStyle = list(
      borderWidth = "3px",
      paddingTop = "12px",
      verticalAlign = "bottom",
      textAlign = "bottom",
      background = "#ffffff",
      textTransform = "uppercase",
      borderColor = "#222222",
      color = header_font_color,
      "&:hover" = list(background = "#dddddd"),
      "&[aria-sort='ascending'], &[aria-sort='descending']" = list(background = "#5b5e5f", color = "#ffffff"),
      borderColor = "#333",
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(
        paddingBottom = "3px",
        verticalAlign = "bottom",
        textAlign = "bottom",
        backgroundColor = "#ffffff",
        textTransform = "uppercase",
        fontSize = header_font_size,
        fontFamily = header_font_family,
        color = font_color
      )
    ),
    searchInputStyle = list(
      textTransform = "uppercase",
      color = "#222222",
      fontSize = "14px"
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#222222"),
    rowSelectedStyle = list(backgroundColor = "#dddddd"),
    pageButtonStyle = list(textTransform = "uppercase", fontSize = "14px"),
    paginationStyle = list(textTransform = "uppercase", fontSize = "14px")
  )
}


#' Theme nytimes
#'
#' The New York Times-inspired table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Helvetica.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 13.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #333333.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Helvetica.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 11.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #999999.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 5.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard nytimes theme
#' reactable(data,
#'           theme = nytimes())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = nytimes(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

nytimes <- function(font_family = "Helvetica",
                    font_size = 13,
                    font_color = "#333333",
                    header_font_family = "Helvetica",
                    header_font_size = 11,
                    header_font_color = "#999999",
                    cell_padding = 5) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderWidth = "1px",
    borderColor = "#e7e7e7",
    stripedColor = "#e7e7e7",
    highlightColor = "#eeeeee",
    cellPadding = cell_padding,
    tableStyle = list(fontSize = font_size,
                      fontFamily = font_family),
    headerStyle = list(
      borderWidth = "0px",
      padding = "5px",
      background = "#ffffff",
      borderColor = "#ffffff",
      color = header_font_color,
      fontWeight = "500",
      textTransform = "uppercase",
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(
        borderWidth = "0px",
        backgroundColor = "#ffffff",
        textTransform = "uppercase",
        fontSize = header_font_size,
        fontFamily = header_font_family,
        borderColor = "#ffffff",
        color = font_color
      )
    ),
    searchInputStyle = list(color = "#333333",
                            fontSize = "13px"),
    inputStyle = list(backgroundColor = "#ffffff", color = "#333333"),
    rowSelectedStyle = list(backgroundColor = "#e9edf0"),
    selectStyle = list(color = "#333333"),
    pageButtonStyle = list(color = "#333333", fontSize = "14px"),
    paginationStyle = list(color = "#333333", fontSize = "14px")
  )
}


#' Theme pff
#'
#' Pro Football Focus-inspired table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Arial.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 16.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #878e94.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Arial.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 12.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #ffffff.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 4.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard pff theme
#' reactable(data,
#'           theme = pff())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = pff(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

pff <- function(font_family = "Arial",
                font_size = 16,
                font_color = "#878e94",
                header_font_family = "Arial",
                header_font_size = 12,
                header_font_color = "#ffffff",
                cell_padding = 4) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderWidth = "0px",
    stripedColor = "#f9f9fb",
    highlightColor = "#f1f3f4",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "1px",
      padding = "7px",
      borderTop = "1px solid #595d63",
      backgroundColor = "#595d63",
      textTransform = "uppercase",
      borderColor = "#595d63",
      color = header_font_color,
      transitionDuration = "0.1s",
      "&:hover[aria-sort]" = list(backgroundColor = "#4d5056", color = "#ffffff"),
      "&[aria-sort='ascending']" = list(
        backgroundColor = "#393c40",
        color = "#ffffff",
        boxShadow = "inset 0 3px 0 0 #ffffff"
      ),
      "&[aria-sort='descending']" = list(
        backgroundColor = "#393c40",
        color = "#ffffff",
        boxShadow = "inset 0 -3px 0 0 #ffffff"
      ),
      fontSize = header_font_size,
      fontFamily = header_font_family,
      fontWeight = "bold"
    ),
    groupHeaderStyle = list(
      "&:not(:empty)" = list(
        backgroundColor = "#e4e8ed",
        textTransform = "uppercase",
        fontWeight = "bold",
        color = font_color,
        fontFamily = header_font_family,
        fontSize = header_font_size,
        boxShadow = "inset 3px 0 0 0 #ffffff"
      )
    ),
    searchInputStyle = list(
      fontSize = "14px",
      textTransform = "uppercase",
      backgroundColor = "#ffffff",
      color = "#878e94",
      "&:focus" = list(color = "#878e94")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#878e94"),
    rowSelectedStyle = list(backgroundColor = "#e4e8ed"),
    selectStyle = list(
      backgroundColor = "#073c57",
      color = "#ffffff",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      textTransform = "uppercase",
      fontSize = "15px",
      backgroundColor = "#ffffff",
      color = "#164861",
      "&:hover" = list(backgroundColor = "#052c3f", color = "#ffffff")
    ),
    pageButtonHoverStyle = list(backgroundColor = "#052c3f", color = "#ffffff"),
    pageButtonActiveStyle = list(backgroundColor = "#073c57", color = "#ffffff"),
    pageButtonCurrentStyle = list(backgroundColor = "#073c57", color = "#ffffff"),
    paginationStyle = list(textTransform = "uppercase", fontSize = "15px")
  )
}


#' Theme hoverdark
#'
#' Changes from light-themed to dark-themed on hover
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table.
#'      Default is #222222.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 4.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard hoverdark theme
#' reactable(data,
#'           theme = hoverdark())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = hoverdark(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

hoverdark <- function(font_family = "Verdana",
                      font_size = 15,
                      font_color = "#222222",
                      header_font_family = "Verdana",
                      header_font_size = 15,
                      cell_padding = 4) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "grey",
    borderWidth = "1px",
    stripedColor = "#D6D6D6",
    highlightColor = "#CACACA",
    cellPadding = cell_padding,
    tableStyle = list(
      transitionDuration = "2s",
      "&:hover" = list(backgroundColor = "black", color = "#ffffff"),
      fontFamily = font_family,
      fontSize = font_size
    ),
    headerStyle = list(
      borderWidth = "2px",
      "&:hover" = list(borderColor = "#ffffff"),
      fontFamily = header_font_family,
      fontSize = header_font_size
    )
  )
}


#' Theme hoverlight
#'
#' Changes from dark-themed to light-themed on hover
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table.
#'      Default is #ffffff.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 4.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard hoverlight theme
#' reactable(data,
#'           theme = hoverlight())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = hoverlight(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

hoverlight <- function(font_family = "Verdana",
                       font_size = 15,
                       font_color = "#ffffff",
                       header_font_family = "Verdana",
                       header_font_size = 15,
                       cell_padding = 4) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#000000",
    borderColor = "grey",
    borderWidth = "1px",
    stripedColor = "lightgrey",
    highlightColor = "lightgrey",
    cellPadding = cell_padding,
    tableStyle = list(
      transitionDuration = "2s",
      "&:hover" = list(backgroundColor = "white", color = "#000000"),
      fontFamily = font_family,
      fontSize = font_size
    ),
    headerStyle = list(
      borderWidth = "2px",
      "&:hover" = list(borderColor = "black"),
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    paginationStyle = list(backgroundColor = "#ffffff", color = "black")
  )
}


#' Theme midnight
#'
#' midnight table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Tahoma.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #727272.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Tahoma.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #666666.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard midnight theme
#' reactable(data,
#'           theme = midnight())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = midnight(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

midnight <- function(font_family = "Tahoma",
                     font_size = 15,
                     font_color = "#727272",
                     header_font_family = "Tahoma",
                     header_font_size = 15,
                     header_font_color = "#666666",
                     cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#141518",
    borderWidth = "0px",
    stripedColor = "#00468c",
    highlightColor = "#00468c",
    cellPadding = cell_padding,
    style = list(backgroundColor = "#000000"),
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    cellStyle = list(
      "&:hover" = list(
        transitionDuration = "0.25s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    tableBodyStyle = list(backgroundImage = "linear-gradient(#000000, #0d0d0d, #191919)"),
    headerStyle = list(
      borderWidth = "0px",
      backgroundColor = "#000000",
      color = header_font_color,
      transitionDuration = "0.5s",
      transitionTimingFunction = "ease-out",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending']" = list(color = "#ffffff"),
      "&[aria-sort='descending']" = list(
        color = "#ffffff",
        borderBottomColor = "#ffffff",
        borderWidth = "1px"
      ),
      fontFamily = header_font_family,
      fonSize = header_font_size
    ),
    groupHeaderStyle = list(
      backgroundColor = "#000000",
      fontFamily = header_font_family,
      fonSize = header_font_size,
      color = font_color,
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#262626",
      "&:focus" = list(color = "#262626")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#262626"),
    rowSelectedStyle = list(backgroundImage = "linear-gradient(#191919, #262626)"),
    selectStyle = list(
      backgroundImage = "linear-gradient(#191919, #262626)",
      backgroundColor = "#00468c",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      backgroundImage = "linear-gradient(#191919, #262626)",
      "&:hover" = list(color = "#ffffff")
    ),
    pageButtonHoverStyle = list(color = "#ffffff"),
    pageButtonActiveStyle = list(color = "#ffffff"),
    pageButtonCurrentStyle = list(color = "#ffffff"),
    paginationStyle = list(backgroundImage = "linear-gradient(#191919, #262626)")
  )
}


#' Theme midnightblue
#'
#' midnightblue table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Tahoma.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #bababa.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Tahoma.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is lightgrey.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard midnightblue theme
#' reactable(data,
#'           theme = midnightblue())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = midnightblue(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export


midnightblue <- function(font_family = "Tahoma",
                         font_size = 15,
                         font_color = "#bababa",
                         header_font_family = "Tahoma",
                         header_font_size = 15,
                         header_font_color = "lightgrey",
                         cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#002853",
    borderWidth = "0px",
    stripedColor = "#00468c",
    highlightColor = "#00468c",
    cellPadding = cell_padding,
    style = list(backgroundColor = "#001021"),
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    cellStyle = list(
      "&:hover" = list(
        transitionDuration = "0.25s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    tableBodyStyle = list(backgroundImage = "linear-gradient(#001021, #001c3a, #002853)"),
    headerStyle = list(
      borderWidth = "1px",
      backgroundColor = "#001021",
      borderColor = "#001021",
      color = header_font_color,
      transitionDuration = "1s",
      transitionTimingFunction = "ease-out",
      "&:hover[aria-sort]" = list(color = "#ffffff"),
      "&[aria-sort='ascending']" = list(color = "#ffffff"),
      "&[aria-sort='descending']" = list(
        color = "#ffffff",
        borderBottomColor = "#ffffff",
        borderWidth = "1px"
      ),
      fontFamily = header_font_family,
      fonSize = header_font_size
    ),
    groupHeaderStyle = list(
      backgroundColor = "#001021",
      fontFamily = header_font_family,
      fonSize = header_font_size,
      color = font_color,
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = "#ffffff"
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#141415",
      "&:focus" = list(color = "#141415")
    ),
    inputStyle = list(backgroundColor = "#ffffff", color = "#141415"),
    rowSelectedStyle = list(backgroundImage = "linear-gradient(#002853, #003766)"),
    selectStyle = list(
      backgroundImage = "linear-gradient(#002853, #003766)",
      backgroundColor = "#00468c",
      borderColor = "#ffffff",
      outlineColor = "#ffffff"
    ),
    pageButtonStyle = list(
      backgroundImage = "linear-gradient(#002853, #003766)",
      "&:hover" = list(color = "#ffffff")
    ),
    pageButtonHoverStyle = list(color = "#ffffff"),
    pageButtonActiveStyle = list(color = "#ffffff"),
    pageButtonCurrentStyle = list(color = "#ffffff"),
    paginationStyle = list(backgroundImage = "linear-gradient(#002853, #003766)")
  )
}


#' Theme sunrise
#'
#' sunrise table theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Tahoma.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param font_color Color of the font for the text within the table and the group headers.
#'      Default is #8069ff.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Tahoma.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #8069ff.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard sunrise theme
#' reactable(data,
#'           theme = sunrise())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = sunrise(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

sunrise <- function(font_family = "Tahoma",
                    font_size = 15,
                    font_color = "#8069ff",
                    header_font_family = "Tahoma",
                    header_font_size = 15,
                    header_font_color = "#8069ff",
                    cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffcb69",
    borderWidth = "0px",
    stripedColor = "lightblue",
    highlightColor = "#ffffff",
    cellPadding = cell_padding,
    style = list(backgroundColor = "#fffa85"),
    tableStyle = list(
      fontFamily = font_family,
      fontSize = font_size
    ),
    cellStyle = list("&:hover" = list(transitionDuration = "0.25s",
                                      transitionTimingFunction = "ease-out",
                                      color = "#699dff")),
    tableBodyStyle = list(backgroundImage = "linear-gradient(#fffa85, #ffe269, #ffcb69, #f98d77)"),
    headerStyle = list(
      borderWidth = "1px",
      backgroundColor = "#fffa85",
      borderColor = "#fffa85",
      color = header_font_color,
      transitionDuration = "1s",
      transitionTimingFunction = "ease-out",
      "&:hover[aria-sort]" = list(color = "#699dff"),
      "&[aria-sort='ascending']" = list(color = "#699dff", boxShadow = "inset 0 1px 0 0 #699dff"),
      "&[aria-sort='descending']" = list(color = "#699dff", borderBottomColor = "#699dff", borderWidth = "1px"),
      fontSize = header_font_size,
      fontFamily = header_font_family),
    groupHeaderStyle = list(
      backgroundColor = "#fffa85",
      "&:hover" = list(
        fontWeight = "bold",
        transitionDuration = "1s",
        transitionTimingFunction = "ease-out",
        color = font_color,
        fontSize = header_font_size,
        fontFamily = header_font_family
      )
    ),
    searchInputStyle = list(
      backgroundColor = "#ffffff",
      color = "#8069ff",
      "&:focus" = list(color = "#8069ff")),
    inputStyle = list(backgroundColor = "#ffffff", color = "#8069ff"),
    rowSelectedStyle = list(backgroundImage = "linear-gradient(#f98d77, #e65c6f)"),
    selectStyle = list(backgroundImage = "linear-gradient(#f98d77, #e65c6f)",
                       backgroundColor = "#00468c",
                       borderColor = "#ffffff", outlineColor = "#ffffff"),
    pageButtonStyle = list(backgroundImage = "linear-gradient(#f98d77, #e65c6f)",
                           "&:hover" = list(color = "#ffffff")),
    pageButtonHoverStyle = list(color = "#ffffff"),
    pageButtonActiveStyle = list(color = "#ffffff"),
    pageButtonCurrentStyle = list(color = "#ffffff"),
    paginationStyle = list(backgroundImage = "linear-gradient(#f98d77, #e65c6f)")
  )
}


#' Theme clean
#'
#' Simple clean-look theme
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table.
#'      Default is #222222.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is #222222.
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard clean theme
#' reactable(data,
#'           theme = clean())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = clean(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

clean <- function(font_family = "Verdana",
                  font_size = 14,
                  font_color = "#222222",
                  header_font_family = "Verdana",
                  header_font_size = 15,
                  header_font_color = "#222222",
                  cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "#ffffff",
    borderColor = "#ffffff",
    stripedColor = "#e0e0e0",
    highlightColor = "#e0e0e0",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(
      borderWidth = "2px",
      borderColor = "#3b3b3b",
      color = header_font_color,
      fontSize = header_font_size,
      fontFamily = header_font_family
    ),
    rowSelectedStyle = list(backgroundColor = "#e0e0e0")
  )
}


#' Theme void
#'
#' A table style completely void of borders and headers
#'
#' @param font_family Font family for the text within the table.
#'      Default is Verdana.
#'
#' @param font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 14.
#'
#' @param font_color Color of the font for the text within the table.
#'      Default is #222222.
#'
#' @param header_font_family Font family for the header text.
#'      Default is Verdana.
#'
#' @param header_font_size Numeric value representing the size of the font within the table (in px).
#'      Default is 15.
#'
#' @param header_font_color Color of the font for the header text.
#'      Default is transparent
#'
#' @param cell_padding Numeric value representing the padding size between cells (in px).
#'      Default is 6.
#'
#' @return an object of class theme that is applied to a reactable table.
#'
#' @import reactable
#'
#' @examples
#' data <- iris[10:29, ]
#'
#' ## Standard void theme
#' reactable(data,
#'           theme = void())
#'
#' ## Cerulean theme with additional options applied
#' reactable(data,
#'           theme = void(font_size = 12, font_color = "grey", cell_padding = 3))
#'
#' @export

void <- function(font_family = "Verdana",
                 font_size = 14,
                 font_color = "#222222",
                 header_font_family = "Verdana",
                 header_font_size = 15,
                 header_font_color = "transparent",
                 cell_padding = 6) {

  reactableTheme(
    color = font_color,
    backgroundColor = "transparent",
    borderColor = "transparent",
    stripedColor = "lightgrey",
    highlightColor = "lightgrey",
    cellPadding = cell_padding,
    tableStyle = list(fontFamily = font_family,
                      fontSize = font_size),
    headerStyle = list(color = header_font_color,
                       fontFamily = header_font_family,
                       fontSize = header_font_size),
    selectStyle = list(color = "transparent"),
    paginationStyle = list(color = "transparent")
  )
}

Try the reactablefmtr package in your browser

Any scripts or data that you put into this service are public.

reactablefmtr documentation built on June 16, 2021, 9:13 a.m.