diff --git a/apps/web/package.json b/apps/web/package.json
index 8d29eef..e273cde 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -14,6 +14,7 @@
"dependencies": {
"@pubscript/core": "workspace:*",
"@pubscript/editor": "workspace:*",
+ "@pubscript/exporters": "workspace:*",
"@pubscript/ui": "workspace:*",
"react": "^19.0.0",
"react-dom": "^19.0.0",
diff --git a/apps/web/src/App.tsx b/apps/web/src/App.tsx
index da36317..af2952b 100644
--- a/apps/web/src/App.tsx
+++ b/apps/web/src/App.tsx
@@ -1,6 +1,7 @@
import { useState, useEffect } from "react";
import { Routes, Route } from "react-router-dom";
import { Sidebar, Topbar, CommandPalette } from "./components/index.js";
+import { ExportDialog } from "./features/export/ExportDialog.js";
import { ToastViewport } from "@pubscript/ui";
import Write from "./routes/Write.js";
import { Characters } from "./routes/Characters.js";
@@ -26,6 +27,7 @@ const NAV = [
export default function App() {
const [paletteOpen, setPaletteOpen] = useState(false);
+ const [exportOpen, setExportOpen] = useState(false);
useEffect(() => {
const onKey = (e: KeyboardEvent) => {
@@ -41,7 +43,7 @@ export default function App() {
return (
- setPaletteOpen(true)} />
+ setPaletteOpen(true)} onOpenExport={() => setExportOpen(true)} />
} />
@@ -58,6 +60,7 @@ export default function App() {
setPaletteOpen(false)} nav={NAV} />
+ setExportOpen(false)} />
);
diff --git a/apps/web/src/components/Topbar.tsx b/apps/web/src/components/Topbar.tsx
index 83f9bf5..04fd521 100644
--- a/apps/web/src/components/Topbar.tsx
+++ b/apps/web/src/components/Topbar.tsx
@@ -16,9 +16,10 @@ const TITLES: Record = {
export interface TopbarProps {
onOpenPalette: () => void;
+ onOpenExport: () => void;
}
-export function Topbar({ onOpenPalette }: TopbarProps) {
+export function Topbar({ onOpenPalette, onOpenExport }: TopbarProps) {
const location = useLocation();
const theme = useSettings((s) => s.theme);
const setTheme = useSettings((s) => s.setTheme);
@@ -43,6 +44,14 @@ export function Topbar({ onOpenPalette }: TopbarProps) {
⌘K
+
+