this repo has no description
1import React from "@moonlight-mod/wp/common_react";
2import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
3import { Text, TabBar } from "@moonlight-mod/wp/common_components";
4
5import ExtensionsPage from "./extensions";
6import ConfigPage from "./config";
7
8const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports;
9
10const { Divider } = spacepack.findByCode(".default.HEADER_BAR")[0].exports
11 .default;
12const TitleBarClasses = spacepack.findByCode("iconWrapper:", "children:")[0]
13 .exports;
14const TabBarClasses = spacepack.findByCode("nowPlayingColumn:")[0].exports;
15
16export const pages: Record<
17 string,
18 {
19 name: string;
20 element: React.FunctionComponent;
21 }
22> = {
23 extensions: {
24 name: "Extensions",
25 element: ExtensionsPage
26 },
27 config: {
28 name: "Config",
29 element: ConfigPage
30 }
31};
32
33export function Moonbase() {
34 const [selectedTab, setSelectedTab] = React.useState(Object.keys(pages)[0]);
35
36 return (
37 <>
38 <div className={`${TitleBarClasses.children} ${Margins.marginBottom20}`}>
39 <Text
40 className={TitleBarClasses.titleWrapper}
41 variant="heading-lg/semibold"
42 tag="h2"
43 >
44 Moonbase
45 </Text>
46 <Divider />
47 <TabBar
48 selectedItem={selectedTab}
49 onItemSelect={setSelectedTab}
50 type="top-pill"
51 className={TabBarClasses.tabBar}
52 >
53 {Object.entries(pages).map(([id, page]) => (
54 <TabBar.Item key={id} id={id} className={TabBarClasses.item}>
55 {page.name}
56 </TabBar.Item>
57 ))}
58 </TabBar>
59 </div>
60
61 {React.createElement(pages[selectedTab].element)}
62 </>
63 );
64}