diff --git a/src/app.postcss b/src/app.postcss
index f5df0bf3..8f63096c 100644
--- a/src/app.postcss
+++ b/src/app.postcss
@@ -1,4 +1,3 @@
-@import '@fortawesome/fontawesome-free/css/all.min.css';
@import '@fontsource-variable/recursive/crsv.css';
@tailwind base;
diff --git a/src/lib/components/FontAwesome.svelte b/src/lib/components/FontAwesome.svelte
new file mode 100644
index 00000000..5b4dd0fe
--- /dev/null
+++ b/src/lib/components/FontAwesome.svelte
@@ -0,0 +1,54 @@
+
+
+
+
+
+{#await lazyLoadFontAwesomeCSS then FontAwesomeCSS}
+
+{/await}
diff --git a/src/lib/components/FontAwesomeCSS.svelte b/src/lib/components/FontAwesomeCSS.svelte
new file mode 100644
index 00000000..36232d07
--- /dev/null
+++ b/src/lib/components/FontAwesomeCSS.svelte
@@ -0,0 +1,14 @@
+
+
diff --git a/src/lib/components/View.svelte b/src/lib/components/View.svelte
index e0702f64..02ac0ebc 100644
--- a/src/lib/components/View.svelte
+++ b/src/lib/components/View.svelte
@@ -5,6 +5,7 @@
import { PanZoomState } from '$/util/panZoom';
import { inputStateStore, stateStore, updateCodeStore } from '$/util/state';
import { logEvent, saveStatistics } from '$/util/stats';
+ import FontAwesome, { mayContainFontAwesome } from '$lib/components/FontAwesome.svelte';
import uniqueID from 'lodash-es/uniqueId';
import type { MermaidConfig } from 'mermaid';
import { mode } from 'mode-watcher';
@@ -23,6 +24,7 @@
let error = $state(false);
let panZoom = true;
let manualUpdate = true;
+ let waitForFontAwesomeToLoad: FontAwesome['waitForFontAwesomeToLoad'] | undefined = $state();
// Set up panZoom state observer to update the store when pan/zoom changes
const setupPanZoomObserver = () => {
@@ -65,6 +67,11 @@
config = state.mermaid;
rough = state.rough;
panZoom = state.panZoom ?? true;
+
+ if (mayContainFontAwesome(code)) {
+ await waitForFontAwesomeToLoad?.();
+ }
+
const scroll = view?.parentElement?.scrollTop;
delete container.dataset.processed;
const viewID = uniqueID('graph-');
@@ -136,6 +143,8 @@
});
+
+