import settings from "@moonlight-mod/wp/settings_settings"; import React from "@moonlight-mod/wp/react"; import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; import { Moonbase, pages } from "@moonlight-mod/wp/moonbase_ui"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; import * as Components from "@moonlight-mod/wp/discord/components/common/index"; import Update from "./ui/update"; const { MenuItem, Text, Breadcrumbs } = Components; const Margins = spacepack.require("discord/styles/shared/Margins.css"); const { open } = spacepack.findByExports("setSection", "clearSubsection")[0] .exports.Z; const notice = { stores: [MoonbaseSettingsStore], element: () => { // Require it here because lazy loading SUX const SettingsNotice = spacepack.findByCode( "onSaveButtonColor", "FocusRingScope" )[0].exports.Z; return ( { MoonbaseSettingsStore.reset(); }} onSave={() => { MoonbaseSettingsStore.writeConfig(); }} /> ); } }; function addSection( id: string, name: string, element: React.FunctionComponent ) { settings.addSection(`moonbase-${id}`, name, element, null, -2, notice); } // FIXME: move to component types type Breadcrumb = { id: string; label: string; }; function renderBreadcrumb(crumb: Breadcrumb, last: boolean) { return ( {crumb.label} ); } if ( MoonbaseSettingsStore.getExtensionConfigRaw( "moonbase", "sections", false ) ) { settings.addHeader("Moonbase", -2); for (const page of pages) { addSection(page.id, page.name, () => { const breadcrumbs = [ { id: "moonbase", label: "Moonbase" }, { id: page.id, label: page.name } ]; return ( <> {page.name} ); }); } } else { settings.addSection("moonbase", "Moonbase", Moonbase, null, -2, notice); settings.addSectionMenuItems( "moonbase", ...pages.map((page, i) => ( open("moonbase", i)} /> )) ); }