From 4bc9e4f0e5a376d101e1dbb1b472033a813980fc Mon Sep 17 00:00:00 2001 From: gadenbuie Date: Mon, 6 Nov 2023 15:18:03 +0000 Subject: [PATCH] Built site for bslib: 0.5.1.9000@5c36528 --- .../examples/linked-htmlwidgets/index.html | 10 +- .../page-fillable-htmlwidgets/index.html | 12 +- articles/bs4-variables/index.html | 4 +- articles/bs5-variables/index.html | 4 +- articles/cards/index.html | 98 ++++++------- articles/column-layout/index.html | 42 +++--- .../dashboards/examples/filling-layout.png | Bin 60645 -> 62599 bytes .../examples/hello-page-sidebar.png | Bin 7732 -> 7757 bytes .../dashboards/examples/mobile-layout.png | Bin 44174 -> 44679 bytes articles/dashboards/examples/multi-panel.png | Bin 41392 -> 41380 bytes .../dashboards/examples/scrolling-layout.png | Bin 63298 -> 63265 bytes .../examples/full-screen-cards/index.html | 12 +- .../examples/multiple-columns/index.html | 12 +- .../filling/examples/page-fillable/index.html | 12 +- .../examples/sidebar-layouts/index.html | 16 +-- .../filling/examples/value-boxes/index.html | 12 +- .../examples/hello-layout-sidebar/index.html | 30 ++-- .../sidebars/examples/multi-page/index.html | 96 ++++++------- .../examples/page-fill-double/index.html | 8 +- .../examples/restricting-growth/index.html | 72 +++++----- .../examples/shiny-dynamic-sidebar/index.html | 16 +-- .../examples/shiny-sidebar-state/index.html | 12 +- articles/sidebars/index.html | 134 +++++++++--------- .../examples/fill-false/index.html | 4 +- articles/value-boxes/index.html | 4 +- pkgdown.yml | 2 +- search.json | 2 +- 27 files changed, 307 insertions(+), 307 deletions(-) diff --git a/articles/any-project/examples/linked-htmlwidgets/index.html b/articles/any-project/examples/linked-htmlwidgets/index.html index 1e5b616c5..d31d7c8bb 100644 --- a/articles/any-project/examples/linked-htmlwidgets/index.html +++ b/articles/any-project/examples/linked-htmlwidgets/index.html @@ -43,10 +43,10 @@

Client-side filtering

-
- +
+
-
diff --git a/articles/any-project/examples/page-fillable-htmlwidgets/index.html b/articles/any-project/examples/page-fillable-htmlwidgets/index.html index fafc62510..3c50d976c 100644 --- a/articles/any-project/examples/page-fillable-htmlwidgets/index.html +++ b/articles/any-project/examples/page-fillable-htmlwidgets/index.html @@ -31,8 +31,8 @@
Plot
-
- +
+
@@ -45,8 +45,8 @@
Plot
-
- +
+
@@ -59,8 +59,8 @@
Plot
-
- +
+
diff --git a/articles/bs4-variables/index.html b/articles/bs4-variables/index.html index 736567639..35625cd43 100644 --- a/articles/bs4-variables/index.html +++ b/articles/bs4-variables/index.html @@ -167,8 +167,8 @@ -
- +
+
diff --git a/articles/bs5-variables/index.html b/articles/bs5-variables/index.html index 60fc63ed3..fb0bc5d22 100644 --- a/articles/bs5-variables/index.html +++ b/articles/bs5-variables/index.html @@ -167,8 +167,8 @@ -
- +
+
diff --git a/articles/cards/index.html b/articles/cards/index.html index 915941dc0..1273545c4 100644 --- a/articles/cards/index.html +++ b/articles/cards/index.html @@ -276,9 +276,9 @@

Restricting growth
A long, scrolling, description
-

Adipiscing at: diam ac justo imperdiet imperdiet donec suscipit! Rutrum nec elementum risus sodales purus. Vel hac tellus sociis cubilia lectus cursus hac. Egestas iaculis aenean laoreet vulputate eros proin nisi tortor conubia senectus dis mauris – non montes? Blandit natoque montes quisque?

-

Amet platea, elementum maecenas egestas. A feugiat nec placerat potenti per; curabitur suscipit enim semper. Sagittis pretium tellus auctor viverra maecenas convallis elementum placerat! Luctus nulla dui quisque vehicula, velit nulla facilisis id molestie suscipit hac aliquam facilisis. Facilisi cras enim primis, eros lacus sed luctus quis nulla tempor, aliquet facilisi lacinia id maecenas vitae in diam.

-

Ipsum ante dapibus nibh, vestibulum fames auctor vitae lobortis, luctus pretium euismod metus. Platea quis netus fermentum feugiat enim purus, vulputate enim. Risus metus fames cum, vulputate lacus. Ridiculus mi turpis suscipit eu venenatis faucibus risus, ante aenean, etiam torquent habitant euismod. Dui lectus, viverra sodales diam!

+

Elit euismod parturient nunc morbi blandit – posuere ante semper mi nullam commodo pharetra? Suscipit ac eu interdum class convallis sed magnis mus per id ligula tincidunt velit? Venenatis massa risus ultrices facilisis accumsan cubilia cursus sem sodales sollicitudin dictumst malesuada. Enim donec per elementum fermentum proin curabitur bibendum pharetra? Ornare sodales.

+

Dolor hendrerit nascetur netus molestie diam natoque tristique? Donec libero diam ligula, sem odio hendrerit tincidunt cum eros? Ad neque et ante, orci ultrices; eleifend primis nulla quis pulvinar congue cum eros? Risus nec platea in praesent platea mattis tempus. Ultrices faucibus dignissim luctus mattis fermentum fames nulla donec laoreet malesuada sagittis, ad vestibulum penatibus faucibus proin tellus consequat eros sollicitudin porttitor sagittis.

+

Consectetur dictum eget sed torquent, libero euismod egestas tellus. Metus dui ligula mollis vivamus himenaeos, commodo condimentum elementum. Placerat pellentesque luctus mattis tellus egestas elementum condimentum tempus. Et porttitor est venenatis vivamus eu potenti litora felis? Ornare aenean praesent venenatis tempus cum vehicula at, duis vulputate, posuere duis felis suspendisse habitasse suscipit nunc aptent.

@@ -312,8 +312,8 @@

Filling outputs
A filling plot
-
- +
+
@@ -348,8 +348,8 @@

Filling outputs
A filling map
-
- +
+
@@ -387,9 +387,9 @@

Filling outputs
Plots that grow but don't shrink
-
-
- +
+
+

@@ -445,20 +445,20 @@

Multiple card_body()
Filling plot, scrolling description
-
- +
+
-

Lorem massa tempus: tortor porttitor hac a magnis sapien montes cursus tempus. Aliquam venenatis, metus metus sed erat maecenas, hac mi felis. Accumsan lacinia ad dapibus, nibh mollis etiam massa ullamcorper mi scelerisque curabitur augue faucibus. Pulvinar justo sociis, lectus tempus id luctus pellentesque torquent posuere tortor. Libero justo ligula, natoque lacus.

-

Sit purus congue luctus quisque – habitasse himenaeos. Est tempor; habitasse mi dictum dapibus accumsan placerat taciti posuere suspendisse fames? Nascetur elementum sem rutrum, per auctor leo? Felis litora class taciti, accumsan congue risus vestibulum. Et primis lacinia maecenas tortor nibh nam platea, scelerisque primis gravida quisque euismod malesuada imperdiet condimentum.

-

Amet senectus urna nulla felis lacinia praesent tempor molestie lectus libero? Tempor et ligula himenaeos ornare, penatibus natoque platea tellus pretium tellus diam. Facilisis consequat lobortis, litora tellus luctus cras velit. Euismod vulputate sapien, mi tempor porttitor facilisi pretium. Himenaeos posuere orci justo semper, urna bibendum proin nisi, rutrum tortor tristique class!

-

Adipiscing aenean auctor ornare nec donec parturient mus dictum. Faucibus aenean varius malesuada imperdiet torquent phasellus phasellus sed sapien dictum. Nec netus quis eu curae varius pellentesque semper, quam hendrerit pulvinar! Praesent morbi – nulla imperdiet accumsan tempus lacinia et? Primis risus mauris mattis ac ullamcorper nascetur morbi semper curae convallis, lobortis aliquet bibendum.

-

Dolor pulvinar quam faucibus neque fames et aliquam platea, lectus, iaculis dignissim ornare torquent arcu. Tortor eu justo arcu purus platea sollicitudin velit mi nullam suspendisse laoreet. Faucibus velit cum cursus libero magnis consequat dictumst ad. Natoque nostra hac, facilisi a fusce lacinia. Luctus platea nunc sociis.

-

Dolor blandit sociosqu malesuada, taciti duis at sociis dictum justo mus enim! Nec vel bibendum fusce faucibus nisi lectus. Habitant potenti aenean suspendisse himenaeos ultrices dapibus proin fames fusce. Diam sociis felis nullam viverra magna; sed libero ligula. Felis placerat porttitor posuere; tellus torquent, fringilla ac ultricies!

-

Ipsum luctus nisi lacus vitae faucibus posuere conubia nascetur lacinia orci. Vivamus primis justo pulvinar et quis posuere justo, nascetur tellus commodo nulla? Mollis tristique senectus litora ultrices: mollis, posuere eget. Feugiat hendrerit – mi at interdum dapibus donec! Metus suscipit, ultricies leo condimentum, porttitor inceptos tincidunt, pulvinar eros convallis porttitor ornare molestie euismod auctor aenean et.

-

Elit ad euismod ultricies penatibus ultrices tempus porttitor nam condimentum quis praesent litora. Proin senectus malesuada, facilisis lectus volutpat at, maecenas morbi aenean. Augue tempor velit cursus eros ligula fringilla pretium ornare blandit justo luctus! Eleifend pretium hac rhoncus, et diam fames a. Eu lacus parturient, hac libero porta quam fringilla senectus proin ridiculus!

-

Dolor nulla sem suscipit facilisis, quam feugiat augue orci. Est ornare ante accumsan natoque aliquet quisque blandit. Odio augue mollis id ad, cubilia faucibus scelerisque non. Velit purus nulla dui imperdiet cras nullam gravida magnis, pharetra erat pellentesque orci. Habitant tristique duis semper mus nam eros eu.

-

Sit iaculis tristique tellus enim dis fusce velit a. Integer donec at et pellentesque proin sed vehicula feugiat maecenas ornare sed metus. Semper condimentum nascetur porttitor; suspendisse non convallis elementum interdum libero! Sed feugiat iaculis condimentum commodo, tellus quis molestie in venenatis rutrum imperdiet. Etiam nibh diam ultricies ullamcorper venenatis primis nibh lacus aptent integer venenatis!

+

Ipsum velit fames dis nec urna augue: nascetur, tortor per. Massa bibendum risus lacinia netus tempus, tempor est nulla ultricies. Hendrerit luctus lacinia mollis magnis eu hendrerit pretium, nostra justo hendrerit venenatis. Commodo dui faucibus duis scelerisque, nisi augue maecenas volutpat; ac scelerisque ad. Ullamcorper metus fames lectus phasellus?

+

Dolor torquent cubilia tempus, urna condimentum massa, curae inceptos lectus potenti! Bibendum bibendum, risus litora, natoque feugiat fermentum pellentesque natoque sapien. Phasellus ultricies tellus, purus sed, in cum fusce. Volutpat iaculis nec potenti, commodo orci sapien. Habitasse vivamus quis auctor fringilla senectus metus ante sollicitudin iaculis suscipit, curabitur non, facilisis nunc sapien.

+

Sit habitasse tincidunt morbi, lobortis, et ullamcorper nibh, laoreet placerat ut. Lectus aliquet varius in class facilisi, lectus ligula habitant curae? Orci non rhoncus, nullam tempus purus parturient dignissim viverra aliquet mollis. Senectus enim sollicitudin justo tincidunt sollicitudin habitant eros magnis. Taciti eget volutpat, enim, tortor arcu, dictum erat risus ultricies ante lacinia convallis.

+

Consectetur proin purus neque dapibus ligula habitant posuere nam tristique aliquam luctus cras semper pretium neque. Suspendisse auctor mus tellus eu parturient arcu nullam vulputate platea. Facilisis conubia sociosqu varius consequat, nullam eu elementum aenean habitasse! Nulla donec natoque fames; scelerisque cubilia phasellus. Congue elementum rutrum luctus aptent.

+

Amet quisque velit habitant himenaeos pulvinar euismod purus ac pretium egestas. Metus sapien cubilia lacinia quis vitae eleifend turpis imperdiet venenatis. Taciti hac ullamcorper fusce ligula vestibulum dignissim lacinia mus porttitor! Massa euismod egestas a lobortis commodo ac. Arcu phasellus faucibus viverra curabitur sodales fames.

+

Elit nulla litora nostra ante quis pellentesque pretium condimentum per vivamus! Lobortis rutrum aptent habitant cum eleifend potenti – metus class magnis erat ullamcorper. Inceptos facilisi pulvinar lacinia elementum vestibulum, fusce inceptos praesent pellentesque senectus quis. Cubilia facilisi risus imperdiet porttitor bibendum: donec non vivamus in. Suscipit id rhoncus; orci vestibulum auctor nunc viverra egestas gravida condimentum?

+

Ipsum condimentum tristique sem est venenatis habitasse est. Praesent et laoreet per potenti, pellentesque, turpis tincidunt eros vivamus. Sagittis pellentesque egestas cum senectus: leo fames sociis suscipit condimentum, fringilla sociis accumsan. Vehicula parturient eros mattis velit conubia mollis, velit in dui. Egestas convallis eget nulla lectus?

+

Sit tellus magnis fermentum cursus egestas sollicitudin, nulla integer volutpat egestas ut potenti. Himenaeos vivamus dictum egestas non fusce. Fusce quisque inceptos in primis dignissim elementum hendrerit, velit senectus sociosqu? Tellus blandit scelerisque curabitur nascetur scelerisque litora. Tempus eu lectus, nostra venenatis platea integer.

+

Adipiscing pellentesque mi vitae viverra senectus proin curabitur. Auctor habitasse gravida sagittis posuere sed tellus venenatis molestie commodo tempor. Lobortis habitant ornare scelerisque primis cras turpis, mi mus, rutrum dictumst congue. Dapibus varius dignissim facilisi nibh quis ligula tellus vivamus, ultrices eleifend sapien nam. Sollicitudin tincidunt sapien volutpat phasellus blandit consequat hac aenean; torquent phasellus ornare vestibulum ultrices bibendum.

+

Ipsum aliquet platea metus felis mattis duis at platea metus, cubilia commodo nascetur. Taciti ultrices et ut sapien hendrerit lectus cum purus. Inceptos et curae fusce sociis volutpat gravida gravida risus dis malesuada! Volutpat ligula lacus, eros nulla fusce porttitor curabitur velit, cursus cras posuere sollicitudin. Massa volutpat.

@@ -488,8 +488,8 @@

Multiple card_body()
Filling plot, short description
-
- +
+
-

Ipsum fermentum aptent ultrices metus, in bibendum eleifend neque nulla ac! Sapien sapien netus proin ligula tortor. Habitasse justo faucibus, erat leo mauris vel nascetur interdum auctor? Venenatis penatibus fringilla pulvinar torquent fermentum nisi? Cubilia dictumst ligula ac feugiat faucibus quam, hac orci mattis commodo rhoncus, platea iaculis.

-

Sit vitae molestie eros, pharetra metus, imperdiet class etiam class vel natoque? Etiam sociis platea mollis velit facilisis sollicitudin, penatibus fames parturient rhoncus? Proin fames nibh quam quisque tempor sapien urna; habitant viverra curae eget purus urna phasellus. Odio tincidunt neque aliquet metus, vitae phasellus condimentum litora. Hendrerit nostra.

-

Elit faucibus interdum fermentum iaculis id maecenas in sociosqu ut. Scelerisque orci porta, bibendum est, magna porta consequat! Libero tincidunt porttitor quis: dapibus suspendisse turpis. Libero sem sed semper proin sodales; congue turpis lacus curabitur aliquet vitae faucibus. Lectus eu ultrices feugiat cras odio et feugiat scelerisque a dignissim duis.

+

Lorem quis praesent augue est duis sodales non turpis vivamus sociis, convallis vel! Suscipit euismod aliquet penatibus ac libero ac fusce aliquet nulla. Mattis nulla etiam lacinia mauris pharetra vestibulum scelerisque fusce. Justo mollis hac aenean feugiat nisi, sed per volutpat aliquam. Pellentesque a.

+

Adipiscing nunc senectus in sociosqu sagittis maecenas, felis urna; facilisis sapien praesent. Diam quis nibh mauris vitae ridiculus libero quisque venenatis. Accumsan molestie curabitur rhoncus penatibus mattis montes neque duis justo. Non sapien quam molestie – nascetur fringilla convallis vulputate. Nisi rhoncus arcu rutrum vulputate ante – ad dapibus mus consequat egestas erat hendrerit?

+

Sit enim aliquet sed malesuada – sed magna blandit? Aenean ligula odio litora cursus malesuada dapibus parturient. Aptent non condimentum id in, dis magnis congue lobortis, facilisis augue ullamcorper morbi? Mauris venenatis at luctus class, senectus neque auctor est eu, ridiculus hac euismod. Non eu aptent vel convallis, pretium dui ornare dictum fusce morbi aptent quisque.

@@ -570,8 +570,8 @@

Multiple cards
A filling plot
-
- +
+
@@ -581,8 +581,8 @@

Multiple cards
A filling map
-
- +
+
@@ -630,36 +630,36 @@

Multiple tabs -
-
+
+
A plotly plot
-
- +
+
-
+
A leaflet plot
-
- +
+
-
+

Learn more about htmlwidgets

@@ -697,13 +697,13 @@
-
- +
+
-
@@ -829,8 +829,8 @@

Flexbox
A plot with an action links
-
- +
+

Here's a simple hyperlink.

diff --git a/articles/column-layout/index.html b/articles/column-layout/index.html index 25a80cb6d..2fca8a475 100644 --- a/articles/column-layout/index.html +++ b/articles/column-layout/index.html @@ -191,9 +191,9 @@

Fixed number of columns
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -240,9 +240,9 @@

Responsive number of columns
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -284,9 +284,9 @@

Fixed column width
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -334,9 +334,9 @@

By row
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -384,9 +384,9 @@

By cell
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -433,9 +433,9 @@

Varying widths
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

@@ -482,9 +482,9 @@

Nested layouts
Scrolling content
-

Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare in, vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu at donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum.

-

Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce.

-

Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? In ullamcorper purus erat, mi egestas a senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!

+

Consectetur imperdiet aenean ante interdum netus. Dapibus mus hendrerit orci maecenas nulla cursus ridiculus viverra, aptent, montes id sapien? Tempus nunc sociis iaculis viverra parturient, integer ut commodo! Nibh dapibus penatibus, nam integer, suscipit dapibus varius quis volutpat; massa iaculis. Lectus ad porta nibh pellentesque primis eleifend aliquet metus nisi pellentesque, litora nulla parturient lobortis mattis dignissim facilisis vel taciti dictum.

+

Dolor mauris magna neque elementum, lectus hendrerit fermentum. Urna tempor netus, ligula aliquam diam penatibus facilisis aliquam curabitur lacinia! Ligula risus morbi tristique risus imperdiet? Commodo pharetra purus; tristique lobortis dapibus quisque ullamcorper enim? Justo luctus ac scelerisque pharetra leo aenean sagittis ac risus duis urna, dignissim iaculis iaculis vulputate erat dictumst neque tempor.

+

Dolor interdum gravida parturient nulla penatibus per aenean volutpat est. Tempor habitant morbi facilisis praesent placerat? Arcu accumsan eget est consequat netus justo, rhoncus iaculis, sociis nibh? Rutrum id laoreet, vehicula commodo varius laoreet suscipit. Mattis lectus ligula id faucibus – proin eget viverra, condimentum vestibulum!

diff --git a/articles/dashboards/examples/filling-layout.png b/articles/dashboards/examples/filling-layout.png index 286f5934ad86dcc5c2425dfb22b677f118113a1b..c9f08197a864892b5e2b3477848f936b231e1833 100644 GIT binary patch delta 27713 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
l-uj)=%7_CMNO{UFBO_K!r2X@`oH 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

Y&)^`!8 zi#<449BeUIfxqf?P7ySLp^Gff*z?=1y0N@hWPCy8k>c*mh(phYsol$l3ekFS8**gT zhkAJw%B3eoS^$-`12OH6lIcE|MNI#!qf%Gm^*yC4oGnz=`Iv>pkmy1PdV8*bFWRaB zo<%cf)8n%X@Wumoz`~vTlZTGth{yE|5sI}nmWCs0zixtvgDkS9{wxe^>z388)PdNN zQaw2o{y_?J?c48{6JtKUQPhPm6VGFm%?n2b}fnttc6R; z!xO{ZG)nsryS$iC?q1pzTZWZ2eGNCtWK-I~#bp`DZ5KpU1F~B!+S>|ekm48%v>F_^ z!Ua`ODVX8ubxKQlNAcv#KEUI*){cf$;8Tj6=k?tO8gMkz9L%jR&tY3I2Eg>_aFa2a_ zZh08Cd~5Z;n;~F=1SBmjz3S*TuLJcOUnoe1mZJ;TI-iIgyOE|!oG^8w?`X?2aq3j( zmo2p9S2lwJN(2c~7MQn>gXeicZM+p;w#%xI5?Y=j_A~|9noW_)L56hAJ-qx;y&AGk z1(AlYu*i^k0Av4bpH04;9uy5+_qBnJtA`?7&NzJcbA`S8j4>Gh{#FZKQl}p5x@(b8 zPDosSh#43OG%vlEZkoF!QhpFH!2?9KXbplA83%sAB^FiBi#Xa@VM2z$k~ZEp;%};>KR%&F`(*4wlNAPR1TgIUzEXZ5>dE9AP^GT z!R25fT|#NrLsKXmyTChwQL$4<{PZyeC65WV7A`a~jhjel1Arhp0_4Q1T)NdA?1UB7 zRP5CE($(#=>l*4?oJ}SOI&FFVbp_tj1MgU1YFJU^vHFlj+S-n{e$dkP`0<6-YaU!P z$_h1}XbUv-fD@*j{xoT?qvnSxU-n*5%=O^P1krLyg2ja8TrAtSO6MPjAn3I%sJ6-eW{!WloS*3V!I(IauXS_0UL?LjL(Y zz*<#Tp;)b}e<$;;v53{t0WtpIx1)eeBq5xkP>~2l|LGAV$c0YD!V)UUJ<*}hyj0S~ zR0hO|<3DTw)3yMa+-oKL+yx{voDDg>qr1ikBJx!L zDQ!bWGq4!rWxYPdr{^3yNu5X{99uUfyL2J$iO~3F?yJ5>jIWCbr z8w2N!q4&4{y8B4@2n2XC^fNhC?Bv}?o2#CBso0LRrk7o?bWQiPBU3@XfLAXh36Nkz zADE0Y0)ivFO0q6)i$r$lq=NCaZgl?yn_9d)l@hzah;?azdN!suaqjnZ5^GIT6yo8P z;AMP7|4TSYyucR}3ieXzKeky*NDp*H^%NtXDYWqqvf-7NwLi>uqfT9JC72x zJ^kJqNXT0zmE9>hZqDhrn3cC<$B z&Al&Ezc1rG`PCb<Vk+iq|?=oWWJlHu( N=e*&$+_Tpn{0}K7!~FmN diff --git a/articles/filling/examples/full-screen-cards/index.html b/articles/filling/examples/full-screen-cards/index.html index 053c3d7cf..b4142cff3 100644 --- a/articles/filling/examples/full-screen-cards/index.html +++ b/articles/filling/examples/full-screen-cards/index.html @@ -31,8 +31,8 @@

Diamond price
-
- +
+
@@ -45,8 +45,8 @@
Diamond carat
-
- +
+
@@ -59,8 +59,8 @@
Diamond cut by clarity
-
- +
+
diff --git a/articles/filling/examples/multiple-columns/index.html b/articles/filling/examples/multiple-columns/index.html index 8b998a2c2..69f27dee8 100644 --- a/articles/filling/examples/multiple-columns/index.html +++ b/articles/filling/examples/multiple-columns/index.html @@ -28,15 +28,15 @@

Diamond plots

-
- +
+
-
- +
+
-
- +
+ diff --git a/articles/filling/examples/page-fillable/index.html b/articles/filling/examples/page-fillable/index.html index 2ee1ca833..f3464aada 100644 --- a/articles/filling/examples/page-fillable/index.html +++ b/articles/filling/examples/page-fillable/index.html @@ -25,11 +25,11 @@

Diamond plots

-
- -
- -
- +
+ +
+ +
+ diff --git a/articles/filling/examples/sidebar-layouts/index.html b/articles/filling/examples/sidebar-layouts/index.html index 9f9bcb776..523f75f8b 100644 --- a/articles/filling/examples/sidebar-layouts/index.html +++ b/articles/filling/examples/sidebar-layouts/index.html @@ -33,8 +33,8 @@
Diamond price
-
- +
+
@@ -47,8 +47,8 @@
Diamond carat
-
- +
+
@@ -61,8 +61,8 @@
Diamond cut by clarity
-
- +
+
@@ -71,13 +71,13 @@
-
diff --git a/articles/filling/examples/value-boxes/index.html b/articles/filling/examples/value-boxes/index.html index 854f45c81..9f789c145 100644 --- a/articles/filling/examples/value-boxes/index.html +++ b/articles/filling/examples/value-boxes/index.html @@ -74,15 +74,15 @@
-
- +
+
-
- +
+
-
- +
+ diff --git a/articles/sidebars/examples/hello-layout-sidebar/index.html b/articles/sidebars/examples/hello-layout-sidebar/index.html index 924fc8481..9a3735f9d 100644 --- a/articles/sidebars/examples/hello-layout-sidebar/index.html +++ b/articles/sidebars/examples/hello-layout-sidebar/index.html @@ -47,10 +47,10 @@
-
- +
+
-
- +
Earthquakes
-
- +
+
-
diff --git a/articles/sidebars/examples/multi-page/index.html b/articles/sidebars/examples/multi-page/index.html index 0f68d759c..3035087d8 100644 --- a/articles/sidebars/examples/multi-page/index.html +++ b/articles/sidebars/examples/multi-page/index.html @@ -49,7 +49,7 @@
-
-
+
+
-
- +
+
-
-
+
-
- +
+
-
- +
@@ -137,10 +137,10 @@
-
- +
+
-
- +
@@ -178,10 +178,10 @@
-
- +
+
-
- +
diff --git a/articles/sidebars/examples/page-fill-double/index.html b/articles/sidebars/examples/page-fill-double/index.html index d065fdc9f..082ccd005 100644 --- a/articles/sidebars/examples/page-fill-double/index.html +++ b/articles/sidebars/examples/page-fill-double/index.html @@ -24,17 +24,17 @@

Left and right sidebar

-
diff --git a/articles/sidebars/examples/restricting-growth/index.html b/articles/sidebars/examples/restricting-growth/index.html index 12860c7c2..efd537d12 100644 --- a/articles/sidebars/examples/restricting-growth/index.html +++ b/articles/sidebars/examples/restricting-growth/index.html @@ -49,14 +49,14 @@

Sidebar demo

-
- -
- -
- +
+ +
+ +
+
-
@@ -110,22 +110,22 @@

Sidebar demo

"label": ["I1", "SI2", "SI1", "VS2", "VS1", "VVS2", "VVS1", "IF"] }, "map": { - "I1": ["125", "137", "178", "475", "490", "491", "506", "701", "702", "705", "934", "937"], - "SI2": ["2", "3", "6", "7", "9", "10", "42", "45", "48", "49", "53", "61", "63", "81", "83", "87", "93", "99", "103", "105", "112", "116", "117", "144", "147", "150", "151", "153", "157", "161", "163", "166", "179", "204", "225", "231", "236", "243", "244", "251", "252", "258", "266", "278", "291", "293", "294", "304", "308", "312", "313", "317", "319", "322", "326", "337", "339", "347", "363", "366", "371", "382", "383", "387", "388", "390", "392", "394", "402", "408", "419", "423", "425", "429", "432", "435", "436", "448", "457", "458", "465", "480", "487", "504", "511", "534", "542", "543", "547", "554", "555", "556", "557", "558", "562", "565", "574", "575", "578", "584", "587", "597", "601", "605", "606", "612", "615", "621", "631", "632", "636", "641", "647", "654", "656", "670", "676", "680", "692", "695", "712", "719", "723", "724", "727", "730", "731", "734", "739", "740", "762", "764", "768", "776", "782", "788", "792", "801", "802", "803", "804", "810", "816", "825", "826", "830", "842", "847", "848", "851", "855", "858", "872", "881", "883", "891", "894", "914", "920", "926", "929", "930", "940", "949", "955", "958", "971", "972", "973", "977", "982", "983", "988", "996"], - "SI1": ["13", "20", "27", "30", "34", "35", "36", "40", "41", "46", "47", "51", "57", "58", "59", "62", "64", "66", "69", "82", "85", "89", "101", "110", "113", "114", "115", "121", "122", "123", "131", "132", "135", "138", "155", "160", "164", "165", "167", "168", "170", "172", "176", "180", "182", "184", "187", "188", "189", "193", "195", "198", "200", "202", "207", "208", "209", "215", "218", "222", "223", "224", "240", "242", "245", "246", "250", "253", "260", "264", "272", "273", "280", "284", "285", "296", "299", "305", "309", "311", "314", "318", "323", "325", "330", "332", "333", "341", "348", "349", "352", "353", "356", "358", "362", "370", "372", "373", "375", "376", "377", "379", "380", "384", "385", "389", "391", "395", "401", "404", "407", "409", "413", "415", "418", "433", "434", "437", "439", "441", "442", "445", "447", "449", "450", "452", "453", "463", "464", "476", "477", "484", "486", "494", "495", "497", "498", "499", "501", "505", "510", "512", "516", "517", "518", "521", "524", "528", "537", "545", "546", "549", "550", "564", "577", "579", "582", "585", "588", "591", "596", "598", "600", "609", "611", "628", "637", "638", "640", "644", "645", "646", "658", "659", "660", "666", "673", "674", "677", "678", "681", "682", "683", "685", "689", "690", "691", "696", "698", "704", "706", "707", "708", "710", "717", "726", "728", "742", "746", "748", "754", "756", "758", "774", "775", "779", "780", "789", "790", "794", "795", "806", "818", "824", "828", "831", "832", "836", "852", "856", "863", "865", "867", "869", "870", "873", "874", "875", "877", "884", "889", "890", "895", "902", "903", "906", "910", "911", "912", "915", "916", "918", "919", "921", "922", "925", "928", "931", "933", "935", "942", "946", "962", "975", "976", "978", "987", "989"], - "VS2": ["5", "12", "14", "15", "16", "19", "21", "23", "25", "26", "28", "29", "32", "37", "38", "43", "44", "50", "55", "56", "65", "67", "68", "73", "74", "76", "77", "88", "90", "92", "96", "98", "100", "102", "104", "107", "118", "124", "127", "128", "130", "148", "149", "152", "162", "169", "173", "183", "185", "190", "192", "210", "214", "228", "229", "234", "239", "247", "248", "256", "259", "261", "262", "263", "267", "277", "279", "289", "292", "297", "298", "301", "302", "303", "310", "316", "320", "324", "327", "336", "340", "350", "354", "355", "357", "360", "361", "364", "367", "368", "374", "381", "386", "399", "400", "403", "405", "411", "416", "420", "421", "428", "430", "431", "455", "459", "467", "468", "472", "479", "492", "496", "500", "508", "515", "519", "520", "523", "531", "535", "538", "540", "544", "548", "551", "552", "559", "566", "568", "580", "583", "586", "593", "602", "603", "604", "610", "614", "620", "630", "633", "639", "643", "649", "650", "652", "653", "655", "657", "662", "667", "669", "684", "699", "709", "715", "718", "720", "722", "725", "732", "733", "735", "737", "744", "747", "750", "757", "759", "760", "761", "763", "765", "766", "772", "781", "786", "791", "800", "805", "807", "808", "809", "811", "814", "819", "821", "829", "838", "841", "843", "849", "850", "853", "854", "860", "861", "868", "871", "876", "879", "887", "888", "901", "904", "908", "909", "924", "927", "936", "939", "943", "944", "947", "950", "951", "953", "957", "961", "967", "968", "970", "984", "985", "986", "992", "994", "995", "997", "1000"], - "VS1": ["8", "17", "54", "72", "78", "79", "108", "120", "133", "134", "139", "140", "145", "146", "154", "174", "191", "194", "197", "201", "211", "212", "213", "220", "221", "226", "232", "233", "237", "255", "257", "268", "270", "271", "275", "276", "281", "283", "290", "295", "315", "321", "328", "335", "338", "342", "344", "378", "393", "397", "398", "410", "417", "422", "426", "440", "444", "461", "462", "471", "473", "478", "481", "482", "488", "489", "493", "503", "514", "522", "525", "526", "532", "533", "541", "567", "570", "571", "572", "573", "576", "589", "594", "595", "599", "617", "618", "619", "622", "625", "642", "651", "663", "675", "679", "686", "687", "693", "697", "700", "713", "714", "716", "721", "736", "738", "743", "745", "749", "751", "769", "783", "784", "797", "815", "817", "840", "844", "846", "862", "880", "892", "893", "897", "900", "905", "907", "913", "932", "938", "941", "948", "954", "963", "966", "979"], - "VVS2": ["4", "11", "18", "22", "24", "39", "60", "70", "71", "75", "80", "91", "95", "97", "109", "119", "136", "141", "142", "143", "156", "158", "177", "199", "217", "219", "235", "238", "249", "254", "265", "274", "282", "286", "287", "288", "306", "331", "334", "343", "359", "365", "369", "414", "443", "446", "469", "474", "483", "485", "507", "539", "553", "590", "623", "624", "626", "629", "634", "648", "668", "671", "688", "729", "770", "771", "773", "777", "778", "787", "793", "796", "799", "812", "823", "827", "834", "835", "837", "857", "859", "878", "885", "886", "896", "898", "899", "917", "952", "960", "965", "969", "980", "993", "999"], - "VVS1": ["1", "31", "33", "86", "106", "111", "126", "129", "159", "171", "175", "186", "205", "230", "269", "300", "307", "345", "346", "396", "406", "412", "424", "427", "454", "456", "460", "466", "470", "502", "529", "530", "536", "560", "563", "581", "592", "608", "627", "635", "661", "664", "672", "703", "711", "741", "752", "753", "767", "785", "798", "820", "822", "833", "839", "845", "864", "882", "923", "945", "956", "959", "964", "974", "981", "998"], - "IF": ["52", "84", "94", "181", "196", "203", "206", "216", "227", "241", "329", "351", "438", "451", "509", "513", "527", "561", "569", "607", "613", "616", "665", "694", "755", "813", "866", "990", "991"] + "I1": ["201", "579", "653", "666", "748", "749", "809", "832", "890", "903"], + "SI2": ["6", "15", "26", "37", "56", "68", "70", "78", "81", "93", "95", "97", "99", "105", "124", "142", "143", "153", "154", "160", "164", "167", "173", "179", "180", "187", "197", "203", "217", "223", "224", "228", "235", "238", "246", "252", "253", "254", "264", "275", "276", "285", "289", "290", "304", "319", "323", "327", "329", "335", "336", "339", "341", "342", "350", "352", "362", "369", "377", "383", "384", "386", "398", "405", "406", "408", "421", "423", "437", "442", "459", "471", "478", "487", "494", "514", "518", "522", "525", "528", "533", "541", "542", "548", "549", "558", "582", "583", "590", "600", "606", "608", "612", "619", "627", "630", "631", "637", "645", "647", "648", "652", "664", "665", "673", "686", "700", "701", "709", "715", "717", "720", "730", "739", "742", "745", "746", "754", "760", "764", "765", "779", "781", "783", "787", "790", "791", "793", "801", "816", "821", "838", "840", "868", "869", "874", "881", "889", "893", "897", "901", "910", "917", "927", "933", "947", "951", "955", "963", "965", "976", "983", "988"], + "SI1": ["3", "7", "10", "20", "21", "22", "23", "36", "38", "40", "45", "48", "52", "53", "58", "59", "60", "61", "66", "69", "75", "80", "85", "91", "94", "103", "107", "113", "114", "120", "131", "132", "135", "136", "138", "139", "141", "144", "147", "151", "155", "163", "165", "168", "169", "175", "176", "183", "186", "188", "192", "198", "204", "208", "210", "211", "213", "214", "215", "218", "219", "227", "236", "237", "240", "244", "245", "248", "249", "256", "257", "261", "268", "270", "273", "277", "279", "280", "281", "287", "291", "292", "296", "298", "301", "306", "308", "310", "311", "312", "317", "321", "326", "330", "333", "337", "340", "354", "356", "360", "366", "372", "374", "375", "388", "392", "395", "396", "397", "399", "403", "407", "409", "410", "411", "414", "417", "420", "424", "426", "433", "443", "445", "452", "454", "462", "464", "465", "466", "468", "470", "474", "477", "481", "482", "483", "486", "496", "497", "500", "501", "503", "506", "512", "515", "526", "532", "535", "536", "543", "546", "553", "554", "560", "562", "563", "566", "574", "575", "576", "588", "591", "594", "598", "607", "609", "616", "620", "624", "625", "632", "638", "639", "643", "644", "646", "649", "650", "655", "660", "661", "663", "667", "671", "675", "676", "684", "688", "689", "697", "710", "711", "712", "713", "716", "727", "732", "738", "741", "752", "756", "757", "763", "766", "777", "782", "785", "796", "808", "811", "818", "820", "822", "829", "831", "833", "837", "844", "847", "853", "856", "865", "866", "873", "882", "883", "885", "894", "895", "899", "905", "909", "912", "913", "914", "921", "924", "925", "931", "937", "939", "944", "948", "953", "957", "958", "964", "969", "974", "979", "987", "991", "993", "998", "1000"], + "VS2": ["2", "4", "8", "11", "14", "16", "17", "18", "24", "25", "27", "28", "31", "33", "34", "39", "43", "47", "49", "50", "51", "72", "76", "77", "82", "83", "84", "86", "88", "89", "92", "101", "110", "117", "122", "125", "129", "137", "150", "152", "162", "166", "174", "184", "189", "190", "193", "195", "202", "209", "220", "221", "222", "225", "226", "229", "230", "233", "239", "255", "263", "266", "267", "271", "272", "278", "282", "288", "297", "314", "315", "316", "325", "332", "334", "338", "343", "351", "361", "363", "371", "380", "381", "389", "390", "391", "393", "401", "422", "425", "429", "432", "438", "440", "444", "451", "453", "461", "469", "484", "485", "490", "492", "493", "498", "505", "511", "517", "521", "523", "527", "530", "531", "534", "537", "538", "540", "544", "545", "559", "561", "565", "568", "570", "571", "572", "573", "578", "581", "589", "592", "593", "595", "603", "604", "613", "614", "615", "617", "618", "623", "626", "636", "642", "651", "657", "659", "662", "668", "674", "679", "682", "687", "692", "694", "698", "699", "702", "708", "722", "724", "733", "734", "736", "737", "744", "750", "751", "753", "758", "769", "772", "773", "776", "789", "798", "800", "803", "805", "812", "814", "817", "827", "828", "834", "835", "839", "842", "843", "846", "863", "864", "867", "870", "872", "877", "878", "884", "887", "892", "902", "904", "907", "908", "916", "922", "928", "930", "932", "934", "943", "946", "967", "971", "973", "975", "978", "984", "989"], + "VS1": ["1", "13", "29", "30", "32", "35", "41", "44", "62", "64", "65", "67", "71", "73", "74", "87", "98", "108", "109", "116", "126", "128", "130", "134", "145", "148", "156", "159", "172", "177", "178", "182", "191", "196", "199", "205", "207", "212", "232", "242", "247", "250", "251", "260", "262", "269", "274", "283", "284", "294", "307", "320", "328", "344", "347", "349", "355", "358", "370", "376", "382", "394", "400", "402", "413", "416", "418", "428", "431", "434", "435", "446", "447", "449", "456", "457", "458", "463", "472", "475", "479", "488", "499", "504", "508", "510", "513", "519", "550", "556", "564", "567", "577", "585", "587", "597", "605", "610", "621", "622", "629", "633", "641", "656", "658", "669", "670", "680", "681", "683", "690", "705", "714", "721", "723", "728", "729", "731", "743", "747", "759", "761", "762", "768", "771", "775", "784", "792", "806", "810", "825", "845", "850", "859", "861", "871", "876", "886", "896", "915", "919", "926", "935", "938", "941", "945", "950", "952", "956", "959", "961", "962", "966", "994"], + "VVS2": ["5", "42", "54", "55", "96", "100", "102", "111", "115", "118", "121", "123", "127", "157", "161", "170", "200", "216", "231", "259", "286", "293", "295", "300", "302", "305", "313", "324", "331", "359", "364", "378", "385", "404", "412", "415", "419", "427", "441", "455", "476", "480", "489", "491", "516", "539", "569", "586", "602", "611", "628", "640", "685", "691", "695", "706", "718", "725", "726", "740", "767", "774", "778", "780", "799", "802", "807", "813", "819", "823", "824", "830", "841", "848", "849", "851", "852", "854", "857", "858", "860", "862", "880", "898", "900", "906", "911", "920", "923", "942", "949", "960", "972", "980", "981", "986", "990", "995", "996", "997"], + "VVS1": ["12", "19", "57", "90", "112", "119", "133", "140", "158", "181", "185", "194", "206", "234", "241", "243", "258", "265", "299", "309", "318", "322", "346", "348", "353", "357", "365", "367", "373", "379", "430", "436", "439", "448", "450", "460", "473", "495", "502", "507", "520", "529", "547", "551", "557", "584", "596", "599", "634", "635", "654", "672", "693", "703", "707", "719", "735", "770", "786", "788", "794", "797", "804", "815", "826", "836", "855", "879", "888", "891", "918", "929", "940", "954", "968", "977", "982", "985", "992", "999"], + "IF": ["9", "46", "63", "79", "104", "106", "146", "149", "171", "303", "345", "368", "387", "467", "509", "524", "552", "555", "580", "601", "677", "678", "696", "704", "755", "795", "875", "936", "970"] }, - "group": ["SharedData873505c7"] + "group": ["SharedData928dd856"] }
- +
@@ -137,10 +137,10 @@

Sidebar demo

-
- +
+
-
diff --git a/articles/sidebars/examples/shiny-dynamic-sidebar/index.html b/articles/sidebars/examples/shiny-dynamic-sidebar/index.html index 96049daff..6dfb34d3d 100644 --- a/articles/sidebars/examples/shiny-dynamic-sidebar/index.html +++ b/articles/sidebars/examples/shiny-dynamic-sidebar/index.html @@ -25,12 +25,12 @@ -
@@ -38,9 +38,9 @@
-
-
Page 1 contents
-
Page 2 contents
+
+
Page 1 contents
+
Page 2 contents
-
diff --git a/articles/sidebars/examples/shiny-sidebar-state/index.html b/articles/sidebars/examples/shiny-sidebar-state/index.html index 1fe31505b..07f4306a0 100644 --- a/articles/sidebars/examples/shiny-sidebar-state/index.html +++ b/articles/sidebars/examples/shiny-sidebar-state/index.html @@ -25,12 +25,12 @@ -
@@ -38,9 +38,9 @@
Main contents
- +
@@ -236,8 +236,8 @@

Filling layout
Main contents
- +

@@ -274,25 +274,25 @@

Multi-page layout

-
-
-
Page 1 content
-
Page 2 content
+
+
Page 1 content
+
Page 2 content
- +
@@ -324,28 +324,28 @@

Multi-page layout
-
-
+
+
Tab 1 content
-
+
Tab 2 content
- +
@@ -681,19 +681,19 @@

Groups of diamond filters
-
- +
+
-
@@ -877,20 +877,20 @@

Styling and customizationtagAppendAttributes(container, style = css("--bs-card-border-color" = "#1E1E1E"))

-
- +
+
-
diff --git a/articles/value-boxes/examples/fill-false/index.html b/articles/value-boxes/examples/fill-false/index.html index 44aa96b04..e02345c75 100644 --- a/articles/value-boxes/examples/fill-false/index.html +++ b/articles/value-boxes/examples/fill-false/index.html @@ -61,8 +61,8 @@
-
- +
+
diff --git a/articles/value-boxes/index.html b/articles/value-boxes/index.html index 70fdf8d4a..04505d16d 100644 --- a/articles/value-boxes/index.html +++ b/articles/value-boxes/index.html @@ -474,8 +474,8 @@

Expandable sparklines
-
- +
+

Personal Savings Rate

diff --git a/pkgdown.yml b/pkgdown.yml index 87f685ff9..61bde4b82 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -17,7 +17,7 @@ articles: index: utility-classes/index.html index: value-boxes/index.html index: why-sass/index.html -last_built: 2023-11-05T17:03Z +last_built: 2023-11-06T15:14Z urls: reference: https://rstudio.github.io/bslib/reference article: https://rstudio.github.io/bslib/articles diff --git a/search.json b/search.json index 374f776da..d92c61ea0 100644 --- a/search.json +++ b/search.json @@ -1 +1 @@ -[{"path":[]},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"our-pledge","dir":"","previous_headings":"","what":"Our Pledge","title":"Contributor Covenant Code of Conduct","text":"members, contributors, leaders pledge make participation community harassment-free experience everyone, regardless age, body size, visible invisible disability, ethnicity, sex characteristics, gender identity expression, level experience, education, socio-economic status, nationality, personal appearance, race, religion, sexual identity orientation. pledge act interact ways contribute open, welcoming, diverse, inclusive, healthy community.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"our-standards","dir":"","previous_headings":"","what":"Our Standards","title":"Contributor Covenant Code of Conduct","text":"Examples behavior contributes positive environment community include: Demonstrating empathy kindness toward people respectful differing opinions, viewpoints, experiences Giving gracefully accepting constructive feedback Accepting responsibility apologizing affected mistakes, learning experience Focusing best just us individuals, overall community Examples unacceptable behavior include: use sexualized language imagery, sexual attention advances kind Trolling, insulting derogatory comments, personal political attacks Public private harassment Publishing others’ private information, physical email address, without explicit permission conduct reasonably considered inappropriate professional setting","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"enforcement-responsibilities","dir":"","previous_headings":"","what":"Enforcement Responsibilities","title":"Contributor Covenant Code of Conduct","text":"Community leaders responsible clarifying enforcing standards acceptable behavior take appropriate fair corrective action response behavior deem inappropriate, threatening, offensive, harmful. Community leaders right responsibility remove, edit, reject comments, commits, code, wiki edits, issues, contributions aligned Code Conduct, communicate reasons moderation decisions appropriate.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"scope","dir":"","previous_headings":"","what":"Scope","title":"Contributor Covenant Code of Conduct","text":"Code Conduct applies within community spaces, also applies individual officially representing community public spaces. Examples representing community include using official e-mail address, posting via official social media account, acting appointed representative online offline event.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"enforcement","dir":"","previous_headings":"","what":"Enforcement","title":"Contributor Covenant Code of Conduct","text":"Instances abusive, harassing, otherwise unacceptable behavior may reported community leaders responsible enforcement [INSERT CONTACT METHOD]. complaints reviewed investigated promptly fairly. community leaders obligated respect privacy security reporter incident.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"enforcement-guidelines","dir":"","previous_headings":"","what":"Enforcement Guidelines","title":"Contributor Covenant Code of Conduct","text":"Community leaders follow Community Impact Guidelines determining consequences action deem violation Code Conduct:","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"id_1-correction","dir":"","previous_headings":"Enforcement Guidelines","what":"1. Correction","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Use inappropriate language behavior deemed unprofessional unwelcome community. Consequence: private, written warning community leaders, providing clarity around nature violation explanation behavior inappropriate. public apology may requested.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"id_2-warning","dir":"","previous_headings":"Enforcement Guidelines","what":"2. Warning","title":"Contributor Covenant Code of Conduct","text":"Community Impact: violation single incident series actions. Consequence: warning consequences continued behavior. interaction people involved, including unsolicited interaction enforcing Code Conduct, specified period time. includes avoiding interactions community spaces well external channels like social media. Violating terms may lead temporary permanent ban.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"id_3-temporary-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"3. Temporary Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: serious violation community standards, including sustained inappropriate behavior. Consequence: temporary ban sort interaction public communication community specified period time. public private interaction people involved, including unsolicited interaction enforcing Code Conduct, allowed period. Violating terms may lead permanent ban.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"id_4-permanent-ban","dir":"","previous_headings":"Enforcement Guidelines","what":"4. Permanent Ban","title":"Contributor Covenant Code of Conduct","text":"Community Impact: Demonstrating pattern violation community standards, including sustained inappropriate behavior, harassment individual, aggression toward disparagement classes individuals. Consequence: permanent ban sort public interaction within community.","code":""},{"path":"https://rstudio.github.io/bslib/CODE_OF_CONDUCT.html","id":"attribution","dir":"","previous_headings":"","what":"Attribution","title":"Contributor Covenant Code of Conduct","text":"Code Conduct adapted Contributor Covenant, version 2.0, available https://www.contributor-covenant.org/version/2/0/ code_of_conduct.html. Community Impact Guidelines inspired Mozilla’s code conduct enforcement ladder. answers common questions code conduct, see FAQ https://www.contributor-covenant.org/faq. Translations available https://www.contributor-covenant.org/translations.","code":""},{"path":"https://rstudio.github.io/bslib/PULL_REQUEST_TEMPLATE.html","id":"pull-request","dir":"","previous_headings":"","what":"Pull Request","title":"NA","text":"submit pull request, please ensure ’ve completed following checklist Ensure already open relevant GitHub issue describing problem detail ’ve already received indication maintainers welcome contribution fix problem. helps us prevent wasting anyone’s time. Add unit tests tests/testthat directory. project uses roxygen2 documentation. ’ve made changes documentation, run devtools::document(). Run devtools::check() (, equivalently, click Build->Check Package RStudio IDE) make sure change add messages, warnings, errors. Note decent chance tests already failing changes. Just make sure haven’t introduced new ones. Ensure code changes follow style outlined http://r-pkgs..co.nz/style.html Add entry NEWS.md concisely describing changed.","code":""},{"path":"https://rstudio.github.io/bslib/articles/any-project/index.html","id":"shiny","dir":"Articles > Any-project","previous_headings":"","what":"Shiny","title":"Any project","text":"bslib provides handful page_*() functions can used drop-replacements shiny::*Page(). first important difference page_*() provides latest version Bootstrap (default). example: addition, bslib’s page_*() functions provide new capabilities. importantly, cover Shiny dashboards, page_navbar() page_sidebar() provide deep integration sidebar layouts, filling layouts, navbar customizations, theming, . Another new important page_*() function page_fillable(). function provides new approach filling layouts forms foundation higher-level abstractions page_sidebar() page_navbar(). See filling layouts (especially Practice section) learn page_fillable().","code":"library(shiny) # Same as fluidPage(), but with latest Bootstrap ui <- page_fluid( h2(\"Hello world\") ) shinyApp(ui, function(...) {})"},{"path":"https://rstudio.github.io/bslib/articles/any-project/index.html","id":"without-shiny","dir":"Articles > Any-project","previous_headings":"","what":"Without Shiny","title":"Any project","text":"page_*() functions offer means getting started Shiny can also used create static HTML pages (.e., HTML file server-side code). Probably intriguing use case crosstalk (.e., htmlwidgets can linked together). example: since result static HTML, can save HTML file share others email, Slack, etc.: Also, clear, static HTML can also useful without crosstalk. example, can use page_fillable() layout numerous htmlwidgets:","code":"library(crosstalk) library(leaflet) # Use crosstalk to create a client-side filter between the map and slider quake_dat <- SharedData$new(quakes) map_filter <- filter_slider(\"mag\", \"Magnitude\", quake_dat, ~mag) map_quakes <- leaflet(quake_dat) |> addTiles() |> addCircleMarkers() page_sidebar( title = \"Client-side filtering\", sidebar = map_filter, # Can also put other bslib components here # like cards, value boxes, etc. map_quakes ) htmltools::save_html(.Last.value, \"index.html\") plot_card <- card( full_screen = TRUE, card_header(\"Plot\"), plotly::plot_ly() ) page_fillable( layout_columns(plot_card, plot_card), plot_card )"},{"path":"https://rstudio.github.io/bslib/articles/any-project/index.html","id":"r-markdown","dir":"Articles > Any-project","previous_headings":"","what":"R Markdown","title":"Any project","text":"Use theme parameter compatible output format1 get started R Markdown. supplying bslib: true parameter, ’ll get latest “stock” version Bootstrap (akin using page_*() Shiny). Alternatively, can supply bs_theme() parameters theme parameter specify Bootstrap version, add Bootswatch theme, customize theming colors (Getting Started Theming covers depth). bslib also provides R Markdown templates can accessed RStudio going File -> New File -> R Markdown -> Template: addition rmarkdown::html_document, least R Markdown projects compatible bslib. cases, can get started projects pretty similar fashion rmarkdown::html_document. See following articles learn : flexdashboard, pkgdown, bookdown.","code":"--- output: html_document: theme: bslib: true --- --- output: html_document: theme: version: 5 bootswatch: minty primary: \"#6CC3D4\" ---"},{"path":"https://rstudio.github.io/bslib/articles/any-project/index.html","id":"in-production","dir":"Articles > Any-project","previous_headings":"","what":"In production","title":"Any project","text":"deploying bslib project production, ’s wise “hard-code” version Bootstrap used developed. reduces chance project breaking bslib updates ’s Bootstrap dependency. , call version_default() get current version Bootstrap, pass value relevant theme object.","code":"library(shiny) ui <- page_fluid( theme = bs_theme(version = 5), ... ) shinyApp(ui, function(...) {}) --- output: html_document: theme: version: 5 ---"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"setup-code","dir":"Articles > Cards","previous_headings":"","what":"Setup code","title":"Cards","text":"demonstrate bslib cards work outside Shiny (.e., R Markdown, static HTML, etc), ’ll make repeated use statically rendered htmlwidgets like plotly leaflet. ’s code create widgets: Cards work equally well Shiny. examples , replace plotly_widget plotlyOutput() leaflet_widget leafletOutput() adapt Shiny server-rendered plots/maps.","code":"library(bslib) library(shiny) library(htmltools) library(plotly) library(leaflet) plotly_widget <- plot_ly(x = diamonds$cut) %>% config(displayModeBar = FALSE) %>% layout(margin = list(t = 0, b = 0, l = 0, r = 0)) leaflet_widget <- leafletOptions(attributionControl = FALSE) %>% leaflet(options = .) %>% addTiles()"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"hello-card","dir":"Articles > Cards","previous_headings":"","what":"Hello card()","title":"Cards","text":"card() designed handle number “known” card items (e.g., card_header(), card_body(), etc) unnamed arguments (.e., children). ’ll see shortly, card() also useful named arguments (e.g., full_screen, height, etc). core, card() card items just HTML div() special Bootstrap class, can use Bootstrap’s utility classes customize things like colors, text, borders, etc. text link","code":"card( card_header( class = \"bg-dark\", \"A header\" ), card_body( markdown(\"Some text with a [link](https://github.com)\") ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"implicit-card_body","dir":"Articles > Cards","previous_headings":"","what":"Implicit card_body()","title":"Cards","text":"find using card_body() without changing defaults, consider dropping altogether since direct children card() aren’t “known” card() items, wrapped together implicit card_body() call.1 example, code right generates HTML identical previous example: text link.","code":"card( card_header( class = \"bg-dark\", \"A header\" ), markdown(\"Some text with a [link](https://github.com).\") )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"restricting-growth","dir":"Articles > Cards","previous_headings":"","what":"Restricting growth","title":"Cards","text":"default, card()’s size grows accommodate size contents. Thus, card_body() contains large amount text, tables, etc., may want specify height max_height. said, laying multiple cards, ’s likely best specify height card(), instead, let layout determine height layout_column_wrap(). Although scrolling convenient reducing amount space required park lots content, can also nuisance user. help reduce need scrolling, consider pairing scrolling full_screen = TRUE (adds icon expand card’s size browser window). Notice , card expanded full-screen, max_height/height won’t effect full-screen size card. Adipiscing : diam ac justo imperdiet imperdiet donec suscipit! Rutrum nec elementum risus sodales purus. Vel hac tellus sociis cubilia lectus cursus hac. Egestas iaculis aenean laoreet vulputate eros proin nisi tortor conubia senectus dis mauris – non montes? Blandit natoque montes quisque? Amet platea, elementum maecenas egestas. feugiat nec placerat potenti per; curabitur suscipit enim semper. Sagittis pretium tellus auctor viverra maecenas convallis elementum placerat! Luctus nulla dui quisque vehicula, velit nulla facilisis id molestie suscipit hac aliquam facilisis. Facilisi cras enim primis, eros lacus sed luctus quis nulla tempor, aliquet facilisi lacinia id maecenas vitae diam. Ipsum ante dapibus nibh, vestibulum fames auctor vitae lobortis, luctus pretium euismod metus. Platea quis netus fermentum feugiat enim purus, vulputate enim. Risus metus fames cum, vulputate lacus. Ridiculus mi turpis suscipit eu venenatis faucibus risus, ante aenean, etiam torquent habitant euismod. Dui lectus, viverra sodales diam!","code":"card( max_height = 250, full_screen = TRUE, card_header( \"A long, scrolling, description\" ), lorem::ipsum(paragraphs = 3, sentences = 5) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"filling-outputs","dir":"Articles > Cards","previous_headings":"","what":"Filling outputs","title":"Cards","text":"card()’s default behavior optimized facilitating filling layouts. specifically, fill item (e.g., plotly_widget), appears direct child card_body(), resizes fit card()s specified height. means, specifying height = 250 ’ve effectively shrunk plot’s height default 400 200 pixels. , expanded full_screen, plot grows match card()’s new size. htmlwidgets (e.g., plotly, leaflet, etc) Shiny output bindings (e.g, plotOutput(), imageOutput(), etc) fill items default, behavior “just works” scenarios. , situations, ’s helpful remove card_body()’s padding, can done via spacing & alignment utility classes. Fill item(s) aren’t limited much grow shrink, can problematic card becomes small. work around , consider adding min_height card_body() container. example, try using handle lower-right portion card example make card taller/smaller. interactive example bit contrived ’re using CSS resize demonstrate make plots don’t shrink beyond certain point, concept becomes quite useful implementing page-level filling layouts (.e., page_fillable()) multiple cards. ’ll learn filling layouts, fill item loses ability fill wrapped additional UI element isn’t fillable container. fix situation, use as_fill_carrier() allow additional element carry potential fill card_body() fill item.","code":"card( height = 250, full_screen = TRUE, card_header(\"A filling plot\"), card_body(plotly_widget) ) card( height = 275, full_screen = TRUE, card_header(\"A filling map\"), card_body( class = \"p-0\", leaflet_widget ), card_footer( class = \"fs-6\", \"Copyright 2023 RStudio, PBC\" ) ) card( height = 300, style = \"resize:vertical;\", card_header(\"Plots that grow but don't shrink\"), card_body( min_height = 250, plotly_widget, plotly_widget ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"multiple-card_body","dir":"Articles > Cards","previous_headings":"","what":"Multiple card_body()","title":"Cards","text":"card() can multiple card_body()s, especially useful : Combining resizable non-resizable contents (.e., fill items non-fill). Allowing card_body() styling (via inline styles /utility classes) resizing limits (e.g., min_height). example, pairing filling output scrolling content, may want min_height filling output since scrolling content force shrink: Lorem massa tempus: tortor porttitor hac magnis sapien montes cursus tempus. Aliquam venenatis, metus metus sed erat maecenas, hac mi felis. Accumsan lacinia ad dapibus, nibh mollis etiam massa ullamcorper mi scelerisque curabitur augue faucibus. Pulvinar justo sociis, lectus tempus id luctus pellentesque torquent posuere tortor. Libero justo ligula, natoque lacus. Sit purus congue luctus quisque – habitasse himenaeos. Est tempor; habitasse mi dictum dapibus accumsan placerat taciti posuere suspendisse fames? Nascetur elementum sem rutrum, per auctor leo? Felis litora class taciti, accumsan congue risus vestibulum. Et primis lacinia maecenas tortor nibh nam platea, scelerisque primis gravida quisque euismod malesuada imperdiet condimentum. Amet senectus urna nulla felis lacinia praesent tempor molestie lectus libero? Tempor et ligula himenaeos ornare, penatibus natoque platea tellus pretium tellus diam. Facilisis consequat lobortis, litora tellus luctus cras velit. Euismod vulputate sapien, mi tempor porttitor facilisi pretium. Himenaeos posuere orci justo semper, urna bibendum proin nisi, rutrum tortor tristique class! Adipiscing aenean auctor ornare nec donec parturient mus dictum. Faucibus aenean varius malesuada imperdiet torquent phasellus phasellus sed sapien dictum. Nec netus quis eu curae varius pellentesque semper, quam hendrerit pulvinar! Praesent morbi – nulla imperdiet accumsan tempus lacinia et? Primis risus mauris mattis ac ullamcorper nascetur morbi semper curae convallis, lobortis aliquet bibendum. Dolor pulvinar quam faucibus neque fames et aliquam platea, lectus, iaculis dignissim ornare torquent arcu. Tortor eu justo arcu purus platea sollicitudin velit mi nullam suspendisse laoreet. Faucibus velit cum cursus libero magnis consequat dictumst ad. Natoque nostra hac, facilisi fusce lacinia. Luctus platea nunc sociis. Dolor blandit sociosqu malesuada, taciti duis sociis dictum justo mus enim! Nec vel bibendum fusce faucibus nisi lectus. Habitant potenti aenean suspendisse himenaeos ultrices dapibus proin fames fusce. Diam sociis felis nullam viverra magna; sed libero ligula. Felis placerat porttitor posuere; tellus torquent, fringilla ac ultricies! Ipsum luctus nisi lacus vitae faucibus posuere conubia nascetur lacinia orci. Vivamus primis justo pulvinar et quis posuere justo, nascetur tellus commodo nulla? Mollis tristique senectus litora ultrices: mollis, posuere eget. Feugiat hendrerit – mi interdum dapibus donec! Metus suscipit, ultricies leo condimentum, porttitor inceptos tincidunt, pulvinar eros convallis porttitor ornare molestie euismod auctor aenean et. Elit ad euismod ultricies penatibus ultrices tempus porttitor nam condimentum quis praesent litora. Proin senectus malesuada, facilisis lectus volutpat , maecenas morbi aenean. Augue tempor velit cursus eros ligula fringilla pretium ornare blandit justo luctus! Eleifend pretium hac rhoncus, et diam fames . Eu lacus parturient, hac libero porta quam fringilla senectus proin ridiculus! Dolor nulla sem suscipit facilisis, quam feugiat augue orci. Est ornare ante accumsan natoque aliquet quisque blandit. Odio augue mollis id ad, cubilia faucibus scelerisque non. Velit purus nulla dui imperdiet cras nullam gravida magnis, pharetra erat pellentesque orci. Habitant tristique duis semper mus nam eros eu. Sit iaculis tristique tellus enim dis fusce velit . Integer donec et pellentesque proin sed vehicula feugiat maecenas ornare sed metus. Semper condimentum nascetur porttitor; suspendisse non convallis elementum interdum libero! Sed feugiat iaculis condimentum commodo, tellus quis molestie venenatis rutrum imperdiet. Etiam nibh diam ultricies ullamcorper venenatis primis nibh lacus aptent integer venenatis! Also, content fixed size, allowed scroll, set fill = FALSE: caption","code":"card( height = 375, full_screen = TRUE, card_header( \"Filling plot, scrolling description\" ), card_body( min_height = 200, plotly_widget ), card_body( class = \"lead container\", lorem::ipsum(paragraphs = 10, sentences = 5) ) ) card( height = 350, full_screen = TRUE, card_header( \"Filling plot, short description\" ), plotly_widget, card_body( fill = FALSE, gap = 0, card_title(\"A subtitle\"), p(class = \"text-muted\", \"And a caption\") ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"multiple-columns","dir":"Articles > Cards","previous_headings":"","what":"Multiple columns","title":"Cards","text":"’ll learn column-based layouts, layout_column_wrap() great multi-column layouts responsive accommodate filling output. equal-width 2-column layout using width = 1/2, ’s also possible varying column widths. Ipsum fermentum aptent ultrices metus, bibendum eleifend neque nulla ac! Sapien sapien netus proin ligula tortor. Habitasse justo faucibus, erat leo mauris vel nascetur interdum auctor? Venenatis penatibus fringilla pulvinar torquent fermentum nisi? Cubilia dictumst ligula ac feugiat faucibus quam, hac orci mattis commodo rhoncus, platea iaculis. Sit vitae molestie eros, pharetra metus, imperdiet class etiam class vel natoque? Etiam sociis platea mollis velit facilisis sollicitudin, penatibus fames parturient rhoncus? Proin fames nibh quam quisque tempor sapien urna; habitant viverra curae eget purus urna phasellus. Odio tincidunt neque aliquet metus, vitae phasellus condimentum litora. Hendrerit nostra. Elit faucibus interdum fermentum iaculis id maecenas sociosqu ut. Scelerisque orci porta, bibendum est, magna porta consequat! Libero tincidunt porttitor quis: dapibus suspendisse turpis. Libero sem sed semper proin sodales; congue turpis lacus curabitur aliquet vitae faucibus. Lectus eu ultrices feugiat cras odio et feugiat scelerisque dignissim duis.","code":"card( height = 350, full_screen = TRUE, card_header(\"A multi-column filling layout\"), card_body( min_height = 200, layout_column_wrap( width = 1/2, plotOutput(\"p1\"), plotOutput(\"p2\") ) ), lorem::ipsum(paragraphs = 3, sentences = 5) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"multiple-cards","dir":"Articles > Cards","previous_headings":"","what":"Multiple cards","title":"Cards","text":"layout_column_wrap() especially nice laying multiple cards since card particular row height (default). Learn column-based layouts.","code":"layout_column_wrap( width = 1/2, height = 300, card(full_screen = TRUE, card_header(\"A filling plot\"), plotly_widget), card(full_screen = TRUE, card_header(\"A filling map\"), card_body(class = \"p-0\", leaflet_widget)) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"multiple-tabs","dir":"Articles > Cards","previous_headings":"","what":"Multiple tabs","title":"Cards","text":"navset_card_tab() navset_card_pill() make possible create cards multiple tabs pills. functions full_screen capabilities normal card()s well options like title (since natural place card_header() used). Note , nav_panel() object similar card(). , direct children aren’t already card items (e.g., card_title()), get implicitly wrapped card_body(). Plotly Leaflet Learn htmlwidgets","code":"library(leaflet) navset_card_tab( height = 450, full_screen = TRUE, title = \"HTML Widgets\", nav_panel( \"Plotly\", card_title(\"A plotly plot\"), plotly_widget ), nav_panel( \"Leaflet\", card_title(\"A leaflet plot\"), leaflet_widget ), nav_panel( shiny::icon(\"circle-info\"), markdown(\"Learn more about [htmlwidgets](http://www.htmlwidgets.org/)\") ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"sidebars","dir":"Articles > Cards","previous_headings":"","what":"Sidebars","title":"Cards","text":"’ll learn sidebar layouts, layout_sidebar() just works placed inside card(). case, want fill items (e.g., plotly_widget) still fill card like ’ve seen , ’ll need set fillable = TRUE layout_sidebar().","code":"card( height = 300, full_screen = TRUE, card_header(\"A sidebar layout inside a card\"), layout_sidebar( fillable = TRUE, sidebar = sidebar( actionButton(\"btn\", \"A button\") ), plotly_widget ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"static-images","dir":"Articles > Cards","previous_headings":"","what":"Static images","title":"Cards","text":"card_image() makes easy embed static (.e., pre-generated) images card. Provide URL href make clickable. case multiple card_image()s, consider laying multiple cards layout_column_wrap() produce grid clickable thumbnails. Brought RStudio.","code":"card( height = 300, full_screen = TRUE, card_image( file = \"shiny-hex.svg\", href = \"https://github.com/rstudio/shiny\" ), card_body( fill = FALSE, card_title(\"Shiny for R\"), p( class = \"fw-light text-muted\", \"Brought to you by RStudio.\" ) ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"flexbox","dir":"Articles > Cards","previous_headings":"","what":"Flexbox","title":"Cards","text":"card() card_body() default fillable = TRUE (, CSS flexbox containers), works wonders facilitating filling outputs, also leads surprising behavior inline tags (e.g., actionButton(), span(), strings, etc). Specifically, inline tag placed new line, “normal” layout flow (fillable = FALSE), inline tags render inline. said, sometimes working flexbox layout quite useful, even working inline tags. leverage flexbox’s gap property control spacing plot, (full-width) button, paragraph. Note , using markdown() paragraph, wraps results

tag, means contents paragraph longer subject flexbox layout. wanted, something similar render actionButton() inline wrapping div(). simple hyperlink. addition gap, flexbox really nice ways handling otherwise difficult spacing alignment issues. , thanks Bootstrap’s flex utility classes, can easily opt-customize defaults.","code":"card( card_body( fillable = TRUE, \"Here's some\", tags$i(\"inline\"), \"text\", actionButton(\"btn1\", \"A button\") ), card_body( fillable = FALSE, \"Here's some\", tags$i(\"inline\"), \"text\", actionButton(\"btn2\", \"A button\") ) ) card( height = 325, full_screen = TRUE, card_header(\"A plot with an action links\"), card_body( class = \"gap-2 container\", plotly_widget, actionButton( \"go_btn\", \"Action button\", class = \"btn-primary rounded-0\" ), markdown(\"Here's a _simple_ [hyperlink](https://www.google.com/).\") ) ) card( height = 300, full_screen = TRUE, card_header( class = \"d-flex justify-content-between\", \"Centered plot\", checkboxInput(\"check\", \" Check me\", TRUE) ), card_body( class = \"align-items-center\", plotOutput(\"id\", width = \"75%\") ) )"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"shiny","dir":"Articles > Cards","previous_headings":"","what":"Shiny","title":"Cards","text":"Since article statically rendered, examples use statically rendered content/widgets, card() functionality works dynamically rendered content via Shiny (e.g., plotOutput(), plotlyOutput(), etc). additional benefit comes using shiny ability use getCurrentOutputInfo() render new/different content output container becomes large enough, particularly useful card(full_screen = T, ...). example, may want additional captions/labels plot large, additional controls table, etc (see value boxes article clever use ).","code":"# UI logic ui <- page_fluid( card( max_height = 200, full_screen = TRUE, card_header(\"A dynamically rendered plot\"), plotOutput(\"plot_id\") ) ) # Server logic server <- function(input, output, session) { output$plot_id <- renderPlot({ info <- getCurrentOutputInfo() if (info$height() > 600) { # code for \"large\" plot } else { # code for \"small\" plot } }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/cards/index.html","id":"appendix","dir":"Articles > Cards","previous_headings":"","what":"Appendix","title":"Cards","text":"following CSS used give plotOutput() background color; ’s necessary documentation page actually hooked Shiny app, can’t show real plot.","code":".shiny-plot-output { background-color: #216B7288; height: 400px; width: 100%; }"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"uniform-width-and-height","dir":"Articles > Column-layout","previous_headings":"","what":"Uniform width and height","title":"Column-based layout","text":"displaying multiple cards (value boxes, etc) , ’s often visually appealing displayed grid-like layout card height width. layout_column_wrap() optimizes design principle, demands width column (number columns). event cards columns available, cards wrapped new row (default, rows height, can easily vary row height).","code":""},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"fixed-number-of-columns","dir":"Articles > Column-layout","previous_headings":"Uniform width and height","what":"Fixed number of columns","title":"Column-based layout","text":"fixed number columns, provide width = 1/n, n number columns.1 animation (except mobile devices) shows, width layout_column_wrap() container changes, card grows shrinks maintain 1/2 width. Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus! One potential issue fixed number columns , medium sized screens, card width may become small. happens problem, specifying “responsive” number columns may preferable.","code":"layout_column_wrap( width = 1/2, height = 300, card1, card2, card3 ) |> anim_width(\"100%\", \"67%\")"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"responsive-number-of-columns","dir":"Articles > Column-layout","previous_headings":"Uniform width and height","what":"Responsive number of columns","title":"Column-based layout","text":"responsive number columns (.e., number columns depends window size), provide width valid CSS unit, like 200 pixels. case (three cards), 3rd card gets wrapped onto new line viewport less 600 pixels, wider screens, cards equally distribute free space. Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = \"200px\", height = 300, card1, card2, card3 ) |> anim_width(\"100%\", \"67%\")"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"fixed-column-width","dir":"Articles > Column-layout","previous_headings":"Uniform width and height","what":"Fixed column width","title":"Column-based layout","text":"keep width column fixed (don’t allow cards grow take free space), set fixed_width = TRUE. Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = \"200px\", height = 300, fixed_width = TRUE, card1, card2, card3 ) |> anim_width(\"100%\", \"67%\")"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"varying-heights","dir":"Articles > Column-layout","previous_headings":"","what":"Varying heights","title":"Column-based layout","text":"default, layout_column_wrap() wraps columns onto new row, rows given equal height.","code":""},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"by-row","dir":"Articles > Column-layout","previous_headings":"Varying heights","what":"By row","title":"Column-based layout","text":"allow height row different, set heights_equal = \"row\": Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = 1/2, heights_equal = \"row\", card1, card3, card2 ) |> anim_height(300, 450)"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"by-cell","dir":"Articles > Column-layout","previous_headings":"Varying heights","what":"By cell","title":"Column-based layout","text":"Since card fill item default (.e., fill = TRUE), card grows/shrinks fill available vertical space particular row. can prevented setting fill = FALSE particular card. Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = \"200px\", card1, card3, card(fill = FALSE, card_header(\"Nothing much here\"), \"This is it.\" ) ) |> anim_height(300, 450)"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"varying-widths","dir":"Articles > Column-layout","previous_headings":"","what":"Varying widths","title":"Column-based layout","text":"Set width NULL provide custom grid-template-columns property (possibly CSS grid properties) accomplish complex layouts, like varying column widths. particular layout gives 1st 3rd card twice much space 2nd: Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = NULL, height = 300, fill = FALSE, style = css(grid_template_columns = \"2fr 1fr 2fr\"), card1, card2, card3 ) |> anim_height(300, 450)"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"nested-layouts","dir":"Articles > Column-layout","previous_headings":"","what":"Nested layouts","title":"Column-based layout","text":"complex layouts can achieved leveraging fact layout_column_wrap() can appear within another layout_column_wrap()s. example Elit arcu morbi pulvinar proin lacus eget ullamcorper himenaeos suspendisse scelerisque. Ornare , vivamus accumsan ultricies, feugiat diam neque. Nascetur et orci massa conubia dis semper non. Proin augue sodales arcu donec integer massa sagittis commodo. Erat senectus scelerisque varius duis auctor condimentum. Amet dis quam hendrerit nunc suspendisse convallis justo volutpat mus facilisi montes pharetra! Enim suspendisse varius dictumst ante venenatis, commodo molestie mus pharetra vulputate. Tempus nisi sed vulputate scelerisque risus nullam sociosqu felis. Magna condimentum lacinia, sem laoreet faucibus penatibus! Platea nec duis euismod gravida fusce. Elit malesuada primis metus cum porttitor cras praesent volutpat est. Dis sed mus tincidunt, sapien, eget magna nulla sapien dignissim? ullamcorper purus erat, mi egestas senectus hendrerit ac fermentum. Ridiculus turpis elementum sociosqu ad fringilla nulla dis fermentum netus! Na netus!","code":"layout_column_wrap( width = 1/2, height = 300, card1, layout_column_wrap( width = 1, heights_equal = \"row\", card2, card3 ) )"},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"other-grid-based-layouts","dir":"Articles > Column-layout","previous_headings":"","what":"Other grid-based layouts","title":"Column-based layout","text":"layout_column_wrap() provides simplified interface CSS grid won’t accommodate everything can . case, recommend using {gridlayout} /Shiny UI editor produce layout.","code":""},{"path":"https://rstudio.github.io/bslib/articles/column-layout/index.html","id":"appendix","dir":"Articles > Column-layout","previous_headings":"","what":"Appendix","title":"Column-based layout","text":"spirit reproducibility, section discloses custom CSS R code used examples . following CSS used give plotOutput() background color; ’s necessary documentation page actually hooked Shiny app, can’t show real plot. R functions add animation-related CSS class styles whatever tags give . CSS animation rules power anim_width anim_height R functions.","code":".shiny-plot-output { background-color: #216B7288; height: 400px; width: 100%; } library(htmltools) anim_width <- function(x, width1, width2) { x |> tagAppendAttributes( class = \"animate-width\", style = css( `--width1` = validateCssUnit(width1), `--width2` = validateCssUnit(width2), ), ) } anim_height <- function(x, height1, height2) { # Wrap in a div fixed at the height of height2, so the rest of # the content on the page doesn't shift up and down div(style = css(height = validateCssUnit(height2)), x |> tagAppendAttributes( class = \"animate-height\", style = css( `--height1` = validateCssUnit(height1), `--height2` = validateCssUnit(height2), ), ) ) } @keyframes changewidth { from { width: var(--width1); } 25% { width: var(--width1); } 50% { width: var(--width2); } 75% { width: var(--width2); } to { width: var(--width1); } } .animate-width { animation-duration: 6s; animation-name: changewidth; animation-iteration-count: infinite; border-right: 2px solid #DDD; padding-right: 1rem; padding-bottom: 3rem; } @keyframes changeheight { from { height: var(--height1); } 25% { height: var(--height1); } 50% { height: var(--height2); } 75% { height: var(--height2); } to { height: var(--height1); } } .animate-height { height: 600px; animation-duration: var(--anim-duration, 6s); animation-name: changeheight; animation-iteration-count: infinite; padding-bottom: 3rem; }"},{"path":"https://rstudio.github.io/bslib/articles/custom-components/index.html","id":"a-basic-themeable-component","dir":"Articles > Custom-components","previous_headings":"","what":"A basic themeable component","title":"Custom components","text":"going full-blown dynamically themeable custom component, let’s start relatively straight-forward example implementing custom person() component. Say following R function generate HTML classes ’ll write custom Sass/CSS styles : ’s custom Sass style classes. Since Sass rules listen Bootstrap Sass variables like $gray-600, person() styles works great different bs_theme() input: save Sass rules file named person.scss, can bs_add_rules() bs_theme() use themeable person() component like :","code":"person <- function(name, title, company) { div( class = \"person\", h3(class = \"name\", name), div(class = \"title\", title), div(class = \"company\", company) ) } .person { display: inline-block; padding: $spacer; border: $border-width solid $border-color; @include border-radius; @include box-shadow; outline: 0; width: 300px; .title { font-weight: bold; } .title, .company { color: $gray-600; } margin: $grid-gutter-width; margin-right: 0; // On mobile, span entire width @include media-breakpoint-down(sm) { display: block; width: auto; margin-right: $grid-gutter-width; } } .person:last-of-type { margin-right: $grid-gutter-width; } ui <- fluidPage( theme = bs_theme(bg = \"#002B36\", fg = \"#EEE8D5\") %>% bs_add_rules(sass::sass_file(\"person.scss\")), person(\"Andrew Carnegie\", \"Owner\", \"Carnegie Steel Company\"), person(\"John D. Rockefeller\", \"Chairman\", \"Standard Oil\") ) shinyApp(ui, function(input, output) {})"},{"path":"https://rstudio.github.io/bslib/articles/custom-components/index.html","id":"dynamically-themeable-component","dir":"Articles > Custom-components","previous_headings":"","what":"Dynamically themeable component","title":"Custom components","text":"make custom person() component dynamically themeable (.e., make work session$setCurrentTheme()), need R function generates htmltools::htmlDependency() given theme. required, suppose function, person_dependency, lives R package called {mypkg} includes person.scss (pre-compiled person.css) file inst/ directory. following: Note theme bs_theme() object, person.scss compiled Bootstrap Sass variables mixins included via bs_dependency() (returns compiled CSS htmlDependency()). Otherwise, theme bs_theme() object, person() used context bslib relevant, pre-compiled CSS file returned instead. Pre-complied CSS isn’t necessarily requirement, ’s good idea increasing performance reducing software dependencies end users.","code":"name <- \"person\" version <- \"1.0.0\" person_dependency <- function(theme) { if (is_bs_theme(theme)) { scss <- system.file(package = \"mypkg\", \"person.scss\") bs_dependency( input = sass::sass_file(scss), theme = theme, name = name, version = version ) } else { htmlDependency( name = name, version = version, stylesheet = \"person.css\", package = \"mypkg\", all_files = FALSE ) } } #' @export person <- function(name, title, company) { div( class = \"person\", h3(class = \"name\", name), div(class = \"title\", title), div(class = \"company\", company), bs_dependency_defer(person_dependency) ) }"},{"path":"https://rstudio.github.io/bslib/articles/custom-components/index.html","id":"html-widgets","dir":"Articles > Custom-components","previous_headings":"","what":"HTML widgets","title":"Custom components","text":"htmlwidgets can themed via CSS, recommend supplying bs_dependency_defer() dependencies argument createWidget() (similar person() component last section), make widget dynamically themeable. widgets can themed via CSS, best option may query active theme inside preRenderHook() via bs_current_theme(), translate relevant information widget’s instance data, example:","code":"my_widget <- function(...) { createWidget( name = \"mywidget\", ..., preRenderHook = my_widget_hook ) } my_widget_hook <- function(instance) { theme <- bslib::bs_current_theme() if (!bslib::is_bs_theme(theme)) { return(instance) } instance$x$theme <- modifyList( instance$x$theme, as.list( bslib::bs_get_variables(theme, c(\"bg\", \"fg\")) ) ) instance }"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"hello-dashboards","dir":"Articles > Dashboards","previous_headings":"","what":"Hello dashboards","title":"Dashboards","text":"Quickly create dashboard providing title, sidebar, main area contents page_sidebar(). sidebar main content areas can hold arbitrary collection UI elements, ’s good practice keep inputs sidebar outputs main content area. Also, consider wrapping outputs card() sidebar contents sidebar() object add title /customize styling, positioning, etc. Let’s start basic yet interesting example customizable histogram numeric variables palmerpenguins dataset. Throughout rest article, ’ll cover layout multiple outputs, add multiple pages, . , ’ll useful reusable outputs inputs. , let’s create list cards, plotOutput() container numeric variable interest, plus color_by input control color histograms species, island, sex. Now, quick example, let’s pass color_by directly sidebar cards main content area. default, card placed new row, cards allowed grow/shrink fit browser window (browser window wide enough). next section, ’ll cover customize layout.","code":"library(shiny) library(bslib) ui <- page_sidebar( title = \"My dashboard\", sidebar = \"Sidebar\", \"Main content area\" ) shinyApp(ui, function(input, output) {}) library(ggplot2) data(penguins, package = \"palmerpenguins\") ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = sidebar( title = \"Histogram controls\", varSelectInput( \"var\", \"Select variable\", dplyr::select_if(penguins, is.numeric) ), numericInput(\"bins\", \"Number of bins\", 30) ), card( card_header(\"Histogram\"), plotOutput(\"p\") ) ) server <- function(input, output) { output$p <- renderPlot({ ggplot(penguins) + geom_histogram(aes(!!input$var), bins = input$bins) + theme_bw(base_size = 20) }) } shinyApp(ui, server) cards <- list( card( full_screen = TRUE, card_header(\"Bill Length\"), plotOutput(\"bill_length\") ), card( full_screen = TRUE, card_header(\"Bill depth\"), plotOutput(\"bill_depth\") ), card( full_screen = TRUE, card_header(\"Body Mass\"), plotOutput(\"body_mass\") ) ) color_by <- varSelectInput( \"color_by\", \"Color by\", penguins[c(\"species\", \"island\", \"sex\")], selected = \"species\" ) ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, !!!cards ) server <- function(input, output) { gg_plot <- reactive({ ggplot(penguins) + geom_density(aes(fill = !!input$color_by), alpha = 0.2) + theme_bw(base_size = 16) + theme(axis.title = element_blank()) }) output$bill_length <- renderPlot(gg_plot() + aes(bill_length_mm)) output$bill_depth <- renderPlot(gg_plot() + aes(bill_depth_mm)) output$body_mass <- renderPlot(gg_plot() + aes(body_mass_g)) } shinyApp(ui, server)"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"multi-column","dir":"Articles > Dashboards","previous_headings":"Layouts","what":"Multi-column","title":"Dashboards","text":"Create multi-column layouts layout_columns(). col_widths specified, divides space evenly among UI elements row. vector column widths may also supplied allocate given number columns (12) element. , elements go beyond 12 column mark, get wrapped onto new row. default, row heights equal, can customized row_heights argument (numeric values interpreted fractional units, fixed length units also supported). Negative col_widths may also provided easily create negative/empty space: Although don’t show , layout_columns() also supports different col_widths row_heights different breakpoints(). useful creating responsive layouts adapt different screen sizes. learn , visit layout_columns().","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, layout_columns(cards[[1]], cards[[2]]), cards[[3]] ) shinyApp(ui, server) ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, layout_columns( col_widths = c(4, 8, 12), row_heights = c(1, 2), cards[[1]], cards[[2]], cards[[3]] ) ) shinyApp(ui, server) ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, layout_columns( col_widths = c(4, 8, -2, 8, -2), cards[[1]], cards[[2]], cards[[3]] ) ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"multi-page","dir":"Articles > Dashboards","previous_headings":"Layouts","what":"Multi-page","title":"Dashboards","text":"add multiple pages, change page_sidebar() page_navbar() use nav_panel() supply title content page. can also take advantage bslib’s nav_spacer() nav_item() control alignment UI elements navbar (e.g., external hyperlink). wary page_navbar()’s sidebar argument puts sidebar every page, may may desirable. sidebar article, ’ll learn strategies keeping sidebar’s contents close elements affect. Specifically, article covers : (1) hide/show sidebar contents particular pages, (2) put particular sidebar() given page, even (3) put sidebar layouts inside card().","code":"ui <- page_navbar( title = \"Penguins dashboard\", sidebar = color_by, nav_spacer(), nav_panel(\"Bill Length\", cards[[1]]), nav_panel(\"Bill Depth\", cards[[2]]), nav_panel(\"Body Mass\", cards[[3]]), nav_item(tags$a(\"Posit\", href = \"https://posit.co\")) ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"multi-panel","dir":"Articles > Dashboards","previous_headings":"Layouts","what":"Multi-panel","title":"Dashboards","text":"Multiple nav_panel()s don’t necessarily need go directly page_navbar(). can also consumed navset_*() component, including navset_card_underline(). See learn multi-panel layout options.","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, navset_card_underline( title = \"Histograms by species\", nav_panel(\"Bill Length\", plotOutput(\"bill_length\")), nav_panel(\"Bill Depth\", plotOutput(\"bill_depth\")), nav_panel(\"Body Mass\", plotOutput(\"body_mass\")) ) ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"scrolling-vs-filling","dir":"Articles > Dashboards","previous_headings":"Layouts","what":"Scrolling vs filling","title":"Dashboards","text":"page_sidebar() page_navbar() default filling layout, meaning outputs like plotOutput(), htmlwidgets, etc. encouraged grow/shrink fit browser window. result, contents large intrinsic minimum height (e.g., long textual description), filling layout may cause cards/outputs grow/shrink beyond desirable. combat , consider setting height card()s shouldn’t grow/shrink min_height/max_height card()s shouldn’t shrink/grow beyond certain point. Filling layout may desirable lot outputs display single page. case, consider setting fillable = FALSE prevent growing/shrinking altogether. page layout fillable, outputs fall back intrinsic height, usually 400px. Users able scroll page outputs take vertical space height window. Like page_sidebar(), page_navbar() also fillable argument also defaults TRUE, makes every page (.e., nav_panel()) fillable. make just subset pages fillable, pass vector page names fillable (e.g., fillable = c(\"Bill Length\", \"Bill Depth\")). make pages non-fillable, set fillable = FALSE.","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, card(min_height = 200, plotOutput(\"bill_length\")), card(height = 200, lorem::ipsum(15)) ) shinyApp(ui, server) ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, fillable = FALSE, !!!cards ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"mobile-layout","dir":"Articles > Dashboards","previous_headings":"Layouts","what":"Mobile layout","title":"Dashboards","text":"default, filling layout enabled mobile devices, meaning fillable effectively FALSE case. enable filling layout mobile devices, set fillable_mobile = TRUE. case, ’s good practice set min_height card()s prevent growing/shrinking beyond desirable. Also, sidebars collapsed default mobile devices, can opened via sidebar()’s open argument.","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, fillable_mobile = TRUE, card(min_height = 200, plotOutput(\"bill_length\")), card(height = 200, lorem::ipsum(15)) ) shinyApp(ui, server)"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"value-boxes","dir":"Articles > Dashboards","previous_headings":"Components","what":"Value boxes","title":"Dashboards","text":"value_box() special kind card designed highlighting value along title showcase placeholder (typically bsicons icon). covered detail value boxes article, ’s palmerpenguins example:","code":"means <- colMeans( penguins[c(\"bill_length_mm\", \"bill_depth_mm\", \"body_mass_g\")], na.rm = TRUE ) ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, layout_columns( fill = FALSE, value_box( title = \"Average bill length\", value = scales::unit_format(unit = \"mm\")(means[[1]]), showcase = bsicons::bs_icon(\"align-bottom\") ), value_box( title = \"Average bill depth\", value = scales::unit_format(unit = \"mm\")(means[[2]]), showcase = bsicons::bs_icon(\"align-center\") ), value_box( title = \"Average body mass\", value = scales::unit_format(unit = \"g\", big.mark = \",\")(means[[3]]), showcase = bsicons::bs_icon(\"handbag\") ) ), layout_columns( cards[[1]], cards[[2]] ), cards[[3]] ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"accordions","dir":"Articles > Dashboards","previous_headings":"Components","what":"Accordions","title":"Dashboards","text":"accordion() uses vertical collapsing provide scalable navigation many sections content. Accordions can placed anywhere page, including sidebar, convenient grouping sections input controls. Learn accordions reference page.","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = sidebar( bg = \"white\", accordion( accordion_panel( \"Primary controls\", color_by ), accordion_panel( \"Other controls\", \"Other controls go here\" ) ) ), accordion( open = c(\"Bill Length\", \"About\"), accordion_panel( \"Bill Length\", plotOutput(\"bill_length\") ), accordion_panel( \"Bill Depth\", plotOutput(\"bill_depth\") ), accordion_panel( \"Body Mass\", plotOutput(\"body_mass\") ) ) ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"cards-with-sidebars","dir":"Articles > Dashboards","previous_headings":"Components","what":"Cards with sidebars","title":"Dashboards","text":"’ve already seen sidebar argument page_sidebar() page_navbar() yields “page-level” sidebar layout, can also made “component-level” via layout_sidebar(). especially useful keeping input controls near outputs affect complex apps. layout_sidebar() also works inside card(), making easy add headers, footers, full_screen behavior, etc. learn , visit cards sidebars articles.","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = sidebar( title = \"Global controls\", color_by ), card( full_screen = TRUE, card_header(\"Bill Length\"), layout_sidebar( sidebar = sidebar( title = \"Local controls\", position = \"right\", \"...\" ), plotOutput(\"bill_length\") ) ), cards[[2]], cards[[3]], ) shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"theming","dir":"Articles > Dashboards","previous_headings":"","what":"Theming","title":"Dashboards","text":"getting started theming article, ’ll learn general theming strategies also translate dashboards. , passing bs_theme() object theme argument page_sidebar() (page_navbar()), can add Bootswatch theme, easily use Google Fonts, customize 100s theming variables, much . Keep mind, however, bs_theme() customizes CSS styles. , want plotOutput()s match CSS, consider using thematic package translate styles ggplot2::theme() settings. , also aware “complete” ggplot2 themes (e.g., theme_bw()) work sensibly setting globally (.e., theme_set(theme_bw())).","code":"ui <- page_sidebar( title = \"Penguins dashboard\", sidebar = color_by, theme = bs_theme( bootswatch = \"darkly\", base_font = font_google(\"Inter\"), navbar_bg = \"#25443B\" ), !!!cards ) # Enable thematic thematic::thematic_shiny(font = \"auto\") # Change ggplot2's default \"gray\" theme theme_set(theme_bw(base_size = 16)) # New server logic (removes the `+ theme_bw()` part) server <- function(input, output) { gg_plot <- reactive({ ggplot(penguins) + geom_density(aes(fill = !!input$color_by), alpha = 0.2) + theme(axis.title = element_blank()) }) output$bill_length <- renderPlot(gg_plot() + aes(bill_length_mm)) output$bill_depth <- renderPlot(gg_plot() + aes(bill_depth_mm)) output$body_mass <- renderPlot(gg_plot() + aes(body_mass_g)) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/dashboards/index.html","id":"in-production","dir":"Articles > Dashboards","previous_headings":"","what":"In production","title":"Dashboards","text":"deploying dashboard production, ’s wise “hard-code” version Bootstrap used developed. reduces chance dashboard breaking bslib updates ’s Bootstrap dependency. , call version_default() get current version Bootstrap, pass value bs_theme(version = ...) (pass theme object theme argument relevant page_*() function).","code":"library(shiny) ui <- page_sidebar( theme = bs_theme(version = 5), ... ) shinyApp(ui, function(...) {})"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/examples/index.html","id":"multi-page","dir":"Articles > Examples","previous_headings":"Sidebar layouts","what":"Multi-page","title":"Examples","text":"","code":"# source(\"example_gallery/multi_page\")"},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"activating-fill","dir":"Articles > Filling","previous_headings":"In theory","what":"Activating fill","title":"Filling layouts","text":"Just like HTML container, fillable container’s default height depends height ’s children. , example, ’s single fill item defined height 400px (default Shiny outputs), fillable container’s height also 400px (plus padding, border, etc). Defining height fillable container activates immediate children’s potential fill. , example, fillable container’s height set 200px, fill child shrink 200px: multiple fill items immediate children fillable container, ’d keep shrinking (case, 100px ): Adding non-fill item (e.g., htmltools::p()-aragraph text) won’t cause particular item grow/shrink, fill items divvy remaining space (careful: non-fill item(s) larger fillable container, fill items won’t visible!). big reason card()s min_height argument (prevent fill items shrinking much). Notice resizing handle lower-right hand corner fillable container . Use change size fillable container compare behavior fill non-fill items.","code":""},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"carrying-fill","dir":"Articles > Filling","previous_headings":"In theory","what":"Carrying fill","title":"Filling layouts","text":"previous section focuses fairly simple case one parent container. However, practice, ’ll likely working multiple levels parents, quickly complicates things, especially : Fill items require immediate parent fillable container order fill. “raw” HTML tags (e.g., div(), p(), etc.) well many Shiny UI elements (e.g., wellPanel(), etc.) neither fillable fill (.e., ’ll call non-fill elements). result, common way (1) breaks non-fill element, like div(), comes fillable fill. fact, ’ll run exact behavior using uiOutput() insert dynamically rendered fill item fillable container (see section concrete example). Assuming goal fill item fit fillable container, ’s useful coerce non-fill element fill item fillable container, call fill carriers. UI element can coerced fill carrier as_fill_carrier(). concept fill carrier especially useful relevant cards. cases, card numerous children like header body, body commonly contains fill item(s) (ensure fill items). card_body() defaults fillable = TRUE (fill = TRUE). might wonder, want need fillable = FALSE fill = FALSE card_body()? One big reason fillable containers powered CSS flexbox, changes way ’s children rendered. , although changes nice “stretchy” children, downsides rendering inline elements. , ’s , ’s recommended use multiple card bodies](../cards#multiple-card_body) combining fill non-fill","code":""},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"in-practice","dir":"Articles > Filling","previous_headings":"","what":"In practice","title":"Filling layouts","text":"section puts practice learned theory fillable containers fill items.","code":""},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"setup-code","dir":"Articles > Filling","previous_headings":"In practice","what":"Setup code","title":"Filling layouts","text":"example sub-sections follow assume ’ve ran following code. ’re using plotly create list fill items, concepts extend htmlwidgets (e.g., leaflet) Shiny outputs like plotOutput().2","code":"library(plotly) plots <- list( plot_ly(diamonds) |> add_histogram(x = ~price), plot_ly(diamonds) |> add_histogram(x = ~carat), plot_ly(diamonds) |> add_histogram(x = ~cut, color = ~clarity) ) plots <- lapply(plots, function(x) { config(x, displayModeBar = FALSE) |> layout(margin = list(t = 0, b = 0, l = 0, r = 0)) })"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"filling-the-window","dir":"Articles > Filling","previous_headings":"In practice","what":"Filling the window","title":"Filling layouts","text":"Perhaps important fillable container page_fillable(), sets ’s height equal browser window. Thus, fill items appear direct children, ’ll fill window. page_fillable() also defaults fillable_mobile = FALSE, means height isn’t set equal viewport mobile. result, fill items use defined height (instead viewport size) mobile, often better behavior showing multiple outputs. Notice resizing handle lower-right hand corner example . Use change size “window” see behavior filling plots ’re worried plots becoming small, consider putting card_body() min_height (like later ). Also, don’t want card border, can card(class = \"border-0\", ...)","code":"page_fillable( h2(\"Diamond plots\"), plots[[1]], plots[[2]], plots[[3]] )"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"multiple-columns","dir":"Articles > Filling","previous_headings":"In practice","what":"Multiple columns","title":"Filling layouts","text":"Since layout_columns() fill item (default), grows/shrinks just like fill item. also defaults fillable = TRUE, case, means column gets wrapped fillable container. ’s , example, plots[[1]] plots[[1]] also grow/shrink match size layout_columns() container.","code":"page_fillable( h2(\"Diamond plots\"), layout_columns(plots[[1]], plots[[2]]), plots[[3]] )"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"value-boxes","dir":"Articles > Filling","previous_headings":"In practice","what":"Value boxes","title":"Filling layouts","text":"Since value_box() fill item (default), grows/shrinks just like fill item. especially useful keeping common baseline multi-column layout. said, multi-layout column holds value boxes probably doesn’t want default fill = TRUE behavior, since value boxes given /less space window becomes larger/smaller: learn layout_columns(), see article.","code":"boxes <- layout_columns( fill = FALSE, value_box( \"Total diamonds\", scales::comma(nrow(diamonds)), showcase = bsicons::bs_icon(\"gem\", size = NULL) ), value_box( \"Average price\", scales::dollar(mean(diamonds$price), accuracy = 1), showcase = bsicons::bs_icon(\"coin\", size = NULL), theme_color = \"success\" ), value_box( \"Average carat\", scales::number(mean(diamonds$carat), accuracy = .1), showcase = bsicons::bs_icon(\"search\", size = NULL), theme_color = \"dark\" ) ) page_fillable( boxes, layout_columns(plots[[1]], plots[[2]]), plots[[3]] )"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"full-screen-cards","dir":"Articles > Filling","previous_headings":"In practice","what":"Full-screen cards","title":"Filling layouts","text":"alluded Carrying fill section, card() card_body() fill carriers (, fillable fill, default). Therefore, wrapping plot card, card grows/shrinks (since fill), also retain plot’s ability grow/shrink (since fillable). Note , changed page_fillable() page_fluid() (page_fixed()), plot render ’s default height (400px) since longer fillable specified height. said, even case, expand card full-screen, plot still grows fit full screen card (since card() fillable container specified height, card_body() fill carrier, plot fill item).","code":"plot_card <- function(header, ...) { card( full_screen = TRUE, card_header(header, class = \"bg-dark\"), card_body(..., min_height = 150) ) } page_fillable( layout_columns( plot_card(\"Diamond price\", plots[[1]]), plot_card(\"Diamond carat\", plots[[2]]) ), plot_card(\"Diamond cut by clarity\", plots[[3]]) )"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"sidebar-layouts","dir":"Articles > Filling","previous_headings":"In practice","what":"Sidebar layouts","title":"Filling layouts","text":"Similar ’ve seen outputs card()s, layout_sidebar() also fill item (default), placing direct child page_fillable() makes fit window. Also, main content’s container defaults fillable container, behavior undesirable, set fillable = FALSE layout_sidebar(). learn layout_sidebar(), see article.","code":"page_fillable( padding = 0, layout_sidebar( border = FALSE, fillable = FALSE, sidebar = sidebar( title = \"Diamond plots\", \"Input controls here...\" ), layout_columns( plot_card(\"Diamond price\", plots[[1]]), plot_card(\"Diamond carat\", plots[[2]]) ), plot_card(\"Diamond cut by clarity\", plots[[3]]) ) )"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"ui-output","dir":"Articles > Filling","previous_headings":"Other advice","what":"Dynamic UI","title":"Filling layouts","text":"alluded Carrying fill section, uiOutput() puts additional UI element around renderUI()’s return value. , order carry potential fill fill item (e.g., plot_ly()), mark uiOutput() fill carrier.","code":"library(plotly) ui <- page_fluid( card( full_screen = TRUE, max_height = 300, card_header(\"My plot\"), uiOutput(\"plot\", as_fill_carrier()) ) ) server <- function(input, output) { output$plot <- renderUI({ plot_ly(diamonds, x = ~price) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"dt-tables","dir":"Articles > Filling","previous_headings":"Other advice","what":"DT tables","title":"Filling layouts","text":"DT’s datatable() ’s unique interface filling container. Specifically, make sure set datatable(fillContainer = TRUE) order table grow/shrink ’d expect .","code":"library(DT) ui <- page_fluid( card( full_screen = TRUE, max_height = 350, card_header(\"My table\"), dataTableOutput(\"dt\") ) ) server <- function(input, output) { output$dt <- renderDataTable({ datatable( mtcars, fillContainer = TRUE ) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"other-htmlwidgets","dir":"Articles > Filling","previous_headings":"Other advice","what":"Other htmlwidgets","title":"Filling layouts","text":"Broadly speaking, htmlwidgets like plotly leaflet fill items default, might always case. Also, sometimes, might want particular widget treated fill item. Shiny case, able control fill argument output container (e.g., plotlyOutput(\"id\", fill = FALSE)), fill argument available can also use bslib’s as_fill() API opt /. non-Shiny case, can control fill widget’s htmlwidgets::sizingPolicy() (e.g., leaflet()$sizingPolicy$fill).","code":""},{"path":"https://rstudio.github.io/bslib/articles/filling/index.html","id":"avoid-fluidrowcolumn","dir":"Articles > Filling","previous_headings":"Other advice","what":"Avoid fluidRow()/column()","title":"Filling layouts","text":"Modern versions Bootstrap Grid currently use CSS Flexbox way filling layout mostly incompatible fluidRow()/column(). Instead, use layout_columns() implement multi-column filling layouts","code":""},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"overview","dir":"Articles > Sidebars","previous_headings":"","what":"Overview","title":"Sidebars","text":"three main types sidebar layouts: floating, filling, multi-page/tab.","code":""},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"floating-layout","dir":"Articles > Sidebars","previous_headings":"Overview","what":"Floating layout","title":"Sidebars","text":"Use layout_sidebar() create sidebar layout can go anywhere page. layout approach great visually grouping together semantically related inputs output(s). can also paired card() leverage full_screen expansion, add header/footer, .","code":"layout_sidebar( sidebar = sidebar(\"Sidebar\"), \"Main contents\" ) card( full_screen = TRUE, card_header(\"Title\"), layout_sidebar( sidebar = sidebar(\"Sidebar\"), \"Main contents\" ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"filling-layout","dir":"Articles > Sidebars","previous_headings":"Overview","what":"Filling layout","title":"Sidebars","text":"Getting Started dashboards article, saw page_sidebar() yields sidebar layout fills page. Underneath hood, page_sidebar() just simple wrapper around page_fillable() layout_sidebar(). Understanding unlocks potential (number ) sidebar layouts within filling layout.","code":"page_fillable( layout_sidebar( sidebar = sidebar(\"Sidebar area\"), \"Main area\" ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"multi-page-layout","dir":"Articles > Sidebars","previous_headings":"Overview","what":"Multi-page layout","title":"Sidebars","text":"multi-page (multi-tab) layout, use sidebar argument page_navbar() (navset_card_tab()). case, get sidebar fills page, sidebar remains visible every page/tab. Later , ’ll explore put multiple, varied, layouts different pages; also keep mind, actually desirable sidebar every page, often helps hide/show sidebar contents certain pages via conditionalPanel(). Page 1 Page 2 Tab 1 Tab 2","code":"page_navbar( sidebar = sidebar(\"Sidebar\"), nav_panel(\"Page 1\", \"Page 1 content\"), nav_panel(\"Page 2\", \"Page 2 content\") ) navset_card_tab( sidebar = sidebar(\"Sidebar\"), nav_panel(\"Tab 1\", \"Tab 1 content\"), nav_panel(\"Tab 2\", \"Tab 2 content\") )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"a-real-example","dir":"Articles > Sidebars","previous_headings":"","what":"A real example","title":"Sidebars","text":"Now ’ve enumerated bslib’s sidebar layout options, lets use real data1 create real inputs outputs, explore additional features sidebar layouts. Shiny app2, ’ll probably want use inputs like selectInput(), sliderInput(), etc., sidebar, ’re reading article static website, ’ll use crosstalk input widgets.","code":""},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"setup-code","dir":"Articles > Sidebars","previous_headings":"A real example","what":"Setup code","title":"Sidebars","text":"Throughout section, ’ll make repeated use following widgets plotly leaflet. details widgets work alongside crosstalk create linked views isn’t important understanding sidebar layouts, keep mind give us list filters plots (views diamonds dataset), well map_filter map_quakes (views quakes dataset).","code":"library(bslib) library(shiny) library(crosstalk) library(plotly) library(leaflet) # Creates the \"filter link\" between the controls and plots dat <- SharedData$new(dplyr::sample_n(diamonds, 1000)) # Sidebar elements (e.g., filter controls) filters <- list( filter_select(\"cut\", \"Cut\", dat, ~cut), filter_select(\"color\", \"Color\", dat, ~color), filter_select(\"clarity\", \"Clarity\", dat, ~clarity) ) # plotly visuals plots <- list( plot_ly(dat) |> add_histogram(x = ~price), plot_ly(dat) |> add_histogram(x = ~carat), plot_ly(dat) |> add_histogram(x = ~cut, color = ~clarity) ) plots <- lapply(plots, \\(x) config(x, displayModeBar = FALSE)) # map filter and visual quake_dat <- SharedData$new(quakes) map_filter <- filter_slider(\"mag\", \"Magnitude\", quake_dat, ~mag) map_quakes <- leaflet(quake_dat) |> addTiles() |> addCircleMarkers()"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"hello-sidebar","dir":"Articles > Sidebars","previous_headings":"A real example","what":"Hello layout_sidebar()","title":"Sidebars","text":"layout_sidebar() behaves lot like card. example, used inside page_fillable() ’ll also grow/shrink fit page (default fill = TRUE). also default fillable = TRUE allows fill items main content area (e.g., plots[[1]]) also grow/shrink fit container. also behave lot like card_body() can put directly inside card() (useful adding header/footer, full_screen = TRUE, etc.). example resizable. Try using handle lower-right corner change “window” size notice plot grow/shrink fit window (fillable = TRUE). learn fillable containers fill items work, see article filling layouts.","code":"sidebar_diamonds <- layout_sidebar( sidebar = filters[[1]], plots[[1]] ) sidebar_quakes <- layout_sidebar( sidebar = map_filter, map_quakes ) page_fillable( sidebar_diamonds, card( card_header(\"Earthquakes\"), sidebar_quakes ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"multi-page-example","dir":"Articles > Sidebars","previous_headings":"A real example","what":"Multi-page varied layout","title":"Sidebars","text":"covered Getting Started dashboards, sidebar argument page_navbar() puts sidebar page fills window. However, sometimes ’s better particular pages sidebar layout. acheive , just provide layout_sidebar() “root” element fillable page. example, let’s put “page-level” sidebar page dedicated Earthquakes, put multiple sidebar layouts page dedicated Diamonds (one plot). case, ’ve allowed Earthquakes page fillable since multiple plots Diamonds page (also keep Diamonds page fillable put min_height cards prevent shrinking much). Just like page_navbar(), navset_card_tab() also sidebar argument puts sidebar tab. approach (.e., putting layout_sidebar() within nav_panel()) can used put different sidebars different tabs.","code":"page_navbar( title = \"Sidebar demo\", fillable = \"Earthquakes\", nav_panel(\"Earthquakes\", sidebar_quakes), nav_panel( \"Diamonds\", Map( function(filter, plot) { card( full_screen = TRUE, layout_sidebar(sidebar = filter, plot) ) }, filters, plots ) ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"restricting-growth","dir":"Articles > Sidebars","previous_headings":"A real example","what":"Restricting growth","title":"Sidebars","text":"Just like cards, filling layout isn’t enforcing size layout_sidebar(), allow ’s contents decide big . Thus, large amount sidebar/main contents, consider specifying height max_height via card() (well full_screen = TRUE reduce need scrolling).","code":"page_fixed( h1(\"Sidebar demo\", class = \"lead mt-3\"), card( height = 400, full_screen = TRUE, layout_sidebar(sidebar = filters, plots) ), card( full_screen = TRUE, layout_sidebar(sidebar = map_filter, map_quakes) ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"shiny","dir":"Articles > Sidebars","previous_headings":"","what":"Shiny","title":"Sidebars","text":"Although sidebars work just fine outside Shiny, using Shiny provides additional useful features.","code":""},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"conditional-contents","dir":"Articles > Sidebars","previous_headings":"Shiny","what":"Conditional contents","title":"Sidebars","text":"Sometimes multiple page/tab setting, ’s useful sidebar every page/tab, changes ’s contents based page/tab active.3 Thanks conditionalPanel(), can done fairly easily Shiny app page_navbar() (navset_card_tab()/navset_tab_pill()). trick provide id page_navbar() reference id conditionalPanel():","code":"shinyApp( page_navbar( title = \"Conditional sidebar\", id = \"nav\", sidebar = sidebar( conditionalPanel( \"input.nav === 'Page 1'\", \"Page 1 sidebar\" ), conditionalPanel( \"input.nav === 'Page 2'\", \"Page 2 sidebar\" ) ), nav_panel(\"Page 1\", \"Page 1 contents\"), nav_panel(\"Page 2\", \"Page 2 contents\") ), server = function(...) { # no server logic required } )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"reactive-updates","dir":"Articles > Sidebars","previous_headings":"Shiny","what":"Reactive updates","title":"Sidebars","text":"programmatically update (/re-actively read) open/closed state sidebar(), provide id reference id server code. reference use id programmatically open sidebar 2nd page.","code":"library(shiny) ui <- page_navbar( title = \"Sidebar updates\", id = \"nav\", sidebar = sidebar( id = \"sidebar\", open = FALSE, \"Sidebar\" ), nav_panel(\"Page 1\", \"Sidebar closed. Go to Page 2 to open.\"), nav_panel(\"Page 2\", \"Sidebar open. Go to Page 1 to close.\") ) server <- function(input, output) { observe({ sidebar_toggle( id = \"sidebar\", open = input$nav == \"Page 2\" ) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"accordions","dir":"Articles > Sidebars","previous_headings":"","what":"Accordions","title":"Sidebars","text":"sidebars special treatment accordions. accordion() appears directly within sidebar() (immediate child sidebar), accordion panels render flush sidebar, providing convenient way group multiple related input controls collapsible section. example depends objects setup code section.","code":"accordion_filters <- accordion( accordion_panel( \"Dropdowns\", icon = bsicons::bs_icon(\"menu-app\"), !!!filters ), accordion_panel( \"Numerical\", icon = bsicons::bs_icon(\"sliders\"), filter_slider(\"depth\", \"Depth\", dat, ~depth), filter_slider(\"table\", \"Table\", dat, ~table) ) ) card( card_header(\"Groups of diamond filters\"), layout_sidebar( sidebar = accordion_filters, plots[[1]] ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"nested-sidebars","dir":"Articles > Sidebars","previous_headings":"","what":"Nested sidebars","title":"Sidebars","text":"’s possible nest sidebar layouts, means can effectively number left /right sidebars given layout. , ’ll want main content area every layout_sidebar() contains layout_sidebar() fillable zero padding (class = \"p-0\").","code":"page_fillable( h1(\"Left and right sidebar\", class = \"px-3 my-3\"), layout_sidebar( sidebar = sidebar(\"Left sidebar\"), layout_sidebar( sidebar = sidebar(\"Right sidebar\", position = \"right\", open = FALSE), \"Main contents\", border = FALSE ), border_radius = FALSE, fillable = TRUE, class = \"p-0\" ) )"},{"path":"https://rstudio.github.io/bslib/articles/sidebars/index.html","id":"styling-and-customization","dir":"Articles > Sidebars","previous_headings":"","what":"Styling and customization","title":"Sidebars","text":"sections ’ve focused primarily variety interface layouts sidebars can used. Along way, ’ve touched named arguments sidebar() layout_sidebar() helpful customizing styling behavior sidebar main content areas. However, handful arguments customize look feel sidebar layout. sidebar() layout_sidebar() allow specific background color (via bg), applied sidebar area main content area respectively. bg provided, bslib automatically provides high-contrast foreground color ensure readability (fg color may also provided). functions also include class argument works well Bootstrap utility classes style argument inline styles. aware layout_sidebar(), bg, class style attributes applied main content area’s container overall layout container. add additional classes layout container, use htmltools::tagAppendAttributes(). Also note layout_sidebar() derives ’s default style Bootstrap CSS variables (e.g., --bs-card-border-color), enables theming component-level (theming via bs_theme() works page-level). following example combines concepts create sidebar dark background. Utility classes used make sidebar text monospace bold, used tagAppendAttributes() tweak border color sidebar layout match sidebar background.","code":"library(htmltools) library(leaflet) squake <- SharedData$new(quakes) container <- layout_sidebar( class = \"p-0\", sidebar = sidebar( title = \"Earthquakes off Fiji\", bg = \"#1E1E1E\", width = \"35%\", class = \"fw-bold font-monospace\", filter_slider(\"mag\", \"Magnitude\", squake, ~mag) ), leaflet(squake) |> addTiles() |> addCircleMarkers() ) tagAppendAttributes(container, style = css(\"--bs-card-border-color\" = \"#1E1E1E\"))"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"real-time","dir":"Articles > Theming","previous_headings":"","what":"Real-time theming","title":"Theming","text":"get started theming, consider overlaying real-time theming widget Shiny app (runtime: shiny R Markdown document). great way experiment different Bootswatch themes, main colors, fonts, . add widget, call bs_themer() Shiny runtime content (.e., within server function) also make sure app/document uses {bslib} ’s Bootstrap dependency. don’t particular app document mind, can also use bs_theme_preview() create demo Shiny app theming widget already overlayed (see hosted version): running theming widget locally, ’ll see output like R console (R Markdown, ’ll see YAML output instead R code) reproduce theming changes:","code":"# Shiny example ui <- page_sidebar( title = \"My app\" ) server <- function(input, output) { bs_themer() } shinyApp(ui, server) # R Markdown example --- runtime: shiny output: html_document: theme: bslib: true --- ```{r} bslib::bs_themer() ``` bs_theme_preview()"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"bootswatch","dir":"Articles > Theming","previous_headings":"","what":"Bootswatch themes","title":"Theming","text":"Bootswatch theme available bs_theme()’s bootswatch argument. may already familiar using “pre-packaged” themes via shinythemes package (via theme parameter R Markdown). older approaches provide Bootswatch 3 themes, bslib, can use newer themes like minty zephyr.","code":"# Shiny example page_sidebar( theme = bs_theme(bootswatch = \"minty\") ) # R Markdown example --- output: html_document: theme: bootswatch: minty ---"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"main-colors","dir":"Articles > Theming","previous_headings":"","what":"Main colors & fonts","title":"Theming","text":"bs_theme() also provides named arguments customizing main background color (bg), foreground color (fg), accent colors (primary, secondary, etc), fonts (base_font, heading_font, code_font, etc). ’s example using subset named arguments implement dark mode custom fonts: Among coloring options bs_theme(), bg, fg, primary far influential effect nearly every color page. fact, bg fg alone impact 100s defaults — everything text color, card()s, accordion()s, much . accent colors don’t impact nearly much, primary control color important things like hyperlinks, navset_pill() links, accent/focus colors inputs, . said, accent colors can handy customizing things like shiny::actionButton() (defaults secondary color), shiny::showNotification() , generally HTML content leverages Color Utility Classes. choosing bg fg colors, keep mind ’s generally good idea pick colors similar hue large difference luminance. bs_theme() also provides 3 named arguments main fonts: base_font, heading_font, code_font. using web safe font combinations, ’s ok provide character string (comma-separated) font families arguments (e.g., bs_theme(base_font = '\"Times New Roman\", Times, serif'). Otherwise, use one font_google(), font_link(), /font_face() helpers include relevant file(s) client’s browser may render font(s). font_link() font_face() fairly low-level interfaces CSS web font API, font_google() additional ability download cache font file(s), making internet connection needed first time particular font used. choosing fonts, keep mind ’s generally good practice put serif fonts base_font, sans-serif fonts heading_font, monospace fonts code_font. aren’t sure start, fontpair.co nice gallery Google Font pairings.","code":"# Shiny example page_sidebar( title = \"My app\", bs_theme( bg = \"#101010\", fg = \"#FFF\", primary = \"#E69F00\", secondary = \"#0072B2\", success = \"#009E73\", base_font = font_google(\"Inter\"), code_font = font_google(\"JetBrains Mono\") ), ... ) # R Markdown example --- output: html_document: theme: bg: \"#101010\" fg: \"#FFF\" primary: \"#E69F00\" secondary: \"#0072B2\" success: \"#009E73\" base_font: google: \"Prompt\" code_font: google: \"JetBrains Mono\" ---"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"theming-variables","dir":"Articles > Theming","previous_headings":"","what":"Theming variables","title":"Theming","text":"bs_theme() also provides access 100s specific theming options considering anything passed ’s ... argument new Bootstrap Sass variable defaults. allows get targetted theming; example, let’s set $progress-bar-bg Sass variable 'orange' (CSS color). addition CSS values (e.g., \"orange\"), variable can valid Sass expression, quite useful leveraging Sass’ built-module’s (e.g., mix() mixing colors) Underneath hood, bs_theme() works placing Sass variable defaults Bootstrap’s variable defaults. ’s something like bs_theme(primary = \"red\") “just works” sense provides $primary new default value, also passes value variables default $primary (e.g. $progress-bar-bg). Since bs_theme() defines variables Bootstrap, must define variables differently want reference Bootstrap’s Sass code. example, wanted $progress-bar-bg default $secondary instead $primary? Thankfully bs_add_variables() provides workaround. default, bs_add_variables() works just like bs_theme() (puts variable definitions Sass code), .= \"declarations\", can place definition Bootstrap: ’s currently easy way define variables way R Markdown (using !expr pass bs_theme() object directly theme)","code":"# Shiny example bs_theme( bg = \"#002B36\", fg = \"#EEE8D5\", \"progress-bar-bg\" = \"orange\" ) # R Markdown example --- output: html_document: theme: bg: \"#002B36\" fg: \"#EEE8D5\" progress-bar-bg: \"orange\" --- bs_theme(\"progress-bar-bg\" = \"mix(white, orange, 20%)\") #> $progress-bar-bg: mix(white, orange, 20%) !default; #> @import \"scss/_variables.scss\"; # Reduced version of the Sass code behind `bs_theme(primary = \"red\")` sass::sass(\" $primary: red !default; // First one wins $primary: blue !default; $progress-bar-bg: $primary !default; @debug $primary, $progress-bar-bg; \") #> red, red bs_theme(\"progress-bar-bg\" = \"$secondary\") |> sass::sass() #> Error: Undefined variable: \"$secondary\". bs_theme() |> bs_add_variables( \"progress-bar-bg\" = \"$secondary\", .where = \"declarations\" ) #> @import \"scss/_variables.scss\"; #> $progress-bar-bg: $secondary; output: html_document: theme: !expr bslib::bs_add_variables(bslib::bs_theme(), \"progress-bar-bg\" = \"$secondary\", .where = \"declarations\")"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"add-rules","dir":"Articles > Theming","previous_headings":"","what":"Adding rules","title":"Theming","text":"good amount theming possible customizing Bootstrap Sass variables bs_theme(), sometimes may also want add additional Sass/CSS rules. bs_add_rules() function makes easy Shiny usage generally accepts valid Sass/CSS (see sass::as_sass()). example, ’s one add local SCSS/CSS files /Sass/CSS code string (CSS file case taken nes.css) R Markdown case, ’s recommended additional CSS (Sass) rules come css parameter, may also use bslib engine. bs_add_rules(), rules can reference Bootstrap Sass variables well utilize convenient Sass mixins functions like color-contrast(), mix(), etc.","code":"bs_theme( bg = \"#e5e5e5\", fg = \"#0d0c0c\", primary = \"#dd2020\", base_font = font_google(\"Press Start 2P\"), code_font = font_google(\"Press Start 2P\"), \"font-size-base\" = \"0.75rem\", \"enable-rounded\" = FALSE ) %>% bs_add_rules( list( sass::sass_file(\"nes.min.css\"), sass::sass_file(\"custom.scss\"), \"body { background-color: $body-bg; }\" ) ) --- output: html_document: theme: bslib: true css: my-rules.scss --- ```{bslib} $custom-bg: rgba($primary, 0.3); .custom { background-color: $custom-bg; color: color-contrast(opaque($body-bg, $custom-bg)) } ``` ::: {.custom} Hello custom block with custom styles! :::"},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"utility-classes","dir":"Articles > Theming","previous_headings":"","what":"Utility Classes","title":"Theming","text":"Utility classes primarily helpful styling component (rather page) level, particularly handy things like spacing, border, colors, . See article Utility Classes useful examples specific Shiny R Markdown.","code":""},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"component-support","dir":"Articles > Theming","previous_headings":"","what":"Component support","title":"Theming","text":"list known--themeable HTML components “just work” well custom real-time themes: “core” Shiny UI (e.g., sliderInput(), selectInput(), etc.) one exception plotOutput(), case, {thematic} package can used essentially translate CSS R plot theming defaults. Just put thematic_shiny() Shiny apps thematic_rmd() R Markdown documents. rmarkdown::html_document() specific features well {flexdashboard}. un-styled HTML content (e.g., tags$input(type = \"checkbox\")). htmlwidgets like DT plotly (ggplotly() supported thematic right now) time, ’re hoping list grows package authors developers embrace bslib’s tools making themeable custom components.","code":""},{"path":"https://rstudio.github.io/bslib/articles/theming/index.html","id":"dynamic","dir":"Articles > Theming","previous_headings":"","what":"Dynamic theming","title":"Theming","text":"functionality behind real-time theming can leveraged Shiny app (runtime:shiny Rmd doc) implement custom theming widget (via session$setCurrentTheme()), like dark mode switch: See sections setCurrentTheme getCurrentTheme learn .","code":"light <- bs_theme() dark <- bs_theme(bg = \"black\", fg = \"white\", primary = \"purple\") ui <- fluidPage( theme = light, checkboxInput(\"dark_mode\", \"Dark mode\") ) server <- function(input, output, session) { observe(session$setCurrentTheme( if (isTRUE(input$dark_mode)) dark else light )) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"motivation","dir":"Articles > Tooltips-popovers","previous_headings":"","what":"Motivation","title":"Tooltips & Popovers","text":"Tooltips popovers useful means displaying (tooltips) interacting (popovers) additional information non-obtrusive way. motivating example applies components achieve useful patterns: Attaches tooltip() “tip” icon card_header(), allowing user learn data visualized. Attaches popover() “settings” icon card_header(), allowing user control parameters visualization Attaches popover() link card_footer(), facilitates display information, also allowing interaction information (e.g., hyperlink).","code":"library(shiny) library(bslib) library(palmerpenguins) library(ggplot2) ui <- page_fillable( card( card_header( \"Penguin body mass\", tooltip( bsicons::bs_icon(\"question-circle\"), \"Mass measured in grams.\", placement = \"right\" ), popover( bsicons::bs_icon(\"gear\", class = \"ms-auto\"), selectInput(\"yvar\", \"Split by\", c(\"sex\", \"species\", \"island\")), selectInput(\"color\", \"Color by\", c(\"species\", \"island\", \"sex\"), \"island\"), title = \"Plot settings\" ), class = \"d-flex align-items-center gap-1\" ), plotOutput(\"plt\"), card_footer( \"Source: Gorman KB, Williams TD, Fraser WR (2014).\", popover( a(\"Learn more\", href = \"#\"), markdown( \"Originally published in: Gorman KB, Williams TD, Fraser WR (2014) Ecological Sexual Dimorphism and Environmental Variability within a Community of Antarctic Penguins (Genus Pygoscelis). PLoS ONE 9(3): e90081. [doi:10.1371/journal.pone.0090081](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0090081)\" ) ) ) ) ) server <- function(input, output, session) { output$plt <- renderPlot({ ggplot(penguins, aes(x = body_mass_g, y = !!sym(input$yvar), fill = !!sym(input$color))) + ggridges::geom_density_ridges(scale = 0.9, alpha = 0.5) + coord_cartesian(clip = \"off\") + labs(x = NULL, y = NULL) + ggokabeito::scale_fill_okabe_ito() + theme_minimal(base_size = 20) + theme(legend.position = \"top\") }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"get-started","dir":"Articles > Tooltips-popovers","previous_headings":"","what":"Get started","title":"Tooltips & Popovers","text":"terms ’re implemented, tooltips popovers quite similar. require UI element serve “trigger” (.e., UI user must interact toggle visibility) well message show. tooltip() popover() treat 1st argument trigger, whereas unnamed arguments go message. Optionally, popover(), title may also provided. terms UX applications, tooltips popovers quite different. Tooltips toggled via focus / hover whereas popovers toggled via click. result, popovers much “persistent” (.e., harder open/close), thus used tooltips interaction may needed. put another way, use tooltips small “read-” messages, popovers user able interact message .","code":"actionButton( \"btn_tip\", \"Focus/hover here for tooltip\" ) |> tooltip(\"Tooltip message\") actionButton( \"btn_pop\", \"Click here for popover\" ) |> popover( \"Popover message\", title = \"Popover title\" )"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"icons","dir":"Articles > Tooltips-popovers","previous_headings":"Examples","what":"Icons","title":"Tooltips & Popovers","text":"general, icons probably ubiquitous trigger tooltip() (popover()). ’re small, unobtrusive, provide clear affordance ’s information available. ’d like display icon inline text, also treat text part trigger, wrap icon text span(). Alternatively, wanted just icon trigger, bring tooltip() modifier inside span() (.e., containing element text). Another way replace span() 1st example list() (tagList()), happens work since tooltip() popover() use last HTML element 1st argument trigger.","code":"tooltip( span( \"This text does trigger\", bs_icon(\"info-circle\") ), \"Tooltip message\", placement = \"bottom\" ) span( \"This text doesn't trigger\", tooltip( bs_icon(\"info-circle\"), \"Tooltip message\", placement = \"bottom\" ) )"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"input-labels","dir":"Articles > Tooltips-popovers","previous_headings":"Examples","what":"Input labels","title":"Tooltips & Popovers","text":"Input labels great place apply learned icons. ’re already common place provide information input, adding tooltip popover natural place provide additional context.","code":"textInput( \"txt\", label = tooltip( trigger = list( \"Input label\", bs_icon(\"info-circle\") ), \"Tooltip message\" ) )"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"cards","dir":"Articles > Tooltips-popovers","previous_headings":"Examples","what":"Cards","title":"Tooltips & Popovers","text":"Cards provide wealth opportunity apply learned icons. specifically, tooltips/popovers often work well inside card_header()/card_footer() since ’re already designed providing additional information output(s). next sections explore useful patterns.","code":""},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"simple-tooltip","dir":"Articles > Tooltips-popovers","previous_headings":"Examples > Cards","what":"Simple tooltip","title":"Tooltips & Popovers","text":"Often times ’s useful provide additional information card’s header, especially header contains acronyms jargon. case, tooltip() can help non-expert users gain context data visualized.","code":"card( card_header( \"Card header\", tooltip( bs_icon(\"info-circle\"), \"Tooltip message\" ) ), \"Card body...\" )"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"input-toolbar","dir":"Articles > Tooltips-popovers","previous_headings":"Examples > Cards","what":"Input toolbar","title":"Tooltips & Popovers","text":"app “secondary” inputs specific given card, can useful “hideaway” inputs popover() attached card’s header. especially useful inputs just meant tweak parameters /relevant subset users. case, can useful provide “settings” icon card’s header, clicked, opens popover() containing inputs.","code":"gear <- popover( bs_icon(\"gear\"), textInput(\"txt\", NULL, \"Enter input\"), title = \"Input controls\" ) card( card_header( \"Card header\", gear, class = \"d-flex justify-content-between\" ), \"Card body...\" )"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"popover-with-hyperlink","dir":"Articles > Tooltips-popovers","previous_headings":"Examples > Cards","what":"Popover with hyperlink","title":"Tooltips & Popovers","text":"popover()s useful creating input toolbars, can also useful non-input situations, like providing context along hyperlinks. Taking inspiration motivating example, can provide popover() attached actionLink() card’s footer.1","code":"foot <- popover( actionLink(\"link\", \"Card footer\"), \"Here's a \", a(\"hyperlink\", href = \"https://google.com\") ) card( card_header(\"Card header\"), \"Card body...\", card_footer(foot) )"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"editable-header","dir":"Articles > Tooltips-popovers","previous_headings":"Examples > Cards","what":"Editable header","title":"Tooltips & Popovers","text":"Combining idea input toolbar Shiny’s uiOutput()/renderUI() (.e., dynamic UI) pattern, can create editable header. case, ’ll use popover() attached uiOutput() card’s header, clicked, opens textInput().","code":"ui <- page_fixed( card( card_header( popover( uiOutput(\"card_title\", inline = TRUE), title = \"Provide a new title\", textInput(\"card_title\", NULL, \"An editable title\") ) ), \"The card body...\" ) ) server <- function(input, output) { output$card_title <- renderUI({ list( input$card_title, bsicons::bs_icon(\"pencil-square\") ) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"shiny","dir":"Articles > Tooltips-popovers","previous_headings":"","what":"Shiny","title":"Tooltips & Popovers","text":"Shiny, ’s possible programmatically show, hide, update contents tooltip() popover(). can useful creating dynamic apps, tooltip/popover’s contents dependent user input. next sections explore useful patterns.","code":""},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"readupdate-visibility","dir":"Articles > Tooltips-popovers","previous_headings":"Shiny","what":"Read/update visibility","title":"Tooltips & Popovers","text":"Use toggle_tooltip()/toggle_popover() programmatically show/hide tooltip()/popover(). useful want tooltip shown page load /tooltip shown response user input (e.g., button click).","code":"library(shiny) ui <- page_fixed( \"Here's a tooltip:\", tooltip( bsicons::bs_icon(\"info-circle\"), \"Tooltip message\", id = \"tooltip\" ), actionButton(\"show_tooltip\", \"Show tooltip\"), actionButton(\"hide_tooltip\", \"Hide tooltip\") ) server <- function(input, output) { observeEvent(input$show_tooltip, { toggle_tooltip(\"tooltip\", show = TRUE) }) observeEvent(input$hide_tooltip, { toggle_tooltip(\"tooltip\", show = FALSE) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"update-contents","dir":"Articles > Tooltips-popovers","previous_headings":"Shiny","what":"Update contents","title":"Tooltips & Popovers","text":"Use update_tooltip()/update_popover() programmatically update contents tooltip()/popover(). especially useful tooltip/popover reflect user input (e.g., text input).","code":"library(shiny) ui <- page_fixed( \"Here's a tooltip:\", tooltip( bsicons::bs_icon(\"info-circle\"), \"Tooltip message\", id = \"tooltip\" ), textInput(\"tooltip_msg\", NULL, \"Tooltip message\") ) server <- function(input, output) { observeEvent(input$tooltip_msg, { update_tooltip(\"tooltip\", input$tooltip_msg) }) } shinyApp(ui, server)"},{"path":[]},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"additional-options","dir":"Articles > Tooltips-popovers","previous_headings":"Appendix","what":"Additional options","title":"Tooltips & Popovers","text":"tooltip() popover() support number additional options covered article, documented respective reference pages (?tooltip ?popover).","code":""},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"popovers-vs-modals","dir":"Articles > Tooltips-popovers","previous_headings":"Appendix","what":"Popovers vs modals","title":"Tooltips & Popovers","text":"already familiar Shiny’s modalDialog()/showModal() might wonder popover() appropriate. general, modalDialog()s appropriate “blocking” interactions (.e., user must interact modal interact anything else). contrast, popover()s appropriate “non-blocking” interactions (.e., user can interact popover UI elements time). said, popovers don’t always scale well larger messages/menus. cases, consider offcanvas menu (bslib doesn’t currently support offcanvas menus, ’s roadmap).","code":""},{"path":"https://rstudio.github.io/bslib/articles/tooltips-popovers/index.html","id":"popovers-on-hyperlinks","dir":"Articles > Tooltips-popovers","previous_headings":"Appendix","what":"Popovers on hyperlinks","title":"Tooltips & Popovers","text":"general, ’s recommended use hyperlink trigger popover(). ’s , typical click action hyperlink (.e., navigating new page) conflicts click action popover(). reason, popover() changes trigger interaction hover/focus attached hyperlink (.e., acts like tooltip() case), least makes popover content visible. said, still bit confusing UX, thus avoided. Instead, consider using icon (next hyperlink) trigger popover().","code":""},{"path":"https://rstudio.github.io/bslib/articles/utility-classes/index.html","id":"add-margin","dir":"Articles > Utility-classes","previous_headings":"","what":"Add margin","title":"Utility classes","text":"look source theme demo app, actionButton() logic makes use margin spacing (m-2) add spacing buttons (also make use button modifier classes achieve different background colors). ’s worth noting actionButton(), like many core shiny UI components, doesn’t actually explicit class argument, route implicit arguments (.e., ...) top-level HTML tag, actionButton(..., class = \"btn-primary\") add class appropriate place. Another place top-level class can useful customizing body tabPanel().","code":"actionButton(\"primary\", \"Primary\", icon(\"product-hunt\"), class = \"btn-primary m-2\") actionButton(\"secondary\", \"Secondary (default)\", class = \"m-2\") actionButton(\"success\", \"Success\", icon(\"check\"), class = \"btn-success m-2\")"},{"path":"https://rstudio.github.io/bslib/articles/utility-classes/index.html","id":"add-padding-borders-and-alignment","dir":"Articles > Utility-classes","previous_headings":"","what":"Add padding, borders, and alignment","title":"Utility classes","text":"default, tabset panels don’t come padding border(s) around body’s content, can make appears though content just floating space: can help solve issue adding padding tab’s content (p-3) well nice border matches tab’s borders. tabsetPanel(type=\"pills\") , looks bit better full, rounded, border: ’s also worth noting can also add classes rmarkdown tabsets, like : Unfortunately, can’t always rely class argument placing HTML tag need achieve styling goals. example, can’t simply tabsetPanel(class = \"justify-content-center\", ...) horizontally center tabset. can, however, leverage Sass’s @extend rule essentially add utility classes relevant HTML element(s):","code":"tabsetPanel( tabPanel(\"One\", \"No padding\"), tabPanel(\"Two\", \"Very sad!\") ) tab <- function(...) { shiny::tabPanel(..., class = \"p-3 border border-top-0 rounded-bottom\") } tabsetPanel( tab(\"One\", \"With padding\"), tab(\"Two\", \"Nice!\") ) pill <- function(...) { shiny::tabPanel(..., class = \"p-3 border rounded\") } tabsetPanel( type = \"pills\", pill(\"One\", \"With padding\"), pill(\"Two\", \"Nice!\") ) fluidPage( theme = bs_theme() %>% bs_add_rules(\"#my-nav { @extend .justify-content-center }\"), tabsetPanel( type = \"pills\", id = \"my-nav\", pill(\"One\", \"With padding\"), pill(\"Two\", \"Nice!\") ) )"},{"path":"https://rstudio.github.io/bslib/articles/utility-classes/index.html","id":"add-background-color","dir":"Articles > Utility-classes","previous_headings":"","what":"Add background color","title":"Utility classes","text":"Add bg-* class HTML element set background color theme color (e.g., primary, secondary, etc), note ’ll also make sure foreground color properly contrasts background color (.e., foreground switches white/black intelligently based dark/light background). use bg-primary card component containing {DT} table.","code":"bs4_card <- function(body, title) { div( class = \"card\", div(class = \"card-header bg-primary\", title), div(class = \"card-body d-flex justify-content-center\", body) ) } shinyApp( fluidPage( theme = bslib::bs_theme(primary = \"orange\"), uiOutput(\"dat\") ), function(input, output) { output$dat <- renderUI({ table <- DT::datatable(mtcars, fillContainer = TRUE, style = \"bootstrap4\", rownames = FALSE) bs4_card(table, \"The mtcars dataset\") }) } )"},{"path":"https://rstudio.github.io/bslib/articles/utility-classes/index.html","id":"create-new-utility-classes","dir":"Articles > Utility-classes","previous_headings":"","what":"Create new utility classes","title":"Utility classes","text":"Bootstrap Sass also handful Sass maps allow easy creation /modification utility classes. One case creating background color utility classes, say bg-flair via $theme-colors map. useful wanted let $primary default $blue, use bg-flair instead bg-primary color card’s title:","code":"bs_theme(\"theme-colors\" = \"('flair': orange)\")"},{"path":"https://rstudio.github.io/bslib/articles/value-boxes/index.html","id":"build-a-box-app","dir":"Articles > Value-boxes","previous_headings":"","what":"Build a Box App","title":"Value boxes","text":"Want explore value_box() options layouts interactive app? Check Build Box App! Use app quickly choose right layout theme value boxes, copy code right app.","code":""},{"path":"https://rstudio.github.io/bslib/articles/value-boxes/index.html","id":"hello-value_box","dir":"Articles > Value-boxes","previous_headings":"","what":"Hello value_box()","title":"Value boxes","text":"value_box() 4 main parts: value: text value. title: Optional text display value. showcase: Optional UI element(s) display alongside value. theme: Optional theme change appearance value box. ...: text/UI elements appear value. ’ll see later, one can clever goes showcase, many cases icon provides enough visual context box feel “complete”. recommend using new bsicons package since ’s designed Bootstrap mind, also use fontawesome {icons}. value box can showcase plot icon, choosing one three values showcase_layout: \"left center\", \"top right\", \"bottom\". See Showcase Layouts section value_box() documentation details. overall appearance value box may customized theme argument, can choose wide variety themes — Themes section value_box() documentation lays options. Left center Top Right got 99 problems bslib ain't one hit got 99 problems bslib ain't one hit ","code":"value_box( title = \"I got\", value = \"99 problems\", showcase = bs_icon(\"music-note-beamed\"), p(\"bslib ain't one\", bs_icon(\"emoji-smile\")), p(\"hit me\", bs_icon(\"suit-spade\")) ) value_box( title = \"I got\", value = \"99 problems\", showcase = bs_icon(\"music-note-beamed\"), showcase_layout = \"top right\", theme = \"secondary\", p(\"bslib ain't one\", bs_icon(\"emoji-smile\")), p(\"hit me\", bs_icon(\"suit-spade\")) )"},{"path":"https://rstudio.github.io/bslib/articles/value-boxes/index.html","id":"dynamic-rendering-shiny","dir":"Articles > Value-boxes","previous_headings":"","what":"Dynamic rendering (Shiny)","title":"Value boxes","text":"using Shiny dynamically render value_box() contents, ’s good practice use textOutput() serve placeholder value, title, etc. way, value takes moment compute, value box appear value ready, thus reduces “layout shift” value actually rendered.","code":"ui <- page_fixed( value_box( title = \"The current time\", value = textOutput(\"time\"), showcase = bs_icon(\"clock\") ) ) server <- function(input, output) { output$time <- renderText({ invalidateLater(1000) format(Sys.time()) }) } shinyApp(ui, server)"},{"path":"https://rstudio.github.io/bslib/articles/value-boxes/index.html","id":"multiple-value-boxes","dir":"Articles > Value-boxes","previous_headings":"","what":"Multiple value boxes","title":"Value boxes","text":"layout multiple value boxes, ’s recommended use layout_column_wrap() (layout_columns()), ensures uniform height width (least default) across boxes. 1st value 123 1st detail 2nd value 456 2nd detail 3rd detail 3rd value 789 4th detail 5th detail 6th detail , incorporating multiple value boxes larger filling layout, ’s good practice set fill = FALSE layout container since ’ll prevent boxes using space really need. example, try resizing following example vertically. Notice height value boxes don’t change, height plot (isn’t allowed shrink 200 pixels):","code":"vbs <- list( value_box( title = \"1st value\", value = \"123\", showcase = bs_icon(\"bar-chart\"), theme = \"purple\", p(\"The 1st detail\") ), value_box( title = \"2nd value\", value = \"456\", showcase = bs_icon(\"graph-up\"), theme = \"teal\", p(\"The 2nd detail\"), p(\"The 3rd detail\") ), value_box( title = \"3rd value\", value = \"789\", showcase = bs_icon(\"pie-chart\"), theme = \"pink\", p(\"The 4th detail\"), p(\"The 5th detail\"), p(\"The 6th detail\") ) ) layout_column_wrap( width = \"250px\", !!!vbs ) page_fillable( layout_column_wrap( width = \"250px\", fill = FALSE, vbs[[1]], vbs[[2]] ), card( min_height = 200, plotly::plot_ly(x = rnorm(100)) ) )"},{"path":"https://rstudio.github.io/bslib/articles/value-boxes/index.html","id":"expandable-sparklines","dir":"Articles > Value-boxes","previous_headings":"","what":"Expandable sparklines","title":"Value boxes","text":"--hood, value_box() implemented using card(), mainly inherit ’s full_screen capabilities. Expanding value_box() full screen isn’t useful showcase something simple like icon, becomes quite compelling something like “expandable sparkline”. code right demonstrates one way might go plotly. Note , since example statically rendered (outside Shiny), make use htmlwidgets::onRender() add JavaScript effectively says: “Show xaxis chart ’s taller 200 pixels; otherwise, hide ”. aren’t wanting write JavaScript can achieve similar behavior (.e., displaying different chart depending ’s size) via shiny::getCurrentOutputInfo(), mentioned article cards. fact, ’s source code Shiny app effectively thing without JavaScript (note also leverages getCurrentOutputInfo() values avoid hard coding \"white\" colors sparklines). Personal Savings Rate 7.6% Started 12.6% Averaged 8.6% period Peaked 17.3% May 1975","code":"library(plotly) sparkline <- plot_ly(economics) %>% add_lines( x = ~date, y = ~psavert, color = I(\"white\"), span = I(1), fill = 'tozeroy', alpha = 0.2 ) %>% layout( xaxis = list(visible = F, showgrid = F, title = \"\"), yaxis = list(visible = F, showgrid = F, title = \"\"), hovermode = \"x\", margin = list(t = 0, r = 0, l = 0, b = 0), font = list(color = \"white\"), paper_bgcolor = \"transparent\", plot_bgcolor = \"transparent\" ) %>% config(displayModeBar = F) %>% htmlwidgets::onRender( \"function(el) { var ro = new ResizeObserver(function() { var visible = el.offsetHeight > 200; Plotly.relayout(el, {'xaxis.visible': visible}); }); ro.observe(el); }\" ) value_box( title = \"Personal Savings Rate\", value = \"7.6%\", p(\"Started at 12.6%\"), p(\"Averaged 8.6% over that period\"), p(\"Peaked 17.3% in May 1975\"), showcase = sparkline, full_screen = TRUE, theme = \"success\" )"},{"path":"https://rstudio.github.io/bslib/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Carson Sievert. Author, maintainer. Joe Cheng. Author. Garrick Aden-Buie. Author. Posit Software, PBC. Copyright holder, funder. Bootstrap contributors. Contributor. Bootstrap library Twitter, Inc. Copyright holder. Bootstrap library Javi Aguilar. Contributor, copyright holder. Bootstrap colorpicker library Thomas Park. Contributor, copyright holder. Bootswatch library PayPal. Contributor, copyright holder. Bootstrap accessibility plugin","code":""},{"path":"https://rstudio.github.io/bslib/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Sievert C, Cheng J, Aden-Buie G (2023). bslib: Custom 'Bootstrap' 'Sass' Themes 'shiny' 'rmarkdown'. R package version 0.5.1.9000, https://github.com/rstudio/bslib, https://rstudio.github.io/bslib/.","code":"@Manual{, title = {bslib: Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'}, author = {Carson Sievert and Joe Cheng and Garrick Aden-Buie}, year = {2023}, note = {R package version 0.5.1.9000, https://github.com/rstudio/bslib}, url = {https://rstudio.github.io/bslib/}, }"},{"path":"https://rstudio.github.io/bslib/index.html","id":"bslib","dir":"","previous_headings":"","what":"Custom Bootstrap Sass Themes for shiny and rmarkdown","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"bslib R package provides modern UI toolkit Shiny R Markdown based Bootstrap. facilitates: underlying UI components (e.g., cards, value boxes, sidebars, etc) also designed work contexts (e.g., R Markdown). Apps can even themed interactively real-time. Shiny R Markdown currently default Bootstrap 3 may continue maintain backwards compatibility.","code":""},{"path":"https://rstudio.github.io/bslib/index.html","id":"installation","dir":"","previous_headings":"","what":"Installation","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"Install bslib package CRAN follows:","code":"install.packages(\"bslib\")"},{"path":"https://rstudio.github.io/bslib/index.html","id":"an-example","dir":"","previous_headings":"","what":"An example","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"quickest way see bslib can run bslib::bs_theme_preview() console. launches demo app containing bslib shiny UI components well theming widget (bslib::bs_themer()) overlaid app. See real-time theming learn .","code":""},{"path":"https://rstudio.github.io/bslib/index.html","id":"get-started","dir":"","previous_headings":"","what":"Get started","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"Since bslib covers wide array uses, numerous getting started articles, focusing particular interest: Shiny dashboards Bootstrap project Theming","code":""},{"path":"https://rstudio.github.io/bslib/index.html","id":"getting-help","dir":"","previous_headings":"","what":"Getting help","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"two main places get help bslib: RStudio community friendly place ask questions (sure add bslib tag creating topic). Stack Overflow great source answers common bslib questions. also great place get help, created reproducible example illustrates problem. Use tags [r][bslib] ask question. Add tag [bslib] using Shiny runtime.","code":""},{"path":"https://rstudio.github.io/bslib/index.html","id":"code-of-conduct","dir":"","previous_headings":"","what":"Code of Conduct","title":"Custom Bootstrap Sass Themes for shiny and rmarkdown","text":"Please note bslib project released Contributor Code Conduct. contributing project, agree abide terms.","code":""},{"path":"https://rstudio.github.io/bslib/reference/accordion.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a vertically collapsing accordion — accordion","title":"Create a vertically collapsing accordion — accordion","text":"accordion can used organize UI elements content limited space. comprises multiple, vertically stacked panels expand collapse clicked, providing compact layout works well grouping input elements sidebar() organizing detailed context-specific information.","code":""},{"path":"https://rstudio.github.io/bslib/reference/accordion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a vertically collapsing accordion — accordion","text":"","code":"accordion( ..., id = NULL, open = NULL, multiple = TRUE, class = NULL, width = NULL, height = NULL ) accordion_panel(title, ..., value = title, icon = NULL)"},{"path":"https://rstudio.github.io/bslib/reference/accordion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a vertically collapsing accordion — accordion","text":"... Named arguments become attributes

element. Unnamed arguments accordion_panel()s. id provided, can use input$id server logic determine accordion_panel()s currently active. value correspond accordion_panel()'s value argument. open character vector accordion_panel() values open (.e., show) default. default value NULL open first accordion_panel(). Use value TRUE open (FALSE open none) items. possible open one panel multiple=TRUE. multiple Whether multiple accordion_panel() can open . class Additional CSS classes include accordion div. width, height valid CSS unit; example, height=\"100%\". title title appear accordion_panel()'s header. value character string uniquely identifies panel. icon htmltools::tag child (e.g., bsicons::bs_icon()) positioned just title.","code":""},{"path":"https://rstudio.github.io/bslib/reference/accordion.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Create a vertically collapsing accordion — accordion","text":"bslib's accordion component derived Bootstrap Accordion component. Accordions also featured bslib website: Get Started: Dashboards Sidebars: Accordions","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/accordion.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a vertically collapsing accordion — accordion","text":"","code":"if (FALSE) { # rlang::is_interactive() items <- lapply(LETTERS, function(x) { accordion_panel(paste(\"Section\", x), paste(\"Some narrative for section\", x)) }) # First shown by default accordion(!!!items) # Nothing shown by default accordion(!!!items, open = FALSE) # Everything shown by default accordion(!!!items, open = TRUE) # Show particular sections accordion(!!!items, open = \"Section B\") accordion(!!!items, open = c(\"Section A\", \"Section B\")) # Provide an id to create a shiny input binding library(shiny) ui <- page_fluid( accordion(!!!items, id = \"acc\") ) server <- function(input, output) { observe(print(input$acc)) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/accordion_panel_set.html","id":null,"dir":"Reference","previous_headings":"","what":"Dynamically update accordions — accordion_panel_set","title":"Dynamically update accordions — accordion_panel_set","text":"Dynamically update/modify accordion()s Shiny app. updated programmatically, accordion() must id. functions require active Shiny session work running Shiny app.","code":""},{"path":"https://rstudio.github.io/bslib/reference/accordion_panel_set.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dynamically update accordions — accordion_panel_set","text":"","code":"accordion_panel_set(id, values, session = get_current_session()) accordion_panel_open(id, values, session = get_current_session()) accordion_panel_close(id, values, session = get_current_session()) accordion_panel_insert( id, panel, target = NULL, position = c(\"after\", \"before\"), session = get_current_session() ) accordion_panel_remove(id, target, session = get_current_session()) accordion_panel_update( id, target, ..., title = NULL, value = NULL, icon = NULL, session = get_current_session() )"},{"path":"https://rstudio.github.io/bslib/reference/accordion_panel_set.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dynamically update accordions — accordion_panel_set","text":"id character string matches existing accordion()'s id. values either character string (used identify particular accordion_panel()s value) TRUE (.e., values). session shiny session object (default almost always used). panel accordion_panel(). target value existing panel insert next . removing: value accordion_panel() remove. position panel added target? target NULL (default), \"\" append last panel \"\" prepend first panel. ... Named arguments become attributes
element. Unnamed arguments accordion_panel()s. title title appear accordion_panel()'s header. value character string uniquely identifies panel. icon htmltools::tag child (e.g., bsicons::bs_icon()) positioned just title.","code":""},{"path":"https://rstudio.github.io/bslib/reference/accordion_panel_set.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Dynamically update accordions — accordion_panel_set","text":"accordion_panel_set(): accordion_panel_open(), except also closes currently open panels. accordion_panel_open(): open accordion_panel()s. accordion_panel_close(): close accordion_panel()s. accordion_panel_insert(): insert new accordion_panel() accordion_panel_remove(): remove accordion_panel()s. accordion_panel_update(): update accordion_panel().","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":null,"dir":"Reference","previous_headings":"","what":"Test and/or coerce fill behavior — as_fill_carrier","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"Filling layouts bslib built foundation fillable containers fill items (fill carriers fillable fill). bslib components (e.g., card(), card_body(), layout_sidebar()) possess fillable fill arguments (control fill behavior). However, sometimes useful add, remove, /test fillable/fill properties arbitrary htmltools::tag(), functions designed .","code":""},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"","code":"as_fill_carrier( x, ..., min_height = NULL, max_height = NULL, gap = NULL, class = NULL, style = NULL, css_selector = NULL ) as_fillable_container( x, ..., min_height = NULL, max_height = NULL, gap = NULL, class = NULL, style = NULL, css_selector = NULL ) as_fill_item( x, ..., min_height = NULL, max_height = NULL, class = NULL, style = NULL, css_selector = NULL ) remove_all_fill(x) is_fill_carrier(x) is_fillable_container(x) is_fill_item(x)"},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"x htmltools::tag(). ... Currently ignored. min_height, max_height valid CSS unit (e.g., 150). gap valid CSS unit. class character vector class names add tag. style character vector CSS properties add tag. css_selector character string containing CSS selector targeting particular (inner) tag(s) interest. details selector(s) supported, see tagAppendAttributes().","code":""},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"as_fill(), as_fillable(), as_fill_carrier(): tagified version x, relevant tags modified possess relevant fill properties. is_fill(), is_fillable(), is_fill_carrier(): logical vector, length matching number top-level tags possess relevant fill properties.","code":""},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"Although as_fill(), as_fillable(), as_fill_carrier() can work non-tag objects .tags method (e.g., htmlwidgets), return \"tagified\" version object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"Filling Layouts article bslib website introduces concept fillable containers fill items.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/as_fill_carrier.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Test and/or coerce fill behavior — as_fill_carrier","text":"","code":"if (FALSE) { # rlang::is_interactive() library(shiny) shinyApp( page_fillable( # without `as_fill_carrier()`, the plot won't fill the page because # `uiOutput()` is neither a fillable container nor a fill item by default. as_fill_carrier(uiOutput(\"ui\")) ), function(input, output) { output$ui <- renderUI({ div( class = \"bg-info text-white\", as_fill_item(), \"A fill item\" ) }) } ) }"},{"path":"https://rstudio.github.io/bslib/reference/bootswatch_themes.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain a list of all available bootswatch themes. — bootswatch_themes","title":"Obtain a list of all available bootswatch themes. — bootswatch_themes","text":"Obtain list available bootswatch themes.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bootswatch_themes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain a list of all available bootswatch themes. — bootswatch_themes","text":"","code":"bootswatch_themes(version = version_default(), full_path = FALSE)"},{"path":"https://rstudio.github.io/bslib/reference/bootswatch_themes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain a list of all available bootswatch themes. — bootswatch_themes","text":"version major version Bootswatch. full_path Whether return path installed theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bootswatch_themes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain a list of all available bootswatch themes. — bootswatch_themes","text":"Returns character vector Bootswatch themes.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/breakpoints.html","id":null,"dir":"Reference","previous_headings":"","what":"Define breakpoint values — breakpoints","title":"Define breakpoint values — breakpoints","text":"generic constructor responsive breakpoints.","code":""},{"path":"https://rstudio.github.io/bslib/reference/breakpoints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Define breakpoint values — breakpoints","text":"","code":"breakpoints(..., sm = NULL, md = NULL, lg = NULL)"},{"path":"https://rstudio.github.io/bslib/reference/breakpoints.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Define breakpoint values — breakpoints","text":"... breakpoints (e.g., xl). sm Values apply sm breakpoint. md Values apply md breakpoint. lg Values apply lg breakpoint.","code":""},{"path":"https://rstudio.github.io/bslib/reference/breakpoints.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Define breakpoint values — breakpoints","text":"Bootstrap's Breakpoints article provides detail breakpoints used customized.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/breakpoints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Define breakpoint values — breakpoints","text":"","code":"breakpoints(sm = c(4, 4, 4), md = c(3, 3, 6), lg = c(-2, 8, -2)) #> #> sm: 4 4 4 #> md: 3 3 6 #> lg: -2 8 -2"},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":null,"dir":"Reference","previous_headings":"","what":"Add low-level theming customizations — bs_add_variables","title":"Add low-level theming customizations — bs_add_variables","text":"functions provide direct access layers bslib theme created bs_theme(). Learn composable Sass layers sass website.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add low-level theming customizations — bs_add_variables","text":"","code":"bs_add_variables( theme, ..., .where = \"defaults\", .default_flag = identical(.where, \"defaults\") ) bs_add_rules(theme, rules) bs_add_functions(theme, functions) bs_add_mixins(theme, mixins) bs_bundle(theme, ...)"},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add low-level theming customizations — bs_add_variables","text":"theme bs_theme() object. ... bs_add_variables(): named Sass variables values can passed directly defaults argument sass::sass_layer(). bs_bundle(): arguments can handled sass::sass_bundle() appended theme .Whether place variable definitions Sass \"defaults\", Sass \"declarations\", Sass \"rules\". .default_flag Whether add !default flag (missing) variable expressions. recommended keep TRUE .= \"defaults\". rules Sass rules. Anything understood sass::as_sass() may provided (e.g., list, character vector, sass::sass_file(), etc) functions character vector sass::sass_file() containing functions definitions. mixins character vector sass::sass_file() containing mixin definitions.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Add low-level theming customizations — bs_add_variables","text":"Returns modified bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add low-level theming customizations — bs_add_variables","text":"Compared higher-level theme customization available bs_theme(), functions direct interface Bootstrap Sass, therefore, nothing ensure theme customizations portable major Bootstrap versions.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Add low-level theming customizations — bs_add_variables","text":"bs_add_variables(): Add Bootstrap Sass variable defaults. bs_add_rules(): Add additional Sass rules. bs_add_functions(): Add additional Sass functions. bs_add_mixins(): Add additional Sass mixins. bs_bundle(): Add additional sass::sass_bundle() objects existing theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add low-level theming customizations — bs_add_variables","text":"bslib's theming capabilities powered sass package. Learn composable Sass layers sass website.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_bundle.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add low-level theming customizations — bs_add_variables","text":"","code":"if (FALSE) { # rlang::is_interactive() # Function to preview the styling a (primary) Bootstrap button library(htmltools) button <- tags$a(class = \"btn btn-primary\", href = \"#\", role = \"button\", \"Hello\") preview_button <- function(theme) { browsable(tags$body(bs_theme_dependencies(theme), button)) } # Here we start with a theme based on a Bootswatch theme, # then override some variable defaults theme <- bs_add_variables( bs_theme(bootswatch = \"sketchy\", primary = \"orange\"), \"body-bg\" = \"#EEEEEE\", \"font-family-base\" = \"monospace\", \"font-size-base\" = \"1.4rem\", \"btn-padding-y\" = \".16rem\", \"btn-padding-x\" = \"2rem\" ) preview_button(theme) # If you need to set a variable based on another Bootstrap variable theme <- bs_add_variables(theme, \"body-color\" = \"$success\", .where = \"declarations\") preview_button(theme) # Start a new global theme and add some custom rules that # use Bootstrap variables to define a custom styling for a # 'person card' person_rules <- system.file(\"custom\", \"person.scss\", package = \"bslib\") theme <- bs_add_rules(bs_theme(), sass::sass_file(person_rules)) # Include custom CSS that leverages bootstrap Sass variables person <- function(name, title, company) { tags$div( class = \"person\", h3(class = \"name\", name), div(class = \"title\", title), div(class = \"company\", company) ) } page_fluid( theme = theme, person(\"Andrew Carnegie\", \"Owner\", \"Carnegie Steel Company\"), person(\"John D. Rockefeller\", \"Chairman\", \"Standard Oil\") ) }"},{"path":"https://rstudio.github.io/bslib/reference/bs_current_theme.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain the currently active theme at render time — bs_current_theme","title":"Obtain the currently active theme at render time — bs_current_theme","text":"Intended advanced use developers obtain currently active theme render time primarily implementing themable widgets otherwise themed via bs_dependency_defer() .","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_current_theme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain the currently active theme at render time — bs_current_theme","text":"","code":"bs_current_theme(session = get_current_session(FALSE))"},{"path":"https://rstudio.github.io/bslib/reference/bs_current_theme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain the currently active theme at render time — bs_current_theme","text":"session current Shiny session ().","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_current_theme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain the currently active theme at render time — bs_current_theme","text":"Returns bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_current_theme.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Obtain the currently active theme at render time — bs_current_theme","text":"function generally called print/render time. example: Inside preRenderHook htmlwidgets::createWidget(). Inside custom print method generates htmltools::tags. Inside htmltools::tagFunction() Calling function print/render time important different things based context called: reactive context active, session$getCurrentTheme() called (reactive read). reactive context active, shiny::getCurrentTheme() called (returns current app's theme, relevant). shiny::getCurrentTheme() comes empty, bs_global_get() called, relevant rmarkdown::html_document(), possibly static rendering contexts.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":null,"dir":"Reference","previous_headings":"","what":"Themeable HTML components — bs_dependency","title":"Themeable HTML components — bs_dependency","text":"Themeable HTML components use Sass generate CSS rules Bootstrap Sass variables, functions, /mixins (.e., stuff inside theme). bs_dependencies() makes bit easier create themeable components compiling sass::sass() (input) together Bootstrap Sass inside theme, packaging result htmlDependency(). Themable components can also dynamically themed inside Shiny (.e., may themed 'real-time' via bs_themer(), generally, update styles response shiny::session's setCurrentTheme() method). Dynamically themeable components provide \"recipe\" (.e., function) bs_dependency_defer(), describing generate new CSS stylesheet(s) new theme. function called HTML page first rendered, may invoked new theme whenever shiny::session's setCurrentTheme() called.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Themeable HTML components — bs_dependency","text":"","code":"bs_dependency( input = list(), theme, name, version, cache_key_extra = NULL, .dep_args = list(), .sass_args = list() ) bs_dependency_defer(func, memoise = TRUE)"},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Themeable HTML components — bs_dependency","text":"input Sass rules compile, using theme. theme bs_theme() object. name Library name version Library version cache_key_extra Extra information add sass cache key. useful add version package. .dep_args list additional arguments pass htmltools::htmlDependency(). Note package effect script must absolute path(s). .sass_args list additional arguments pass sass::sass_partial(). func non-anonymous function, single argument. function accept bs_theme() object return single htmlDependency(), list , NULL. memoise whether memoise (.e., cache) func results short period time. default, TRUE, can large performance benefits many instances themable widget rendered. Note may want avoid memoisation func relies side-effects (e.g., files -disk) need change themable widget instance.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Themeable HTML components — bs_dependency","text":"bs_dependency() returns htmltools::htmlDependency() bs_dependency_defer() returns htmltools::tagFunction()","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Themeable HTML components — bs_dependency","text":"Theming: Custom components gives tutorial creating dynamically themable custom component.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_dependency.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Themeable HTML components — bs_dependency","text":"","code":"if (FALSE) { # rlang::is_interactive() myWidgetVersion <- \"1.2.3\" myWidgetDependency <- function() { list( bs_dependency_defer(myWidgetCss), htmlDependency( name = \"mywidget-js\", version = myWidgetVersion, src = system.file(package = \"mypackage\", \"js\"), script = \"mywidget.js\" ) ) } myWidgetCSS <- function(theme) { if (!is_bs_theme(theme)) { return( htmlDependency( name = \"mywidget-css\", version = myWidgetVersion, src = system.file(package = \"mypackage\", \"css\"), stylesheet = \"mywidget.css\" ) ) } # Compile mywidget.scss using the variables and defaults from the theme # object. sass_input <- sass::sass_file(system.file(package = \"mypackage\", \"scss/mywidget.scss\")) bs_dependency( input = sass_input, theme = theme, name = \"mywidget\", version = myWidgetVersion, cache_key_extra = utils::packageVersion(\"mypackage\") ) } # Note that myWidgetDependency is not defined inside of myWidget. This is so # that, if `myWidget()` is called multiple times, Shiny can tell that the # function objects are identical and deduplicate them. myWidget <- function(id) { div( id = id, span(\"myWidget\"), myWidgetDependency() ) } }"},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Sass variable values from the current theme — bs_get_variables","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"Useful retrieving variable current theme using value inform another R function.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"","code":"bs_get_variables(theme, varnames) bs_get_contrast(theme, varnames)"},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"theme bs_theme() object. varnames character string referencing Sass variable current theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"Returns character string containing CSS/Sass value. variable(s) defined, value NA.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"Theming: Bootstrap 5 variables provides searchable reference theming variables available Bootstrap 5.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_get_variables.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve Sass variable values from the current theme — bs_get_variables","text":"","code":"vars <- c(\"body-bg\", \"body-color\", \"primary\", \"border-radius\") bs_get_variables(bs_theme(), varnames = vars) #> body-bg body-color primary border-radius #> \"#ffffff\" \"#1D1F21\" \"#007bc2\" \"3px\" bs_get_variables(bs_theme(bootswatch = \"darkly\"), varnames = vars) #> body-bg body-color primary border-radius #> \"#222\" \"#fff\" \"#375a7f\" \"0.375rem\" bs_get_contrast(bs_theme(), c(\"primary\", \"dark\", \"light\")) #> primary dark light #> \"#FFFFFF\" \"#FFFFFF\" \"#000000\" library(htmltools) div( class = \"bg-primary\", style = css( color = bs_get_contrast(bs_theme(), \"primary\") ) ) #>
<\/div>"},{"path":"https://rstudio.github.io/bslib/reference/bs_global_theme.html","id":null,"dir":"Reference","previous_headings":"","what":"Global theming — bs_global_theme","title":"Global theming — bs_global_theme","text":"bs_global_theme() creates sets global Bootstrap Sass theme. theme typically found bs_theme_dependencies() app document global theme used. can obtain current global theme bs_global_get() directly set global theme bs_global_set().","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_global_theme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Global theming — bs_global_theme","text":"","code":"bs_global_theme( version = version_default(), bootswatch = NULL, bg = NULL, fg = NULL, primary = NULL, secondary = NULL, success = NULL, info = NULL, warning = NULL, danger = NULL, base_font = NULL, code_font = NULL, heading_font = NULL, ... ) bs_global_set(theme = bs_theme()) bs_global_get() bs_global_clear() bs_global_add_variables( ..., .where = \"defaults\", .default_flag = identical(.where, \"defaults\") ) bs_global_add_rules(...) bs_global_bundle(...) bs_global_theme_update( ..., preset = NULL, bg = NULL, fg = NULL, primary = NULL, secondary = NULL, success = NULL, info = NULL, warning = NULL, danger = NULL, base_font = NULL, code_font = NULL, heading_font = NULL, bootswatch = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/bs_global_theme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Global theming — bs_global_theme","text":"version major version Bootstrap use (see versions() possible values). Defaults currently recommended version new projects (currently Bootstrap 5). bootswatch name bootswatch theme (see bootswatch_themes() possible values). provided bs_theme_update(), previous Bootswatch theme first removed new one applied (use bootswatch = \"bootstrap\" effectively remove Bootswatch theme). bg color string background. fg color string foreground. primary color used hyperlinks, indicate primary/default actions, show active selection state Bootstrap components. Generally bold, saturated color contrasts theme's base colors. secondary color components messages need stand . (supported Bootstrap 3.) success color messages indicate operation succeeded. Typically green. info color messages informative critical. Typically shade blue-green. warning color warning messages. Typically yellow. danger color errors. Typically red. base_font default typeface. code_font typeface used code. sure monospace! heading_font typeface used heading elements. ... arguments passed along bs_add_variables(). theme bs_theme() object. .Whether place variable definitions Sass \"defaults\", Sass \"declarations\", Sass \"rules\". .default_flag Whether add !default flag (missing) variable expressions. recommended keep TRUE .= \"defaults\". preset name theme preset, either built-theme provided bslib Bootswatch theme (see builtin_themes() bootswatch_themes() possible values). argument takes precedence bootswatch argument one preset bootswatch can provided. bootswatch theme specified, version 5 higher, preset defaults \"shiny\". remove \"shiny\" preset, provide value \"bootstrap\" (value also work bs_theme_update() remove preset bootswatch theme).","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_global_theme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Global theming — bs_global_theme","text":"Functions modify global theme (e.g., bs_global_set()) invisibly return previously set theme. bs_global_get() returns current global theme.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_global_theme.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Global theming — bs_global_theme","text":"","code":"# Remember the global state now (so we can restore later) theme <- bs_global_get() # Use Bootstrap 3 (globally) with some theme customization bs_global_theme(3, bg = \"#444\", fg = \"#e4e4e4\", primary = \"#e39777\") if (rlang::is_interactive()) { bs_theme_preview(with_themer = FALSE) } # If no global theme is active, bs_global_get() returns NULL bs_global_clear() bs_global_get() #> NULL # Restore the original state bs_global_set(theme)"},{"path":"https://rstudio.github.io/bslib/reference/bs_remove.html","id":null,"dir":"Reference","previous_headings":"","what":"Remove or retrieve Sass code from a theme — bs_remove","title":"Remove or retrieve Sass code from a theme — bs_remove","text":"Bootstrap theme created bs_theme() comprised many Sass layers. bs_remove() bs_retrieve() allow remove retrieve individual layer, either reduce size compiled CSS extract styles theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_remove.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Remove or retrieve Sass code from a theme — bs_remove","text":"","code":"bs_remove(theme, ids = character(0)) bs_retrieve(theme, ids = character(0), include_unnamed = TRUE)"},{"path":"https://rstudio.github.io/bslib/reference/bs_remove.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Remove or retrieve Sass code from a theme — bs_remove","text":"theme bs_theme() object. ids character vector ids include_unnamed whether include unnamed sass::sass_layer()s (e.g., Bootstrap Sass variables, functions, mixins).","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_remove.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Remove or retrieve Sass code from a theme — bs_remove","text":"Returns modified bs_theme() object.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_remove.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Remove or retrieve Sass code from a theme — bs_remove","text":"","code":"bs4 <- bs_theme(version = 4) # Retrieve sass bundle for print styles bs_retrieve(bs4, \"_print\", include_unnamed = FALSE) #> /* Sass Bundle: _print */ #> @import \"/home/runner/work/_temp/Library/bslib/lib/bs4/scss/_print.scss\"; #> /* *** */ # Remove CSS rules for print and carousels bs4_no_print <- bs_remove(bs4, c(\"_print\", \"_carousel\")) suppressWarnings( bs_retrieve(bs4_no_print, \"_print\", include_unnamed = FALSE) ) #> /* Sass Bundle: (empty) *** */ # Remove BS3 compatibility layer bs4_no_compat <- bs_remove(bs4, \"bs3compat\")"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":null,"dir":"Reference","previous_headings":"","what":"Create a Bootstrap theme — bs_theme","title":"Create a Bootstrap theme — bs_theme","text":"Creates Bootstrap theme object, can: Choose (major) Bootstrap version. Choose Bootswatch theme (optional). Customize main colors fonts via explicitly named arguments (e.g., bg, fg, primary, etc). Customize , lower-level, Bootstrap Sass variable defaults via .... learn implement custom themes, well use inside Shiny R Markdown, see .","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Create a Bootstrap theme — bs_theme","text":"","code":"bs_theme( version = version_default(), preset = NULL, ..., bg = NULL, fg = NULL, primary = NULL, secondary = NULL, success = NULL, info = NULL, warning = NULL, danger = NULL, base_font = NULL, code_font = NULL, heading_font = NULL, font_scale = NULL, bootswatch = NULL ) bs_theme_update( theme, ..., preset = NULL, bg = NULL, fg = NULL, primary = NULL, secondary = NULL, success = NULL, info = NULL, warning = NULL, danger = NULL, base_font = NULL, code_font = NULL, heading_font = NULL, font_scale = NULL, bootswatch = NULL ) is_bs_theme(x)"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Create a Bootstrap theme — bs_theme","text":"version major version Bootstrap use (see versions() possible values). Defaults currently recommended version new projects (currently Bootstrap 5). preset name theme preset, either built-theme provided bslib Bootswatch theme (see builtin_themes() bootswatch_themes() possible values). argument takes precedence bootswatch argument one preset bootswatch can provided. bootswatch theme specified, version 5 higher, preset defaults \"shiny\". remove \"shiny\" preset, provide value \"bootstrap\" (value also work bs_theme_update() remove preset bootswatch theme). ... arguments passed along bs_add_variables(). bg color string background. fg color string foreground. primary color used hyperlinks, indicate primary/default actions, show active selection state Bootstrap components. Generally bold, saturated color contrasts theme's base colors. secondary color components messages need stand . (supported Bootstrap 3.) success color messages indicate operation succeeded. Typically green. info color messages informative critical. Typically shade blue-green. warning color warning messages. Typically yellow. danger color errors. Typically red. base_font default typeface. code_font typeface used code. sure monospace! heading_font typeface used heading elements. font_scale scalar multiplier apply base font size. example, value 1.5 scales font sizes 150% value 0.8 scales 80%. Must positive number. bootswatch name bootswatch theme (see bootswatch_themes() possible values). provided bs_theme_update(), previous Bootswatch theme first removed new one applied (use bootswatch = \"bootstrap\" effectively remove Bootswatch theme). theme bs_theme() object. x object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Create a Bootstrap theme — bs_theme","text":"Returns sass::sass_bundle() (list-like) object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"colors","dir":"Reference","previous_headings":"","what":"Colors","title":"Create a Bootstrap theme — bs_theme","text":"Colors may provided format htmltools::parseCssColors() can understand. control vast majority ('grayscale') color defaults, specify fg (foreground) bg (background) colors. primary secondary theme colors also useful accenting main grayscale colors things like hyperlinks, tabset panels, buttons.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"fonts","dir":"Reference","previous_headings":"","what":"Fonts","title":"Create a Bootstrap theme — bs_theme","text":"Use base_font, code_font, heading_font control main typefaces. arguments set new defaults relevant font-family CSS properties, necessarily import relevant font files. set CSS properties import font files, consider using various font_face() helpers. *_font argument may single font font_collection(). font can created font_google(), font_link(), font_face(), can character vector font names following format: single unquoted name (e.g., \"Source Sans Pro\"). single quoted name (e.g., \"'Source Sans Pro'\"). comma-separated list names w/ individual names quoted necessary. (e.g. c(\"Open Sans\", \"'Source Sans Pro'\", \"'Helvetica Neue', Helvetica, sans-serif\")) font_google() sets local = TRUE default, ensures font files downloaded Google Fonts document app rendered. guarantees client access font family, making relatively safe specify just one font family: said, recommend specify multiple \"fallback\" font families, especially relying remote /system fonts available. Fallback fonts useful handling missing fonts, also ensure users experience Flash Invisible Text (FOIT) can quite noticeable remote web fonts slow internet connection.","code":"bs_theme(base_font = font_google(\"Pacifico\", local = TRUE)) bs_theme(base_font = font_collection(font_google(\"Pacifico\", local = FALSE), \"Roboto\", \"sans-serif\"))"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Create a Bootstrap theme — bs_theme","text":"Get Started: Theming introduces theming bslib Shiny apps R Markdown documents. Theming: Bootstrap 5 variables provides searchable reference theming variables available Bootstrap 5. Theming: Custom components gives tutorial creating dynamically themable custom component. bslib's theming capabilities powered sass package. Bootstrap's utility classes can helpful want change appearance element without writing CSS customizing bs_theme().","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_theme.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Create a Bootstrap theme — bs_theme","text":"","code":"if (FALSE) { # rlang::is_interactive() theme <- bs_theme( # Controls the default grayscale palette bg = \"#202123\", fg = \"#B8BCC2\", # Controls the accent (e.g., hyperlink, button, etc) colors primary = \"#EA80FC\", secondary = \"#48DAC6\", base_font = c(\"Grandstander\", \"sans-serif\"), code_font = c(\"Courier\", \"monospace\"), heading_font = \"'Helvetica Neue', Helvetica, sans-serif\", # Can also add lower-level customization \"input-border-color\" = \"#EA80FC\" ) bs_theme_preview(theme) # Lower-level bs_add_*() functions allow you to work more # directly with the underlying Sass code theme <- bs_add_variables(theme, \"my-class-color\" = \"red\") theme <- bs_add_rules(theme, \".my-class { color: $my-class-color }\") }"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":null,"dir":"Reference","previous_headings":"","what":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"bs_theme_dependencies() compiles Bootstrap Sass CSS returns , along HTML dependencies, list htmltools::htmlDependency()s. users need call function directly Shiny & R Markdown perform compilation automatically handed bs_theme(). looking create themeable component, see bs_dependency().","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"","code":"bs_theme_dependencies( theme, sass_options = sass::sass_options_get(output_style = \"compressed\"), cache = sass::sass_cache_get(), jquery = jquerylib::jquery_core(3), precompiled = get_precompiled_option(\"bslib.precompiled\", default = TRUE) )"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"theme bs_theme() object. sass_options sass::sass_options() object. cache can directory use cache, FileCache object created sass_file_cache(), FALSE NULL caching. jquery jquerylib::jquery_core() object. precompiled compiling theme object, first look precompiled CSS file theme_version(). precompiled = TRUE precompiled CSS file exists theme object, fetched immediately compiled. moment, provide precompiled CSS \"stock\" builds Bootstrap (.e., theming additions, Bootswatch themes, non-default sass_options).","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"Returns list HTML dependencies containing Bootstrap CSS, Bootstrap JavaScript, jquery. list may contain additional HTML dependencies bundled theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":"sass-caching-and-precompilation","dir":"Reference","previous_headings":"","what":"Sass caching and precompilation","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"Shiny Developer Mode enabled (setting options(shiny.devmode = TRUE) calling shiny::devmode(TRUE)), sass caching bslib precompilation disabled default; , call bs_theme_dependencies(theme) expands bs_theme_dependencies(theme, cache = F, precompiled = F)). useful local development enabling caching/precompilation may produce incorrect results local changes made bslib's source files.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_dependencies.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Compile Bootstrap Sass with (optional) theming — bs_theme_dependencies","text":"","code":"if (FALSE) { # rlang::is_interactive() # Function to preview the styling a (primary) Bootstrap button library(htmltools) button <- tags$a(class = \"btn btn-primary\", href = \"#\", role = \"button\", \"Hello\") preview_button <- function(theme) { browsable(tags$body(bs_theme_dependencies(theme), button)) } # Latest Bootstrap preview_button(bs_theme()) # Bootstrap 3 preview_button(bs_theme(3)) # Bootswatch 4 minty theme preview_button(bs_theme(4, bootswatch = \"minty\")) # Bootswatch 4 sketchy theme preview_button(bs_theme(4, bootswatch = \"sketchy\")) }"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":null,"dir":"Reference","previous_headings":"","what":"Preview a Bootstrap theme — bs_theme_preview","title":"Preview a Bootstrap theme — bs_theme_preview","text":"Launches example shiny app can used get quick preview bs_theme(), well interactive GUI tweaking main theme settings. Calling bs_theme_preview() arguments starts theme preview app default theme, great way see available theme presets start creating theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Preview a Bootstrap theme — bs_theme_preview","text":"","code":"bs_theme_preview(theme = bs_theme(), ..., with_themer = TRUE)"},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Preview a Bootstrap theme — bs_theme_preview","text":"theme bs_theme() object. ... passed along shiny::runApp(). with_themer whether run app run_with_themer().","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Preview a Bootstrap theme — bs_theme_preview","text":"nothing, function called side-effects (launching application).","code":""},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Preview a Bootstrap theme — bs_theme_preview","text":"app launches subject change new features developed bslib shiny.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bs_theme_preview.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Preview a Bootstrap theme — bs_theme_preview","text":"","code":"if (FALSE) { # rlang::is_interactive() theme <- bs_theme(bg = \"#6c757d\", fg = \"white\", primary = \"orange\") bs_theme_preview(theme) }"},{"path":"https://rstudio.github.io/bslib/reference/bslib-package.html","id":null,"dir":"Reference","previous_headings":"","what":"bslib: Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown' — bslib-package","title":"bslib: Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown' — bslib-package","text":"Simplifies custom 'CSS' styling 'shiny' 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 5 well various 'Bootswatch' themes. interactive widget also provided previewing themes real time.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/bslib-package.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"bslib: Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown' — bslib-package","text":"Maintainer: Carson Sievert carson@posit.co (ORCID) Authors: Joe Cheng joe@posit.co Garrick Aden-Buie garrick@posit.co (ORCID) contributors: Posit Software, PBC [copyright holder, funder] Bootstrap contributors (Bootstrap library) [contributor] Twitter, Inc (Bootstrap library) [copyright holder] Javi Aguilar (Bootstrap colorpicker library) [contributor, copyright holder] Thomas Park (Bootswatch library) [contributor, copyright holder] PayPal (Bootstrap accessibility plugin) [contributor, copyright holder]","code":""},{"path":"https://rstudio.github.io/bslib/reference/builtin_themes.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain a list of all available built-in bslib themes. — builtin_themes","title":"Obtain a list of all available built-in bslib themes. — builtin_themes","text":"Obtain list available built-bslib themes.","code":""},{"path":"https://rstudio.github.io/bslib/reference/builtin_themes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain a list of all available built-in bslib themes. — builtin_themes","text":"","code":"builtin_themes(version = version_default(), full_path = FALSE)"},{"path":"https://rstudio.github.io/bslib/reference/builtin_themes.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain a list of all available built-in bslib themes. — builtin_themes","text":"version major version Bootstrap. full_path whether return path installed theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/builtin_themes.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain a list of all available built-in bslib themes. — builtin_themes","text":"Returns character vector built-themes provided bslib.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":null,"dir":"Reference","previous_headings":"","what":"A Bootstrap card component — card","title":"A Bootstrap card component — card","text":"general purpose container grouping related UI elements together border optional padding. learn card()s, see Cards article articles listed References section .","code":""},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A Bootstrap card component — card","text":"","code":"card( ..., full_screen = FALSE, height = NULL, max_height = NULL, min_height = NULL, fill = TRUE, class = NULL, wrapper = card_body )"},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A Bootstrap card component — card","text":"... Unnamed arguments can valid child htmltools tag (includes card items card_body(). Named arguments become HTML attributes returned UI element. full_screen TRUE, icon appear hovering card body. Clicking icon expands card fit viewport size. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()). max_height, min_height valid CSS unit (e.g., max_height=\"200px\"). apply card made full_screen (case, consider setting max_height card_body()). fill Whether allow card grow/shrink fit fillable container opinionated height (e.g., page_fillable()). class Additional CSS classes returned UI element. wrapper function (returns UI element) call unnamed arguments ... already card item(s) (like card_header(), card_body(), etc.). Note non-card items grouped together one wrapper call (e.g. given card(\"\", \"b\", card_body(\"c\"), \"d\"), wrapper called twice, \"\" \"b\" \"d\").","code":""},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"A Bootstrap card component — card","text":"htmltools::div() tag.","code":""},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"A Bootstrap card component — card","text":"Several articles bslib website feature card component: Cards Get Started: Dashboards Get Started: Project Column-based layouts Filling layouts: Full-screen cards","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/card.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"A Bootstrap card component — card","text":"","code":"if (FALSE) { # rlang::is_interactive() library(htmltools) card( full_screen = TRUE, card_header( \"This is the header\" ), card_body( p(\"This is the body.\"), p(\"This is still the body.\") ), card_footer( \"This is the footer\" ) ) }"},{"path":"https://rstudio.github.io/bslib/reference/card_body.html","id":null,"dir":"Reference","previous_headings":"","what":"Card items — card_body","title":"Card items — card_body","text":"Components designed provided direct children card(). general overview card() API, see Cards article articles listed References section card() documentation.","code":""},{"path":"https://rstudio.github.io/bslib/reference/card_body.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Card items — card_body","text":"","code":"card_body( ..., fillable = TRUE, min_height = NULL, max_height = NULL, max_height_full_screen = max_height, height = NULL, padding = NULL, gap = NULL, fill = TRUE, class = NULL ) card_title(..., container = htmltools::h5) card_header(..., class = NULL, container = htmltools::div) card_footer(..., class = NULL) card_image( file, ..., href = NULL, border_radius = c(\"top\", \"bottom\", \"all\", \"none\"), mime_type = NULL, class = NULL, height = NULL, fill = TRUE, width = NULL, container = card_body ) as.card_item(x) is.card_item(x)"},{"path":"https://rstudio.github.io/bslib/reference/card_body.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Card items — card_body","text":"... Unnamed arguments can valid child htmltools tag. Named arguments become HTML attributes returned UI element. fillable Whether card item fillable (.e. flexbox) container. min_height, max_height, max_height_full_screen valid CSS length unit. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()). padding Padding use body. can numeric vector (interpreted pixels) character vector valid CSS lengths. length can one four. one, value used four sides. two, first value used top bottom, second value used left right. three, first used top, second left right, third bottom. four, values interpreted top, right, bottom, left respectively. gap CSS length unit defining gap (.e., spacing) elements provided .... argument applicable fillable = TRUE fill Whether allow element grow/shrink fit card() container. class Additional CSS classes returned UI element. container function generate HTML element contain image. file file path pointing image. image base64 encoded provided src attribute . Alternatively, may set value NULL provide src . href optional URL link . border_radius apply border-radius image. mime_type mime type file. width valid CSS unit (e.g., width=\"100%\"). x object test (coerce ) card item.","code":""},{"path":"https://rstudio.github.io/bslib/reference/card_body.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Card items — card_body","text":"htmltools::div() tag.","code":""},{"path":"https://rstudio.github.io/bslib/reference/card_body.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Card items — card_body","text":"card_body(): general container \"main content\" card(). card_title(): Similar card_header() without border background color. card_header(): header (border background color) card(). Typically appears card_body(). card_footer(): header (border background color) card(). Typically appears card_body(). card_image(): Include static (.e., pre-generated) images. .card_item(): Mark object card item. prevent card() putting object inside wrapper (.e., card_body()).","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/deprecated.html","id":null,"dir":"Reference","previous_headings":"","what":"Deprecated functions — deprecated","title":"Deprecated functions — deprecated","text":"functions deprecated remain backwards compatibility.","code":""},{"path":"https://rstudio.github.io/bslib/reference/deprecated.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deprecated functions — deprecated","text":"","code":"bs_theme_new(...) bs_theme_clear(...) bs_theme_get(...) bs_theme_set(...) bs_theme_base_colors(...) bs_theme_accent_colors(...) bs_theme_fonts(...) bs_theme_add_variables(...) bs_theme_add(...) bs_theme_get_variables(...) bootstrap(theme = bs_theme_get(), ...) bootstrap_sass(rules = list(), theme = bs_theme_get(), ...) bs_add_declarations(theme, declarations) card_body_fill(...) page_fill(...) nav(...) nav_content(...) navs_tab(...) navs_pill(...) navs_pill_list(...) navs_hidden(...) navs_bar(...) navs_tab_card(...) navs_pill_card(...)"},{"path":"https://rstudio.github.io/bslib/reference/deprecated.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Deprecated functions — deprecated","text":"bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/deprecated.html","id":"navigation-containers","dir":"Reference","previous_headings":"","what":"Navigation Containers","title":"Deprecated functions — deprecated","text":"Several functions navigation containers renamed version 0.5.0: nav() renamed nav_panel() nav_content() renamed nav_panel_hidden() navs_tab() renamed navset_tab() navs_pill() renamed navset_pill() navs_pill_list() renamed navset_pill_list() navs_hidden() renamed navset_hidden() navs_bar() renamed navset_bar() navs_tab_card() renamed navset_card_tab() navs_pill_card() renamed navset_card_pill()","code":""},{"path":"https://rstudio.github.io/bslib/reference/font_face.html","id":null,"dir":"Reference","previous_headings":"","what":"Helpers for importing web fonts — font_face","title":"Helpers for importing web fonts — font_face","text":"font_google(), font_link(), font_face() re-exported sass package (see sass::font_face() details). quick example use functions bs_theme(), see examples section .","code":""},{"path":"https://rstudio.github.io/bslib/reference/font_face.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Helpers for importing web fonts — font_face","text":"","code":"# If you have an internet connection, running the following code # will download, cache, and import the relevant Google Font files # for local use theme <- bs_theme( base_font = font_google(\"Fira Sans\"), code_font = font_google(\"Fira Code\"), heading_font = font_google(\"Fredoka One\") ) if (interactive()) { bs_theme_preview(theme) } # Three different yet equivalent ways of importing a remotely-hosted Google Font a <- font_google(\"Crimson Pro\", wght = \"200..900\", local = FALSE) b <- font_link( \"Crimson Pro\", href = \"https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@200..900\" ) url <- \"https://fonts.gstatic.com/s/crimsonpro/v13/q5uDsoa5M_tv7IihmnkabARboYF6CsKj.woff2\" c <- font_face( family = \"Crimson Pro\", style = \"normal\", weight = \"200 900\", src = paste0(\"url(\", url, \") format('woff2')\") ) theme <- bs_theme(base_font = c) if (interactive()) { bs_theme_preview(theme) }"},{"path":"https://rstudio.github.io/bslib/reference/html-browse.html","id":null,"dir":"Reference","previous_headings":"","what":"Print a bslib page/fragment — print.bslib_fragment","title":"Print a bslib page/fragment — print.bslib_fragment","text":"Print bslib page/fragment","code":""},{"path":"https://rstudio.github.io/bslib/reference/html-browse.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Print a bslib page/fragment — print.bslib_fragment","text":"","code":"# S3 method for bslib_fragment print(x, ...) # S3 method for bslib_page print(x, ...)"},{"path":"https://rstudio.github.io/bslib/reference/html-browse.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Print a bslib page/fragment — print.bslib_fragment","text":"x bslib page/fragment. ... passed along underlying print method.","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_dark_mode.html","id":null,"dir":"Reference","previous_headings":"","what":"Dark mode input control — input_dark_mode","title":"Dark mode input control — input_dark_mode","text":"Creates button toggles dark light modes, specifically toggling light dark Bootstrap color modes -- new feature added Bootstrap 5.3.","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_dark_mode.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dark mode input control — input_dark_mode","text":"","code":"input_dark_mode(..., id = NULL, mode = NULL) toggle_dark_mode(mode = NULL, ..., session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/input_dark_mode.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dark mode input control — input_dark_mode","text":"... Additional attributes passed input control UI, class, style, etc. toggle_dark_mode(), ... included future extensibility currently ignored. id optional input id, required reactively read current color mode. mode initial mode dark mode switch. default set NULL, user's system settings preferred color scheme used. Otherwise, set \"light\" \"dark\" force particular initial mode. session Shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_dark_mode.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Dark mode input control — input_dark_mode","text":"Returns UI element dark mode switch input control. server value received input corresponding id string value current color mode (\"light\" \"dark\").","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_dark_mode.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Dark mode input control — input_dark_mode","text":"input_dark_mode(): Create dark mode switch input control toggle_dark_mode(): Programmatically toggle set current light dark color mode.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/input_switch.html","id":null,"dir":"Reference","previous_headings":"","what":"Switch input control — input_switch","title":"Switch input control — input_switch","text":"Create -style switch control specifying logical values.","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_switch.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Switch input control — input_switch","text":"","code":"input_switch(id, label, value = FALSE, width = NULL) update_switch(id, label = NULL, value = NULL, session = get_current_session()) toggle_switch(id, value = NULL, session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/input_switch.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Switch input control — input_switch","text":"id input id. label label switch. value Whether switch checked default. width valid CSS unit (e.g., width=\"200px\"). session shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/input_switch.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Switch input control — input_switch","text":"Returns UI element switch input control. server value received input corresponding id logical (TRUE/FALSE) value.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/input_switch.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Switch input control — input_switch","text":"","code":"if (FALSE) { # rlang::is_interactive() library(shiny) library(bslib) ui <- page_fixed( title = \"Keyboard Settings\", h2(\"Keyboard Settings\"), input_switch(\"auto_capitalization\", \"Auto-Capitalization\", TRUE), input_switch(\"auto_correction\", \"Auto-Correction\", TRUE), input_switch(\"check_spelling\", \"Check Spelling\", TRUE), input_switch(\"smart_punctuation\", \"Smart Punctuation\"), h2(\"Preview\"), verbatimTextOutput(\"preview\") ) server <- function(input, output, session) { output$preview <- renderPrint({ list( auto_capitalization = input$auto_capitalization, auto_correction = input$auto_correction, check_spelling = input$check_spelling, smart_punctuation = input$smart_punctuation ) }) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/layout_column_wrap.html","id":null,"dir":"Reference","previous_headings":"","what":"Column-first uniform grid layouts — layout_column_wrap","title":"Column-first uniform grid layouts — layout_column_wrap","text":"Wraps 1d sequence UI elements 2d grid. number columns (rows) grid dependent column width well size display. explanation illustrative examples, see References section .","code":""},{"path":"https://rstudio.github.io/bslib/reference/layout_column_wrap.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Column-first uniform grid layouts — layout_column_wrap","text":"","code":"layout_column_wrap( ..., width = \"200px\", fixed_width = FALSE, heights_equal = c(\"all\", \"row\"), fill = TRUE, fillable = TRUE, height = NULL, height_mobile = NULL, gap = NULL, class = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/layout_column_wrap.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Column-first uniform grid layouts — layout_column_wrap","text":"... Unnamed arguments UI elements (e.g., card()). Named arguments become attributes containing htmltools::tag element. width desired width card, can following: (unit-less) number 0 1. specified 1/num, num represents number desired columns. CSS length unit Either minimum (fixed_width=FALSE) fixed width (fixed_width=TRUE). NULL Allows power users set grid-template-columns CSS property manually, either via style attribute CSS stylesheet. fixed_width width greater 1 CSS length unit, e.g. \"200px\", fixed_width indicates whether width value represents absolute size column (fixed_width=TRUE) minimum size column (fixed_width=FALSE). fixed_width=FALSE, new columns added row width space available columns never exceed container viewport size. fixed_width=TRUE, columns exactly width wide, may result columns overflowing parent container. heights_equal \"\" (default), every card every row grid height. \"row\", every card row grid height, heights may vary rows. fill Whether allow layout grow/shrink fit fillable container opinionated height (e.g., page_fillable()). fillable Whether element wrapped fillable container. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()). height_mobile valid CSS unit use height mobile devices (narrow windows). gap CSS length unit defining gap (.e., spacing) elements provided .... argument applicable fillable = TRUE class Additional CSS classes returned UI element.","code":""},{"path":"https://rstudio.github.io/bslib/reference/layout_column_wrap.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Column-first uniform grid layouts — layout_column_wrap","text":"bslib website features layout_column_wrap() two places: Column-based layouts Cards: Multiple cards","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/layout_column_wrap.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Column-first uniform grid layouts — layout_column_wrap","text":"","code":"if (FALSE) { # rlang::is_interactive() x <- card(\"A simple card\") # Always has 2 columns (on non-mobile) layout_column_wrap(width = 1/2, x, x, x) # Automatically lays out three cards into columns # such that each column is at least 200px wide: layout_column_wrap(x, x, x) # To use larger column widths by default, set `width`. # This example has 3 columns when the screen is at least 900px wide: layout_column_wrap(width = \"300px\", x, x, x) }"},{"path":"https://rstudio.github.io/bslib/reference/layout_columns.html","id":null,"dir":"Reference","previous_headings":"","what":"Responsive 12-column grid layouts — layout_columns","title":"Responsive 12-column grid layouts — layout_columns","text":"Create responsive, column-based grid layouts, based 12-column grid.","code":""},{"path":"https://rstudio.github.io/bslib/reference/layout_columns.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Responsive 12-column grid layouts — layout_columns","text":"","code":"layout_columns( ..., col_widths = NA, row_heights = NULL, fill = TRUE, fillable = TRUE, gap = NULL, class = NULL, height = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/layout_columns.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Responsive 12-column grid layouts — layout_columns","text":"... Unnamed arguments UI elements (e.g., card()). Named arguments become attributes containing htmltools::tag element. col_widths One following: NA (default): Automatically determines sensible number columns based number children. numeric vector integers 1 12, element represents number columns relevant UI element. Elements happen go beyond 12 columns wrap onto next row. example, col_widths = c(4, 8, 12) allocates 4 columns first element, 8 columns second element, 12 columns third element (wraps next row). Negative values also allowed, treated empty columns. example, col_widths = c(-2, 8, -2) allocate 8 columns element (2 empty columns either side). breakpoints() object, breakpoint may either . row_heights One following: numeric vector, value represents fractional unit (fr) height relevant row. rows values provided, pattern repeat. example, row_heights = c(1, 2) allows even rows take twice much space odd rows. list numeric CSS length units, value represents height relevant row. rows needed values provided, pattern repeat. example, row_heights = list(\"auto\", 1) allows height odd rows driven contents even rows 1fr. character vector/string CSS length units. case, value supplied directly grid-auto-rows. breakpoints() object, breakpoint may either . fill Whether allow layout grow/shrink fit fillable container opinionated height (e.g., page_fillable()). fillable Whether element wrapped fillable container. gap CSS length unit defining gap (.e., spacing) elements provided .... argument applicable fillable = TRUE class Additional CSS classes returned UI element. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()).","code":""},{"path":"https://rstudio.github.io/bslib/reference/layout_columns.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Responsive 12-column grid layouts — layout_columns","text":"Column-based layouts bslib website.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/layout_columns.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Responsive 12-column grid layouts — layout_columns","text":"","code":"if (FALSE) { # rlang::is_interactive() x <- card(\"A simple card\") page_fillable( layout_columns(x, x, x, x) ) page_fillable( layout_columns( col_widths = c(6, 6, 12), x, x, x ) ) page_fillable( layout_columns( col_widths = c(6, 6, -2, 8), row_heights = c(1, 3), x, x, x ) ) page_fillable( fillable_mobile = TRUE, layout_columns( col_widths = breakpoints( sm = c(12, 12, 12), md = c(6, 6, 12), lg = c(4, 4, 4) ), x, x, x ) ) }"},{"path":"https://rstudio.github.io/bslib/reference/nav-items.html","id":null,"dir":"Reference","previous_headings":"","what":"Navigation items — nav-items","title":"Navigation items — nav-items","text":"Create nav item(s) use inside nav containers (e.g., navset_tab(), navset_bar(), etc).","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav-items.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Navigation items — nav-items","text":"","code":"nav_panel(title, ..., value = title, icon = NULL) nav_panel_hidden(value, ..., icon = NULL) nav_menu(title, ..., value = title, icon = NULL, align = c(\"left\", \"right\")) nav_item(...) nav_spacer()"},{"path":"https://rstudio.github.io/bslib/reference/nav-items.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Navigation items — nav-items","text":"title title display. Can character string UI elements (.e., tags). ... Depends function: nav_panel() nav_panel_hidden(): UI elements (.e., tags) display item active. nav_menu(): collection nav items (e.g., nav_panel(), nav_item()). nav_item(): UI elements (.e., tags) place directly navigation panel (e.g., search forms, links external content, etc). value character string assign nav item. value may supplied relevant container's selected argument order show particular nav item's content immediately page load. value also useful programmatically updating selected content via nav_select(), nav_hide(), etc (updating selected tabs way often useful showing/hiding panels content via UI controls like shiny::radioButtons() -- scenario, consider using nav_panel_hidden() navset_hidden()). icon Optional icon appear next nav item's title. align horizontal alignment dropdown menu relative dropdown toggle.","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav-items.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Navigation items — nav-items","text":"nav item may passed nav container (e.g. navset_tab()).","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav-items.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Navigation items — nav-items","text":"nav_panel(): Content display given item selected. nav_panel_hidden(): Create nav content use inside navset_hidden() (creating custom navigation controls via navs_select()), nav_menu(): Create menu nav items. nav_item(): Place arbitrary content navigation panel (e.g., search forms, links external content, etc.) nav_spacer(): Adding spacing nav items.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/nav_prepend.html","id":null,"dir":"Reference","previous_headings":"","what":"Append or prepend nav item to a dropdown menu — nav_prepend","title":"Append or prepend nav item to a dropdown menu — nav_prepend","text":"Exported use shiny::prependTab()/shiny::appendTab(). functions superseded nav_insert() (.e., shiny::insertTab()), since can everything functions (.e., add nav_panel() start end nav_menu()) (.e., insert nav_panel() anywhere inside nav container).","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav_prepend.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Append or prepend nav item to a dropdown menu — nav_prepend","text":"","code":"nav_prepend( id, nav, menu_title, select = FALSE, session = get_current_session() ) nav_append( id, nav, menu_title, select = FALSE, session = get_current_session() )"},{"path":"https://rstudio.github.io/bslib/reference/nav_prepend.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Append or prepend nav item to a dropdown menu — nav_prepend","text":"id character string used identify nav container. nav nav_panel() item. menu_title title nav_menu(). select nav selected upon inserted? session shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav_select.html","id":null,"dir":"Reference","previous_headings":"","what":"Dynamically update nav containers — nav_select","title":"Dynamically update nav containers — nav_select","text":"Functions dynamically updating nav containers (e.g., select, insert, remove nav items). functions require id nav container specified must called within active Shiny session.","code":""},{"path":"https://rstudio.github.io/bslib/reference/nav_select.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Dynamically update nav containers — nav_select","text":"","code":"nav_select(id, selected = NULL, session = get_current_session()) nav_insert( id, nav, target = NULL, position = c(\"after\", \"before\"), select = FALSE, session = get_current_session() ) nav_remove(id, target, session = get_current_session()) nav_show(id, target, select = FALSE, session = get_current_session()) nav_hide(id, target, session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/nav_select.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Dynamically update nav containers — nav_select","text":"id character string used identify nav container. selected character string used identify particular nav_panel() item. session shiny session object (default almost always used). nav nav_panel() item. target value existing nav_panel() item, next tab added. removing: value nav_panel() item want remove. position nav added target? select nav selected upon inserted?","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/nav_select.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Dynamically update nav containers — nav_select","text":"","code":"can_browse <- function() rlang::is_interactive() && require(\"shiny\") # Selecting a tab if (can_browse()) { shinyApp( page_fluid( radioButtons(\"item\", \"Choose\", c(\"A\", \"B\")), navset_hidden( id = \"container\", nav_panel_hidden(\"A\", \"a\"), nav_panel_hidden(\"B\", \"b\") ) ), function(input, output) { observe(nav_select(\"container\", input$item)) } ) } # Inserting and removing if (can_browse()) { ui <- page_fluid( actionButton(\"add\", \"Add 'Dynamic' tab\"), actionButton(\"remove\", \"Remove 'Foo' tab\"), navset_tab( id = \"tabs\", nav_panel(\"Hello\", \"hello\"), nav_panel(\"Foo\", \"foo\"), nav_panel(\"Bar\", \"bar tab\") ) ) server <- function(input, output) { observeEvent(input$add, { nav_insert( \"tabs\", target = \"Bar\", select = TRUE, nav_panel(\"Dynamic\", \"Dynamically added content\") ) }) observeEvent(input$remove, { nav_remove(\"tabs\", target = \"Foo\") }) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":null,"dir":"Reference","previous_headings":"","what":"Navigation containers — navset","title":"Navigation containers — navset","text":"Render collection nav_panel() items container.","code":""},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Navigation containers — navset","text":"","code":"navset_tab(..., id = NULL, selected = NULL, header = NULL, footer = NULL) navset_pill(..., id = NULL, selected = NULL, header = NULL, footer = NULL) navset_underline(..., id = NULL, selected = NULL, header = NULL, footer = NULL) navset_pill_list( ..., id = NULL, selected = NULL, header = NULL, footer = NULL, well = TRUE, fluid = TRUE, widths = c(4, 8) ) navset_hidden(..., id = NULL, selected = NULL, header = NULL, footer = NULL) navset_bar( ..., title = NULL, id = NULL, selected = NULL, sidebar = NULL, fillable = TRUE, gap = NULL, padding = NULL, position = c(\"static-top\", \"fixed-top\", \"fixed-bottom\"), header = NULL, footer = NULL, bg = NULL, inverse = \"auto\", collapsible = TRUE, fluid = TRUE ) navset_card_tab( ..., id = NULL, selected = NULL, title = NULL, sidebar = NULL, header = NULL, footer = NULL, height = NULL, full_screen = FALSE, wrapper = card_body ) navset_card_pill( ..., id = NULL, selected = NULL, title = NULL, sidebar = NULL, header = NULL, footer = NULL, height = NULL, placement = c(\"above\", \"below\"), full_screen = FALSE, wrapper = card_body ) navset_card_underline( ..., id = NULL, selected = NULL, title = NULL, sidebar = NULL, header = NULL, footer = NULL, height = NULL, full_screen = FALSE, wrapper = card_body )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Navigation containers — navset","text":"... collection nav_panel() items. id character string used dynamically updating container (see nav_select()). selected character string matching value particular nav_panel() item selected default. header UI element(s) (tags) display nav content. footer UI element(s) (tags) display nav content. well TRUE place well (gray rounded rectangle) around navigation list. fluid TRUE use fluid layout; FALSE use fixed layout. widths Column widths navigation list tabset content areas respectively. title (left-aligned) title place card header/footer. provided, nav items automatically right aligned. sidebar sidebar() component display every nav_panel() page. fillable Whether allow fill items grow/shrink fit browser window. TRUE, nav_panel() pages fillable. character vector, matching value nav_panel()s filled, may also provided. Note , sidebar provided, fillable makes main content portion fillable. gap CSS length unit defining gap (.e., spacing) elements provided .... padding Padding use body. can numeric vector (interpreted pixels) character vector valid CSS lengths. length can one four. one, value used four sides. two, first value used top bottom, second value used left right. three, first used top, second left right, third bottom. four, values interpreted top, right, bottom, left respectively. position Determines whether navbar displayed top page normal scrolling behavior (\"static-top\"), pinned top (\"fixed-top\"), pinned bottom (\"fixed-bottom\"). Note using \"fixed-top\" \"fixed-bottom\" cause navbar overlay body content, unless add padding, e.g.: tags$style(type=\"text/css\", \"body {padding-top: 70px;}\") bg CSS color use navbar's background color. inverse Either TRUE light text color FALSE dark text color. \"auto\" (default), best contrast bg chosen. collapsible TRUE automatically collapse navigation elements expandable menu mobile devices narrow window widths. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()). full_screen TRUE, icon appear hovering card body. Clicking icon expands card fit viewport size. wrapper function (returns UI element) call unnamed arguments ... already card item(s) (like card_header(), card_body(), etc.). Note non-card items grouped together one wrapper call (e.g. given card(\"\", \"b\", card_body(\"c\"), \"d\"), wrapper called twice, \"\" \"b\" \"d\"). placement placement nav items relative content.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"a-basic-example","dir":"Reference","previous_headings":"","what":"A basic example","title":"Navigation containers — navset","text":"first example creates simple tabbed navigation container two tabs. tab name content tab specified nav_panel() calls navset_tab() creates tabbed navigation around two tabs. rest examples, include links among tabs (pills) navigation controls.","code":"library(htmltools) navset_tab( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")) ) link_shiny <- tags$a(shiny::icon(\"github\"), \"Shiny\", href = \"https://github.com/rstudio/shiny\", target = \"_blank\") link_posit <- tags$a(shiny::icon(\"r-project\"), \"Posit\", href = \"https://posit.co\", target = \"_blank\")"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-tab-","dir":"Reference","previous_headings":"","what":"navset_tab()","title":"Navigation containers — navset","text":"can fully customize controls navigation component. example, added direct link Shiny repository using nav_item(). also included dropdown menu using nav_menu() containing option select third tab panel another direct link Posit's website. Finally, separated primary tabs left direct link dropdown menu right using nav_spacer().","code":"navset_tab( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-pill-","dir":"Reference","previous_headings":"","what":"navset_pill()","title":"Navigation containers — navset","text":"navset_pill() creates navigation container behaves exactly like navset_tab(), tab toggles pills button-shaped.","code":"navset_pill( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-underline-","dir":"Reference","previous_headings":"","what":"navset_underline()","title":"Navigation containers — navset","text":"navset_underline() creates navigation container behaves exactly like navset_tab() navset_pill(), active/focused navigation links styled underline.","code":"navset_underline( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-card-tab-","dir":"Reference","previous_headings":"","what":"navset_card_tab()","title":"Navigation containers — navset","text":"tabbed navigation container can also used card() component thanks navset_card_tab(). Learn approach article Cards, including add shared sidebar tabs card using sidebar argument navset_card_tab().","code":"navset_card_tab( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-card-pill-","dir":"Reference","previous_headings":"","what":"navset_card_pill()","title":"Navigation containers — navset","text":"Similar navset_pill(), navset_card_pill() provides pill-shaped variant navset_card_tab(). can use placement argument position navbar \"\" \"\" card body.","code":"navset_card_pill( placement = \"above\", nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-card-underline-","dir":"Reference","previous_headings":"","what":"navset_card_underline()","title":"Navigation containers — navset","text":"navset_card_underline() provides card-based variant navset_underline().","code":"navset_card_underline( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"navset-pill-list-","dir":"Reference","previous_headings":"","what":"navset_pill_list()","title":"Navigation containers — navset","text":"Furthermore, navset_pill_list() creates vertical list navigation controls adjacent , rather top , tab content panels.","code":"navset_pill_list( nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":"https://rstudio.github.io/bslib/reference/navset.html","id":"page-navbar-","dir":"Reference","previous_headings":"","what":"page_navbar()","title":"Navigation containers — navset","text":"Finally, page_navbar() provides full-page navigation container similar navset_underline() nav_panel() treated full page content navigation controls appear top-level navigation bar. Note also underline styling can removed via underline argument.","code":"page_navbar( title = \"My App\", bg = \"#0062cc\", underline = TRUE, nav_panel(title = \"One\", p(\"First tab content.\")), nav_panel(title = \"Two\", p(\"Second tab content.\")), nav_panel(title = \"Three\", p(\"Third tab content\")), nav_spacer(), nav_menu( title = \"Links\", align = \"right\", nav_item(link_shiny), nav_item(link_posit) ) )"},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/page.html","id":null,"dir":"Reference","previous_headings":"","what":"Modern Bootstrap page layouts — page","title":"Modern Bootstrap page layouts — page","text":"functions small wrappers around shiny's page constructors (.e., shiny::fluidPage(), shiny::navbarPage(), etc) differ two ways: theme parameter defaults bslib's recommended version Bootstrap (new projects). return value rendered static HTML page printed interactively console.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Modern Bootstrap page layouts — page","text":"","code":"page(..., title = NULL, theme = bs_theme(), lang = NULL) page_fluid(..., title = NULL, theme = bs_theme(), lang = NULL) page_fixed(..., title = NULL, theme = bs_theme(), lang = NULL)"},{"path":"https://rstudio.github.io/bslib/reference/page.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Modern Bootstrap page layouts — page","text":"... UI elements page. Named arguments become HTML attributes. title browser window title (defaults host URL page) theme bs_theme() object. lang ISO 639-1 language code HTML page, \"en\" \"ko\". used lang tag, . default (NULL) results empty string.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Modern Bootstrap page layouts — page","text":"page_fluid(): bslib wrapper shiny::fluidPage(), fluid Bootstrap-based page layout extends full viewport width. page_fixed(): bslib wrapper shiny::fixedPage(), fixed Bootstrap-based page layout page content container centered horizontally width constrained.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/page_fillable.html","id":null,"dir":"Reference","previous_headings":"","what":"A screen-filling page layout — page_fillable","title":"A screen-filling page layout — page_fillable","text":"Bootstrap-based page layout whose contents fill full height width browser window.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_fillable.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A screen-filling page layout — page_fillable","text":"","code":"page_fillable( ..., padding = NULL, gap = NULL, fillable_mobile = FALSE, title = NULL, theme = bs_theme(), lang = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/page_fillable.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A screen-filling page layout — page_fillable","text":"... UI elements page. Named arguments become HTML attributes. padding Padding use body. can numeric vector (interpreted pixels) character vector valid CSS lengths. length can one four. one, value used four sides. two, first value used top bottom, second value used left right. three, first used top, second left right, third bottom. four, values interpreted top, right, bottom, left respectively. gap CSS length unit defining gap (.e., spacing) elements provided .... fillable_mobile Whether page fill viewport's height mobile devices (.e., narrow windows). title browser window title (defaults host URL page) theme bs_theme() object. lang ISO 639-1 language code HTML page, \"en\" \"ko\". used lang tag, . default (NULL) results empty string.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_fillable.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"A screen-filling page layout — page_fillable","text":"Filling Layouts bslib website. Getting Started Dashboards bslib website.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/page_fillable.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"A screen-filling page layout — page_fillable","text":"","code":"if (FALSE) { # rlang::is_interactive() library(shiny) library(ggplot2) ui <- page_fillable( h1(\"Example\", code(\"mtcars\"), \"dashboard\"), layout_columns( card( full_screen = TRUE, card_header(\"Number of forward gears\"), plotOutput(\"gear\") ), card( full_screen = TRUE, card_header(\"Number of carburetors\"), plotOutput(\"carb\") ) ), card( full_screen = TRUE, card_header(\"Weight vs. Quarter Mile Time\"), layout_sidebar( sidebar = sidebar( varSelectInput(\"var_x\", \"Compare to qsec:\", mtcars[-7], \"wt\"), varSelectInput(\"color\", \"Color by:\", mtcars[-7], \"cyl\"), position = \"right\" ), plotOutput(\"var_vs_qsec\") ) ) ) server <- function(input, output) { for (var in c(\"cyl\", \"vs\", \"am\", \"gear\", \"carb\")) { mtcars[[var]] <- as.factor(mtcars[[var]]) } output$gear <- renderPlot({ ggplot(mtcars, aes(gear)) + geom_bar() }) output$carb <- renderPlot({ ggplot(mtcars, aes(carb)) + geom_bar() }) output$var_vs_qsec <- renderPlot({ req(input$var_x, input$color) ggplot(mtcars) + aes(y = qsec, x = !!input$var_x, color = !!input$color) + geom_point() }) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/page_navbar.html","id":null,"dir":"Reference","previous_headings":"","what":"Multi-page app with a top navigation bar — page_navbar","title":"Multi-page app with a top navigation bar — page_navbar","text":"Create page contains top level navigation bar can used toggle set nav_panel() elements. Use page layout create effect multi-page app, app's content broken multiple \"pages\" can navigated via top navigation bar.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_navbar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Multi-page app with a top navigation bar — page_navbar","text":"","code":"page_navbar( ..., title = NULL, id = NULL, selected = NULL, sidebar = NULL, fillable = TRUE, fillable_mobile = FALSE, gap = NULL, padding = NULL, position = c(\"static-top\", \"fixed-top\", \"fixed-bottom\"), header = NULL, footer = NULL, bg = NULL, inverse = \"auto\", underline = TRUE, collapsible = TRUE, fluid = TRUE, theme = bs_theme(), window_title = NA, lang = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/page_navbar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Multi-page app with a top navigation bar — page_navbar","text":"... collection nav_panel() items. title (left-aligned) title place card header/footer. provided, nav items automatically right aligned. id character string used dynamically updating container (see nav_select()). selected character string matching value particular nav_panel() item selected default. sidebar sidebar() component display every nav_panel() page. fillable Whether allow fill items grow/shrink fit browser window. TRUE, nav_panel() pages fillable. character vector, matching value nav_panel()s filled, may also provided. Note , sidebar provided, fillable makes main content portion fillable. fillable_mobile Whether fillable pages fill viewport's height mobile devices (.e., narrow windows). gap CSS length unit defining gap (.e., spacing) elements provided .... padding Padding use body. can numeric vector (interpreted pixels) character vector valid CSS lengths. length can one four. one, value used four sides. two, first value used top bottom, second value used left right. three, first used top, second left right, third bottom. four, values interpreted top, right, bottom, left respectively. position Determines whether navbar displayed top page normal scrolling behavior (\"static-top\"), pinned top (\"fixed-top\"), pinned bottom (\"fixed-bottom\"). Note using \"fixed-top\" \"fixed-bottom\" cause navbar overlay body content, unless add padding, e.g.: tags$style(type=\"text/css\", \"body {padding-top: 70px;}\") header UI element(s) (tags) display nav content. footer UI element(s) (tags) display nav content. bg CSS color use navbar's background color. inverse Either TRUE light text color FALSE dark text color. \"auto\" (default), best contrast bg chosen. underline Whether add underline styling page links active focused. collapsible TRUE automatically collapse navigation elements expandable menu mobile devices narrow window widths. fluid TRUE use fluid layout; FALSE use fixed layout. theme bs_theme() object. window_title browser window title. default value, NA, means use character strings appear title (none found, host URL page displayed default). lang ISO 639-1 language code HTML page, \"en\" \"ko\". used lang tag, . default (NULL) results empty string.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_navbar.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Multi-page app with a top navigation bar — page_navbar","text":"Getting Started Dashboards bslib website.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/page_navbar.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Multi-page app with a top navigation bar — page_navbar","text":"","code":"if (FALSE) { # rlang::is_interactive() library(shiny) library(bslib) link_shiny <- tags$a( shiny::icon(\"github\"), \"Shiny\", href = \"https://github.com/rstudio/shiny\", target = \"_blank\" ) link_posit <- tags$a( shiny::icon(\"r-project\"), \"Posit\", href = \"https://posit.co\", target = \"_blank\" ) ui <- page_navbar( title = \"My App\", nav_panel(title = \"One\", p(\"First page content.\")), nav_panel(title = \"Two\", p(\"Second page content.\")), nav_panel(\"Three\", p(\"Third page content.\")), nav_spacer(), nav_menu( title = \"Links\", align = \"right\", nav_item(link_shiny), nav_item(link_posit) ) ) server <- function(...) { } # not used in this example shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/page_sidebar.html","id":null,"dir":"Reference","previous_headings":"","what":"A sidebar page (i.e., dashboard) — page_sidebar","title":"A sidebar page (i.e., dashboard) — page_sidebar","text":"Create dashboard layout full-bleed header (title) sidebar().","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_sidebar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"A sidebar page (i.e., dashboard) — page_sidebar","text":"","code":"page_sidebar( ..., sidebar = NULL, title = NULL, fillable = TRUE, fillable_mobile = FALSE, theme = bs_theme(), window_title = NA, lang = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/page_sidebar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"A sidebar page (i.e., dashboard) — page_sidebar","text":"... UI elements display 'main' content area (.e., next sidebar). arguments passed layout_sidebar(), details. sidebar sidebar() object. title string, number, htmltools::tag() child display title (just sidebar). fillable Whether main content area considered fillable (.e., flexbox) container. fillable_mobile Whether page fill viewport's height mobile devices (.e., narrow windows). theme bs_theme() object. window_title browser window title. default value, NA, means use character strings appear title (none found, host URL page displayed default). lang ISO 639-1 language code HTML page, \"en\" \"ko\". used lang tag, . default (NULL) results empty string.","code":""},{"path":"https://rstudio.github.io/bslib/reference/page_sidebar.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"A sidebar page (i.e., dashboard) — page_sidebar","text":"Getting Started Dashboards bslib website.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/page_sidebar.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"A sidebar page (i.e., dashboard) — page_sidebar","text":"","code":"if (FALSE) { # rlang::is_interactive() library(shiny) library(ggplot2) ui <- page_sidebar( title = \"Example dashboard\", sidebar = sidebar( varSelectInput(\"var\", \"Select variable\", mtcars) ), card( full_screen = TRUE, card_header(\"My plot\"), plotOutput(\"p\") ) ) server <- function(input, output) { output$p <- renderPlot({ ggplot(mtcars) + geom_histogram(aes(!!input$var)) }) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a popover to a UI element — popover","title":"Add a popover to a UI element — popover","text":"Display additional information clicking UI element (typically button).","code":""},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a popover to a UI element — popover","text":"","code":"popover( trigger, ..., title = NULL, id = NULL, placement = c(\"auto\", \"top\", \"right\", \"bottom\", \"left\"), options = list() ) toggle_popover(id, show = NULL, session = get_current_session()) update_popover(id, ..., title = NULL, session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a popover to a UI element — popover","text":"trigger UI element serve popover trigger (typically shiny::actionButton() similar). trigger renders multiple HTML elements (e.g., tagList()), last HTML element used trigger. trigger contain elements, wrap object div() span(). ... UI elements popover's body. Character strings automatically escaped unless marked HTML(). title title (header) popover. id character string. Required re-actively respond visibility popover (via input[[id]] value) /update visibility/contents popover. placement placement popover relative trigger. options list additional options. show Whether show (TRUE) hide (FALSE) popover. default (NULL) show currently hidden hide currently shown. Note popover shown trigger visible (e.g., hidden behind tab). session Shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Add a popover to a UI element — popover","text":"popover(): Add popover UI element toggle_popover(): Programmatically show/hide popover. update_popover(): Update contents popover.","code":""},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"closing-popovers","dir":"Reference","previous_headings":"","what":"Closing popovers","title":"Add a popover to a UI element — popover","text":"addition clicking close_button, popovers can closed pressing Esc/Space key popover (/trigger) focused.","code":""},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"theming-styling","dir":"Reference","previous_headings":"","what":"Theming/Styling","title":"Add a popover to a UI element — popover","text":"Like bslib components, popovers can themed supplying relevant theming variables bs_theme(), effects styling every popover page. style specific popover differently popover, utilize customClass option: add relevant rules bs_theme() via bs_add_rules():","code":"popover( \"Trigger\", \"Popover message\", options = list(customClass = \"my-pop\") ) bs_theme() |> bs_add_rules(\".my-pop { max-width: none; }\")"},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"accessibility-of-popover-triggers","dir":"Reference","previous_headings":"","what":"Accessibility of Popover Triggers","title":"Add a popover to a UI element — popover","text":"user needs interact trigger element see popover, best practice use element typically accessible via keyboard interactions, like button link. use non-interactive element, like text, bslib automatically add tabindex=\"0\" attribute trigger element make sure users can reach element keyboard. means cases can use element want trigger. One place important consider accessibility trigger using icon without accompanying text. cases, many R packages provide icons create icon element assumption icon decorative, make inaccessible users assistive technologies. using icon primary trigger, ensure icon aria-hidden=\"true\" role=\"presentation\" attributes. Icon packages typically provide way specify title icon, well way specify icon decorative. title short description purpose trigger, rather description icon . using bsicons::bs_icon(), provide title. using fontawesome::fa(), set a11y = \"sem\" provide title. example:","code":"popover( bsicons::bs_icon(\"gear\", title = \"Settings\"), title = \"Settings\", sliderInput(\"n\", \"Number of points\", 1, 100, 50) ) popover( fontawesome::fa(\"gear\", a11y = \"sem\", title = \"Settings\"), title = \"Settings\", sliderInput(\"n\", \"Number of points\", 1, 100, 50) )"},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add a popover to a UI element — popover","text":"Popovers based Bootstrap's Popover component. See bslib website interactive introduction tooltips popovers.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/popover.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a popover to a UI element — popover","text":"","code":"if (FALSE) { # rlang::is_interactive() popover( shiny::actionButton(\"btn\", \"A button\"), \"Popover body content...\", title = \"Popover title\" ) library(shiny) ui <- page_fixed( card(class = \"mt-5\", card_header( popover( uiOutput(\"card_title\", inline = TRUE), title = \"Provide a new title\", textInput(\"card_title\", NULL, \"An editable title\") ) ), \"The card body...\" ) ) server <- function(input, output) { output$card_title <- renderUI({ list(input$card_title, bsicons::bs_icon(\"pencil-square\")) }) } shinyApp(ui, server) }"},{"path":"https://rstudio.github.io/bslib/reference/precompiled_css_path.html","id":null,"dir":"Reference","previous_headings":"","what":"Get the path to a precompiled CSS file — precompiled_css_path","title":"Get the path to a precompiled CSS file — precompiled_css_path","text":"function meant development debugging purposes. can used test precompiled CSS file exists given theme object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/precompiled_css_path.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get the path to a precompiled CSS file — precompiled_css_path","text":"","code":"precompiled_css_path(theme = bs_theme())"},{"path":"https://rstudio.github.io/bslib/reference/precompiled_css_path.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get the path to a precompiled CSS file — precompiled_css_path","text":"theme bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/precompiled_css_path.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get the path to a precompiled CSS file — precompiled_css_path","text":"path precompiled CSS file, exists, NULL, .","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":null,"dir":"Reference","previous_headings":"","what":"Theme customization UI — run_with_themer","title":"Theme customization UI — run_with_themer","text":"'real-time' theme customization UI can use easily make common tweaks Bootstrap variables immediately see affect app's appearance. two ways can launch theming UI. Shiny apps, just use run_with_themer() place shiny::runApp(); take arguments work way. Alternatively, can call bs_themer() function inside server function (R Markdown app using runtime: shiny, can call code chunk). Note function intended used development!","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Theme customization UI — run_with_themer","text":"","code":"run_with_themer(appDir = getwd(), ..., gfonts = TRUE, gfonts_update = FALSE) bs_themer(gfonts = TRUE, gfonts_update = FALSE)"},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Theme customization UI — run_with_themer","text":"appDir application run. can file directory path, shiny::shinyApp() object. See shiny::runApp() details. ... Additional parameters pass shiny::runApp(). gfonts whether detect Google Fonts wrap font_google() (font files automatically imported). gfonts_update whether update internal database Google Fonts.","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Theme customization UI — run_with_themer","text":"nothing. functions called side-effects.","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Theme customization UI — run_with_themer","text":"help utilize changes see preview, utility prints bs_theme() code R console.","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"limitations","dir":"Reference","previous_headings":"","what":"Limitations","title":"Theme customization UI — run_with_themer","text":"work Bootstrap 3. work IE11. works inside Shiny apps runtime: shiny R Markdown documents. used static R Markdown documents. Can used extent runtime: shiny_prerendered, UI rendered context=\"server\" may update real-time. work '3rd party' custom widgets make use bs_dependency_defer() bs_current_theme().","code":""},{"path":"https://rstudio.github.io/bslib/reference/run_with_themer.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Theme customization UI — run_with_themer","text":"","code":"library(shiny) ui <- fluidPage( theme = bs_theme(bg = \"black\", fg = \"white\"), h1(\"Heading 1\"), h2(\"Heading 2\"), p( \"Paragraph text;\", tags$a(href = \"https://www.rstudio.com\", \"a link\") ), p( actionButton(\"cancel\", \"Cancel\"), actionButton(\"continue\", \"Continue\", class = \"btn-primary\") ), tabsetPanel( tabPanel(\"First tab\", \"The contents of the first tab\" ), tabPanel(\"Second tab\", \"The contents of the second tab\" ) ) ) if (interactive()) { run_with_themer(shinyApp(ui, function(input, output) {})) }"},{"path":"https://rstudio.github.io/bslib/reference/save-html.html","id":null,"dir":"Reference","previous_headings":"","what":"Save a bslib page/fragment as HTML — save_html.bslib_fragment","title":"Save a bslib page/fragment as HTML — save_html.bslib_fragment","text":"Save bslib page/fragment HTML","code":""},{"path":"https://rstudio.github.io/bslib/reference/save-html.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Save a bslib page/fragment as HTML — save_html.bslib_fragment","text":"","code":"# S3 method for bslib_fragment save_html(html, file, ...) # S3 method for bslib_page save_html(html, file, ...)"},{"path":"https://rstudio.github.io/bslib/reference/save-html.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Save a bslib page/fragment as HTML — save_html.bslib_fragment","text":"... passed along underlying save_html() method. x bslib page/fragment.","code":""},{"path":"https://rstudio.github.io/bslib/reference/sidebar.html","id":null,"dir":"Reference","previous_headings":"","what":"Sidebar layouts — sidebar","title":"Sidebar layouts — sidebar","text":"Sidebar layouts place UI elements, like input controls additional context, next main content area often holds output elements like plots tables. several page, navigation, layout functions allow create sidebar layout. case, can create collapsing sidebar layout providing sidebar() object sidebar argument following functions. page_sidebar() creates \"page-level\" sidebar. page_navbar() creates multi-panel app (optional, page-level) sidebar shown every panel. layout_sidebar() creates \"floating\" sidebar layout component can used inside page() /card() context. navset_card_tab() navset_card_pill() create multi-tab cards shared sidebar accessible every panel. See Sidebars article bslib website learn .","code":""},{"path":"https://rstudio.github.io/bslib/reference/sidebar.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Sidebar layouts — sidebar","text":"","code":"sidebar( ..., width = 250, position = c(\"left\", \"right\"), open = c(\"desktop\", \"open\", \"closed\", \"always\"), id = NULL, title = NULL, bg = NULL, fg = NULL, class = NULL, max_height_mobile = NULL, gap = NULL, padding = NULL ) layout_sidebar( ..., sidebar = NULL, fillable = TRUE, fill = TRUE, bg = NULL, fg = NULL, border = NULL, border_radius = NULL, border_color = NULL, padding = NULL, gap = NULL, height = NULL ) toggle_sidebar(id, open = NULL, session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/sidebar.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Sidebar layouts — sidebar","text":"... Unnamed arguments can valid child htmltools tag named arguments become HTML attributes returned UI element. case layout_sidebar(), arguments passed main content tag (sidebar+main content container). width valid CSS unit used width sidebar. position sidebar appear relative main content. open initial state sidebar, choosing following options: \"desktop\": sidebar starts open desktop screen, closed mobile. default sidebar behavior. \"open\" TRUE: sidebar starts open. \"closed\" FALSE: sidebar starts closed. \"always\" NA: sidebar always open closed. sidebar_toggle(), open indicates desired state sidebar, default open = NULL cause sidebar toggled open closed vice versa. Note sidebar_toggle() can open close sidebar, support \"desktop\" \"always\" options. id character string. Required wanting re-actively read (update) collapsible state Shiny app. title character title used sidebar title, wrapped
element class sidebar-title. can also provide custom htmltools::tag() title element, case likely want give element class = \"sidebar-title\". bg, fg background foreground color. one either provided, accessible contrasting color provided opposite color, e.g. setting bg chooses appropriate fg color. class CSS classes sidebar container element, addition fixed .sidebar class. max_height_mobile CSS length unit defining maximum height horizontal sidebar viewed mobile devices. applies always-open sidebars use open = \"always\", default sidebar container placed main content container mobile devices. gap CSS length unit defining vertical gap (.e., spacing) adjacent elements provided .... padding Padding within sidebar . can numeric vector (interpreted pixels) character vector valid CSS lengths. padding may one four values. one, value used four sides. two, first value used top bottom, second value used left right. three, first used top, second left right, third bottom. four, values interpreted top, right, bottom, left respectively. sidebar sidebar() object. fillable Whether main content area considered fillable (.e., flexbox) container. fill Whether allow layout container grow/shrink fit fillable container opinionated height (e.g., page_fillable()). border Whether add border. border_radius Whether add border radius. border_color border color applied entire layout (border = TRUE) color border sidebar main content area. height valid CSS unit (e.g., height=\"200px\"). apply card made full_screen (case, consider setting height card_body()). session Shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/sidebar.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Sidebar layouts — sidebar","text":"toggle_sidebar(): Toggle sidebar() state active Shiny user session.","code":""},{"path":"https://rstudio.github.io/bslib/reference/sidebar.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Sidebar layouts — sidebar","text":"Sidebar layouts featured number pages bslib website: Sidebars Cards: Sidebars Getting Started: Dashboards","code":""},{"path":"https://rstudio.github.io/bslib/reference/theme_bootswatch.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain a theme's Bootswatch theme name — theme_bootswatch","title":"Obtain a theme's Bootswatch theme name — theme_bootswatch","text":"Obtain theme's Bootswatch theme name","code":""},{"path":"https://rstudio.github.io/bslib/reference/theme_bootswatch.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain a theme's Bootswatch theme name — theme_bootswatch","text":"","code":"theme_bootswatch(theme)"},{"path":"https://rstudio.github.io/bslib/reference/theme_bootswatch.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain a theme's Bootswatch theme name — theme_bootswatch","text":"theme bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/theme_bootswatch.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain a theme's Bootswatch theme name — theme_bootswatch","text":"Returns Bootswatch theme named used () theme.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/theme_version.html","id":null,"dir":"Reference","previous_headings":"","what":"Obtain a theme's Bootstrap version — theme_version","title":"Obtain a theme's Bootstrap version — theme_version","text":"Obtain theme's Bootstrap version","code":""},{"path":"https://rstudio.github.io/bslib/reference/theme_version.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Obtain a theme's Bootstrap version — theme_version","text":"","code":"theme_version(theme)"},{"path":"https://rstudio.github.io/bslib/reference/theme_version.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Obtain a theme's Bootstrap version — theme_version","text":"theme bs_theme() object.","code":""},{"path":"https://rstudio.github.io/bslib/reference/theme_version.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Obtain a theme's Bootstrap version — theme_version","text":"Returns major version Bootstrap used theme.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":null,"dir":"Reference","previous_headings":"","what":"Add a tooltip to a UI element — tooltip","title":"Add a tooltip to a UI element — tooltip","text":"Display additional information focusing (hovering ) UI element.","code":""},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add a tooltip to a UI element — tooltip","text":"","code":"tooltip( trigger, ..., id = NULL, placement = c(\"auto\", \"top\", \"right\", \"bottom\", \"left\"), options = list() ) toggle_tooltip(id, show = NULL, session = get_current_session()) update_tooltip(id, ..., session = get_current_session())"},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add a tooltip to a UI element — tooltip","text":"trigger UI element (.e., htmltools tag) serve tooltip trigger. trigger renders multiple HTML elements (e.g., tagList()), last HTML element used trigger. trigger contain elements, wrap object div() span(). ... UI elements tooltip. Character strings automatically escaped unless marked HTML(). id character string matches existing tooltip id. placement placement tooltip relative trigger. options list additional options. show Whether show (TRUE) hide (FALSE) tooltip. default (NULL) show currently hidden hide currently shown. Note tooltip shown trigger visible (e.g., hidden behind tab). session Shiny session object (default almost always used).","code":""},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"functions","dir":"Reference","previous_headings":"","what":"Functions","title":"Add a tooltip to a UI element — tooltip","text":"tooltip(): Add tooltip UI element toggle_tooltip(): Programmatically show/hide tooltip. update_tooltip(): Update contents tooltip.","code":""},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"theming-styling","dir":"Reference","previous_headings":"","what":"Theming/Styling","title":"Add a tooltip to a UI element — tooltip","text":"Like bslib components, tooltips can themed supplying relevant theming variables bs_theme(), effects styling every tooltip page. style specific tooltip differently tooltip, utilize customClass option: add relevant rules bs_theme() via bs_add_rules():","code":"tooltip( \"Trigger\", \"Tooltip message\", options = list(customClass = \"my-tip\") ) bs_theme() |> bs_add_rules(\".my-tip { max-width: none; }\")"},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"accessibility-of-tooltip-triggers","dir":"Reference","previous_headings":"","what":"Accessibility of Tooltip Triggers","title":"Add a tooltip to a UI element — tooltip","text":"user needs interact trigger element see tooltip, best practice use element typically accessible via keyboard interactions, like button link. use non-interactive element, like text, bslib automatically add tabindex=\"0\" attribute trigger element make sure users can reach element keyboard. means cases can use element want trigger. One place important consider accessibility trigger using icon without accompanying text. cases, many R packages provide icons create icon element assumption icon decorative, make inaccessible users assistive technologies. using icon primary trigger, ensure icon aria-hidden=\"true\" role=\"presentation\" attributes. Icon packages typically provide way specify title icon, well way specify icon decorative. title short description purpose trigger, rather description icon . using bsicons::bs_icon(), provide title. using fontawesome::fa(), set a11y = \"sem\" provide title. example:","code":"tooltip( bsicons::bs_icon(\"info-circle\", title = \"About tooltips\"), \"Text shown in the tooltip.\" ) tooltip( fontawesome::fa(\"info-circle\", a11y = \"sem\", title = \"About tooltips\"), \"Text shown in the tooltip.\" )"},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Add a tooltip to a UI element — tooltip","text":"Tooltips based Bootstrap's Tooltip component. See bslib website interactive introduction tooltips popovers.","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/tooltip.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add a tooltip to a UI element — tooltip","text":"","code":"if (FALSE) { # rlang::is_interactive() tooltip( shiny::actionButton(\"btn\", \"A button\"), \"A message\" ) card( card_header( tooltip( span(\"Card title \", bsicons::bs_icon(\"question-circle-fill\")), \"Additional info\", placement = \"right\" ) ), \"Card body content...\" ) }"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":null,"dir":"Reference","previous_headings":"","what":"Value box — value_box","title":"Value box — value_box","text":"opinionated (card()-powered) box, designed displaying value title. Optionally, showcase can provide context value represents (example, hold bsicons::bs_icon(), even shiny::plotOutput()). Find examples template code can use create engaging value boxes bslib website.","code":""},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Value box — value_box","text":"","code":"value_box( title, value, ..., showcase = NULL, showcase_layout = c(\"left center\", \"top right\", \"bottom\"), full_screen = FALSE, theme = NULL, height = NULL, max_height = NULL, fill = TRUE, class = NULL, theme_color = deprecated() ) value_box_theme(name = NULL, bg = NULL, fg = NULL) showcase_left_center( width = 0.3, width_full_screen = \"1fr\", max_height = \"100px\", max_height_full_screen = 0.67 ) showcase_top_right( width = 0.4, width_full_screen = \"1fr\", max_height = \"75px\", max_height_full_screen = 0.67 ) showcase_bottom( width = \"100%\", width_full_screen = NULL, height = \"auto\", height_full_screen = \"2fr\", max_height = \"100px\", max_height_full_screen = NULL )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Value box — value_box","text":"title, value string, number, htmltools::tag() child display title value value box. title appears value. ... Unnamed arguments may htmltools::tag() children display value. Named arguments become attributes containing element. showcase htmltools::tag() child showcase (e.g., bsicons::bs_icon(), plotly::plotlyOutput(), etc). showcase_layout One \"left center\" (default), \"top right\" \"bottom\". Alternatively, can customize showcase layout options showcase_left_center(), showcase_top_right(), showcase_bottom() functions. Use options functions want control height width showcase area. full_screen TRUE, icon appear hovering card body. Clicking icon expands card fit viewport size. theme name theme value box, theme constructed value_box_theme(). theme names provide convenient way use app's Bootstrap theme colors foreground background colors value box. See details provided themes. control, can create theme value_box_theme() can pass foreground background colors directly. See Themes section details. max_height, max_height_full_screen proportion (.e., number 0 1) valid CSS unit defining showcase max_height. fill Whether allow value box grow/shrink fit fillable container opinionated height (e.g., page_fillable()). class Utility classes customizing appearance summary card. Use bg-* text-* classes (e.g, \"bg-danger\" \"text-light\") customize background/foreground colors. theme_color Use theme instead. name name theme, e.g. \"primary\", \"danger\", \"purple\". bg, fg background foreground colors theme. bg provided, foreground color automatically chosen $black $white provide best contrast background color. width, width_full_screen, height, height_full_screen one following: proportion (.e., number 0 1) available width height allocate showcase. valid CSS unit defining width height showcase column, valid value accepted grid-template-columns (width) grid-template-rows (height) CSS property define width height showcase column row. Accepted values second category \"auto\", \"min-content\", \"max-content\", fractional unit (e.g. 2fr), minmax() function (e.g., minmax(100px, 1fr)).","code":""},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"build-a-box-app","dir":"Reference","previous_headings":"","what":"Build-a-Box App","title":"Value box — value_box","text":"Explore value_box() options layouts interactively Build--Box app, available online thanks shinyapps.io. , can run app locally :","code":"shiny::runApp(system.file(\"examples\", \"build-a-box\", package = \"bslib\"))"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"themes","dir":"Reference","previous_headings":"","what":"Themes","title":"Value box — value_box","text":"appearance value_box() can controlled via theme argument one two ways: character value describing theme, theme = \"primary\" theme = \"blue\"; theme = value_box_theme() create custom theme. recommend using named themes value boxes (first approach), themes automatically match Bootstrap theme.","code":""},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"named-themes","dir":"Reference","previous_headings":"","what":"Named themes","title":"Value box — value_box","text":"Bootstrap provides list theme colors, semantic names like \"primary\", \"secondary\", \"success\", \"danger\", etc. can set theme one names use corresponding theme color background color value box. Bootstrap's theme colors drawn second color list includes variations several main colors, named literally. colors include \"blue\", \"purple\", \"pink\", \"red\", \"orange\", \"yellow\", \"green\", \"teal\", \"cyan\".","code":"value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"primary\" ) value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"teal\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"background-colors","dir":"Reference","previous_headings":"","what":"Background colors","title":"Value box — value_box","text":"theme color name provided without prefix, color used background value box. can also explicitly prefix theme color name bg- indicate apply value box background. theme sets background color, either black white chosen automatically text color using Bootstrap's color contrast algorithm. , can reference semantic theme color names literal color names.","code":"value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"bg-success\" ) value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"bg-purple\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"foreground-colors","dir":"Reference","previous_headings":"","what":"Foreground colors","title":"Value box — value_box","text":"set foreground colors value box, can prefix theme color name text-. changes text color without affecting background color. Occasionally may want adjust use background foreground themes value box. achieve , set theme one theme names use class complementary style. example uses theme = \"purple\" (also \"bg-purple\") purple background, class = \"text-light\" light-colored text.","code":"value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"text-success\" ) value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"text-purple\" ) value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"purple\", class = \"text-light\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"gradient-backgrounds","dir":"Reference","previous_headings":"","what":"Gradient backgrounds","title":"Value box — value_box","text":"vibrant attention-grabbing effect, bslib provides array gradient background options. Provide theme theme name form bg-gradient-{}-{}, {} {} named main colors, e.g. bg-gradient-indigo-blue.","code":"value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = \"bg-gradient-indigo-blue\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"custom-colors","dir":"Reference","previous_headings":"","what":"Custom colors","title":"Value box — value_box","text":"Finally, complete customization, can use value_box_theme() create custom theme. function takes arguments bg fg set background foreground colors, respectively. Like bg- theme names, bg provided, value_box_theme() choose appropriate light dark color text color. Note value_box_theme() optionally takes theme name, can helpful want use named theme modify default bg fg colors theme. Also note bg/fg must CSS colors, Bootstrap theme color names. means theme = \"purple\" use Bootstrap theme's purple color, bg = \"purple\" use CSS color purple, .e. \"#800080\".","code":"value_box( title = \"Customer lifetime value\", value = \"$5,000\", showcase = bsicons::bs_icon(\"bank2\"), theme = value_box_theme(bg = \"#e6f2fd\", fg = \"#0B538E\"), class = \"border\" ) value_box_theme(name = \"orange\", bg = \"#FFFFFF\") value_box_theme(name = \"text-danger\", fg = \"#FFB6C1\")"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"showcase-layouts","dir":"Reference","previous_headings":"","what":"Showcase Layouts","title":"Value box — value_box","text":"Use showcase argument add plot icon value_box(). three layouts available: \"left center\", \"top right\", \"bottom\". Set showcase name layout like, use showcase_left_center(), showcase_top_right(), showcase_bottom() helper functions customize showcase area's size. using plot showcase, may also want set fullscreen = TRUE users can expand value box full screen card. See value box article details.","code":""},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"left-center-showcase","dir":"Reference","previous_headings":"","what":"Left-center showcase","title":"Value box — value_box","text":"\"left center\" showcase layout default, perfect icon small plot. layout works best short value boxes.","code":"value_box( title = \"Energy consumption\", value = \"345 kwh/month\", showcase = bsicons::bs_icon(\"ev-station-fill\") )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"top-right-showcase","dir":"Reference","previous_headings":"","what":"Top-right showcase","title":"Value box — value_box","text":"\"top right\" showcase layout places icon plot upper right corner value box. layout works best medium-height square value boxes.","code":"value_box( title = \"Energy consumption\", value = \"345 kwh/month\", showcase = bsicons::bs_icon(\"ev-station-fill\"), showcase_layout = \"top right\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"bottom-showcase","dir":"Reference","previous_headings":"","what":"Bottom showcase","title":"Value box — value_box","text":"Finally, \"bottom\" showcase layout perfect full-bleed plots. layout places plot title value, plot taking full width bottom half. Try layout sparkline-style plots. can little tricky set , sure check Expandable sparklines section value boxes article bslib website. example, created sparkline plot using base R graphics, generally recommended. Code sparkline plot base Rset.seed(4242)random_sparkline_plot <- function() { timeseries <- cumsum(runif(100, -2, 2)) x_axis <- seq_along(timeseries) x_lim <- c(1, length(timeseries)) y_lim <- range(timeseries) + c(-2, 0) par(mar = c(0, 0, 0, 0)) # Set plot area plot( timeseries, type = \"n\", axes = FALSE, frame.plot = FALSE, ylim = y_lim, xlim = x_lim, ylab = \"\", xlab = \"\", yaxs = \"\", xaxs = \"\", ) # Add sparkline line lines(timeseries, type = \"l\", pch = NA, col = \"#0B538E\", lwd = 3) # Create polygon coordinates shading polygon_x <- c(1, x_axis, length(timeseries)) polygon_y <- c(min(y_lim), timeseries, min(y_lim)) # Add shading line polygon(polygon_x, polygon_y, col = \"#e6f2fd\", border = NA)}sparkline_plot <- function() { as_fill_item( htmltools::plotTag( random_sparkline_plot(), width = 500, height = 125, suppressSize = \"xy\", alt = paste( \"sparkline plot randomly-generated timeseries.\", \"timeseries starts high ends low, lots variation.\" ) ) )}","code":"set.seed(4242)random_sparkline_plot <- function() { timeseries <- cumsum(runif(100, -2, 2)) x_axis <- seq_along(timeseries) x_lim <- c(1, length(timeseries)) y_lim <- range(timeseries) + c(-2, 0) par(mar = c(0, 0, 0, 0)) # Set up the plot area plot( timeseries, type = \"n\", axes = FALSE, frame.plot = FALSE, ylim = y_lim, xlim = x_lim, ylab = \"\", xlab = \"\", yaxs = \"i\", xaxs = \"i\", ) # Add the sparkline line lines(timeseries, type = \"l\", pch = NA, col = \"#0B538E\", lwd = 3) # Create polygon coordinates for shading polygon_x <- c(1, x_axis, length(timeseries)) polygon_y <- c(min(y_lim), timeseries, min(y_lim)) # Add shading under the line polygon(polygon_x, polygon_y, col = \"#e6f2fd\", border = NA)}sparkline_plot <- function() { as_fill_item( htmltools::plotTag( random_sparkline_plot(), width = 500, height = 125, suppressSize = \"xy\", alt = paste( \"A sparkline plot with a randomly-generated timeseries.\", \"The timeseries starts high and ends low, with lots of variation.\" ) ) )} value_box( title = \"Energy consumption\", value = \"345 kwh/month\", showcase = sparkline_plot(), showcase_layout = \"bottom\" )"},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"Value box — value_box","text":"Value boxes featured bslib website articles: Value boxes Build--Box App Get Started: Dashboards","code":""},{"path":[]},{"path":"https://rstudio.github.io/bslib/reference/value_box.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Value box — value_box","text":"","code":"if (FALSE) { # rlang::is_interactive() library(htmltools) value_box( \"KPI Title\", h1(HTML(\"$1 Billion<\/i> Dollars\")), span( bsicons::bs_icon(\"arrow-up\"), \" 30% VS PREVIOUS 30 DAYS\" ), showcase = bsicons::bs_icon(\"piggy-bank\"), theme = \"success\" ) }"},{"path":"https://rstudio.github.io/bslib/reference/versions.html","id":null,"dir":"Reference","previous_headings":"","what":"Available Bootstrap versions — versions","title":"Available Bootstrap versions — versions","text":"Available Bootstrap versions","code":""},{"path":"https://rstudio.github.io/bslib/reference/versions.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Available Bootstrap versions — versions","text":"","code":"versions() version_default()"},{"path":"https://rstudio.github.io/bslib/reference/versions.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Available Bootstrap versions — versions","text":"Returns list Bootstrap versions available.","code":""},{"path":[]},{"path":[]},{"path":"https://rstudio.github.io/bslib/news/index.html","id":"breaking-changes-development-version","dir":"Changelog","previous_headings":"","what":"Breaking changes","title":"bslib (development version)","text":"bs_theme() now defaults preset=\"shiny\". provides additional set theming defaults rules make easier create Shiny apps (particular, dashboards) look good box. revert previous behavior, set bs_theme(preset=\"bootstrap\"). (#711) value_box() longer defaults theme_color = \"primary\". restore previous behavior, please use theme = \"primary\". addition default style change, theme_color now deprecated favor theme. (#758) page_navbar() now defaults underline = TRUE, meaning navigation links navbar now underline styling default (set underline = FALSE revert previous behavior). (#784) page() now returns tag instead tagList(). change allows page() treat named arguments HTML attributes. (#809) JS/CSS assets behind bslib components (e.g., card(), value_box(), etc) now bundled one htmlDependency() included return value bs_theme_dependencies() (previously attached component-level). (#810) layout_column_wrap() longer requires width width longer first argument, meaning width must named used. new default width = \"200px\", combines fixed_width = FALSE produces automatically responsive layout column least 200px wide. means , cases, layout_column_wrap() can layout unknown number items without set width. (#853)","code":""},{"path":"https://rstudio.github.io/bslib/news/index.html","id":"new-features-development-version","dir":"Changelog","previous_headings":"","what":"New features","title":"bslib (development version)","text":"Upgraded default version Bootstrap v5.2.2 v5.3.1. notable thing comes update ability toggle light/dark color modes purely client-side (.e., calls Sass required). (#749, #764) Added new navset_underline() & navset_card_underline() functions well underline argument page_navbar() leverage new nav-underline styling navigation links. (#784) value_box() now supports many new themes styles, fully customizable themes using new value_box_theme() function. reflect new capabilities, ’ve replaced theme_color new theme argument. previous argument continue work expected, deprecation warning. (#758) addition Bootstrap theme names (primary ,secondary, etc.), can now use main Boostrap colors (purple, blue, red, etc.). can also choose apply color background foreground prepending bg- text- prefix theme color name. Finally, ’ve also added new gradient themes allowing pair two color names bg-gradient-{}-{} (e.g., bg-gradient-purple-blue). named color themes aren’t limited value boxes: ’re powered small utility classes, can use anywhere within bslib-powered UI. Added showcase_bottom(), new value_box() layout places showcase value box title value, perfect full-bleed plot. (#758) showcase_left_center() showcase_top_right() longer take two values width argument. Instead, now take single value (e.g., width = \"30%\") representing width showcase value box. Furthermore, ’ve gained width_full_screen arguments determine width showcase area value box expanded fill screen. (#758) showcase_layout argument value_box() now accepts one three character values: \"left center\", \"top right\", \"bottom\". (#758) new Build Box app now available online via bslib. See ?value_box() details. app helps preview set value boxes configure customize appearance provides code copy paste app. (#790) Added input_dark_mode(), new input control provides toggle button can used switch dark light modes using Bootstrap 5.3. default, dark mode applied automatically user’s operating system also dark mode. App authors can toggle dark mode programmatically server using toggle_dark_mode(), provide input_dark_mode() id, can read current color mode via corresponding input value. (#787)","code":""},{"path":"https://rstudio.github.io/bslib/news/index.html","id":"improvements-development-version","dir":"Changelog","previous_headings":"","what":"Improvements","title":"bslib (development version)","text":"bs_themer() app now supports previewing dark mode variant Bootstrap 5 themes. (#767) Improved style appearance button enter full screen card()s value_box()es better adapt Bootstrap’s dark mode. (#780) htmltools::save_html() now works expected applied directly components (e.g., card(), etc) pages non-default theme. (#823, #815) layout_sidebar() received new design. button collapse expand sidebar now appears top (instead bottom) sidebar. mobile devices, sidebar now fills layout_sidebar() area overlay, rather expanding main content area. Note max_mobile_height argument sidebar() determines maximum height sidebar area mobile, now applies open = \"always\". (#798) layout_sidebar() now uses

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 E5Bgs-_y7O^ delta 25744 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%0D`=xWB{bF3&7=+=G8qEYZs_WX%gH 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�ZF!yEy!*npeNi&V| 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 Np`!Z$cmLtD{{a)R?#ciF literal 7732 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 Zhy5NMKha+xpUX6zwx+?|67>gv{TqHN`0fAz diff --git a/articles/dashboards/examples/mobile-layout.png b/articles/dashboards/examples/mobile-layout.png index 645eba2fffbb125fae928132615c4f08fa266d6c..f4b1527b9d7af366f996c3c8e992b7b8871bfd79 100644 GIT binary patch delta 25915 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 literal 41392 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 diff --git a/articles/dashboards/examples/scrolling-layout.png b/articles/dashboards/examples/scrolling-layout.png index 96a719405b332283cd1d9fa4b84fe7e824aa18c9..a4d787879f95381c92429b9e80936ff255eda8df 100644 GIT binary patch literal 63265 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