mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 18:10:18 +05:30
feat(renderer): mount UpdateBanner, FirstRunWizard, and CrashReportModal
This commit is contained in:
@@ -4,6 +4,8 @@ import { ModalLayer } from './components/modals/ModalLayer';
|
||||
import { Toaster } from './components/ui/sonner';
|
||||
import { ReplPanel } from './components/tools/ReplPanel';
|
||||
import { PrintPreview } from './components/tools/PrintPreview';
|
||||
import { UpdateBanner } from './components/UpdateBanner';
|
||||
import { FirstRunWizard } from './components/FirstRunWizard';
|
||||
import { useWelcomeTrigger } from './hooks/use-welcome-trigger';
|
||||
|
||||
function App() {
|
||||
@@ -21,6 +23,8 @@ function App() {
|
||||
<AppShell />
|
||||
<ModalLayer />
|
||||
<Toaster />
|
||||
<UpdateBanner />
|
||||
<FirstRunWizard />
|
||||
<ReplPanel />
|
||||
{printOpen && <PrintPreview onClose={() => setPrintOpen(false)} />}
|
||||
</>
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useAppStore } from '@/stores/app-store';
|
||||
import { AboutDialog } from './AboutDialog';
|
||||
import { AsciiGeneratorDialog } from './AsciiGeneratorDialog';
|
||||
import { ConfirmDialog } from './ConfirmDialog';
|
||||
import { CrashReportModal } from './CrashReportModal';
|
||||
import { ExportBatchDialog } from './ExportBatchDialog';
|
||||
import { ExportDocxDialog } from './ExportDocxDialog';
|
||||
import { ExportHtmlDialog } from './ExportHtmlDialog';
|
||||
@@ -41,5 +42,7 @@ export function ModalLayer() {
|
||||
return <TableGeneratorDialog />;
|
||||
case 'find-in-files':
|
||||
return <FindInFilesDialog />;
|
||||
case 'crashReports':
|
||||
return <CrashReportModal onClose={useAppStore.getState().closeModal} />;
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,8 @@ export type ModalState =
|
||||
| { kind: 'export-word'; props: { sourcePath: string } }
|
||||
| { kind: 'ascii-generator' }
|
||||
| { kind: 'table-generator' }
|
||||
| { kind: 'find-in-files' };
|
||||
| { kind: 'find-in-files' }
|
||||
| { kind: 'crashReports' };
|
||||
|
||||
export type ModalKind = ModalState['kind'];
|
||||
|
||||
@@ -40,6 +41,7 @@ interface AppState {
|
||||
zenMode: boolean;
|
||||
paneSizes: PaneSizes;
|
||||
modal: ModalState;
|
||||
firstRun: boolean;
|
||||
toggleSidebar: () => void;
|
||||
togglePreview: () => void;
|
||||
setZenMode: (value: boolean) => void;
|
||||
@@ -49,6 +51,8 @@ interface AppState {
|
||||
...args: Extract<ModalState, { kind: K }> extends { props: infer P } ? [props?: P] : []
|
||||
) => void;
|
||||
closeModal: () => void;
|
||||
setFirstRun: (value: boolean) => void;
|
||||
newBuffer: (content?: string) => void;
|
||||
}
|
||||
|
||||
export const useAppStore = create<AppState>()(
|
||||
@@ -59,6 +63,7 @@ export const useAppStore = create<AppState>()(
|
||||
zenMode: false,
|
||||
paneSizes: { sidebar: 20, editor: 50, preview: 30 },
|
||||
modal: { kind: null },
|
||||
firstRun: true,
|
||||
toggleSidebar: () => set((s) => ({ sidebarVisible: !s.sidebarVisible })),
|
||||
togglePreview: () => set((s) => ({ previewVisible: !s.previewVisible })),
|
||||
setZenMode: (value) => set({ zenMode: value }),
|
||||
@@ -69,6 +74,8 @@ export const useAppStore = create<AppState>()(
|
||||
return { modal: candidate };
|
||||
}),
|
||||
closeModal: () => set({ modal: { kind: null } }),
|
||||
setFirstRun: (value) => set({ firstRun: value }),
|
||||
newBuffer: (_content?: string) => set({ firstRun: false }),
|
||||
}),
|
||||
{
|
||||
name: 'mc-app-store',
|
||||
|
||||
Reference in New Issue
Block a user