This article collects a few small but more cohesive example apps that bring together the package surfaces described elsewhere in the documentation.
The goal is not to present production-ready applications. Instead, these examples show how the generated wrappers, curated Shiny bindings, layout helpers, and command/browser-glue tools fit together in practice.
This small executed example prints the page scaffold emitted by a compact
webawesomePage() composition:
library(shiny.webawesome) example_page <- webawesomePage( title = "Example preview", wa_container( class = "wa-stack", wa_badge("Preview"), wa_card("Small executable example") ) ) cat(as.character(example_page), sep = "\n")
This example uses webawesomePage(), wa_container(), and a handful of generated
components to assemble a compact page with a little structure and visual
hierarchy.
library(shiny) library(shiny.webawesome) ui <- webawesomePage( title = "Project overview", wa_container( class = "wa-stack", style = "max-width: 32rem; margin: 2rem auto;", wa_badge("Preview"), wa_card("Status: active"), wa_button( "refresh", "Refresh", appearance = "outlined", style = "width: 10rem;" ), wa_card("Recent activity") ) ) server <- function(input, output, session) {} shinyApp(ui, server)
This is a good pattern when you want a page built primarily from generated wrappers, with a small amount of package-level layout structure.
This example combines a few bound components and displays the resulting Shiny state directly.
library(shiny) library(shiny.webawesome) ui <- webawesomePage( title = "Binding example", wa_container( class = "wa-stack", style = "max-width: 36rem; margin: 2rem auto;", wa_select( "favorite_letter", wa_option("A", value = "a"), wa_option("B", value = "b"), wa_option("C", value = "c") ), wa_switch("notifications_enabled", "Notifications"), wa_tree( "navigation_tree", selection = "multiple", wa_tree_item("Section A", id = "section_a"), wa_tree_item("Section B", id = "section_b"), wa_tree_item("Section C", id = "section_c") ), verbatimTextOutput("state") ) ) server <- function(input, output, session) { output$state <- renderPrint({ list( favorite_letter = input$favorite_letter, notifications_enabled = input$notifications_enabled, navigation_tree = input$navigation_tree ) }) } shinyApp(ui, server)
This example is useful for understanding the package's semantic binding model: the Shiny inputs reflect durable state rather than a raw browser event stream.
This example uses generated components for the UI and the package's command layer to drive browser-side behavior from the server.
library(shiny) library(shiny.webawesome) ui <- webawesomePage( title = "Command example", wa_container( class = "wa-stack", style = "max-width: 36rem; margin: 2rem auto;", actionButton("open_dialog", "Open dialog"), actionButton("show_details", "Show details"), wa_dialog( "dialog", label = "Example dialog", "Dialog body" ), wa_details( "details", summary = "More information", "Details body" ) ) ) server <- function(input, output, session) { observeEvent(input$open_dialog, { wa_call_method("dialog", "show", session = session) }) observeEvent(input$show_details, { wa_call_method("details", "show", session = session) }) } shinyApp(ui, server)
This is a good pattern when the generated wrapper surface is sufficient for UI construction, but the server still needs to trigger a specific browser-side method directly.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.