Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rstudio/fontawesome
Easily insert FontAwesome icons into R Markdown docs and Shiny apps
https://github.com/rstudio/fontawesome
List: fontawesome
font-awesome r svg-icons
Last synced: 4 days ago
JSON representation
Easily insert FontAwesome icons into R Markdown docs and Shiny apps
- Host: GitHub
- URL: https://github.com/rstudio/fontawesome
- Owner: rstudio
- License: other
- Created: 2018-05-30T22:31:54.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-04-12T19:00:46.000Z (8 months ago)
- Last Synced: 2024-06-11T16:59:43.318Z (6 months ago)
- Topics: font-awesome, r, svg-icons
- Language: R
- Homepage: https://rstudio.github.io/fontawesome/
- Size: 22.2 MB
- Stars: 291
- Watchers: 10
- Forks: 37
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Code of conduct: .github/CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-shiny-extensions - fontawesome - Insert FontAwesome icons into R Markdown documents and Shiny apps. (UI Components / Icon Font)
- jimsghstars - rstudio/fontawesome - Easily insert FontAwesome icons into R Markdown docs and Shiny apps (R)
README
The **fontawesome** R package makes it very easy to insert **Font Awesome** icons into **R Markdown** documents and **Shiny** apps (or, anywhere else you need to put them).
## Examples
The `fa()` function can be used to insert an FA icon. For example, we
can get the *r-project* icon in `steelblue`:``` r
fa(name = "r-project", fill = "steelblue")
#>
```As can be seen, what we really get from the function is an SVG object that represents the icon. This can be directly used within **R Markdown** with:
``` r
{text} `r fa(...)` {text}
```Font Awesome SVG icons are great to use instead of `` tags + font files for a few reasons:
- There is less overhead in a **Shiny** app or **R Markdown** document since an `` tag requires computation to obtain the icon (`` tags represent the actual icon)
- Using `` tags has a 'being online' requirement since network activity is necessary for resolving these tags (SVGs in **fontawesome** are stored in the package, so, no Internet connectivity is necessary for that)
- There are styling options available for SVG that aren't there for icon fonts### R Markdown
Here is an example **R Markdown** document that includes Font Awesome icons:
---
title: "Font Awesome in R Markdown"
output: html_document
---
```{r load_packages, message=FALSE, warning=FALSE, include=FALSE}
library(fontawesome)
```
# Just a few tests with `r fa("font-awesome-logo-full", fill = "forestgreen")`
It works well in headings...
# `r fa("r-project", fill = "steelblue")` H1 Heading
## `r fa("r-project", fill = "steelblue")` H2 Heading
### `r fa("r-project", fill = "steelblue")` H3 Heading
#### `r fa("r-project", fill = "steelblue")` H4 Heading
##### `r fa("r-project", fill = "steelblue")` H5 Heading
...and works equally well within inline text: `r fa("r-project", fill = "steelblue")`.This will appear, when knit, as:
### Shiny
Hereโs a **Shiny** app (from the [Shiny Gallery](https://shiny.rstudio.com/gallery/basic-datatable.html)) thatโs been slightly modified to incorporate Font Awesome icons in the text above the three search fields:
``` r
library(shiny)
library(DT)
library(ggplot2)
library(fontawesome)ui <- fluidPage(
titlePanel("Basic DataTable"),
# Create a new Row in the UI for selectInputs
fluidRow(column(
width = 4,
selectInput(
inputId = "man",
label = tags$p(fa("car", fill = "purple"), "Manufacturer:"),
choices = c(
"All",
unique(as.character(mpg$manufacturer))))
),column(
width = 4,
selectInput(
inputId = "trans",
label = tags$p(fa("car", fill = "forestgreen"), "Transmission:"),
choices = c(
"All",
unique(as.character(mpg$trans))))
),column(
width = 4,
selectInput(
inputId = "cyl",
label = tags$p(fa("car", fill = "steelblue"), "Cylinders:"),
choices = c(
"All",
unique(as.character(mpg$cyl))))
)
),# Create a new row for the table.
fluidRow(
dataTableOutput("table")
)
)server <- function(input, output) {
# Filter data based on selections
output$table <- renderDataTable({data <- mpg
if (input$man != "All") {
data <- data[data$manufacturer == input$man,]
}
if (input$cyl != "All") {
data <- data[data$cyl == input$cyl,]
}
if (input$trans != "All") {
data <- data[data$trans == input$trans,]
}
data
})
}shinyApp(ui = ui, server = server)
```The **Shiny** app will look something like this:
Please note that using `shiny::icon()` in place of `fontawesome::fa()` will still work. Internally, the `icon()` function will call `fontawesome`'s `fa_i()` function, which generates an old-school `` tag for the icon.
### Installation
Want to try this out? The **fontawesome** package can be installed from CRAN:
``` r
install.packages("fontawesome")
```Also, you can install the development version of **fontawesome** from **GitHub**:
``` r
devtools::install_github("rstudio/fontawesome")
```If you encounter a bug, have usage questions, or want to share ideas to make this package better, feel free to file an [issue](https://github.com/rstudio/fontawesome/issues).
##### Code of Conduct
Please note that the `rstudio/fontawesome` project is released with a [contributor code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
By participating in this project you agree to abide by its terms.##### ๐๏ธ Governance
This project is primarily maintained by [Rich Iannone](https://github.com/rich-iannone). Other authors may occasionally assist with some of these duties.