├── .Rbuildignore ├── .github ├── .gitignore └── workflows │ ├── R-CMD-check.yaml │ ├── pkgdown.yaml │ └── rhub.yaml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── DESCRIPTION ├── NAMESPACE ├── NEWS.md ├── R ├── cards.R ├── dashboardBody.R ├── dashboardFooter.R ├── dashboardNavbar.R ├── dashboardPage.R ├── deps.R ├── gallery.R ├── icons.R ├── sysdata.rda ├── useful-items.R └── utils.R ├── README.Rmd ├── README.md ├── _pkgdown.yml ├── cran-comments.md ├── docs ├── authors.html ├── docsearch.css ├── docsearch.js ├── extra.css ├── index.html ├── link.svg ├── news │ └── index.html ├── pkgdown.css ├── pkgdown.js ├── pkgdown.yml └── reference │ ├── figures │ └── tablerDash_demo.png │ ├── index.html │ ├── tablerAlert.html │ ├── tablerAvatar.html │ ├── tablerAvatarList.html │ ├── tablerBlogCard.html │ ├── tablerCard.html │ ├── tablerDashBody.html │ ├── tablerDashFooter.html │ ├── tablerDashGallery.html │ ├── tablerDashNav.html │ ├── tablerDashPage.html │ ├── tablerDropDown.html │ ├── tablerDropdownItem.html │ ├── tablerIcon.html │ ├── tablerInfoCard.html │ ├── tablerList.html │ ├── tablerListItem.html │ ├── tablerMediaCard.html │ ├── tablerNavMenu.html │ ├── tablerNavMenuItem.html │ ├── tablerProfileCard.html │ ├── tablerProgress.html │ ├── tablerSocialLink.html │ ├── tablerSocialLinks.html │ ├── tablerStatCard.html │ ├── tablerStatus.html │ ├── tablerTabItem.html │ ├── tablerTabItems.html │ ├── tablerTable.html │ ├── tablerTableItem.html │ ├── tablerTag.html │ ├── tablerTagList.html │ ├── tablerTimeline.html │ ├── tablerTimelineItem.html │ └── tagAssert.html ├── index.Rmd ├── index.md ├── inst ├── bootstrap-4.0.0 │ └── bootstrap.bundle.min.js ├── examples │ └── shinylive │ │ └── dashboard │ │ └── app.R ├── shinylive │ └── tools.R └── tablerDash-0.1.0 │ ├── core.js │ ├── dashboard.css │ ├── dashboard.js │ ├── fonts │ └── feather │ │ ├── feather-webfont.eot │ │ ├── feather-webfont.svg │ │ ├── feather-webfont.ttf │ │ └── feather-webfont.woff │ ├── images │ ├── browsers │ │ ├── android-browser.svg │ │ ├── aol-explorer.svg │ │ ├── blackberry.svg │ │ ├── camino.svg │ │ ├── chrome.svg │ │ ├── chromium.svg │ │ ├── dolphin.svg │ │ ├── edge.svg │ │ ├── firefox.svg │ │ ├── ie.svg │ │ ├── maxthon.svg │ │ ├── mozilla.svg │ │ ├── netscape.svg │ │ ├── opera.svg │ │ ├── safari.svg │ │ ├── sleipnir.svg │ │ ├── uc-browser.svg │ │ └── vivaldi.svg │ ├── crypto-currencies │ │ ├── bitcoin.svg │ │ ├── cardano.svg │ │ ├── dash.svg │ │ ├── eos.svg │ │ ├── ethereum.svg │ │ ├── litecoin.svg │ │ ├── nem.svg │ │ └── ripple.svg │ └── payments │ │ ├── 2checkout-dark.svg │ │ ├── 2checkout.svg │ │ ├── alipay-dark.svg │ │ ├── alipay.svg │ │ ├── amazon-dark.svg │ │ ├── amazon.svg │ │ ├── americanexpress-dark.svg │ │ ├── americanexpress.svg │ │ ├── applepay-dark.svg │ │ ├── applepay.svg │ │ ├── bancontact-dark.svg │ │ ├── bancontact.svg │ │ ├── bitcoin-dark.svg │ │ ├── bitcoin.svg │ │ ├── bitpay-dark.svg │ │ ├── bitpay.svg │ │ ├── cirrus-dark.svg │ │ ├── cirrus.svg │ │ ├── clickandbuy-dark.svg │ │ ├── clickandbuy.svg │ │ ├── coinkite-dark.svg │ │ ├── coinkite.svg │ │ ├── dinersclub-dark.svg │ │ ├── dinersclub.svg │ │ ├── directdebit-dark.svg │ │ ├── directdebit.svg │ │ ├── discover-dark.svg │ │ ├── discover.svg │ │ ├── dwolla-dark.svg │ │ ├── dwolla.svg │ │ ├── ebay-dark.svg │ │ ├── ebay.svg │ │ ├── eway-dark.svg │ │ ├── eway.svg │ │ ├── giropay-dark.svg │ │ ├── giropay.svg │ │ ├── googlewallet-dark.svg │ │ ├── googlewallet.svg │ │ ├── ingenico-dark.svg │ │ ├── ingenico.svg │ │ ├── jcb-dark.svg │ │ ├── jcb.svg │ │ ├── klarna-dark.svg │ │ ├── klarna.svg │ │ ├── laser-dark.svg │ │ ├── laser.svg │ │ ├── maestro-dark.svg │ │ ├── maestro.svg │ │ ├── mastercard-dark.svg │ │ ├── mastercard.svg │ │ ├── monero-dark.svg │ │ ├── monero.svg │ │ ├── neteller-dark.svg │ │ ├── neteller.svg │ │ ├── ogone-dark.svg │ │ ├── ogone.svg │ │ ├── okpay-dark.svg │ │ ├── okpay.svg │ │ ├── paybox-dark.svg │ │ ├── paybox.svg │ │ ├── paymill-dark.svg │ │ ├── paymill.svg │ │ ├── payone-dark.svg │ │ ├── payone.svg │ │ ├── payoneer-dark.svg │ │ ├── payoneer.svg │ │ ├── paypal-dark.svg │ │ ├── paypal.svg │ │ ├── paysafecard-dark.svg │ │ ├── paysafecard.svg │ │ ├── payu-dark.svg │ │ ├── payu.svg │ │ ├── payza-dark.svg │ │ ├── payza.svg │ │ ├── ripple-dark.svg │ │ ├── ripple.svg │ │ ├── sage-dark.svg │ │ ├── sage.svg │ │ ├── sepa-dark.svg │ │ ├── sepa.svg │ │ ├── shopify-dark.svg │ │ ├── shopify.svg │ │ ├── skrill-dark.svg │ │ ├── skrill.svg │ │ ├── solo-dark.svg │ │ ├── solo.svg │ │ ├── square-dark.svg │ │ ├── square.svg │ │ ├── stripe-dark.svg │ │ ├── stripe.svg │ │ ├── switch-dark.svg │ │ ├── switch.svg │ │ ├── ukash-dark.svg │ │ ├── ukash.svg │ │ ├── unionpay-dark.svg │ │ ├── unionpay.svg │ │ ├── verifone-dark.svg │ │ ├── verifone.svg │ │ ├── verisign-dark.svg │ │ ├── verisign.svg │ │ ├── visa-dark.svg │ │ ├── visa.svg │ │ ├── webmoney-dark.svg │ │ ├── webmoney.svg │ │ ├── westernunion-dark.svg │ │ ├── westernunion.svg │ │ ├── worldpay-dark.svg │ │ └── worldpay.svg │ ├── init.js │ └── require.min.js ├── man ├── create_app_link.Rd ├── figures │ └── tablerDash_demo.png ├── tablerAlert.Rd ├── tablerAvatar.Rd ├── tablerAvatarList.Rd ├── tablerBlogCard.Rd ├── tablerCard.Rd ├── tablerDashBody.Rd ├── tablerDashFooter.Rd ├── tablerDashGallery.Rd ├── tablerDashNav.Rd ├── tablerDashPage.Rd ├── tablerDropdown.Rd ├── tablerDropdownItem.Rd ├── tablerIcon.Rd ├── tablerInfoCard.Rd ├── tablerList.Rd ├── tablerListItem.Rd ├── tablerMediaCard.Rd ├── tablerNavMenu.Rd ├── tablerNavMenuItem.Rd ├── tablerProfileCard.Rd ├── tablerProgress.Rd ├── tablerSocialLink.Rd ├── tablerSocialLinks.Rd ├── tablerStatCard.Rd ├── tablerStatus.Rd ├── tablerTabItem.Rd ├── tablerTabItems.Rd ├── tablerTable.Rd ├── tablerTableItem.Rd ├── tablerTag.Rd ├── tablerTagList.Rd ├── tablerTimeline.Rd ├── tablerTimelineItem.Rd └── tagAssert.Rd ├── pkgdown ├── extra.css └── extra.js └── tablerDash.Rproj /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^CRAN-RELEASE$ 2 | ^LICENSE\.md$ 3 | ^docs$ 4 | ^_pkgdown\.yml$ 5 | ^cran-comments\.md$ 6 | ^.*\.Rproj$ 7 | ^\.Rproj\.user$ 8 | ^pkgdown$ 9 | ^\.github$ 10 | ^CODE_OF_CONDUCT\.md$ 11 | ^README\.Rmd$ 12 | ^index\.Rmd$ 13 | ^index\.md$ -------------------------------------------------------------------------------- /.github/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | -------------------------------------------------------------------------------- /.github/workflows/R-CMD-check.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | 9 | name: R-CMD-check.yaml 10 | 11 | permissions: read-all 12 | 13 | jobs: 14 | R-CMD-check: 15 | runs-on: ${{ matrix.config.os }} 16 | 17 | name: ${{ matrix.config.os }} (${{ matrix.config.r }}) 18 | 19 | strategy: 20 | fail-fast: false 21 | matrix: 22 | config: 23 | - {os: macos-latest, r: 'release'} 24 | - {os: windows-latest, r: 'release'} 25 | - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} 26 | - {os: ubuntu-latest, r: 'release'} 27 | - {os: ubuntu-latest, r: 'oldrel-1'} 28 | 29 | env: 30 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 31 | R_KEEP_PKG_SOURCE: yes 32 | 33 | steps: 34 | - uses: actions/checkout@v4 35 | 36 | - uses: r-lib/actions/setup-pandoc@v2 37 | 38 | - uses: r-lib/actions/setup-r@v2 39 | with: 40 | r-version: ${{ matrix.config.r }} 41 | http-user-agent: ${{ matrix.config.http-user-agent }} 42 | use-public-rspm: true 43 | 44 | - uses: r-lib/actions/setup-r-dependencies@v2 45 | with: 46 | extra-packages: any::rcmdcheck 47 | needs: check 48 | 49 | - uses: r-lib/actions/check-r-package@v2 50 | with: 51 | upload-snapshots: true 52 | build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' 53 | -------------------------------------------------------------------------------- /.github/workflows/pkgdown.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/tree/v2/examples 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master] 6 | pull_request: 7 | branches: [main, master] 8 | release: 9 | types: [published] 10 | workflow_dispatch: 11 | 12 | name: pkgdown 13 | 14 | jobs: 15 | pkgdown: 16 | runs-on: ubuntu-latest 17 | # Only restrict concurrency for non-PR jobs 18 | concurrency: 19 | group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} 20 | env: 21 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 22 | steps: 23 | - uses: actions/checkout@v3 24 | 25 | - uses: r-lib/actions/setup-pandoc@v2 26 | 27 | - uses: r-lib/actions/setup-r@v2 28 | with: 29 | use-public-rspm: true 30 | 31 | - uses: r-lib/actions/setup-r-dependencies@v2 32 | with: 33 | extra-packages: any::pkgdown, local::. 34 | needs: website 35 | 36 | - name: Build site 37 | run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) 38 | shell: Rscript {0} 39 | 40 | - name: Deploy to GitHub pages 🚀 41 | if: github.event_name != 'pull_request' 42 | uses: JamesIves/github-pages-deploy-action@v4.4.1 43 | with: 44 | clean: false 45 | branch: gh-pages 46 | folder: docs -------------------------------------------------------------------------------- /.github/workflows/rhub.yaml: -------------------------------------------------------------------------------- 1 | # R-hub's generic GitHub Actions workflow file. It's canonical location is at 2 | # https://github.com/r-hub/actions/blob/v1/workflows/rhub.yaml 3 | # You can update this file to a newer version using the rhub2 package: 4 | # 5 | # rhub::rhub_setup() 6 | # 7 | # It is unlikely that you need to modify this file manually. 8 | 9 | name: R-hub 10 | run-name: "${{ github.event.inputs.id }}: ${{ github.event.inputs.name || format('Manually run by {0}', github.triggering_actor) }}" 11 | 12 | on: 13 | workflow_dispatch: 14 | inputs: 15 | config: 16 | description: 'A comma separated list of R-hub platforms to use.' 17 | type: string 18 | default: 'linux,windows,macos' 19 | name: 20 | description: 'Run name. You can leave this empty now.' 21 | type: string 22 | id: 23 | description: 'Unique ID. You can leave this empty now.' 24 | type: string 25 | 26 | jobs: 27 | 28 | setup: 29 | runs-on: ubuntu-latest 30 | outputs: 31 | containers: ${{ steps.rhub-setup.outputs.containers }} 32 | platforms: ${{ steps.rhub-setup.outputs.platforms }} 33 | 34 | steps: 35 | # NO NEED TO CHECKOUT HERE 36 | - uses: r-hub/actions/setup@v1 37 | with: 38 | config: ${{ github.event.inputs.config }} 39 | id: rhub-setup 40 | 41 | linux-containers: 42 | needs: setup 43 | if: ${{ needs.setup.outputs.containers != '[]' }} 44 | runs-on: ubuntu-latest 45 | name: ${{ matrix.config.label }} 46 | strategy: 47 | fail-fast: false 48 | matrix: 49 | config: ${{ fromJson(needs.setup.outputs.containers) }} 50 | container: 51 | image: ${{ matrix.config.container }} 52 | 53 | steps: 54 | - uses: r-hub/actions/checkout@v1 55 | - uses: r-hub/actions/platform-info@v1 56 | with: 57 | token: ${{ secrets.RHUB_TOKEN }} 58 | job-config: ${{ matrix.config.job-config }} 59 | - uses: r-hub/actions/setup-deps@v1 60 | with: 61 | token: ${{ secrets.RHUB_TOKEN }} 62 | job-config: ${{ matrix.config.job-config }} 63 | - uses: r-hub/actions/run-check@v1 64 | with: 65 | token: ${{ secrets.RHUB_TOKEN }} 66 | job-config: ${{ matrix.config.job-config }} 67 | 68 | other-platforms: 69 | needs: setup 70 | if: ${{ needs.setup.outputs.platforms != '[]' }} 71 | runs-on: ${{ matrix.config.os }} 72 | name: ${{ matrix.config.label }} 73 | strategy: 74 | fail-fast: false 75 | matrix: 76 | config: ${{ fromJson(needs.setup.outputs.platforms) }} 77 | 78 | steps: 79 | - uses: r-hub/actions/checkout@v1 80 | - uses: r-hub/actions/setup-r@v1 81 | with: 82 | job-config: ${{ matrix.config.job-config }} 83 | token: ${{ secrets.RHUB_TOKEN }} 84 | - uses: r-hub/actions/platform-info@v1 85 | with: 86 | token: ${{ secrets.RHUB_TOKEN }} 87 | job-config: ${{ matrix.config.job-config }} 88 | - uses: r-hub/actions/setup-deps@v1 89 | with: 90 | job-config: ${{ matrix.config.job-config }} 91 | token: ${{ secrets.RHUB_TOKEN }} 92 | - uses: r-hub/actions/run-check@v1 93 | with: 94 | job-config: ${{ matrix.config.job-config }} 95 | token: ${{ secrets.RHUB_TOKEN }} 96 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | inst/examples/**/rsconnect 6 | **/.DS_Store 7 | docs 8 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: tablerDash 2 | Type: Package 3 | Title: 'Tabler' API for 'Shiny' 4 | Version: 0.1.5 5 | Authors@R: c( 6 | person("David", "Granjon", email = "dgranjon@ymail.com", role = c("aut", "cre")), 7 | person(family = "RinteRface", role = "cph"), 8 | person(family = "codecalm", role = c("ctb", "cph"), comment = "tabler template for Bootstrap 4"), 9 | person("Winston", "Chang", role = c("ctb", "cph"), comment = "Utils functions from shinydashboard")) 10 | Maintainer: David Granjon 11 | Description: 'R' interface to the 'Tabler' HTML template. See more here . 12 | 'tablerDash' is a light 'Bootstrap 4' dashboard template. There are different 13 | layouts available such as a one page dashboard or a multi page template, 14 | where the navigation menu is contained in the navigation bar. 15 | URL: https://rinterface.github.io/tablerDash/, https://github.com/RinteRface/tablerDash/ 16 | BugReports: https://github.com/RinteRface/tablerDash/issues 17 | Imports: shiny, htmltools 18 | Suggests: shinyWidgets, shinyEffects, echarts4r, knitr 19 | License: GPL (>= 2) 20 | Encoding: UTF-8 21 | RoxygenNote: 7.3.2 22 | Depends: 23 | R (>= 2.10) 24 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(tablerAlert) 4 | export(tablerAvatar) 5 | export(tablerAvatarList) 6 | export(tablerBlogCard) 7 | export(tablerCard) 8 | export(tablerDashBody) 9 | export(tablerDashFooter) 10 | export(tablerDashGallery) 11 | export(tablerDashNav) 12 | export(tablerDashPage) 13 | export(tablerDropdown) 14 | export(tablerDropdownItem) 15 | export(tablerIcon) 16 | export(tablerInfoCard) 17 | export(tablerList) 18 | export(tablerListItem) 19 | export(tablerMediaCard) 20 | export(tablerNavMenu) 21 | export(tablerNavMenuItem) 22 | export(tablerProfileCard) 23 | export(tablerProgress) 24 | export(tablerSocialLink) 25 | export(tablerSocialLinks) 26 | export(tablerStatCard) 27 | export(tablerStatus) 28 | export(tablerTabItem) 29 | export(tablerTabItems) 30 | export(tablerTable) 31 | export(tablerTableItem) 32 | export(tablerTag) 33 | export(tablerTagList) 34 | export(tablerTimeline) 35 | export(tablerTimelineItem) 36 | -------------------------------------------------------------------------------- /NEWS.md: -------------------------------------------------------------------------------- 1 | # tablerDash 0.1.5 2 | 3 | - Fixed few CRAN NOTES. 4 | 5 | ## Documentation 6 | - Upgrade pkgdown setup. 7 | - Add shinylive support. 8 | 9 | ## Bug Fix 10 | - Resizing a `tablerCard()` triggers the shown javascript event, telling shiny to 11 | update the size of the contained object. 12 | - Fix overflow issue in `tablerCard()`. It is now correctly applied to the card 13 | body, so the header is always visible when scrolling. 14 | 15 | # tablerDash 0.1.0 16 | - first release 17 | -------------------------------------------------------------------------------- /R/dashboardBody.R: -------------------------------------------------------------------------------- 1 | #' Create a Boostrap 4 dashboard body 2 | #' 3 | #' Build a tabler dashboard body 4 | #' 5 | #' @param ... Body content, slot for \link{tablerTabItems}. 6 | #' 7 | #' @author David Granjon, \email{dgranjon@@ymail.com} 8 | #' 9 | #' @export 10 | tablerDashBody <- function(...) { 11 | shiny::tags$div( 12 | class = "my-3 my-md-5", 13 | shiny::tags$div( 14 | class = "container", 15 | ... 16 | ) 17 | ) 18 | } 19 | 20 | 21 | 22 | 23 | #' A container for tab items 24 | #' 25 | #' @param ... Items to put in the container. Each item should be a 26 | #' \code{\link{tablerTabItem}}. 27 | #' 28 | #' @export 29 | tablerTabItems <- function(...) { 30 | lapply(list(...), tagAssert, class = "tab-pane") 31 | 32 | shiny::tags$div(class = "tab-content", ...) 33 | } 34 | 35 | #' One tab to put inside a tab items container 36 | #' 37 | #' @param tabName The name of a tab. This must correspond to the \code{tabName} 38 | #' of a \code{\link{tablerNavMenuItem}}. 39 | #' @param ... Contents of the tab. 40 | #' 41 | #' @export 42 | tablerTabItem <- function(tabName = NULL, ...) { 43 | if (is.null(tabName)) 44 | stop("Need tabName") 45 | 46 | validateTabName(tabName) 47 | 48 | shiny::tags$div( 49 | role = "tabpanel", 50 | class = "tab-pane container-fluid", 51 | id = paste0("shiny-tab-", tabName), 52 | shiny::br(), 53 | ... 54 | ) 55 | } 56 | -------------------------------------------------------------------------------- /R/dashboardFooter.R: -------------------------------------------------------------------------------- 1 | #' Create a Boostrap 4 dashboard footer 2 | #' 3 | #' Build an adminLTE3 dashboard footer 4 | #' 5 | #' @param ... Left text. 6 | #' @param copyrights Copyrights, if any. 7 | #' 8 | #' @author David Granjon, \email{dgranjon@@ymail.com} 9 | #' 10 | #' @export 11 | tablerDashFooter <- function(..., copyrights = NULL) { 12 | 13 | shiny::tags$footer( 14 | class = "footer", 15 | shiny::tags$div( 16 | class = "container", 17 | shiny::tags$div( 18 | class = "row align-items-center flex-row-reverse", 19 | # copyright left 20 | shiny::tags$div( 21 | class = "col-12 col-lg-auto mt-3 mt-lg-0 text-center", 22 | copyrights 23 | ), 24 | # right elements 25 | shiny::tags$div( 26 | class = "col-auto ml-lg-auto", 27 | shiny::tags$div( 28 | class = "row align-items-center", 29 | lapply(list(...), shiny::tagAppendAttributes, class = "mx-2") 30 | ) 31 | ) 32 | ) 33 | ) 34 | ) 35 | } 36 | -------------------------------------------------------------------------------- /R/dashboardPage.R: -------------------------------------------------------------------------------- 1 | #' Create a Boostrap 4 dashboard page 2 | #' 3 | #' Build a tabler dashboard page 4 | #' 5 | #' @param navbar Slot for \link{tablerDashNav}. 6 | #' @param body Slot for \link{tablerDashBody}. 7 | #' @param footer Slot for \link{tablerDashFooter}. 8 | #' @param title App title. 9 | #' @param enable_preloader Whether to enable a page loader. FALSE by default. 10 | #' @param loading_duration Loader duration in seconds. 2s by default. 11 | #' 12 | #' @examples 13 | #' if(interactive()){ 14 | #' library(shiny) 15 | #' library(tablerDash) 16 | #' 17 | #' shiny::shinyApp( 18 | #' ui = tablerDashPage( 19 | #' navbar = tablerDashNav(), 20 | #' footer = tablerDashFooter(), 21 | #' title = "test", 22 | #' body = tablerDashBody() 23 | #' ), 24 | #' server = function(input, output) {} 25 | #' ) 26 | #' } 27 | #' 28 | #' @author David Granjon, \email{dgranjon@@ymail.com} 29 | #' 30 | #' @export 31 | tablerDashPage <- function(navbar = NULL, body = NULL, 32 | footer = NULL, title = NULL, 33 | enable_preloader = FALSE, 34 | loading_duration = 2){ 35 | 36 | 37 | # hide body and footer 38 | bodyContent <- shiny::tags$div( 39 | class = "page-main", 40 | style = if (enable_preloader) "visibility: hidden;" else NULL, 41 | navbar, 42 | body 43 | ) 44 | 45 | footer <- shiny::tagAppendAttributes(footer, class = "footer") 46 | 47 | footer <- if (enable_preloader) { 48 | shiny::tagAppendAttributes(footer, style = "visibility: hidden;") 49 | } 50 | 51 | # preloader 52 | preloader <- shiny::tags$div( 53 | class = "dimmer active", 54 | shiny::tags$div( 55 | class = "loader", 56 | style = " 57 | position: fixed; 58 | z-index: 999; 59 | height: 2em; 60 | width: 2em; 61 | overflow: visible; 62 | margin: auto; 63 | top: 0; 64 | left: 0; 65 | bottom: 0; 66 | right: 0;", 67 | shiny::tags$div( 68 | class = "dimmer-content" 69 | ) 70 | ) 71 | ) 72 | 73 | shiny::tags$html( 74 | # Head 75 | shiny::tags$head( 76 | shiny::tags$meta(charset="UTF-8"), 77 | shiny::tags$meta( 78 | name = "viewport", 79 | content = " 80 | width=device-width, 81 | user-scalable=no, 82 | initial-scale=1.0, 83 | maximum-scale=1.0, 84 | minimum-scale=1.0" 85 | ), 86 | shiny::tags$meta(`http-equiv` = "X-UA-Compatible", content = "ie=edge"), 87 | shiny::tags$meta(`http-equiv` = "Content-Language", content = "en"), 88 | shiny::tags$meta(name = "msapplication-TileColor", content = "#2d89ef"), 89 | shiny::tags$meta(name = "theme-color", content = "#4188c9"), 90 | shiny::tags$meta(name = "apple-mobile-web-app-status-bar-style", content = "black-translucent"), 91 | shiny::tags$meta(name = "apple-mobile-web-app-capable", content = "yes"), 92 | shiny::tags$meta(name = "mobile-web-app-capable", content = "yes"), 93 | shiny::tags$meta(name = "HandheldFriendly", content = "True"), 94 | shiny::tags$meta(name = "MobileOptimized", content = "320"), 95 | # 96 | # 97 | shiny::includeCSS(path = "https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300i,400,400i,500,500i,600,600i,700,700i&subset=latin-ext"), 98 | shiny::tags$title(title) 99 | ), 100 | # Body 101 | addDeps( 102 | shiny::tags$body( 103 | class = NA, 104 | # set up a time-out for the preloader 105 | # The body content disappears first, 106 | # then 2s after, the preloader disappears and 107 | # the body content is shown 108 | onload = if (enable_preloader) { 109 | duration <- loading_duration * 1000 110 | paste0( 111 | "$(document).ready(function() { 112 | setTimeout(function(){ 113 | $('.dimmer.active').remove(); 114 | $('.page-main').css('visibility', 'visible'); 115 | $('.footer').css('visibility', 'visible'); 116 | }, ", duration, "); 117 | }); 118 | " 119 | ) 120 | }, 121 | shiny::tags$div( 122 | class = "page", 123 | if (enable_preloader) preloader, 124 | bodyContent, 125 | footer 126 | ) 127 | ) 128 | ) 129 | ) 130 | } 131 | -------------------------------------------------------------------------------- /R/deps.R: -------------------------------------------------------------------------------- 1 | # Add an html dependency, without overwriting existing ones 2 | appendDependencies <- function(x, value) { 3 | if (inherits(value, "html_dependency")) 4 | value <- list(value) 5 | 6 | old <- attr(x, "html_dependencies", TRUE) 7 | 8 | htmltools::htmlDependencies(x) <- c(old, value) 9 | x 10 | } 11 | 12 | # Add dashboard dependencies to a tag object 13 | addDeps <- function(x) { 14 | 15 | # put all necessary ressources here 16 | 17 | tablerDash_js <- "dashboard.js" 18 | tablerDash_css <- "dashboard.css" 19 | init_js <- "init.js" 20 | 21 | require_js <- "require.min.js" 22 | core_js <- "core.js" 23 | 24 | bootstrap_js <- "bootstrap.bundle.min.js" 25 | fontawesome_css <- "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/" 26 | 27 | dashboardDeps <- list( 28 | # fontawesome 29 | htmltools::htmlDependency( 30 | name = "fontawesome", 31 | version = as.character(utils::packageVersion("tablerDash")), 32 | src = c(href = fontawesome_css), 33 | stylesheet = "font-awesome.min.css" 34 | ), 35 | # bootstrap deps 36 | htmltools::htmlDependency( 37 | name = "bootstrap", 38 | version = "4.0.0", 39 | src = c(file = system.file("bootstrap-4.0.0", package = "tablerDash")), 40 | script = bootstrap_js 41 | ), 42 | #tablerDash 43 | htmltools::htmlDependency( 44 | name = "tablerDash", 45 | version = "0.1.0", 46 | src = c(file = system.file("tablerDash-0.1.0", package = "tablerDash")), 47 | script = c(init_js, tablerDash_js, core_js), 48 | stylesheet = tablerDash_css 49 | ) 50 | ) 51 | appendDependencies(x, dashboardDeps) 52 | } 53 | -------------------------------------------------------------------------------- /R/gallery.R: -------------------------------------------------------------------------------- 1 | #' @title Launch the tablerDash Gallery 2 | #' 3 | #' @description A gallery of all components available in tablerDash. 4 | #' 5 | #' @export 6 | #' 7 | #' @examples 8 | #' 9 | #' if (interactive()) { 10 | #' 11 | #' tablerDashGallery() 12 | #' 13 | #' } 14 | tablerDashGallery <- function() { # nocov start 15 | if (!requireNamespace(package = "shinyWidgets")) 16 | message("Package 'shinyWidgets' is required to run this function") 17 | if (!requireNamespace(package = "shinyEffects")) 18 | message("Package 'shinyEffects' is required to run this function") 19 | if (!requireNamespace(package = "echarts4r")) 20 | message("Package 'echarts4r' is required to run this function") 21 | 22 | shiny::shinyAppFile( 23 | system.file( 24 | "examples/tabs/app.R", 25 | package = 'tablerDash', 26 | mustWork = TRUE 27 | ) 28 | ) 29 | } 30 | -------------------------------------------------------------------------------- /R/icons.R: -------------------------------------------------------------------------------- 1 | #' Create a Boostrap 4 icon 2 | #' 3 | #' Build a tabler icon 4 | #' 5 | #' @param name Name of icon. See \url{https://preview.tabler.io/icons.html} for all valid icons. 6 | #' @param lib Icon library ("feather", "font-awesome", "payment"). 7 | #' 8 | #' @author David Granjon, \email{dgranjon@@ymail.com} 9 | #' 10 | #' @export 11 | tablerIcon <- function(name, lib = c("feather", "font-awesome", "payment")) { 12 | lib <- match.arg(lib) 13 | iconCl <- switch( 14 | lib, 15 | "feather" = "fe fe-", 16 | "font-awesome" = "fa fa-", 17 | "payment" = "payment payment-" 18 | ) 19 | shiny::tags$i(class = paste0(iconCl, name)) 20 | } 21 | -------------------------------------------------------------------------------- /R/sysdata.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/R/sysdata.rda -------------------------------------------------------------------------------- /R/utils.R: -------------------------------------------------------------------------------- 1 | #' Assert that a tag has specified properties 2 | #' @param tag A tag object. 3 | #' @param type The type of a tag, like "div", "a", "span". 4 | #' @param class An HTML class. 5 | #' @param allowUI If TRUE (the default), allow dynamic outputs generated by 6 | #' \code{\link[shiny]{uiOutput}} or \code{\link[shiny]{htmlOutput}}. When a 7 | #' dynamic output is provided, \code{tagAssert} won't try to validate the the 8 | #' contents. 9 | #' @keywords internal 10 | tagAssert <- function(tag, type = NULL, class = NULL, allowUI = TRUE) { 11 | if (!inherits(tag, "shiny.tag")) { 12 | print(tag) 13 | stop("Expected an object with class 'shiny.tag'.") 14 | } 15 | 16 | # Skip dynamic output elements 17 | if (allowUI && 18 | (hasCssClass(tag, "shiny-html-output") || 19 | hasCssClass(tag, "shinydashboard-menu-output"))) { 20 | return() 21 | } 22 | 23 | if (!is.null(type) && tag$name != type) { 24 | stop("Expected tag to be of type ", type) 25 | } 26 | 27 | if (!is.null(class)) { 28 | if (is.null(tag$attribs$class)) { 29 | stop("Expected tag to have class '", class, "'") 30 | 31 | } else { 32 | tagClasses <- strsplit(tag$attribs$class, " ")[[1]] 33 | if (!(class %in% tagClasses)) { 34 | stop("Expected tag to have class '", class, "'") 35 | } 36 | } 37 | } 38 | } 39 | 40 | 41 | hasCssClass <- function(tag, class) { 42 | if (is.null(tag$attribs) || is.null(tag$attribs$class)) 43 | return(FALSE) 44 | 45 | classes <- strsplit(tag$attribs$class, " +")[[1]] 46 | return(class %in% classes) 47 | } 48 | 49 | 50 | # Make sure a tab name is valid (there's no "." in it). 51 | validateTabName <- function(name) { 52 | if (grepl(".", name, fixed = TRUE)) { 53 | stop("tabName must not have a '.' in it.") 54 | } 55 | } 56 | 57 | #' Create shinylive iframe 58 | #' 59 | #' Useful for pkgdown website 60 | #' 61 | #' @param url app url. A shinylive link. 62 | #' @param mode How to display the shinylive app. Default to app mode. 63 | #' @param header Whether to display the shinylive header. Default to TRUE. 64 | #' @keywords internal 65 | create_app_link <- function(url, mode = c("app", "editor"), header = TRUE) { 66 | mode <- match.arg(mode) 67 | 68 | if (mode != "editor") url <- gsub("editor", mode, url) 69 | 70 | if (!header) { 71 | url <- paste0(url, "&h=0") 72 | } 73 | 74 | shiny::tags$iframe( 75 | # To allow the content to fill the full screen card 76 | class = "html-fill-item", 77 | src = url, 78 | height = "700", 79 | width = "100%", 80 | style = "border: 1px solid rgba(0,0,0,0.175); border-radius: .375rem;", 81 | allowfullscreen = "", 82 | allow = "autoplay", 83 | `data-external` = "1" 84 | ) 85 | } 86 | 87 | code_chunk <- function(output, language = "r") { 88 | cat(paste0("```", language)) 89 | cat(output) 90 | cat("\n```\n") 91 | } 92 | 93 | print_r_code <- function(name) { 94 | path <- system.file(sprintf("examples/shinylive/%s/app.R", name), package = "tablerDash") 95 | lines <- readLines(path) 96 | to_remove <- grep("webr::", lines) 97 | code_chunk(cat(paste(lines[-to_remove], collapse = "\n"))) 98 | } -------------------------------------------------------------------------------- /README.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | --- 4 | 5 | 6 | 7 | ```{r, include = FALSE} 8 | knitr::opts_chunk$set( 9 | collapse = TRUE, 10 | comment = "#>", 11 | fig.path = "man/figures/README-", 12 | out.width = "100%" 13 | ) 14 | ``` 15 | 16 | # tablerDash 17 | 18 | 19 | [![R-CMD-check](https://github.com/RinteRface/tablerDash/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/RinteRface/tablerDash/actions/workflows/R-CMD-check.yaml) 20 | [![CRAN status](https://www.r-pkg.org/badges/version/tablerDash)](https://cran.r-project.org/package=tablerDash) 21 | [![lifecycle](https://img.shields.io/badge/lifecycle-maturing-ff69b4.svg)](https://lifecycle.r-lib.org/articles/stages.html#maturing) 22 | [![cranlogs](https://cranlogs.r-pkg.org/badges/tablerDash)](https://cran.r-project.org/package=tablerDash) 23 | [![total](https://cranlogs.r-pkg.org/badges/grand-total/tablerDash)](https://cran.r-project.org/package=tablerDash) 24 | 25 | 26 | > Tabler dashboard template for shiny with Bootstrap 4 27 | 28 | See [https://tabler.io](https://tabler.io) for the original template. 29 | 30 | ## Installation 31 | 32 | This package is on CRAN: 33 | 34 | ```r 35 | # latest devel version 36 | devtools::install_github("RinteRface/tablerDash") 37 | # CRAN version 38 | install.packages("tablerDash") 39 | ``` 40 | 41 | ## Demo 42 | 43 |
44 |
45 | 46 |
47 |
48 | 49 |
50 | 51 |
52 |
53 | 54 |
55 |
56 | 57 |
58 | 59 | 60 | ## Issues 61 | 62 | Issues are listed [here](https://github.com/RinteRface/tablerDash/issues). 63 | 64 | ## Code of Conduct 65 | 66 | Please note that the tablerDash project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. 67 | 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # tablerDash 5 | 6 | 7 | 8 | [![R-CMD-check](https://github.com/RinteRface/tablerDash/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/RinteRface/tablerDash/actions/workflows/R-CMD-check.yaml) 9 | [![CRAN 10 | status](https://www.r-pkg.org/badges/version/tablerDash)](https://cran.r-project.org/package=tablerDash) 11 | [![lifecycle](https://img.shields.io/badge/lifecycle-maturing-ff69b4.svg)](https://lifecycle.r-lib.org/articles/stages.html#maturing) 12 | [![cranlogs](https://cranlogs.r-pkg.org/badges/tablerDash)](https://cran.r-project.org/package=tablerDash) 13 | [![total](https://cranlogs.r-pkg.org/badges/grand-total/tablerDash)](https://cran.r-project.org/package=tablerDash) 14 | 15 | 16 | > Tabler dashboard template for shiny with Bootstrap 4 17 | 18 | See for the original template. 19 | 20 | ## Installation 21 | 22 | This package is on CRAN: 23 | 24 | ``` r 25 | # latest devel version 26 | devtools::install_github("RinteRface/tablerDash") 27 | # CRAN version 28 | install.packages("tablerDash") 29 | ``` 30 | 31 | ## Demo 32 | 33 |
34 | 35 |
36 | 37 | 38 | 39 |
40 | 41 |
42 | 43 |
44 | 45 |
46 | 47 |
48 | 49 | 50 | 51 |
52 | 53 |
54 | 55 |
56 | 57 | ## Issues 58 | 59 | Issues are listed 60 | [here](https://github.com/RinteRface/tablerDash/issues). 61 | 62 | ## Code of Conduct 63 | 64 | Please note that the tablerDash project is released with a [Contributor 65 | Code of 66 | Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). 67 | By contributing to this project, you agree to abide by its terms. 68 | -------------------------------------------------------------------------------- /_pkgdown.yml: -------------------------------------------------------------------------------- 1 | template: 2 | bootstrap: 5 3 | 4 | url: https://rinterface.github.io/tablerDash/ 5 | 6 | reference: 7 | - title: Basic dashboard functions 8 | desc: Dashboard skeleton functions 9 | contents: 10 | - '`tablerDashPage`' 11 | - '`tablerDashNav`' 12 | - '`tablerDashBody`' 13 | - '`tablerDashFooter`' 14 | 15 | - title: Body content functions 16 | desc: Functions that are to be used in the tablerDashBody 17 | contents: 18 | - '`tablerTabItems`' 19 | - '`tablerTabItem`' 20 | 21 | - title: Navbar Content functions 22 | desc: Functions that are to be used in the tablerDashNav 23 | contents: 24 | - '`tablerDropdown`' 25 | - '`tablerDropdownItem`' 26 | - '`tablerNavMenu`' 27 | - '`tablerNavMenuItem`' 28 | 29 | - title: Cards 30 | desc: Build cards 31 | contents: 32 | - '`tablerBlogCard`' 33 | - '`tablerCard`' 34 | - '`tablerInfoCard`' 35 | - '`tablerMediaCard`' 36 | - '`tablerProfileCard`' 37 | - '`tablerStatCard`' 38 | 39 | - title: Other bs4 items 40 | desc: To better customize your app 41 | contents: 42 | - '`tablerAlert`' 43 | - '`tablerAvatar`' 44 | - '`tablerAvatarList`' 45 | - '`tablerIcon`' 46 | - '`tablerList`' 47 | - '`tablerListItem`' 48 | - '`tablerProgress`' 49 | - '`tablerSocialLink`' 50 | - '`tablerSocialLinks`' 51 | - '`tablerStatus`' 52 | - '`tablerTable`' 53 | - '`tablerTableItem`' 54 | - '`tablerTag`' 55 | - '`tablerTagList`' 56 | - '`tablerTimeline`' 57 | - '`tablerTimelineItem`' 58 | 59 | - title: Gallery 60 | desc: tablerDash showcase 61 | contents: 62 | - '`tablerDashGallery`' 63 | 64 | navbar: 65 | structure: 66 | left: 67 | - home 68 | - intro 69 | - reference 70 | - articles 71 | - tutorials 72 | - news 73 | right: github 74 | components: 75 | home: 76 | icon: fa-home fa-lg 77 | href: index.html 78 | reference: 79 | text: Reference 80 | href: reference/index.html 81 | news: 82 | text: Changelog 83 | href: news/index.html 84 | github: 85 | icon: fa-github fa-lg 86 | href: https://github.com/RinteRface/tablerDash 87 | 88 | news: 89 | releases: 90 | - text: "tablerDash 0.1.5" 91 | - text: "tablerDash 0.1.0" 92 | -------------------------------------------------------------------------------- /cran-comments.md: -------------------------------------------------------------------------------- 1 | ## Test environments 2 | * local OS X install, R 4.2.2 3 | * R-hub 4 | * win-builder (devel and release) 5 | 6 | ## R CMD check results 7 | 8 | 0 errors | 0 warnings | 0 note 9 | 10 | 11 | ## Comments 12 | 13 | This new release also fixes CRAN [issues](https://cran.r-project.org/web/checks/check_results_tablerDash.html). -------------------------------------------------------------------------------- /docs/authors.html: -------------------------------------------------------------------------------- 1 | 2 | Authors and Citation • tablerDash 3 | Skip to contents 4 | 5 | 6 |
27 |
28 |
32 | 33 |
34 |

Authors

35 | 36 |
  • 37 |

    David Granjon. Author, maintainer. 38 |

    39 |
  • 40 |
  • 41 |

    RinteRface. Copyright holder. 42 |

    43 |
  • 44 |
  • 45 |

    codecalm. Contributor, copyright holder. 46 |
    tabler template for Bootstrap 4

    47 |
  • 48 |
  • 49 |

    Winston Chang. Contributor, copyright holder. 50 |
    Utils functions from shinydashboard

    51 |
  • 52 |
53 | 54 |
55 |

Citation

56 |

Source: DESCRIPTION

57 | 58 |

Granjon D (2024). 59 | tablerDash: 'Tabler' API for 'Shiny'. 60 | https://rinterface.github.io/tablerDash/, https://github.com/RinteRface/tablerDash/ . 61 |

62 |
@Manual{,
63 |   title = {tablerDash: 'Tabler' API for 'Shiny'},
64 |   author = {David Granjon},
65 |   year = {2024},
66 |   note = {https://rinterface.github.io/tablerDash/, https://github.com/RinteRface/tablerDash/ },
67 | }
68 |
69 | 70 |
72 | 73 | 74 |
77 | 78 | 81 | 82 |
83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /docs/docsearch.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | // register a handler to move the focus to the search bar 4 | // upon pressing shift + "/" (i.e. "?") 5 | $(document).on('keydown', function(e) { 6 | if (e.shiftKey && e.keyCode == 191) { 7 | e.preventDefault(); 8 | $("#search-input").focus(); 9 | } 10 | }); 11 | 12 | $(document).ready(function() { 13 | // do keyword highlighting 14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ 15 | var mark = function() { 16 | 17 | var referrer = document.URL ; 18 | var paramKey = "q" ; 19 | 20 | if (referrer.indexOf("?") !== -1) { 21 | var qs = referrer.substr(referrer.indexOf('?') + 1); 22 | var qs_noanchor = qs.split('#')[0]; 23 | var qsa = qs_noanchor.split('&'); 24 | var keyword = ""; 25 | 26 | for (var i = 0; i < qsa.length; i++) { 27 | var currentParam = qsa[i].split('='); 28 | 29 | if (currentParam.length !== 2) { 30 | continue; 31 | } 32 | 33 | if (currentParam[0] == paramKey) { 34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); 35 | } 36 | } 37 | 38 | if (keyword !== "") { 39 | $(".contents").unmark({ 40 | done: function() { 41 | $(".contents").mark(keyword); 42 | } 43 | }); 44 | } 45 | } 46 | }; 47 | 48 | mark(); 49 | }); 50 | }); 51 | 52 | /* Search term highlighting ------------------------------*/ 53 | 54 | function matchedWords(hit) { 55 | var words = []; 56 | 57 | var hierarchy = hit._highlightResult.hierarchy; 58 | // loop to fetch from lvl0, lvl1, etc. 59 | for (var idx in hierarchy) { 60 | words = words.concat(hierarchy[idx].matchedWords); 61 | } 62 | 63 | var content = hit._highlightResult.content; 64 | if (content) { 65 | words = words.concat(content.matchedWords); 66 | } 67 | 68 | // return unique words 69 | var words_uniq = [...new Set(words)]; 70 | return words_uniq; 71 | } 72 | 73 | function updateHitURL(hit) { 74 | 75 | var words = matchedWords(hit); 76 | var url = ""; 77 | 78 | if (hit.anchor) { 79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; 80 | } else { 81 | url = hit.url + '?q=' + escape(words.join(" ")); 82 | } 83 | 84 | return url; 85 | } 86 | -------------------------------------------------------------------------------- /docs/extra.css: -------------------------------------------------------------------------------- 1 | .card { 2 | box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); 3 | transition: 0.3s; 4 | border-radius: 5px; /* 5px rounded corners */ 5 | } 6 | 7 | .card:hover { 8 | box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); 9 | } 10 | 11 | /* Add rounded corners to the top left and the top right corner of the image */ 12 | img { 13 | border-radius: 5px 5px 5px 5px; 14 | } 15 | 16 | /* Add some padding inside the card container */ 17 | .container { 18 | padding: 2px 16px; 19 | } 20 | 21 | /* bslib cards */ 22 | .bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen="true"]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border="true"]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius="true"]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen="true"]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,0.15);margin:0.2rem 0.4rem;padding:0.55rem !important;font-size:.8rem;cursor:pointer;opacity:0.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen="false"]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media (max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:0.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:0.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}} 23 | 24 | /* fill css for fullscreen cards */ 25 | .html-fill-container { 26 | display: flex; 27 | flex-direction: column; 28 | /* Prevent the container from expanding vertically or horizontally beyond its 29 | parent's constraints. */ 30 | min-height: 0; 31 | min-width: 0; 32 | } 33 | .html-fill-container > .html-fill-item { 34 | /* Fill items can grow and shrink freely within 35 | available vertical space in fillable container */ 36 | flex: 1 1 auto; 37 | min-height: 0; 38 | min-width: 0; 39 | } 40 | .html-fill-container > :not(.html-fill-item) { 41 | /* Prevent shrinking or growing of non-fill items */ 42 | flex: 0 0 auto; 43 | } -------------------------------------------------------------------------------- /docs/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: '3.2' 2 | pkgdown: 2.1.0 3 | pkgdown_sha: ~ 4 | articles: {} 5 | last_built: 2024-09-26T17:46Z 6 | urls: 7 | reference: https://rinterface.github.io/tablerDash/reference 8 | article: https://rinterface.github.io/tablerDash/articles 9 | -------------------------------------------------------------------------------- /docs/reference/figures/tablerDash_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/docs/reference/figures/tablerDash_demo.png -------------------------------------------------------------------------------- /docs/reference/tablerTabItems.html: -------------------------------------------------------------------------------- 1 | 2 | A container for tab items — tablerTabItems • tablerDash 3 | Skip to contents 4 | 5 | 6 |
27 |
28 |
34 | 35 |
36 |

A container for tab items

37 |
38 | 39 |
40 |

Usage

41 |
tablerTabItems(...)
42 |
43 | 44 |
45 |

Arguments

46 | 47 | 48 |
...
49 |

Items to put in the container. Each item should be a 50 | tablerTabItem.

51 | 52 |
53 | 54 |
56 | 57 | 58 |
61 | 62 | 65 | 66 |
67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | always_allow_html: true 4 | --- 5 | 6 | ```{r setup, include=FALSE} 7 | library(bslib) 8 | ``` 9 | 10 | ```{r, include = FALSE} 11 | knitr::opts_chunk$set( 12 | collapse = TRUE, 13 | comment = "#>", 14 | fig.path = "man/figures/README-", 15 | out.width = "100%" 16 | ) 17 | ``` 18 | 19 | # tablerDash 20 | 21 | 22 | [![R build status](https://github.com/RinteRface/tablerDash/workflows/R-CMD-check/badge.svg)](https://github.com/RinteRface/tablerDash/actions) 23 | [![CRAN status](https://www.r-pkg.org/badges/version/tablerDash)](https://cran.r-project.org/package=tablerDash) 24 | [![lifecycle](https://img.shields.io/badge/lifecycle-maturing-ff69b4.svg)](https://www.tidyverse.org/lifecycle/#maturing) 25 | [![cranlogs](https://cranlogs.r-pkg.org/badges/tablerDash)](https://cran.r-project.org/package=tablerDash) 26 | [![total](https://cranlogs.r-pkg.org/badges/grand-total/tablerDash)](https://www.rpackages.io/package/tablerDash) 27 | 28 | 29 | > Tabler dashboard template for shiny with Bootstrap 4 30 | 31 | See [https://tabler.io](https://tabler.io) for the original template. 32 | 33 | ## Installation 34 | 35 | This package is on CRAN: 36 | 37 | ```r 38 | # latest devel version 39 | devtools::install_github("RinteRface/tablerDash") 40 | # CRAN version 41 | install.packages("tablerDash") 42 | ``` 43 | 44 | ## Demo 45 | 46 | ```{r dashboard-code, eval=TRUE, echo=FALSE} 47 | card( 48 | tablerDash:::create_app_link(tablerDash:::shinylive_links["inst/examples/shinylive/dashboard"], header = FALSE), 49 | full_screen = TRUE, 50 | style = "margin: 0 auto; float: none;" 51 | ) 52 | ``` 53 | 54 |

55 | 64 |

65 | 66 |
67 | ```{r, results="asis", echo=FALSE, warning=FALSE, comment = ""} 68 | tablerDash:::print_r_code("dashboard") 69 | ``` 70 |
71 | 72 | 73 |
74 |
75 | 76 |
77 |
78 | 79 |
80 | 81 |
82 |
83 | 84 |
85 |
86 | 87 |
88 | 89 | 90 | ## Issues 91 | 92 | Issues are listed [here](https://github.com/RinteRface/tablerDash/issues). 93 | 94 | ## Code of Conduct 95 | 96 | Please note that the tablerDash project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms. -------------------------------------------------------------------------------- /inst/shinylive/tools.R: -------------------------------------------------------------------------------- 1 | pak::pak("parmsam/r-shinylive@feat/encode-decode-url") 2 | 3 | create_shinylive_links <- function(path) { 4 | 5 | dirs <- list.dirs(path)[-1] 6 | 7 | vapply( 8 | list.dirs(path)[-1], 9 | shinylive:::url_encode_dir, 10 | FUN.VALUE = character(1) 11 | ) 12 | } 13 | 14 | create_vignettes_links <- function() { 15 | create_shinylive_links("inst/examples/shinylive") 16 | } 17 | 18 | shinylive_links <- create_vignettes_links() 19 | usethis::use_data(shinylive_links, internal = TRUE, overwrite = TRUE) -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/core.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | let hexToRgba = function(hex, opacity) { 5 | let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); 6 | let rgb = result ? { 7 | r: parseInt(result[1], 16), 8 | g: parseInt(result[2], 16), 9 | b: parseInt(result[3], 16) 10 | } : null; 11 | 12 | return 'rgba(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ', ' + opacity + ')'; 13 | }; 14 | 15 | /** 16 | * 17 | */ 18 | $(document).ready(function() { 19 | /** Constant div card */ 20 | const DIV_CARD = 'div.card'; 21 | 22 | /** Initialize tooltips */ 23 | $('[data-toggle="tooltip"]').tooltip(); 24 | 25 | /** Initialize popovers */ 26 | $('[data-toggle="popover"]').popover({ 27 | html: true 28 | }); 29 | 30 | /** Function for remove card */ 31 | $('[data-toggle="card-remove"]').on('click', function(e) { 32 | let $card = $(this).closest(DIV_CARD); 33 | 34 | $card.remove(); 35 | 36 | e.preventDefault(); 37 | return false; 38 | }); 39 | 40 | /** Function for collapse card */ 41 | $('[data-toggle="card-collapse"]').on('click', function(e) { 42 | let $card = $(this).closest(DIV_CARD); 43 | 44 | $card.toggleClass('card-collapsed'); 45 | 46 | e.preventDefault(); 47 | return false; 48 | }); 49 | 50 | /** Function for fullscreen card */ 51 | $('[data-toggle="card-fullscreen"]').on('click', function(e) { 52 | let $card = $(this).closest(DIV_CARD); 53 | 54 | $card.toggleClass('card-fullscreen').removeClass('card-collapsed'); 55 | // line added to tell shiny to resize the body content 56 | $card.trigger("shown"); 57 | e.preventDefault(); 58 | return false; 59 | }); 60 | 61 | /** */ 62 | if ($('[data-sparkline]').length) { 63 | let generateSparkline = function($elem, data, params) { 64 | $elem.sparkline(data, { 65 | type: $elem.attr('data-sparkline-type'), 66 | height: '100%', 67 | barColor: params.color, 68 | lineColor: params.color, 69 | fillColor: 'transparent', 70 | spotColor: params.color, 71 | spotRadius: 0, 72 | lineWidth: 2, 73 | highlightColor: hexToRgba(params.color, .6), 74 | highlightLineColor: '#666', 75 | defaultPixelsPerValue: 5 76 | }); 77 | }; 78 | 79 | require(['sparkline'], function() { 80 | $('[data-sparkline]').each(function() { 81 | let $chart = $(this); 82 | 83 | generateSparkline($chart, JSON.parse($chart.attr('data-sparkline')), { 84 | color: $chart.attr('data-sparkline-color') 85 | }); 86 | }); 87 | }); 88 | } 89 | 90 | /** */ 91 | if ($('.chart-circle').length) { 92 | require(['circle-progress'], function() { 93 | $('.chart-circle').each(function() { 94 | let $this = $(this); 95 | 96 | $this.circleProgress({ 97 | fill: { 98 | color: tabler.colors[$this.attr('data-color')] || tabler.colors.blue 99 | }, 100 | size: $this.height(), 101 | startAngle: -Math.PI / 4 * 2, 102 | emptyFill: '#F4F4F4', 103 | lineCap: 'round' 104 | }); 105 | }); 106 | }); 107 | } 108 | }); 109 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/dashboard.js: -------------------------------------------------------------------------------- 1 | window.tabler = { 2 | colors: { 3 | 'blue': '#467fcf', 4 | 'blue-darkest': '#0e1929', 5 | 'blue-darker': '#1c3353', 6 | 'blue-dark': '#3866a6', 7 | 'blue-light': '#7ea5dd', 8 | 'blue-lighter': '#c8d9f1', 9 | 'blue-lightest': '#edf2fa', 10 | 'azure': '#45aaf2', 11 | 'azure-darkest': '#0e2230', 12 | 'azure-darker': '#1c4461', 13 | 'azure-dark': '#3788c2', 14 | 'azure-light': '#7dc4f6', 15 | 'azure-lighter': '#c7e6fb', 16 | 'azure-lightest': '#ecf7fe', 17 | 'indigo': '#6574cd', 18 | 'indigo-darkest': '#141729', 19 | 'indigo-darker': '#282e52', 20 | 'indigo-dark': '#515da4', 21 | 'indigo-light': '#939edc', 22 | 'indigo-lighter': '#d1d5f0', 23 | 'indigo-lightest': '#f0f1fa', 24 | 'purple': '#a55eea', 25 | 'purple-darkest': '#21132f', 26 | 'purple-darker': '#42265e', 27 | 'purple-dark': '#844bbb', 28 | 'purple-light': '#c08ef0', 29 | 'purple-lighter': '#e4cff9', 30 | 'purple-lightest': '#f6effd', 31 | 'pink': '#f66d9b', 32 | 'pink-darkest': '#31161f', 33 | 'pink-darker': '#622c3e', 34 | 'pink-dark': '#c5577c', 35 | 'pink-light': '#f999b9', 36 | 'pink-lighter': '#fcd3e1', 37 | 'pink-lightest': '#fef0f5', 38 | 'red': '#e74c3c', 39 | 'red-darkest': '#2e0f0c', 40 | 'red-darker': '#5c1e18', 41 | 'red-dark': '#b93d30', 42 | 'red-light': '#ee8277', 43 | 'red-lighter': '#f8c9c5', 44 | 'red-lightest': '#fdedec', 45 | 'orange': '#fd9644', 46 | 'orange-darkest': '#331e0e', 47 | 'orange-darker': '#653c1b', 48 | 'orange-dark': '#ca7836', 49 | 'orange-light': '#feb67c', 50 | 'orange-lighter': '#fee0c7', 51 | 'orange-lightest': '#fff5ec', 52 | 'yellow': '#f1c40f', 53 | 'yellow-darkest': '#302703', 54 | 'yellow-darker': '#604e06', 55 | 'yellow-dark': '#c19d0c', 56 | 'yellow-light': '#f5d657', 57 | 'yellow-lighter': '#fbedb7', 58 | 'yellow-lightest': '#fef9e7', 59 | 'lime': '#7bd235', 60 | 'lime-darkest': '#192a0b', 61 | 'lime-darker': '#315415', 62 | 'lime-dark': '#62a82a', 63 | 'lime-light': '#a3e072', 64 | 'lime-lighter': '#d7f2c2', 65 | 'lime-lightest': '#f2fbeb', 66 | 'green': '#5eba00', 67 | 'green-darkest': '#132500', 68 | 'green-darker': '#264a00', 69 | 'green-dark': '#4b9500', 70 | 'green-light': '#8ecf4d', 71 | 'green-lighter': '#cfeab3', 72 | 'green-lightest': '#eff8e6', 73 | 'teal': '#2bcbba', 74 | 'teal-darkest': '#092925', 75 | 'teal-darker': '#11514a', 76 | 'teal-dark': '#22a295', 77 | 'teal-light': '#6bdbcf', 78 | 'teal-lighter': '#bfefea', 79 | 'teal-lightest': '#eafaf8', 80 | 'cyan': '#17a2b8', 81 | 'cyan-darkest': '#052025', 82 | 'cyan-darker': '#09414a', 83 | 'cyan-dark': '#128293', 84 | 'cyan-light': '#5dbecd', 85 | 'cyan-lighter': '#b9e3ea', 86 | 'cyan-lightest': '#e8f6f8', 87 | 'gray': '#868e96', 88 | 'gray-darkest': '#1b1c1e', 89 | 'gray-darker': '#36393c', 90 | 'gray-dark': '#6b7278', 91 | 'gray-light': '#aab0b6', 92 | 'gray-lighter': '#dbdde0', 93 | 'gray-lightest': '#f3f4f5', 94 | 'gray-dark': '#343a40', 95 | 'gray-dark-darkest': '#0a0c0d', 96 | 'gray-dark-darker': '#15171a', 97 | 'gray-dark-dark': '#2a2e33', 98 | 'gray-dark-light': '#717579', 99 | 'gray-dark-lighter': '#c2c4c6', 100 | 'gray-dark-lightest': '#ebebec' 101 | } 102 | }; 103 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/fonts/feather/feather-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/inst/tablerDash-0.1.0/fonts/feather/feather-webfont.eot -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/fonts/feather/feather-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/inst/tablerDash-0.1.0/fonts/feather/feather-webfont.ttf -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/fonts/feather/feather-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/inst/tablerDash-0.1.0/fonts/feather/feather-webfont.woff -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/aol-explorer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/blackberry.svg: -------------------------------------------------------------------------------- 1 | blackberryCreated with Sketch.Layer 1 -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/dolphin.svg: -------------------------------------------------------------------------------- 1 | dolphinCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/edge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/ie.svg: -------------------------------------------------------------------------------- 1 | image/svg+xml -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/maxthon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/netscape.svg: -------------------------------------------------------------------------------- 1 | netscapeCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/opera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/uc-browser.svg: -------------------------------------------------------------------------------- 1 | uc-browserCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/browsers/vivaldi.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/bitcoin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/cardano.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/dash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/eos.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/ethereum.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/litecoin.svg: -------------------------------------------------------------------------------- 1 | Litecoin -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/nem.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/crypto-currencies/ripple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/2checkout-dark.svg: -------------------------------------------------------------------------------- 1 | 2checkout-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/2checkout.svg: -------------------------------------------------------------------------------- 1 | 2checkout-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/discover.svg: -------------------------------------------------------------------------------- 1 | Discover-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/ebay-dark.svg: -------------------------------------------------------------------------------- 1 | Ebay-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/ebay.svg: -------------------------------------------------------------------------------- 1 | Ebay-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/neteller-dark.svg: -------------------------------------------------------------------------------- 1 | Neteller-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/neteller.svg: -------------------------------------------------------------------------------- 1 | Neteller-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/ogone-dark.svg: -------------------------------------------------------------------------------- 1 | Ogone-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/ogone.svg: -------------------------------------------------------------------------------- 1 | Ogone-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/paymill-dark.svg: -------------------------------------------------------------------------------- 1 | Paymill-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/paymill.svg: -------------------------------------------------------------------------------- 1 | Paymill-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/payone-dark.svg: -------------------------------------------------------------------------------- 1 | Payone-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/payone.svg: -------------------------------------------------------------------------------- 1 | Payone-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/sage-dark.svg: -------------------------------------------------------------------------------- 1 | Sage-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/sage.svg: -------------------------------------------------------------------------------- 1 | Sage-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/skrill-dark.svg: -------------------------------------------------------------------------------- 1 | Skrill-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/skrill.svg: -------------------------------------------------------------------------------- 1 | Skrill-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/solo-dark.svg: -------------------------------------------------------------------------------- 1 | Solo-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/solo.svg: -------------------------------------------------------------------------------- 1 | Solo-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/switch-dark.svg: -------------------------------------------------------------------------------- 1 | Switch-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/switch.svg: -------------------------------------------------------------------------------- 1 | Switch-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/visa-dark.svg: -------------------------------------------------------------------------------- 1 | Visa-darkCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/images/payments/visa.svg: -------------------------------------------------------------------------------- 1 | Visa-lightCreated with Sketch. -------------------------------------------------------------------------------- /inst/tablerDash-0.1.0/init.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | //var $tablinks = $("#mymenu .nav-item a"); 3 | //console.log($tablinks); 4 | 5 | // select the first nav item by default at start 6 | $('#mymenu .nav-item:eq(0) a').addClass('active'); 7 | $('#mymenu .nav-item:eq(0) a').tab('show'); 8 | $('.container-fluid.tab-pane:eq(0)').addClass('active show'); 9 | 10 | // handles shinyapps.io 11 | var workerId = $('base').attr('href'); 12 | // ensure that this code does not locally 13 | if (typeof workerId != "undefined") { 14 | var pathname = window.location.pathname; 15 | var newpath = pathname + workerId; 16 | console.log(newpath); 17 | window.history.replaceState( {} , 'newpath', newpath); 18 | // do it for all tabs 19 | //$("#mymenu .nav-item a").each(function(){ 20 | // $(this).click(function(){ 21 | // // get the tablink href value 22 | // var tablink = $(this).attr("href"); 23 | // // set the new url taking worker id as reference 24 | // $(this).attr("href", url + workerId + tablink); 25 | // console.log($(this)); 26 | // alert("Click on a tab!"); 27 | // }); 28 | //}); 29 | } 30 | 31 | // handle when the user click on other items 32 | //$('.nav-item').on('click', function (event) { 33 | // // activate the seletec tab item 34 | // $target = $(event.target); 35 | // $target.addClass('active'); 36 | // $target.tab('show'); 37 | // // inactivate all other nav items 38 | // $target.parent().siblings().find('a').removeClass('active'); 39 | // // get the item index 40 | // $index = $target.parent().index(); 41 | // // show the corresponding tab 42 | // $related_tab = $('.container-fluid.tab-pane:eq('+ $index +')'); 43 | // $related_tab.addClass('active show'); 44 | // // hide other tabs 45 | // $other_tabs = $related_tab.siblings(); 46 | // $other_tabs.removeClass('active show'); 47 | //}); 48 | 49 | }); 50 | -------------------------------------------------------------------------------- /man/create_app_link.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{create_app_link} 4 | \alias{create_app_link} 5 | \title{Create shinylive iframe} 6 | \usage{ 7 | create_app_link(url, mode = c("app", "editor"), header = TRUE) 8 | } 9 | \arguments{ 10 | \item{url}{app url. A shinylive link.} 11 | 12 | \item{mode}{How to display the shinylive app. Default to app mode.} 13 | 14 | \item{header}{Whether to display the shinylive header. Default to TRUE.} 15 | } 16 | \description{ 17 | Useful for pkgdown website 18 | } 19 | \keyword{internal} 20 | -------------------------------------------------------------------------------- /man/figures/tablerDash_demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RinteRface/tablerDash/da4f8faff8a62200723730a47fc8068d323e3980/man/figures/tablerDash_demo.png -------------------------------------------------------------------------------- /man/tablerAlert.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerAlert} 4 | \alias{tablerAlert} 5 | \title{Create a Boostrap 4 alert} 6 | \usage{ 7 | tablerAlert(..., title = NULL, status, icon = NULL, closable = TRUE) 8 | } 9 | \arguments{ 10 | \item{...}{Alert content.} 11 | 12 | \item{title}{Alert title.} 13 | 14 | \item{status}{Alert status. See \url{https://preview.tabler.io/docs/colors.html}.} 15 | 16 | \item{icon}{Alert icon.} 17 | 18 | \item{closable}{Whether to close the alert. TRUE by default.} 19 | } 20 | \description{ 21 | Build a tabler alert 22 | } 23 | \examples{ 24 | if(interactive()){ 25 | library(shiny) 26 | library(tablerDash) 27 | 28 | shiny::shinyApp( 29 | ui = tablerDashPage( 30 | navbar = NULL, 31 | footer = NULL, 32 | title = "test", 33 | body = tablerDashBody( 34 | tablerAlert( 35 | title = "Alert", 36 | "Lorem ipsum dolor sit amet, consectetur 37 | adipisicing elit. Lorem ipsum dolor sit 38 | amet, consectetur adipisicing elit. 39 | Lorem ipsum dolor sit amet, consectetur 40 | adipisicing elit.", 41 | icon = "alert-triangle", 42 | status = "info" 43 | ) 44 | ) 45 | ), 46 | server = function(input, output) {} 47 | ) 48 | } 49 | 50 | } 51 | \author{ 52 | David Granjon, \email{dgranjon@ymail.com} 53 | } 54 | -------------------------------------------------------------------------------- /man/tablerAvatar.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerAvatar} 4 | \alias{tablerAvatar} 5 | \title{Create a Boostrap 4 avatar} 6 | \usage{ 7 | tablerAvatar(name = NULL, url = NULL, size = NULL, status = NULL, color = NULL) 8 | } 9 | \arguments{ 10 | \item{name}{Avatar placeholder. If not NULL, url cannot be used.} 11 | 12 | \item{url}{Avatar image if any. If not NULL, name cannot be used.} 13 | 14 | \item{size}{Avatar size. NULL, "sm", "md", "lg", "xl" or "xxl".} 15 | 16 | \item{status}{Avatar status. See \url{https://preview.tabler.io/docs/colors.html} 17 | for valid statuses.} 18 | 19 | \item{color}{Avatar background color. See \url{https://preview.tabler.io/docs/colors.html} 20 | for valid colors.} 21 | } 22 | \description{ 23 | Build a tabler avatar 24 | } 25 | \examples{ 26 | if(interactive()){ 27 | library(shiny) 28 | library(tablerDash) 29 | 30 | shiny::shinyApp( 31 | ui = tablerDashPage( 32 | navbar = NULL, 33 | footer = NULL, 34 | title = "test", 35 | body = tablerDashBody( 36 | tablerAvatar( 37 | name = "DG", 38 | size = "xxl" 39 | ), 40 | tablerAvatar( 41 | name = "DG", 42 | color = "orange" 43 | ), 44 | tablerAvatar( 45 | name = "DG", 46 | status = "warning" 47 | ), 48 | tablerAvatar(url = "https://image.flaticon.com/icons/svg/145/145852.svg") 49 | ) 50 | ), 51 | server = function(input, output) {} 52 | ) 53 | } 54 | 55 | } 56 | \author{ 57 | David Granjon, \email{dgranjon@ymail.com} 58 | } 59 | -------------------------------------------------------------------------------- /man/tablerAvatarList.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerAvatarList} 4 | \alias{tablerAvatarList} 5 | \title{Create a Boostrap 4 avatar list} 6 | \usage{ 7 | tablerAvatarList(..., stacked = FALSE) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerAvatar}.} 11 | 12 | \item{stacked}{Whether to stack avatars. FALSE by default.} 13 | } 14 | \description{ 15 | Build a tabler avatar list 16 | } 17 | \examples{ 18 | if(interactive()){ 19 | library(shiny) 20 | library(tablerDash) 21 | 22 | shiny::shinyApp( 23 | ui = tablerDashPage( 24 | navbar = NULL, 25 | footer = NULL, 26 | title = "test", 27 | body = tablerDashBody( 28 | tablerAvatarList( 29 | stacked = TRUE, 30 | tablerAvatar( 31 | name = "DG", 32 | size = "xxl" 33 | ), 34 | tablerAvatar( 35 | name = "DG", 36 | color = "orange" 37 | ), 38 | tablerAvatar( 39 | name = "DG", 40 | status = "warning" 41 | ), 42 | tablerAvatar(url = "https://image.flaticon.com/icons/svg/145/145852.svg") 43 | ) 44 | ) 45 | ), 46 | server = function(input, output) {} 47 | ) 48 | } 49 | 50 | } 51 | \author{ 52 | David Granjon, \email{dgranjon@ymail.com} 53 | } 54 | -------------------------------------------------------------------------------- /man/tablerBlogCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerBlogCard} 4 | \alias{tablerBlogCard} 5 | \title{Create a Boostrap 4 blog card} 6 | \usage{ 7 | tablerBlogCard( 8 | ..., 9 | title = NULL, 10 | author = NULL, 11 | date = NULL, 12 | href = NULL, 13 | src = NULL, 14 | avatarUrl = NULL, 15 | width = 4, 16 | horizontal = FALSE 17 | ) 18 | } 19 | \arguments{ 20 | \item{...}{Any other elements.} 21 | 22 | \item{title}{Title.} 23 | 24 | \item{author}{Blog post author.} 25 | 26 | \item{date}{Date.} 27 | 28 | \item{href}{External link.} 29 | 30 | \item{src}{Image url.} 31 | 32 | \item{avatarUrl}{Avatar image.} 33 | 34 | \item{width}{Card width. 4 by default.} 35 | 36 | \item{horizontal}{Whether the card is horizontally displayed. FALSE by default.} 37 | } 38 | \description{ 39 | Build a tabler blog card 40 | } 41 | \examples{ 42 | if(interactive()){ 43 | library(shiny) 44 | library(tablerDash) 45 | 46 | shiny::shinyApp( 47 | ui = tablerDashPage( 48 | navbar = NULL, 49 | footer = NULL, 50 | title = "test", 51 | body = tablerDashBody( 52 | tablerBlogCard( 53 | title = "Blog Card", 54 | author = "David", 55 | date = "Today", 56 | href = "https://www.google.com", 57 | src = "https://preview.tabler.io/demo/photos/matt-barrett-339981-500.jpg", 58 | avatarUrl = "https://image.flaticon.com/icons/svg/145/145842.svg", 59 | width = 6, 60 | "Look, my liege! The Knights Who Say Ni 61 | demand a sacrifice! …Are you suggesting 62 | that coconuts migr..." 63 | ) 64 | ) 65 | ), 66 | server = function(input, output) {} 67 | ) 68 | } 69 | 70 | } 71 | \author{ 72 | David Granjon, \email{dgranjon@ymail.com} 73 | } 74 | -------------------------------------------------------------------------------- /man/tablerCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerCard} 4 | \alias{tablerCard} 5 | \title{Create a Boostrap 4 card} 6 | \usage{ 7 | tablerCard( 8 | ..., 9 | title = NULL, 10 | options = NULL, 11 | footer = NULL, 12 | status = NULL, 13 | statusSide = c("top", "left"), 14 | collapsible = TRUE, 15 | collapsed = FALSE, 16 | closable = TRUE, 17 | zoomable = TRUE, 18 | width = 6, 19 | overflow = FALSE 20 | ) 21 | } 22 | \arguments{ 23 | \item{...}{Body content} 24 | 25 | \item{title}{Card title. If NULL, the header is not displayed.} 26 | 27 | \item{options}{Card extra header elements.} 28 | 29 | \item{footer}{Card footer. NULL by default. Not displayed if NULL.} 30 | 31 | \item{status}{Card status. NULL by default. See \url{https://preview.tabler.io/docs/colors.html} for valid statuses.} 32 | 33 | \item{statusSide}{Status side: "top" or "left".} 34 | 35 | \item{collapsible}{Whether the card is collapsible. TRUE by default.} 36 | 37 | \item{collapsed}{Whether to collapse the card at start. FALSE by default.} 38 | 39 | \item{closable}{Whether the card is closable. TRUE by default.} 40 | 41 | \item{zoomable}{Whether the card is zoomable. TRUE by default.} 42 | 43 | \item{width}{Card width. 6 by default. See Bootstrap grid system. If NULL, the card is 44 | full width.} 45 | 46 | \item{overflow}{Whether to set up a x and y overflow. FALSE by default. 47 | Useful in case the card contains large tables.} 48 | } 49 | \description{ 50 | Build a tabler card 51 | } 52 | \examples{ 53 | if(interactive()){ 54 | library(shiny) 55 | library(tablerDash) 56 | 57 | shiny::shinyApp( 58 | ui = tablerDashPage( 59 | navbar = NULL, 60 | footer = NULL, 61 | title = "test", 62 | body = tablerDashBody( 63 | tablerCard( 64 | title = "Card", 65 | sliderInput("obs", "Number of observations:", 66 | min = 0, max = 1000, value = 500 67 | ), 68 | plotOutput("distPlot"), 69 | status = "success", 70 | statusSide = "left" 71 | ) 72 | ) 73 | ), 74 | server = function(input, output) { 75 | output$distPlot <- renderPlot({ 76 | hist(rnorm(input$obs)) 77 | }) 78 | } 79 | ) 80 | } 81 | 82 | } 83 | \author{ 84 | David Granjon, \email{dgranjon@ymail.com} 85 | } 86 | -------------------------------------------------------------------------------- /man/tablerDashBody.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardBody.R 3 | \name{tablerDashBody} 4 | \alias{tablerDashBody} 5 | \title{Create a Boostrap 4 dashboard body} 6 | \usage{ 7 | tablerDashBody(...) 8 | } 9 | \arguments{ 10 | \item{...}{Body content, slot for \link{tablerTabItems}.} 11 | } 12 | \description{ 13 | Build a tabler dashboard body 14 | } 15 | \author{ 16 | David Granjon, \email{dgranjon@ymail.com} 17 | } 18 | -------------------------------------------------------------------------------- /man/tablerDashFooter.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardFooter.R 3 | \name{tablerDashFooter} 4 | \alias{tablerDashFooter} 5 | \title{Create a Boostrap 4 dashboard footer} 6 | \usage{ 7 | tablerDashFooter(..., copyrights = NULL) 8 | } 9 | \arguments{ 10 | \item{...}{Left text.} 11 | 12 | \item{copyrights}{Copyrights, if any.} 13 | } 14 | \description{ 15 | Build an adminLTE3 dashboard footer 16 | } 17 | \author{ 18 | David Granjon, \email{dgranjon@ymail.com} 19 | } 20 | -------------------------------------------------------------------------------- /man/tablerDashGallery.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/gallery.R 3 | \name{tablerDashGallery} 4 | \alias{tablerDashGallery} 5 | \title{Launch the tablerDash Gallery} 6 | \usage{ 7 | tablerDashGallery() 8 | } 9 | \description{ 10 | A gallery of all components available in tablerDash. 11 | } 12 | \examples{ 13 | 14 | if (interactive()) { 15 | 16 | tablerDashGallery() 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /man/tablerDashNav.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardNavbar.R 3 | \name{tablerDashNav} 4 | \alias{tablerDashNav} 5 | \title{Create a Boostrap 4 dashboard navbar} 6 | \usage{ 7 | tablerDashNav(id, ..., src = NULL, navMenu = NULL) 8 | } 9 | \arguments{ 10 | \item{id}{Navbar id.} 11 | 12 | \item{...}{Navbar content.} 13 | 14 | \item{src}{Brand image url or path.} 15 | 16 | \item{navMenu}{Slot for \link{tablerNavMenu}} 17 | } 18 | \description{ 19 | Build a tabler dashboard page 20 | } 21 | \author{ 22 | David Granjon, \email{dgranjon@ymail.com} 23 | } 24 | -------------------------------------------------------------------------------- /man/tablerDashPage.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardPage.R 3 | \name{tablerDashPage} 4 | \alias{tablerDashPage} 5 | \title{Create a Boostrap 4 dashboard page} 6 | \usage{ 7 | tablerDashPage( 8 | navbar = NULL, 9 | body = NULL, 10 | footer = NULL, 11 | title = NULL, 12 | enable_preloader = FALSE, 13 | loading_duration = 2 14 | ) 15 | } 16 | \arguments{ 17 | \item{navbar}{Slot for \link{tablerDashNav}.} 18 | 19 | \item{body}{Slot for \link{tablerDashBody}.} 20 | 21 | \item{footer}{Slot for \link{tablerDashFooter}.} 22 | 23 | \item{title}{App title.} 24 | 25 | \item{enable_preloader}{Whether to enable a page loader. FALSE by default.} 26 | 27 | \item{loading_duration}{Loader duration in seconds. 2s by default.} 28 | } 29 | \description{ 30 | Build a tabler dashboard page 31 | } 32 | \examples{ 33 | if(interactive()){ 34 | library(shiny) 35 | library(tablerDash) 36 | 37 | shiny::shinyApp( 38 | ui = tablerDashPage( 39 | navbar = tablerDashNav(), 40 | footer = tablerDashFooter(), 41 | title = "test", 42 | body = tablerDashBody() 43 | ), 44 | server = function(input, output) {} 45 | ) 46 | } 47 | 48 | } 49 | \author{ 50 | David Granjon, \email{dgranjon@ymail.com} 51 | } 52 | -------------------------------------------------------------------------------- /man/tablerDropdown.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardNavbar.R 3 | \name{tablerDropdown} 4 | \alias{tablerDropdown} 5 | \title{Create a Boostrap 4 dashboard dropdown container} 6 | \usage{ 7 | tablerDropdown(..., icon = "bell", collapsed = TRUE) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerDropdownItem}.} 11 | 12 | \item{icon}{Dropdown icon.} 13 | 14 | \item{collapsed}{Whether to collapse the dropdown. TRUE by default.} 15 | } 16 | \description{ 17 | Build a tabler dashboard dropdown container 18 | } 19 | \author{ 20 | David Granjon, \email{dgranjon@ymail.com} 21 | } 22 | -------------------------------------------------------------------------------- /man/tablerDropdownItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardNavbar.R 3 | \name{tablerDropdownItem} 4 | \alias{tablerDropdownItem} 5 | \title{Create a Boostrap 4 dashboard dropdown container} 6 | \usage{ 7 | tablerDropdownItem( 8 | ..., 9 | title = NULL, 10 | href = NULL, 11 | url = NULL, 12 | status = NULL, 13 | date = NULL 14 | ) 15 | } 16 | \arguments{ 17 | \item{...}{Item content.} 18 | 19 | \item{title}{Item title.} 20 | 21 | \item{href}{External link.} 22 | 23 | \item{url}{Author image.} 24 | 25 | \item{status}{Item status. Only if url is not NULL.} 26 | 27 | \item{date}{Item date.} 28 | } 29 | \description{ 30 | Build a tabler dashboard dropdown container 31 | } 32 | \author{ 33 | David Granjon, \email{dgranjon@ymail.com} 34 | } 35 | -------------------------------------------------------------------------------- /man/tablerIcon.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/icons.R 3 | \name{tablerIcon} 4 | \alias{tablerIcon} 5 | \title{Create a Boostrap 4 icon} 6 | \usage{ 7 | tablerIcon(name, lib = c("feather", "font-awesome", "payment")) 8 | } 9 | \arguments{ 10 | \item{name}{Name of icon. See \url{https://preview.tabler.io/icons.html} for all valid icons.} 11 | 12 | \item{lib}{Icon library ("feather", "font-awesome", "payment").} 13 | } 14 | \description{ 15 | Build a tabler icon 16 | } 17 | \author{ 18 | David Granjon, \email{dgranjon@ymail.com} 19 | } 20 | -------------------------------------------------------------------------------- /man/tablerInfoCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerInfoCard} 4 | \alias{tablerInfoCard} 5 | \title{Create a Boostrap 4 info card} 6 | \usage{ 7 | tablerInfoCard(value, description = NULL, status, icon, href = NULL, width = 4) 8 | } 9 | \arguments{ 10 | \item{value}{Card value.} 11 | 12 | \item{description}{Percentage increase/decrease.} 13 | 14 | \item{status}{Card status. See \url{https://preview.tabler.io/docs/colors.html}.} 15 | 16 | \item{icon}{Card icon.} 17 | 18 | \item{href}{External link.} 19 | 20 | \item{width}{Card width. 4 by default.} 21 | } 22 | \description{ 23 | Build a tabler info card 24 | } 25 | \examples{ 26 | if(interactive()){ 27 | library(shiny) 28 | library(tablerDash) 29 | 30 | shiny::shinyApp( 31 | ui = tablerDashPage( 32 | navbar = NULL, 33 | footer = NULL, 34 | title = "test", 35 | body = tablerDashBody( 36 | tablerInfoCard( 37 | value = "132 sales", 38 | status = "danger", 39 | icon = "dollar-sign", 40 | description = "12 waiting payments" 41 | ) 42 | ) 43 | ), 44 | server = function(input, output) {} 45 | ) 46 | } 47 | 48 | } 49 | \author{ 50 | David Granjon, \email{dgranjon@ymail.com} 51 | } 52 | -------------------------------------------------------------------------------- /man/tablerList.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerList} 4 | \alias{tablerList} 5 | \title{Create a Boostrap 4 list container} 6 | \usage{ 7 | tablerList(...) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerListItem}.} 11 | } 12 | \description{ 13 | Build a tabler list container 14 | } 15 | \examples{ 16 | if(interactive()){ 17 | library(shiny) 18 | library(tablerDash) 19 | 20 | shiny::shinyApp( 21 | ui = tablerDashPage( 22 | navbar = NULL, 23 | footer = NULL, 24 | title = "test", 25 | body = tablerDashBody( 26 | tablerCard( 27 | title = "tablerList", 28 | tablerList( 29 | tablerListItem( 30 | tablerTag(name = "Tag"), 31 | tablerTag(name = "Tag", href = "https://www.google.com"), 32 | tablerTag(name = "Tag", rounded = TRUE, color = "pink") 33 | ), 34 | tablerListItem(tablerStatus(color = "red")), 35 | tablerListItem( 36 | tablerAvatarList( 37 | stacked = TRUE, 38 | tablerAvatar( 39 | name = "DG", 40 | size = "xxl" 41 | ), 42 | tablerAvatar( 43 | name = "DG", 44 | color = "orange" 45 | ), 46 | tablerAvatar( 47 | name = "DG", 48 | status = "warning" 49 | ), 50 | tablerAvatar(url = "https://image.flaticon.com/icons/svg/145/145852.svg") 51 | ) 52 | ) 53 | ) 54 | ) 55 | ) 56 | ), 57 | server = function(input, output) {} 58 | ) 59 | } 60 | 61 | } 62 | \author{ 63 | David Granjon, \email{dgranjon@ymail.com} 64 | } 65 | -------------------------------------------------------------------------------- /man/tablerListItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerListItem} 4 | \alias{tablerListItem} 5 | \title{Create a Boostrap 4 list item} 6 | \usage{ 7 | tablerListItem(...) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for any HTML element.} 11 | } 12 | \description{ 13 | Build a tabler list item 14 | } 15 | \author{ 16 | David Granjon, \email{dgranjon@ymail.com} 17 | } 18 | -------------------------------------------------------------------------------- /man/tablerMediaCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerMediaCard} 4 | \alias{tablerMediaCard} 5 | \title{Create a Boostrap 4 media card} 6 | \usage{ 7 | tablerMediaCard( 8 | ..., 9 | title = NULL, 10 | date = NULL, 11 | href = NULL, 12 | src = NULL, 13 | avatarUrl = NULL, 14 | width = 4 15 | ) 16 | } 17 | \arguments{ 18 | \item{...}{Any other elements.} 19 | 20 | \item{title}{Title.} 21 | 22 | \item{date}{Date.} 23 | 24 | \item{href}{External link.} 25 | 26 | \item{src}{Image url.} 27 | 28 | \item{avatarUrl}{Avatar image.} 29 | 30 | \item{width}{Card width. 4 by default.} 31 | } 32 | \description{ 33 | Build a tabler media card 34 | } 35 | \examples{ 36 | if(interactive()){ 37 | library(shiny) 38 | library(tablerDash) 39 | 40 | shiny::shinyApp( 41 | ui = tablerDashPage( 42 | navbar = NULL, 43 | footer = NULL, 44 | title = "test", 45 | body = tablerDashBody( 46 | tablerMediaCard( 47 | title = "Media Card", 48 | date = "Today", 49 | href = "https://www.google.com", 50 | src = "https://preview.tabler.io/demo/photos/matt-barrett-339981-500.jpg", 51 | avatarUrl = "https://image.flaticon.com/icons/svg/145/145842.svg", 52 | width = 6 53 | ) 54 | ) 55 | ), 56 | server = function(input, output) {} 57 | ) 58 | } 59 | 60 | } 61 | \author{ 62 | David Granjon, \email{dgranjon@ymail.com} 63 | } 64 | -------------------------------------------------------------------------------- /man/tablerNavMenu.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardNavbar.R 3 | \name{tablerNavMenu} 4 | \alias{tablerNavMenu} 5 | \title{Create a Boostrap 4 dashboard navbar menu} 6 | \usage{ 7 | tablerNavMenu(...) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerNavMenuItem}.} 11 | } 12 | \description{ 13 | Build a tabler dashboard main navbar menu 14 | } 15 | \author{ 16 | David Granjon, \email{dgranjon@ymail.com} 17 | } 18 | -------------------------------------------------------------------------------- /man/tablerNavMenuItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardNavbar.R 3 | \name{tablerNavMenuItem} 4 | \alias{tablerNavMenuItem} 5 | \title{Create a Boostrap 4 dashboard navbar menu item} 6 | \usage{ 7 | tablerNavMenuItem(..., tabName = NULL, icon = NULL) 8 | } 9 | \arguments{ 10 | \item{...}{Item name.} 11 | 12 | \item{tabName}{Should correspond exactly to the tabName given in \code{\link{tablerTabItem}}.} 13 | 14 | \item{icon}{Item icon.} 15 | } 16 | \description{ 17 | Build a tabler dashboard navbar menu item 18 | } 19 | \author{ 20 | David Granjon, \email{dgranjon@ymail.com} 21 | } 22 | -------------------------------------------------------------------------------- /man/tablerProfileCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerProfileCard} 4 | \alias{tablerProfileCard} 5 | \title{Create a Boostrap 4 profile card} 6 | \usage{ 7 | tablerProfileCard( 8 | title = NULL, 9 | subtitle = NULL, 10 | background = NULL, 11 | src = NULL, 12 | socials = NULL, 13 | width = 4 14 | ) 15 | } 16 | \arguments{ 17 | \item{title}{Profile title.} 18 | 19 | \item{subtitle}{Card subtitle.} 20 | 21 | \item{background}{Card background url or path.} 22 | 23 | \item{src}{User profile image.} 24 | 25 | \item{socials}{Slot for \link{tablerSocialLinks} and \link{tablerSocialLink}.} 26 | 27 | \item{width}{Card width. 4 by default.} 28 | } 29 | \description{ 30 | Build a tabler profile card 31 | } 32 | \examples{ 33 | if(interactive()){ 34 | library(shiny) 35 | library(tablerDash) 36 | 37 | shiny::shinyApp( 38 | ui = tablerDashPage( 39 | navbar = NULL, 40 | footer = NULL, 41 | title = "test", 42 | body = tablerDashBody( 43 | tablerProfileCard( 44 | title = "Peter Richards", 45 | subtitle = "Big belly rude boy, million 46 | dollar hustler. Unemployed.", 47 | background = "https://preview.tabler.io/demo/photos/ilnur-kalimullin-218996-500.jpg", 48 | src = "https://preview.tabler.io/demo/faces/male/16.jpg", 49 | tablerSocialLinks( 50 | tablerSocialLink( 51 | name = "facebook", 52 | href = "https://www.facebook.com", 53 | icon = "facebook" 54 | ), 55 | tablerSocialLink( 56 | name = "twitter", 57 | href = "https://www.twitter.com", 58 | icon = "twitter" 59 | ) 60 | ) 61 | ) 62 | ) 63 | ), 64 | server = function(input, output) {} 65 | ) 66 | } 67 | 68 | } 69 | \author{ 70 | David Granjon, \email{dgranjon@ymail.com} 71 | } 72 | -------------------------------------------------------------------------------- /man/tablerProgress.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerProgress} 4 | \alias{tablerProgress} 5 | \title{Create a Boostrap 4 progress bar} 6 | \usage{ 7 | tablerProgress(value, status = NULL, size = NULL) 8 | } 9 | \arguments{ 10 | \item{value}{Progress value.} 11 | 12 | \item{status}{Progress status. See \url{https://preview.tabler.io/docs/colors.html}.} 13 | 14 | \item{size}{Progress bar size: NULL, "xs", "sm", "md".} 15 | } 16 | \description{ 17 | Build a tabler progress bar 18 | } 19 | \examples{ 20 | if(interactive()){ 21 | library(shiny) 22 | library(tablerDash) 23 | 24 | shiny::shinyApp( 25 | ui = tablerDashPage( 26 | navbar = NULL, 27 | footer = NULL, 28 | title = "test", 29 | body = tablerDashBody( 30 | tablerProgress(value = 10, size = "xs"), 31 | tablerProgress(value = 90, status = "red", size = "sm") 32 | ) 33 | ), 34 | server = function(input, output) {} 35 | ) 36 | } 37 | 38 | } 39 | \author{ 40 | David Granjon, \email{dgranjon@ymail.com} 41 | } 42 | -------------------------------------------------------------------------------- /man/tablerSocialLink.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerSocialLink} 4 | \alias{tablerSocialLink} 5 | \title{Create a Boostrap 4 social link} 6 | \usage{ 7 | tablerSocialLink(name = NULL, href = NULL, icon) 8 | } 9 | \arguments{ 10 | \item{name}{Link tooltip name.} 11 | 12 | \item{href}{External link.} 13 | 14 | \item{icon}{Icon (font awesome).} 15 | } 16 | \description{ 17 | Build a tabler social link 18 | } 19 | \author{ 20 | David Granjon, \email{dgranjon@ymail.com} 21 | } 22 | -------------------------------------------------------------------------------- /man/tablerSocialLinks.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerSocialLinks} 4 | \alias{tablerSocialLinks} 5 | \title{Create a Boostrap 4 social link list} 6 | \usage{ 7 | tablerSocialLinks(...) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerSocialLink}.} 11 | } 12 | \description{ 13 | Build a tabler social link list 14 | } 15 | \examples{ 16 | if(interactive()){ 17 | library(shiny) 18 | library(tablerDash) 19 | 20 | shiny::shinyApp( 21 | ui = tablerDashPage( 22 | navbar = NULL, 23 | footer = NULL, 24 | title = "test", 25 | body = tablerDashBody( 26 | tablerSocialLinks( 27 | tablerSocialLink( 28 | name = "facebook", 29 | href = "https://www.facebook.com", 30 | icon = "facebook" 31 | ), 32 | tablerSocialLink( 33 | name = "twitter", 34 | href = "https://www.twitter.com", 35 | icon = "twitter" 36 | ) 37 | ) 38 | ) 39 | ), 40 | server = function(input, output) {} 41 | ) 42 | } 43 | 44 | } 45 | \author{ 46 | David Granjon, \email{dgranjon@ymail.com} 47 | } 48 | -------------------------------------------------------------------------------- /man/tablerStatCard.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/cards.R 3 | \name{tablerStatCard} 4 | \alias{tablerStatCard} 5 | \title{Create a Boostrap 4 stat card} 6 | \usage{ 7 | tablerStatCard(value, title, trend = NULL, width = 3) 8 | } 9 | \arguments{ 10 | \item{value}{Card value.} 11 | 12 | \item{title}{Card title.} 13 | 14 | \item{trend}{Percentage increase/decrease.} 15 | 16 | \item{width}{Card width. 3 by default.} 17 | } 18 | \description{ 19 | Build a tabler stat card 20 | } 21 | \examples{ 22 | if(interactive()){ 23 | library(shiny) 24 | library(tablerDash) 25 | 26 | shiny::shinyApp( 27 | ui = tablerDashPage( 28 | navbar = NULL, 29 | footer = NULL, 30 | title = "test", 31 | body = tablerDashBody( 32 | tablerStatCard( 33 | value = 43, 34 | title = "Followers", 35 | trend = -10 36 | ) 37 | ) 38 | ), 39 | server = function(input, output) {} 40 | ) 41 | } 42 | 43 | } 44 | \author{ 45 | David Granjon, \email{dgranjon@ymail.com} 46 | } 47 | -------------------------------------------------------------------------------- /man/tablerStatus.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerStatus} 4 | \alias{tablerStatus} 5 | \title{Create a Boostrap 4 status} 6 | \usage{ 7 | tablerStatus(color) 8 | } 9 | \arguments{ 10 | \item{color}{Status color. See \url{https://preview.tabler.io/docs/colors.html}.} 11 | } 12 | \description{ 13 | Build a tabler status 14 | } 15 | \examples{ 16 | if(interactive()){ 17 | library(shiny) 18 | library(tablerDash) 19 | 20 | shiny::shinyApp( 21 | ui = tablerDashPage( 22 | navbar = NULL, 23 | footer = NULL, 24 | title = "test", 25 | body = tablerDashBody( 26 | tablerStatus(color = "lime") 27 | ) 28 | ), 29 | server = function(input, output) {} 30 | ) 31 | } 32 | 33 | } 34 | \author{ 35 | David Granjon, \email{dgranjon@ymail.com} 36 | } 37 | -------------------------------------------------------------------------------- /man/tablerTabItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardBody.R 3 | \name{tablerTabItem} 4 | \alias{tablerTabItem} 5 | \title{One tab to put inside a tab items container} 6 | \usage{ 7 | tablerTabItem(tabName = NULL, ...) 8 | } 9 | \arguments{ 10 | \item{tabName}{The name of a tab. This must correspond to the \code{tabName} 11 | of a \code{\link{tablerNavMenuItem}}.} 12 | 13 | \item{...}{Contents of the tab.} 14 | } 15 | \description{ 16 | One tab to put inside a tab items container 17 | } 18 | -------------------------------------------------------------------------------- /man/tablerTabItems.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/dashboardBody.R 3 | \name{tablerTabItems} 4 | \alias{tablerTabItems} 5 | \title{A container for tab items} 6 | \usage{ 7 | tablerTabItems(...) 8 | } 9 | \arguments{ 10 | \item{...}{Items to put in the container. Each item should be a 11 | \code{\link{tablerTabItem}}.} 12 | } 13 | \description{ 14 | A container for tab items 15 | } 16 | -------------------------------------------------------------------------------- /man/tablerTable.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTable} 4 | \alias{tablerTable} 5 | \title{Create a Boostrap 4 table container} 6 | \usage{ 7 | tablerTable(..., title = NULL, width = 4) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerTableItem}.} 11 | 12 | \item{title}{Card wrapper title.} 13 | 14 | \item{width}{Card wrapper width.} 15 | } 16 | \description{ 17 | Build a tabler table container 18 | } 19 | \examples{ 20 | if(interactive()){ 21 | library(shiny) 22 | library(tablerDash) 23 | 24 | shiny::shinyApp( 25 | ui = tablerDashPage( 26 | navbar = NULL, 27 | footer = NULL, 28 | title = "test", 29 | body = tablerDashBody( 30 | tablerTable( 31 | title = "tablerTable", 32 | tablerTableItem( 33 | left = tablerTag(name = "Tag"), 34 | right = tablerTag(name = "Tag", href = "https://www.google.com") 35 | ), 36 | tablerTableItem(right = tablerStatus(color = "red")), 37 | tablerTableItem( 38 | left = tablerAvatarList( 39 | stacked = TRUE, 40 | tablerAvatar( 41 | name = "DG", 42 | size = "xxl" 43 | ), 44 | tablerAvatar( 45 | name = "DG", 46 | color = "orange" 47 | ), 48 | tablerAvatar( 49 | name = "DG", 50 | status = "warning" 51 | ), 52 | tablerAvatar(url = "https://image.flaticon.com/icons/svg/145/145852.svg") 53 | ) 54 | ) 55 | ) 56 | ) 57 | ), 58 | server = function(input, output) {} 59 | ) 60 | } 61 | 62 | } 63 | \author{ 64 | David Granjon, \email{dgranjon@ymail.com} 65 | } 66 | -------------------------------------------------------------------------------- /man/tablerTableItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTableItem} 4 | \alias{tablerTableItem} 5 | \title{Create a Boostrap 4 table item} 6 | \usage{ 7 | tablerTableItem(left = NULL, right = NULL) 8 | } 9 | \arguments{ 10 | \item{left}{Left elements.} 11 | 12 | \item{right}{Right elements.} 13 | } 14 | \description{ 15 | Build a tabler table item 16 | } 17 | \author{ 18 | David Granjon, \email{dgranjon@ymail.com} 19 | } 20 | -------------------------------------------------------------------------------- /man/tablerTag.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTag} 4 | \alias{tablerTag} 5 | \title{Create a Boostrap 4 tag} 6 | \usage{ 7 | tablerTag( 8 | name, 9 | href = NULL, 10 | rounded = FALSE, 11 | color = NULL, 12 | addon = NULL, 13 | addonColor = NULL 14 | ) 15 | } 16 | \arguments{ 17 | \item{name}{Tag name.} 18 | 19 | \item{href}{Tag external link.} 20 | 21 | \item{rounded}{Whether the tag is rounded. FALSE by default.} 22 | 23 | \item{color}{Tag color. See \url{https://preview.tabler.io/docs/colors.html}.} 24 | 25 | \item{addon}{Tag addon (right side).} 26 | 27 | \item{addonColor}{Addon background color. See \url{https://preview.tabler.io/docs/colors.html}.} 28 | } 29 | \description{ 30 | Build a tabler tag 31 | } 32 | \examples{ 33 | if(interactive()){ 34 | library(shiny) 35 | library(tablerDash) 36 | 37 | shiny::shinyApp( 38 | ui = tablerDashPage( 39 | navbar = NULL, 40 | footer = NULL, 41 | title = "test", 42 | body = tablerDashBody( 43 | tablerTag(name = "Tag"), 44 | tablerTag(name = "Tag", href = "https://www.google.com"), 45 | tablerTag(name = "Tag", rounded = TRUE, color = "pink"), 46 | tablerTag( 47 | name = "npm", 48 | href = "https://www.google.com", 49 | color = "dark", 50 | addon = "passing", 51 | addonColor = "warning" 52 | ), 53 | tablerTag(name = "build", addon = "passing", addonColor = "success") 54 | ) 55 | ), 56 | server = function(input, output) {} 57 | ) 58 | } 59 | 60 | } 61 | \author{ 62 | David Granjon, \email{dgranjon@ymail.com} 63 | } 64 | -------------------------------------------------------------------------------- /man/tablerTagList.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTagList} 4 | \alias{tablerTagList} 5 | \title{Create a Boostrap 4 tag list} 6 | \usage{ 7 | tablerTagList(...) 8 | } 9 | \arguments{ 10 | \item{...}{Slot for \link{tablerTag}.} 11 | } 12 | \description{ 13 | Build a tabler tag list 14 | } 15 | \examples{ 16 | if(interactive()){ 17 | library(shiny) 18 | library(tablerDash) 19 | 20 | shiny::shinyApp( 21 | ui = tablerDashPage( 22 | navbar = NULL, 23 | footer = NULL, 24 | title = "test", 25 | body = tablerDashBody( 26 | tablerTagList( 27 | lapply(X = 1:5, FUN = function(i) { 28 | tablerTag(name = i) 29 | }) 30 | ) 31 | ) 32 | ), 33 | server = function(input, output) {} 34 | ) 35 | } 36 | 37 | } 38 | \author{ 39 | David Granjon, \email{dgranjon@ymail.com} 40 | } 41 | -------------------------------------------------------------------------------- /man/tablerTimeline.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTimeline} 4 | \alias{tablerTimeline} 5 | \title{Create a Boostrap 4 timeline} 6 | \usage{ 7 | tablerTimeline(...) 8 | } 9 | \arguments{ 10 | \item{...}{slot for \link{tablerTimelineItem}.} 11 | } 12 | \description{ 13 | Build a tabler timeline 14 | } 15 | \examples{ 16 | if(interactive()){ 17 | library(shiny) 18 | library(tablerDash) 19 | 20 | shiny::shinyApp( 21 | ui = tablerDashPage( 22 | navbar = NULL, 23 | footer = NULL, 24 | title = "test", 25 | body = tablerDashBody( 26 | tablerTimeline( 27 | tablerTimelineItem( 28 | title = "Item 1", 29 | status = "green", 30 | date = "now" 31 | ), 32 | tablerTimelineItem( 33 | title = "Item 2", 34 | status = NULL, 35 | date = "yesterday", 36 | "Lorem ipsum dolor sit amet, 37 | consectetur adipisicing elit." 38 | ) 39 | ) 40 | ) 41 | ), 42 | server = function(input, output) {} 43 | ) 44 | } 45 | 46 | } 47 | \author{ 48 | David Granjon, \email{dgranjon@ymail.com} 49 | } 50 | -------------------------------------------------------------------------------- /man/tablerTimelineItem.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/useful-items.R 3 | \name{tablerTimelineItem} 4 | \alias{tablerTimelineItem} 5 | \title{Create a Boostrap 4 timeline item} 6 | \usage{ 7 | tablerTimelineItem(..., status = NULL, title, date) 8 | } 9 | \arguments{ 10 | \item{...}{Item content.} 11 | 12 | \item{status}{Item status.} 13 | 14 | \item{title}{Item title.} 15 | 16 | \item{date}{Event date.} 17 | } 18 | \description{ 19 | Build a tabler timeline item 20 | } 21 | \author{ 22 | David Granjon, \email{dgranjon@ymail.com} 23 | } 24 | -------------------------------------------------------------------------------- /man/tagAssert.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{tagAssert} 4 | \alias{tagAssert} 5 | \title{Assert that a tag has specified properties} 6 | \usage{ 7 | tagAssert(tag, type = NULL, class = NULL, allowUI = TRUE) 8 | } 9 | \arguments{ 10 | \item{tag}{A tag object.} 11 | 12 | \item{type}{The type of a tag, like "div", "a", "span".} 13 | 14 | \item{class}{An HTML class.} 15 | 16 | \item{allowUI}{If TRUE (the default), allow dynamic outputs generated by 17 | \code{\link[shiny]{uiOutput}} or \code{\link[shiny]{htmlOutput}}. When a 18 | dynamic output is provided, \code{tagAssert} won't try to validate the the 19 | contents.} 20 | } 21 | \description{ 22 | Assert that a tag has specified properties 23 | } 24 | \keyword{internal} 25 | -------------------------------------------------------------------------------- /pkgdown/extra.css: -------------------------------------------------------------------------------- 1 | .card { 2 | box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); 3 | transition: 0.3s; 4 | border-radius: 5px; /* 5px rounded corners */ 5 | } 6 | 7 | .card:hover { 8 | box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); 9 | } 10 | 11 | /* Add rounded corners to the top left and the top right corner of the image */ 12 | img { 13 | border-radius: 5px 5px 5px 5px; 14 | } 15 | 16 | /* Add some padding inside the card container */ 17 | .container { 18 | padding: 2px 16px; 19 | } 20 | 21 | /* bslib cards */ 22 | .bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen="true"]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border="true"]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius="true"]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen="true"]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,0.15);margin:0.2rem 0.4rem;padding:0.55rem !important;font-size:.8rem;cursor:pointer;opacity:0.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen="false"]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media (max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:0.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:0.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}} 23 | 24 | /* fill css for fullscreen cards */ 25 | .html-fill-container { 26 | display: flex; 27 | flex-direction: column; 28 | /* Prevent the container from expanding vertically or horizontally beyond its 29 | parent's constraints. */ 30 | min-height: 0; 31 | min-width: 0; 32 | } 33 | .html-fill-container > .html-fill-item { 34 | /* Fill items can grow and shrink freely within 35 | available vertical space in fillable container */ 36 | flex: 1 1 auto; 37 | min-height: 0; 38 | min-width: 0; 39 | } 40 | .html-fill-container > :not(.html-fill-item) { 41 | /* Prevent shrinking or growing of non-fill items */ 42 | flex: 0 0 auto; 43 | } -------------------------------------------------------------------------------- /tablerDash.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | 18 | BuildType: Package 19 | PackageUseDevtools: Yes 20 | PackageInstallArgs: --no-multiarch --with-keep.source 21 | --------------------------------------------------------------------------------