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.