There are two main ways to use linne in shiny apps: 1) a convenient but inefficient one 2) an efficient but less flexible way.
In shiny the easiest way to add the CSS to an application is to use
the include method. Note however, that this is not advised
in production, see the write to
improve performances.
You can generate the CSS using Linne as per usual then
inject it dynamically in the page with the inject method.
Note that for this you will need to place useLinne in UI of
shiny page.
library(linne)
library(shiny)
linne <- Linne$
new()$
rule(
sel_id("change"),
color = "white",
backgroundColor = "black"
)
ui <- fluidPage(
useLinne(), # only required for inject method
actionButton("change", "Change me!")
)
server <- function(input, output){
observeEvent(input$change, {
linne$inject()
})
}
shinyApp(ui, server)The include method will (by default) build the CSS every
time it is called making it inefficient for prod. When deploying an app
it is always better to save the generated CSS to a file then link that
file in the shiny application.
Note that the CSS file has to be served in order to be accessible by
the browser. RStudio defaults to the www directory, if you
wish to place it in another directory you will have to use
shiny::addResourcePath.
dir.create("www") # create static asset directory
Linne$
new()$
rule(
sel_tag("p"),
color = "white",
fontSize = 30
)$
write("www/style.css") # save Then use the link tag to link to the CSS file.