this repo has no description
1import React from "@moonlight-mod/wp/react"; 2import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; 3import { Text, TabBar } from "@moonlight-mod/wp/discord/components/common/index"; 4import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux"; 5import { UserSettingsModalStore } from "@moonlight-mod/wp/common_stores"; 6 7import ExtensionsPage from "./extensions"; 8import ConfigPage from "./config"; 9import Update from "./update"; 10import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 11import RestartAdviceMessage from "./RestartAdvice"; 12 13const { Divider } = spacepack.findByCode(".forumOrHome]:")[0].exports.Z; 14const TitleBarClasses = spacepack.findByCode("iconWrapper:", "children:")[0].exports; 15const TabBarClasses = spacepack.findByCode("nowPlayingColumn:")[0].exports; 16const { setSection, clearSubsection } = spacepack.findByCode(':"USER_SETTINGS_MODAL_SET_SECTION"')[0].exports.Z; 17const Margins = spacepack.require("discord/styles/shared/Margins.css"); 18 19export const pages: { 20 id: string; 21 name: string; 22 element: React.FunctionComponent; 23}[] = [ 24 { 25 id: "extensions", 26 name: "Extensions", 27 element: ExtensionsPage 28 }, 29 { 30 id: "config", 31 name: "Config", 32 element: ConfigPage 33 } 34]; 35 36export function Moonbase(props: { initialTab?: number } = {}) { 37 const subsection = useStateFromStores([UserSettingsModalStore], () => UserSettingsModalStore.getSubsection() ?? 0); 38 const setSubsection = React.useCallback( 39 (to: string) => { 40 if (subsection !== to) setSection("moonbase", to); 41 }, 42 [subsection] 43 ); 44 45 React.useEffect( 46 () => () => { 47 // 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 48 clearSubsection("moonbase"); 49 MoonbaseSettingsStore.showOnlyUpdateable = false; 50 }, 51 [] 52 ); 53 54 return ( 55 <> 56 <div className={`${TitleBarClasses.children} ${Margins.marginBottom20}`}> 57 <Text className={TitleBarClasses.titleWrapper} variant="heading-lg/semibold" tag="h2"> 58 Moonbase 59 </Text> 60 <Divider /> 61 <TabBar selectedItem={subsection} onItemSelect={setSubsection} type="top-pill" className={TabBarClasses.tabBar}> 62 {pages.map((page, i) => ( 63 <TabBar.Item key={page.id} id={i} className={TabBarClasses.item}> 64 {page.name} 65 </TabBar.Item> 66 ))} 67 </TabBar> 68 </div> 69 70 <RestartAdviceMessage /> 71 <Update /> 72 73 {React.createElement(pages[subsection].element)} 74 </> 75 ); 76} 77 78export { RestartAdviceMessage, Update };