diff --git a/.gitignore b/.gitignore
index b0a6ab872..aa943f40d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,6 @@ _site
package.json
package-lock.json
dist
-docs/assets/images/sprite.svg
docs/public/pagefind
node_modules
src/react
diff --git a/docs/docs/components/icon.md b/docs/docs/components/icon.md
index 657ba8017..f2ce74578 100644
--- a/docs/docs/components/icon.md
+++ b/docs/docs/components/icon.md
@@ -4,24 +4,37 @@ description: Icons are symbols that can be used to represent various options wit
layout: component.njk
---
-Web Awesome comes bundled with over 1,500 icons courtesy of the [Bootstrap Icons](https://icons.getbootstrap.com/) project. These icons are part of the `default` icon library. If you prefer, you can register [custom icon libraries](#icon-libraries) as well.
+Web Awesome comes bundled with over 2,000 free icons courtesy of [Font Awesome](https://fontawesome.com/). These icons are part of the `default` icon library. Font Awesome Pro users can unlock additional icon families. Or, if you prefer, you can register your own [custom icon library](#icon-library).
:::info
-Depending on how you're loading Web Awesome, you may need to copy icon assets and/or [set the base path](/getting-started/installation/#setting-the-base-path) so Web Awesome knows where to load them from. Otherwise, icons may not appear and you'll see 404 Not Found errors in the dev console.
+Not sure which icon to use? [Find the perfect icon over at Font Awesome!](https://fontawesome.com/search?o=r&m=free&f=brands%2Cclassic)
:::
-## Default Icons
-
-All available icons in the `default` icon library are shown below. Click or tap on any icon to copy its name, then you can use it in your HTML like this.
-
-```html
-
-```
-
## Examples
-TODO - show how to use `family` and `variant` attributes.
-TODO - show how to use FA pro via `data-webawesome-kit="..."`
+### Families & Variants
+
+The default icon library is Font Awesome Free, which comes with two icon families: `classic` and `brands`. Use the `family` attribute to set the icon family.
+
+Many Font Awesome Pro icon families have variants such as `thin`, `light`, `regular`, and `solid`. Font Awesome Pro users can [provide their kit code](/docs/installation) to unlock additional families, including `sharp` and `duotone`. For these icon families, use the `variant` attribute to set the variant.
+
+```html {.example}
+
+
+```
+
+{% raw %}
+```jsx {.react}
+import WaIcon from '@shoelace-style/shoelace/dist/react/icon';
+
+const App = () => (
+ <>
+
+
+ >
+);
+```
+{% endraw %}
### Colors
@@ -95,22 +108,12 @@ Icons are sized relative to the current font size. To change their size, set the
```html {.example}
-
-
-
-
-
-
-
-
-
-
```
@@ -141,6 +144,36 @@ const App = () => (
```
{% endraw %}
+### Fixed Width Icons
+
+By default, icons have a 1em height and a variable width. Use the `fixed-width` attribute to render the host element in a 1em by 1em box.
+
+```html {.example}
+
+
+
+
+
+
+```
+
+{% raw %}
+```jsx {.react}
+import WaIcon from '@shoelace-style/shoelace/dist/react/icon';
+
+const App = () => (
+ <>
+
+
+
+
+
+
+ >
+);
+```
+{% endraw %}
+
### Labels
For non-decorative icons, use the `label` attribute to announce it to assistive devices.
@@ -162,14 +195,14 @@ const App = () => ;
Custom icons can be loaded individually with the `src` attribute. Only SVGs on a local or CORS-enabled endpoint are supported. If you're using more than one custom icon, it might make sense to register a [custom icon library](#icon-libraries).
```html {.example}
-
+
```
{% raw %}
```jsx {.react}
import WaIcon from '@shoelace-style/shoelace/dist/react/icon';
-const App = () => ;
+const App = () => ;
```
{% endraw %}
@@ -177,9 +210,9 @@ const App = () => ` component through icon libraries. Icon files can exist locally or on a CORS-enabled endpoint (e.g. a CDN). There is no limit to how many icon libraries you can register and there is no cost associated with registering them, as individual icons are only requested when they're used.
-Web Awesome ships with two built-in icon libraries, `default` and `system`. The [default icon library](#customizing-the-default-library) contains all of the icons in the Bootstrap Icons project. The [system icon library](#customizing-the-system-library) contains only a small subset of icons that are used internally by Web Awesome components.
+Web Awesome ships with two built-in icon libraries, `default` and `system`. The [default icon library](#customizing-the-default-library) is provided courtesy of [Font Awesome](https://fontawesome.com/). The [system icon library](#customizing-the-system-library) contains only a small subset of icons that are used internally by Web Awesome components.
-To register an additional icon library, use the `registerIconLibrary()` function that's exported from `utilities/icon-library.js`. At a minimum, you must provide a name and a resolver function. The resolver function translates an icon name to a URL where the corresponding SVG file exists. Refer to the examples below to better understand how it works.
+To register an additional icon library, use the `registerIconLibrary()` function that's exported from `dist/webawesome.js`. At a minimum, you must provide a name and a resolver function. The resolver function translates an icon name to a URL where the corresponding SVG file exists. Refer to the examples below to better understand how it works.
If necessary, a mutator function can be used to mutate the SVG element before rendering. This is necessary for some libraries due to the many possible ways SVGs are crafted. For example, icons should ideally inherit the current text color via `currentColor`, so you may need to apply `fill="currentColor` or `stroke="currentColor"` to the SVG element using this function.
@@ -187,10 +220,10 @@ Here's an example that registers an icon library located in the `/assets/icons`
```html
@@ -207,6 +240,25 @@ If an icon is used before registration occurs, it will be empty initially but sh
The following examples demonstrate how to register a number of popular, open source icon libraries via CDN. Feel free to adapt the code as you see fit to use your own origin or naming conventions.
+### Bootstrap Icons
+
+This will register the [Bootstrap Icons](https://icons.getbootstrap.com/) library using the jsDelivr CDN. This library has two families: `regular` and `filled`.
+
+Icons in this library are licensed under the [MIT License](https://github.com/twbs/icons/blob/main/LICENSE).
+
+```html
+
+```
+
### Boxicons
This will register the [Boxicons](https://boxicons.com/) library using the jsDelivr CDN. This library has three variations: regular (`bx-*`), solid (`bxs-*`), and logos (`bxl-*`). A mutator function is required to set the SVG's `fill` to `currentColor`.
@@ -215,9 +267,9 @@ Icons in this library are licensed under the [Creative Commons 4.0 License](http
```html {.example}
```
-### Font Awesome
-
-This will register the [Font Awesome Free](https://fontawesome.com/) library using the jsDelivr CDN. This library has three variations: regular (`far-*`), solid (`fas-*`), and brands (`fab-*`). A mutator function is required to set the SVG's `fill` to `currentColor`.
-
-Icons in this library are licensed under the [Font Awesome Free License](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt). Some of the icons that appear on the Font Awesome website require a license and are therefore not available in the CDN.
-
-```html {.example}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
### Heroicons
This will register the [Heroicons](https://heroicons.com/) library using the jsDelivr CDN.
@@ -331,7 +337,7 @@ Icons in this library are licensed under the [MIT License](https://github.com/ta
```html {.example}
```
@@ -623,15 +632,15 @@ To improve performance you can use a SVG sprites to avoid multiple trips for eac
As always, make sure to benchmark these changes. When using HTTP/2, it may in fact be more bandwidth-friendly to use multiple small requests instead of 1 large sprite sheet.
-:::danger
+:::warning
When using sprite sheets, the `wa-load` and `wa-error` events will not fire.
For security reasons, browsers may apply the same-origin policy on `