Icons Guide — Material Icons, Material Symbols, Font Awesome
How to use the three main icon systems across GoGrab monorepos. Each requires a stylesheet in your app; then use the HTML/classes below.
Icons Guide — Material Icons, Material Symbols, Font Awesome
1. Material Icons (Classic)
Ligature-based icons from Google. Good for dashboards, panels, and admin UIs.
Step 1: Load the font
Add to your app’s index.html:
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
Step 2: Use in templates
Put the icon name as text content (not a class):
<span class="material-icons">add</span>
<span class="material-icons">close</span>
<span class="material-icons">check_circle</span>
<span class="material-icons spin">sync</span>
Loading spinner: add the spin class.
Examples: add, arrow_back, check, close, delete, error, info, security, sync, verified_user.
Find more: Material Icons.
2. Material Symbols (Rounded, Outlined, Sharp)
Variable fonts from Google with multiple styles. Prefer for new UI and modern look.
Step 1: Load the font
Add to your app’s global styles (e.g. styles.scss):
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200');
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,[email protected],100..700,0..1,-50..200');
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Sharp:opsz,wght,FILL,[email protected],100..700,0..1,-50..200');
Load only the variants you use.
Step 2: Use in templates
Choose one style class and use the icon name as text:
<span class="material-symbols-rounded">palette</span>
<span class="material-symbols-outlined">arrow_back</span>
<span class="material-symbols-sharp">close</span>
Filled variant (variable font):
<span class="material-symbols-rounded" style="font-variation-settings: 'FILL' 1;">star</span>
Sizing — use font-size:
.material-symbols-rounded { font-size: 1.25rem; } /* 20px */
Find names: Material Symbols.
3. Font Awesome
Font-based icons via classes. Used in page builder Icon widgets and general UI.
Step 1: Load the font
Option A — CDN (add to index.html):
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"
integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
Option B — Package:
yarn add @fortawesome/fontawesome-free
Then import in your styles:
@import '@fortawesome/fontawesome-free/css/all.min.css';
Step 2: Use in templates
Icon style + icon name (as classes):
<i class="fa fa-star"></i>
<i class="fas fa-check"></i>
<i class="far fa-heart"></i>
<i class="fab fa-github"></i>
Style prefixes: fas (solid), far (regular), fab (brands).
Find icons: Font Awesome Icons.
Quick picker
| Need | Use | Example |
|---|---|---|
| Classic look, dashboards | Material Icons | <span class="material-icons">settings</span> |
| Modern, new UI | Material Symbols | <span class="material-symbols-rounded">palette</span> |
| Page builder Icon widget, brands | Font Awesome | <i class="fas fa-check"></i> |
Troubleshooting
Icons show as text (e.g. "chat" instead of the icon)
→ The font is not loaded. Add the correct <link> or @import in that app.
Material Symbols not appearing
→ They use a different URL than Material Icons. Use the css2 import shown in section 2.
Be consistent
→ Use one system per feature or app where possible.