708cbeead8
- Add @e2e test layer: real app in broker iframe via Playwright - Fix broker redirect: conditional auto-init only when inside iframe - Fix seed data flash: empty data during 'connecting' phase - Fix Gallery button in iframe: explicit navigate instead of history.back - Add auth e2e feature scenarios and step definitions - Update docs: bdd-testing, data-layer-testing, data-layer, AGENTS.md - Add decision record for conditional NG init approach Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import React from 'react';
|
|
import { RouterProvider, useRouter } from './router';
|
|
import { ThemeProvider } from '../shared/context/ThemeContext';
|
|
import { NextGraphProvider } from '../shared/context/NextGraphContext';
|
|
import { FestipodDataProvider } from '../shared/context/FestipodDataContext';
|
|
import { Gallery } from './components/Gallery';
|
|
import { DemoMode } from './components/DemoMode';
|
|
import { SpecsPage } from './components/specs';
|
|
|
|
function AppContent() {
|
|
const { route, navigate, goBack } = useRouter();
|
|
|
|
if (route.page === 'demo') {
|
|
return (
|
|
<DemoMode
|
|
initialScreenId={route.screenId}
|
|
onBack={() => navigate({ page: 'gallery' })}
|
|
onNavigateToStory={(storyId) => navigate({ page: 'specs', storyId })}
|
|
/>
|
|
);
|
|
}
|
|
|
|
if (route.page === 'specs') {
|
|
return (
|
|
<SpecsPage
|
|
selectedFeatureId={route.featureId}
|
|
selectedStoryId={route.storyId}
|
|
onBack={goBack}
|
|
onSelectScreen={(screenId) => navigate({ page: 'demo', screenId })}
|
|
onSelectStory={(storyId) => navigate({ page: 'specs', storyId })}
|
|
/>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<Gallery
|
|
onSelectScreen={(screenId) => navigate({ page: 'demo', screenId })}
|
|
onShowSpecs={() => navigate({ page: 'specs' })}
|
|
/>
|
|
);
|
|
}
|
|
|
|
export function App() {
|
|
return (
|
|
<ThemeProvider>
|
|
<NextGraphProvider>
|
|
<FestipodDataProvider>
|
|
<RouterProvider>
|
|
<AppContent />
|
|
</RouterProvider>
|
|
</FestipodDataProvider>
|
|
</NextGraphProvider>
|
|
</ThemeProvider>
|
|
);
|
|
}
|
|
|
|
export default App;
|