Package: glasstabs 0.4.1

George Arthur

glasstabs: Animated Glass-Style Tabs and Select Inputs for 'Shiny'

Tools for creating animated glassmorphism-style tab navigation and select filter widgets in 'Shiny' applications. Provides a tab navigation component with a sliding glass halo animation, a searchable multi-select dropdown, and a single-select dropdown - all with multiple colour themes and server-side update helpers. Tabs support icons, numeric badges, disable/enable toggling, runtime append/remove, reactive rendering via 'renderGlassTabs()', URL bookmarking, responsive overflow modes, optional touch gestures, reduced-motion support, and compact mode for dashboard card layouts. 'glassTabCondition()' generates 'conditionalPanel()' condition strings without needing to recall the internal input key pattern. 'glasstabs_news()' displays the release notes from the R console. Built-in example apps can be launched with 'runGlassExample()'. All widgets are compatible with standard 'Shiny' layouts and 'bs4Dash' dashboards and 'bslib' themed applications. An experimental 'glassPage()' helper provides a thin wrapper around a fillable 'bslib' page when 'bslib' is installed. For full documentation and examples see Arthur (2026) <https://prigasg.github.io/glasstabs/>.

Authors:George Arthur [aut, cre]

glasstabs_0.4.1.tar.gz
glasstabs_0.4.1.zip(r-4.7-any)glasstabs_0.4.1.zip(r-4.6-any)
glasstabs_0.4.1.tar.gz(r-4.7-any)glasstabs_0.4.1.tar.gz(r-4.6-any)
glasstabs_0.4.1.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION |NEWS
card.svg |card.png
glasstabs/json (API)

# Install 'glasstabs' in R:
install.packages('glasstabs', repos = c('https://cran.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/prigasg/glasstabs/issues

Pkgdown/docs site:https://prigasg.github.io

On CRAN:

Conda:

4.66 score 434 downloads 32 exports 30 dependencies

Last updated from:1a2cf8f0e7. Checks:6 OK. Indexed: no.

TargetResultTimeFilesSyslog
linux-develOK124
source / vignettesOK201
linux-releaseOK137
windows-develOK106
windows-releaseOK120
wasm-releaseOK103

Exports:appendGlassTabcloseAllGlassSelectscloseGlassMultiSelectcloseGlassSelectdisableGlassTabenableGlassTabglass_select_themeglass_tab_themeglassFilterTagsglassMultiSelectglassMultiSelectServerglassMultiSelectValueglassPageglassSelectglassSelectServerglassSelectValueglassTabConditionglassTabPanelglasstabs_newsglassTabsOutputglassTabsServerglassTabsUIhideGlassTabremoveGlassTabrenderGlassTabsrunGlassExampleshowGlassTabupdateGlassMultiSelectupdateGlassSelectupdateGlassTabBadgeupdateGlassTabsUIuseGlassTabs

Dependencies:base64encbslibcachemclicommonmarkdigestfastmapfontawesomefsgluehtmltoolshttpuvjquerylibjsonlitelaterlifecyclemagrittrmemoisemimeotelpromisesR6rappdirsRcpprlangsassshinysourcetoolswithrxtable

Animated Tabs with glasstabs
Overview | Basic usage | Reading the active tab in the server | Keyboard navigation | Narrow screens and touch | Indicator styles | Vertical orientation | Placing a filter widget beside the tabs | Theming | Built-in presets | Custom theme with glass_tab_theme() | bs4Dash integration | Multiple tab widgets on one page

Last update: 2026-10-30
Started: 2026-03-11

Dependent dropdowns and dynamic UI
The scenario table | Keep what is still available | Select every newly available choice instead | A selected choice disappears | A choice becomes disabled | renderUI replaces a dropdown | Several filters settling at once | Reset means one of three things

Last update: 2026-10-30
Started: 2026-10-30

Example gallery
The apps | Choosing one

Last update: 2026-10-30
Started: 2026-10-30

Getting Started with glasstabs
What is glasstabs? | Start here, by task. Only need tabs? Read the tabs article.Only need a dropdown? Read the single-select or multi-select guide.Building reusable filters? Read the modules and linked-filtersrecipes. Something broken? Read troubleshooting first — most entriesare configuration choices, not bugs. The example gallery lists arunnable demo for each question above. | Installation | The one rule: call useGlassTabs() once | Tab widget in 3 minutes | Step 1 — define your tabs | Step 2 — assemble with glassTabsUI() | Step 3 — read the active tab in the server | Multi-select filter | Step 1 — define choices and place the widget | Step 2 — read the selection in the server | Optional reactive helper | Updating from the server | Single-select dropdown | Step 1: add a single-select input | Step 2: read the value in the server | Using them together | Choosing a theme | bs4Dash | A useful starting pattern

Last update: 2026-10-30
Started: 2026-03-11

glasstabs Cheatsheet
One rule | Tabs: basic pattern | Tabs: inside a Shiny module | Tabs: dynamic values and selected | Tabs: server actions | Tabs: common options | Tabs: compact mode (dashboard cards) | Tabs: connected styling | Tabs: attached style and slide transition | Multi-select: basic pattern | Multi-select: update from server | Multi-select: useful arguments | Single-select: basic pattern | Single-select: update from server | Single-select: useful arguments | Tabs: inside bs4Dash | Theme helpers | Input values at a glance | conditionalPanel integration | View the changelog | Common gotchas

Last update: 2026-10-30
Started: 2026-04-11

Indicator Styles, Vertical Tabs, and Auto Theming
Overview | Side by side | Vertical orientation | Auto theming with bslib | Putting the pieces together

Last update: 2026-10-30
Started: 2026-07-31

Migrating from native Shiny controls
The trap: empty does not mean the same thing | Before and after: a multi-select filter | Update function mapping | What native selectize can do that glasstabs cannot | When a native control is still the better choice

Last update: 2026-10-30
Started: 2026-10-30

Multi-Select with glasstabs
Why multi-select is the centerpiece | A complete app in one page | What the widget produces | The selection model: all, some, or none | How a partial selection is shown | Check styles, and the style switcher | Filled rows: one accent, or one hue per option | Search: always, automatic, or never | Long labels, wrapping, and tooltips | Select all, clear all, and the chrome rows | Disabled options — and what survives a choices update | Grouped choices | Tag pills with glassFilterTags() | Reading values on the server | The glassMultiSelectValue() helper | Understanding selection behavior: All, Some, and None | Server-side search for large choice sets | Performance and limitations | Updating from the server | Closing dropdowns and dynamic layouts | Theming | Built-in presets | Custom themes with glass_select_theme() | Presentation: tongue, labels, corners, width | Placement: standalone, in tabs, in dashboards | Keyboard and pointer interaction | A worked dashboard: linked filters | Compared with selectizeInput(multiple = TRUE) | Gotchas, collected

Last update: 2026-10-30
Started: 2026-03-11

Publishing a glasstabs Workflow to Posit Connect
Overview | What to test after publishing | Versions, dependencies, and CSP | Run locally | Manifest | Deploy to Posit Connect | Workflow pattern

Last update: 2026-10-30
Started: 2026-07-31

Responsive and Accessible Tabs
A complete responsive app | Long select labels on narrow screens | Choosing the overflow style | Select keyboard and screen-reader behavior | Touch swipes without surprises | Motion and contrast | Experimental fillable page

Last update: 2026-10-30
Started: 2026-09-11

Single-Select Dropdown with glasstabs
Overview | Basic usage | Initial selection | Empty-string values are ordinary values | Optional label | Selection styles | Corner shape | Width, grouped choices, and disabled options | Long selected labels | Dropdown lifecycle | Searchable and clearable | Server-side search for large choice sets | Explicit "All" option | Server-side access | Reactive helper | Updating choices and selection from the server | Theming | Built-in presets | Custom theme with glass_select_theme() | Standalone usage

Last update: 2026-10-30
Started: 2026-03-13

Troubleshooting
Dropdown does not look styled | Server-backed search never returns results | Multi-select starts with everything checked | Clearing a selection shows all records | Selection disappears after a choices update | Dropdown is too narrow | Theme differs from the surrounding dashboard | Server update does not reach a module control | Dropdown closes when a modal opens | Widget appears unstyled or unbound after renderUI()

Last update: 2026-10-30
Started: 2026-10-30

Using glasstabs in Shiny modules
The rule, stated once | A complete filter module | Server-backed dropdowns in a module | Two modules, one filter

Last update: 2026-10-30
Started: 2026-10-30

Readme and manuals

Help Manual

Help pageTopics
Append or remove a glass tab at runtimeappendGlassTab removeGlassTab
Close open glass select dropdownscloseAllGlassSelects closeGlassMultiSelect closeGlassSelect
Disable or enable a glass tabdisableGlassTab enableGlassTab
Create a custom color theme for glass select widgetsglass_select_theme
Create a custom color theme for glassTabsUIglass_tab_theme
Shiny tag helper for a filter-tags display area tied to a glassMultiSelectglassFilterTags
Animated glass multi-select dropdown filterglassMultiSelect
Register server-side search for a glassMultiSelect widgetglassMultiSelectServer
Reactive helpers for glassMultiSelect valuesglassMultiSelectValue
Experimental fillable page for glasstabs appsglassPage
Animated glass single-select dropdownglassSelect
Register server-side search for a glassSelect widgetglassSelectServer
Reactive helper for glassSelect valuesglassSelectValue
Build a conditionalPanel condition for a glasstabs widgetglassTabCondition
Define a single glass tab panelglassTabPanel
Display the glasstabs changelogglasstabs_news
Dynamic glass tab UI outputglassTabsOutput
Server logic for glass tabsglassTabsServer
Animated glass-style tab navigation UIglassTabsUI
Render a reactive glass tab UIrenderGlassTabs
Run a built-in glasstabs example apprunGlassExample
Show or hide a glass tabhideGlassTab showGlassTab
Update a glassMultiSelect widgetupdateGlassMultiSelect
Update a glassSelect widgetupdateGlassSelect
Update the badge count on a glass tabupdateGlassTabBadge
Programmatically switch the active glass tabupdateGlassTabsUI
Attach glasstabs CSS and JS dependenciesuseGlassTabs