@@ -89,9 +85,7 @@ function getTemplateHTML() {
-
- Toggle playback rate
-
+
${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}
diff --git a/packages/html/src/icons/default/index.ts b/packages/html/src/icons/default/index.ts
new file mode 100644
index 00000000..0cb444fb
--- /dev/null
+++ b/packages/html/src/icons/default/index.ts
@@ -0,0 +1 @@
+export * from '@videojs/icons/html/default';
diff --git a/packages/html/src/icons/element/default/index.ts b/packages/html/src/icons/element/default/index.ts
new file mode 100644
index 00000000..d38e5b86
--- /dev/null
+++ b/packages/html/src/icons/element/default/index.ts
@@ -0,0 +1 @@
+import '@videojs/icons/element/default';
diff --git a/packages/html/src/icons/element/index.ts b/packages/html/src/icons/element/index.ts
new file mode 100644
index 00000000..a707824d
--- /dev/null
+++ b/packages/html/src/icons/element/index.ts
@@ -0,0 +1 @@
+import '@videojs/icons/element';
diff --git a/packages/html/src/icons/element/minimal/index.ts b/packages/html/src/icons/element/minimal/index.ts
new file mode 100644
index 00000000..6d4ec233
--- /dev/null
+++ b/packages/html/src/icons/element/minimal/index.ts
@@ -0,0 +1 @@
+import '@videojs/icons/element/minimal';
diff --git a/packages/html/src/icons/index.ts b/packages/html/src/icons/index.ts
new file mode 100644
index 00000000..14b2ff76
--- /dev/null
+++ b/packages/html/src/icons/index.ts
@@ -0,0 +1 @@
+export * from '@videojs/icons/html';
diff --git a/packages/html/src/icons/minimal/index.ts b/packages/html/src/icons/minimal/index.ts
new file mode 100644
index 00000000..79f8cbf5
--- /dev/null
+++ b/packages/html/src/icons/minimal/index.ts
@@ -0,0 +1 @@
+export * from '@videojs/icons/html/minimal';
diff --git a/packages/html/src/icons/tests/index.test.ts b/packages/html/src/icons/tests/index.test.ts
new file mode 100644
index 00000000..c2a8700b
--- /dev/null
+++ b/packages/html/src/icons/tests/index.test.ts
@@ -0,0 +1,116 @@
+import { Window } from 'happy-dom';
+import { afterEach, describe, expect, it, vi } from 'vitest';
+
+describe('@videojs/html/icons', () => {
+ afterEach(() => {
+ vi.unstubAllGlobals();
+ vi.resetModules();
+ });
+
+ it('exports SVG strings without registering media-icon', async () => {
+ const testWindow = new Window();
+
+ vi.stubGlobal('window', testWindow);
+ vi.stubGlobal('document', testWindow.document);
+ vi.stubGlobal('customElements', testWindow.customElements);
+ vi.stubGlobal('HTMLElement', testWindow.HTMLElement);
+
+ const { playIcon } = await import('../index');
+
+ expect(playIcon).toContain('