89 lines
2.7 KiB
TypeScript
89 lines
2.7 KiB
TypeScript
import type { Preview } from "@storybook/react-vite";
|
|
import { QueryClientProvider } from "@tanstack/react-query";
|
|
import { MemoryRouter } from "react-router-dom";
|
|
|
|
import { createAnonymousSessionAdapter } from "../src/adapters/auth/external-session-adapter.js";
|
|
import { createQueryClient } from "../src/adapters/query-cache/tanstack-query-cache.js";
|
|
import { createApplication } from "../src/application/create-application.js";
|
|
import { LocaleProvider } from "../src/presentation/i18n/index.js";
|
|
import { ApplicationProvider } from "../src/presentation/providers/application-provider.js";
|
|
import { SessionProvider } from "../src/presentation/providers/session-provider.jsx";
|
|
import { ThemeProvider } from "../src/presentation/providers/theme-provider.jsx";
|
|
import "../src/presentation/styles/theme.css";
|
|
|
|
const preferences = new Map<string, unknown>();
|
|
const application = createApplication({
|
|
session: createAnonymousSessionAdapter(),
|
|
preferences: {
|
|
read: (name) => ({ ok: true, value: preferences.get(name) }),
|
|
write: (name, value) => {
|
|
preferences.set(name, structuredClone(value));
|
|
return { ok: true };
|
|
},
|
|
remove: (name) => {
|
|
preferences.delete(name);
|
|
return { ok: true };
|
|
},
|
|
},
|
|
diagnostics: { record() {} },
|
|
telemetry: { emit() {} },
|
|
releaseInfo: {
|
|
getCurrent: async () => ({
|
|
buildId: "storybook-build",
|
|
releaseId: "storybook-release",
|
|
configSchemaVersion: "1",
|
|
apiContractVersion: "1",
|
|
assetManifestHash: "storybook-assets",
|
|
routeChunks: {},
|
|
}),
|
|
refresh: async () => ({
|
|
buildId: "storybook-build",
|
|
releaseId: "storybook-release",
|
|
configSchemaVersion: "1",
|
|
apiContractVersion: "1",
|
|
assetManifestHash: "storybook-assets",
|
|
routeChunks: {},
|
|
}),
|
|
},
|
|
navigation: { reload() {} },
|
|
});
|
|
const queryClient = createQueryClient();
|
|
|
|
const preview: Preview = {
|
|
decorators: [
|
|
(Story) => (
|
|
<ApplicationProvider application={application}>
|
|
<QueryClientProvider client={queryClient}>
|
|
<MemoryRouter>
|
|
<LocaleProvider>
|
|
<ThemeProvider>
|
|
<SessionProvider>
|
|
<div id="portal-root" />
|
|
<main className="ui-page" style={{ padding: "1rem" }}>
|
|
<Story />
|
|
</main>
|
|
</SessionProvider>
|
|
</ThemeProvider>
|
|
</LocaleProvider>
|
|
</MemoryRouter>
|
|
</QueryClientProvider>
|
|
</ApplicationProvider>
|
|
),
|
|
],
|
|
parameters: {
|
|
a11y: {
|
|
test: "error",
|
|
},
|
|
controls: {
|
|
expanded: true,
|
|
},
|
|
options: {
|
|
storySort: {
|
|
order: ["Platform"],
|
|
},
|
|
},
|
|
},
|
|
};
|
|
|
|
export default preview;
|