index.tsx 903 B

123456789101112131415161718192021222324252627282930313233
  1. import { SceneType, SceneTypeDesc } from 'constant'
  2. import { useStoreState } from 'hook'
  3. import { SceneTabContent } from './content'
  4. import { Tabs } from 'components'
  5. import type { ComponentType } from 'react'
  6. export type ScenePageProps = {
  7. TabContent: ComponentType<{type: SceneType}>
  8. }
  9. export const ScenePage = ({ TabContent = SceneTabContent }: ScenePageProps) => {
  10. const [type, setType] = useStoreState(
  11. 'scene-page-type',
  12. SceneType.SWSS,
  13. str => Number(str) as SceneType
  14. )
  15. const tabItems = Object.entries(SceneTypeDesc)
  16. .map(([key, val]) => [Number(key) as SceneType, val] as const)
  17. return (
  18. <Tabs
  19. items={tabItems}
  20. active={type}
  21. onChange={type => setType(Number(type))}
  22. renderContent={type => <TabContent type={type} />}
  23. />
  24. )
  25. }
  26. export default ScenePage
  27. export * from './header'
  28. export * from './columns'
  29. export * from './content'