this repo has no description
1import React from "@moonlight-mod/wp/react"; 2import { Text, TabBar } from "@moonlight-mod/wp/discord/components/common/index"; 3import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux"; 4import { UserSettingsModalStore } from "@moonlight-mod/wp/common_stores"; 5 6import ExtensionsPage from "./extensions"; 7import ConfigPage from "./config"; 8import AboutPage from "./about"; 9import Update from "./update"; 10import RestartAdviceMessage from "./RestartAdvice"; 11import { Divider } from "@moonlight-mod/wp/discord/components/common/BaseHeaderBar"; 12import HeaderBarClasses from "@moonlight-mod/wp/discord/components/common/HeaderBar.css"; 13import PeoplePageClasses from "@moonlight-mod/wp/discord/modules/people/web/PeoplePage.css"; 14import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators"; 15import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css"; 16 17export const pages: { 18 id: string; 19 name: string; 20 element: React.FunctionComponent; 21}[] = [ 22 { 23 id: "extensions", 24 name: "Extensions", 25 element: ExtensionsPage 26 }, 27 { 28 id: "config", 29 name: "Config", 30 element: ConfigPage 31 }, 32 { 33 id: "about", 34 name: "About", 35 element: AboutPage 36 } 37]; 38 39export function Moonbase(props: { initialTab?: number } = {}) { 40 const subsection = useStateFromStores([UserSettingsModalStore], () => UserSettingsModalStore.getSubsection() ?? 0); 41 const setSubsection = React.useCallback( 42 (to: string) => { 43 if (subsection !== to) UserSettingsModalActionCreators.setSection("moonbase", to); 44 }, 45 [subsection] 46 ); 47 48 React.useEffect( 49 () => () => { 50 // Normally there's an onSettingsClose prop you can set but we don't expose it and I don't care enough to add support for it right now 51 UserSettingsModalActionCreators.clearSubsection("moonbase"); 52 }, 53 [] 54 ); 55 56 return ( 57 <> 58 <div className={`${HeaderBarClasses.children} ${Margins.marginBottom20}`}> 59 <Text className={HeaderBarClasses.titleWrapper} variant="heading-lg/semibold" tag="h2"> 60 Moonbase 61 </Text> 62 <Divider /> 63 <TabBar 64 selectedItem={subsection} 65 onItemSelect={setSubsection} 66 type="top-pill" 67 className={PeoplePageClasses.tabBar} 68 > 69 {pages.map((page, i) => ( 70 <TabBar.Item key={page.id} id={i} className={PeoplePageClasses.item}> 71 {page.name} 72 </TabBar.Item> 73 ))} 74 </TabBar> 75 </div> 76 77 <RestartAdviceMessage /> 78 <Update /> 79 80 {React.createElement(pages[subsection].element)} 81 </> 82 ); 83} 84 85export { RestartAdviceMessage, Update };