this repo has no description
1import settings from "@moonlight-mod/wp/settings_settings"; 2import React from "@moonlight-mod/wp/react"; 3import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; 4import { Moonbase, pages } from "@moonlight-mod/wp/moonbase_ui"; 5 6import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 7import * as Components from "@moonlight-mod/wp/discord/components/common/index"; 8 9import Update from "./ui/update"; 10 11const { MenuItem, Text, Breadcrumbs } = Components; 12 13const Margins = spacepack.require("discord/styles/shared/Margins.css"); 14 15const { open } = spacepack.findByExports("setSection", "clearSubsection")[0].exports.Z; 16 17const notice = { 18 stores: [MoonbaseSettingsStore], 19 element: () => { 20 // Require it here because lazy loading SUX 21 const SettingsNotice = spacepack.findByCode("onSaveButtonColor", "FocusRingScope")[0].exports.Z; 22 return ( 23 <SettingsNotice 24 submitting={MoonbaseSettingsStore.submitting} 25 onReset={() => { 26 MoonbaseSettingsStore.reset(); 27 }} 28 onSave={() => { 29 MoonbaseSettingsStore.writeConfig(); 30 }} 31 /> 32 ); 33 } 34}; 35 36function addSection(id: string, name: string, element: React.FunctionComponent) { 37 settings.addSection(`moonbase-${id}`, name, element, null, -2, notice); 38} 39 40// FIXME: move to component types 41type Breadcrumb = { 42 id: string; 43 label: string; 44}; 45 46function renderBreadcrumb(crumb: Breadcrumb, last: boolean) { 47 return ( 48 <Text variant="heading-lg/semibold" tag="h2" color={last ? "header-primary" : "header-secondary"}> 49 {crumb.label} 50 </Text> 51 ); 52} 53 54if (MoonbaseSettingsStore.getExtensionConfigRaw<boolean>("moonbase", "sections", false)) { 55 settings.addHeader("Moonbase", -2); 56 57 for (const page of pages) { 58 addSection(page.id, page.name, () => { 59 const breadcrumbs = [ 60 { id: "moonbase", label: "Moonbase" }, 61 { id: page.id, label: page.name } 62 ]; 63 return ( 64 <> 65 <Breadcrumbs 66 className={Margins.marginBottom20} 67 renderCustomBreadcrumb={renderBreadcrumb} 68 breadcrumbs={breadcrumbs} 69 activeId={page.id} 70 > 71 {page.name} 72 </Breadcrumbs> 73 74 <Update /> 75 76 <page.element /> 77 </> 78 ); 79 }); 80 } 81} else { 82 settings.addSection("moonbase", "Moonbase", Moonbase, null, -2, notice); 83 84 settings.addSectionMenuItems( 85 "moonbase", 86 ...pages.map((page, i) => ( 87 <MenuItem key={page.id} id={`moonbase-${page.id}`} label={page.name} action={() => open("moonbase", i)} /> 88 )) 89 ); 90}