ThemeProvider.tsx 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React from 'react';
  2. import dynamic from 'next/dynamic';
  3. import { GrowiThemes } from '~/interfaces/theme';
  4. const ThemeAntarctic = dynamic(() => import('../ThemeAntarctic'));
  5. const ThemeBlackboard = dynamic(() => import('../ThemeBlackboard'));
  6. const ThemeChristmas = dynamic(() => import('../ThemeChristmas'));
  7. const ThemeDefault = dynamic(() => import('../ThemeDefault'));
  8. const ThemeFireRed = dynamic(() => import('../ThemeFireRed'));
  9. const ThemeFuture = dynamic(() => import('../ThemeFuture'));
  10. const ThemeHalloween = dynamic(() => import('../ThemeHalloween'));
  11. const ThemeHufflepuff = dynamic(() => import('../ThemeHufflepuff'));
  12. const ThemeIsland = dynamic(() => import('../ThemeIsland'));
  13. const ThemeJadeGreen = dynamic(() => import('../ThemeJadeGreen'));
  14. const ThemeKibela = dynamic(() => import('../ThemeKibela'));
  15. const ThemeMonoBlue = dynamic(() => import('../ThemeMonoBlue'));
  16. const ThemeNature = dynamic(() => import('../ThemeNature'));
  17. const ThemeSpring = dynamic(() => import('../ThemeSpring'));
  18. const ThemeWood = dynamic(() => import('../ThemeWood'));
  19. type Props = {
  20. children: JSX.Element,
  21. theme?: GrowiThemes,
  22. }
  23. export const ThemeProvider = ({ theme, children }: Props): JSX.Element => {
  24. switch (theme) {
  25. case GrowiThemes.ANTARCTIC:
  26. return <ThemeAntarctic>{children}</ThemeAntarctic>;
  27. case GrowiThemes.BLACKBOARD:
  28. return <ThemeBlackboard>{children}</ThemeBlackboard>;
  29. case GrowiThemes.CHRISTMAS:
  30. return <ThemeChristmas>{children}</ThemeChristmas>;
  31. case GrowiThemes.FIRE_RED:
  32. return <ThemeFireRed>{children}</ThemeFireRed>;
  33. case GrowiThemes.FUTURE:
  34. return <ThemeFuture>{children}</ThemeFuture>;
  35. case GrowiThemes.HALLOWEEN:
  36. return <ThemeHalloween>{children}</ThemeHalloween>;
  37. case GrowiThemes.HUFFLEPUFF:
  38. return <ThemeHufflepuff>{children}</ThemeHufflepuff>;
  39. case GrowiThemes.ISLAND:
  40. return <ThemeIsland>{children}</ThemeIsland>;
  41. case GrowiThemes.JADE_GREEN:
  42. return <ThemeJadeGreen>{children}</ThemeJadeGreen>;
  43. case GrowiThemes.KIBELA:
  44. return <ThemeKibela>{children}</ThemeKibela>;
  45. case GrowiThemes.MONO_BLUE:
  46. return <ThemeMonoBlue>{children}</ThemeMonoBlue>;
  47. case GrowiThemes.NATURE:
  48. return <ThemeNature>{children}</ThemeNature>;
  49. case GrowiThemes.SPRING:
  50. return <ThemeSpring>{children}</ThemeSpring>;
  51. case GrowiThemes.WOOD:
  52. return <ThemeWood>{children}</ThemeWood>;
  53. default:
  54. return <ThemeDefault>{children}</ThemeDefault>;
  55. }
  56. };