Page, Panel, and Layout FunctionsfluidRow creates a row with space for 12 columnscolumn(n,) takes n of those columnstabsetPanel and tabPanel create page elementsui <- fluidPage(
tabsetPanel(
tabPanel("Import data",
fileInput("file", "Data", buttonLabel = "Upload..."),
textInput("delim", "Delimiter (leave blank to guess)", ""),
numericInput("skip", "Rows to skip", 0, min = 0),
numericInput("rows", "Rows to preview", 10, min = 1)
),
tabPanel("Set parameters"),
tabPanel("Visualise results")
)
)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textOutput("panel")
),
mainPanel(
tabsetPanel(
id = "tabset",
tabPanel("panel 1", "one"),
tabPanel("panel 2", "two"),
tabPanel("panel 3", "three")
)
)
)
)
server <- function(input, output, session) {
output$panel <- renderText({
paste("Current panel: ", input$tabset)
})
}

shiny
bootstrap, i.e. library(bslib)shiny.semantic, shinyMobile, shinydashboard, shinymaterialshinyTableaulayout functions have a theme argument
thematic package automatically matches theme of plots to app theme