preview.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import { sans } from "@pythnetwork/fonts";
  2. import { withThemeByClassName } from "@storybook/addon-themes";
  3. import type { Preview, Decorator } from "@storybook/react";
  4. import clsx from "clsx";
  5. import { useState } from "react";
  6. import "../src/Html/base.scss";
  7. import styles from "./storybook.module.scss";
  8. import { OverlayVisibleContext } from "../src/overlay-visible-context.js";
  9. const preview = {
  10. parameters: {
  11. backgrounds: {
  12. grid: {
  13. cellSize: 4,
  14. cellAmount: 4,
  15. },
  16. options: {
  17. primary: { name: "Primary", value: "var(--primary-background)" },
  18. secondary: { name: "Secondary", value: "var(--secondary-background)" },
  19. },
  20. },
  21. actions: { argTypesRegex: "^on[A-Z].*" },
  22. },
  23. initialGlobals: {
  24. backgrounds: { value: "primary" },
  25. },
  26. } satisfies Preview;
  27. export default preview;
  28. export const decorators: Decorator[] = [
  29. (Story) => {
  30. const overlayVisibleState = useState(false);
  31. return (
  32. <OverlayVisibleContext value={overlayVisibleState}>
  33. <Story />
  34. </OverlayVisibleContext>
  35. );
  36. },
  37. withThemeByClassName({
  38. themes: {
  39. Light: clsx(sans.className, styles.light),
  40. Dark: clsx(sans.className, styles.dark),
  41. },
  42. defaultTheme: "Light",
  43. }),
  44. ];