this repo has no description

Import directly from Components

Changed files
+59 -60
packages
core-extensions
+1 -3
packages/core-extensions/src/moonbase/webpackModules/crashScreen.tsx
···
import React from "@moonlight-mod/wp/react";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { Button, TabBar } from "@moonlight-mod/wp/discord/components/common/index";
import { useStateFromStores, useStateFromStoresObject } from "@moonlight-mod/wp/discord/packages/flux";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
import { RepositoryManifest, UpdateState } from "../types";
import { ConfigExtension, DetectedExtension } from "@moonlight-mod/types";
import DiscoveryClasses from "@moonlight-mod/wp/discord/modules/discovery/web/Discovery.css";
-
-
const { Button, TabBar } = Components;
const MODULE_REGEX = /Webpack-Module-(\d+)/g;
+1 -5
packages/core-extensions/src/moonbase/webpackModules/ui/RestartAdvice.tsx
···
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { Button, CircleWarningIcon } from "@moonlight-mod/wp/discord/components/common/index";
import React from "@moonlight-mod/wp/react";
import { RestartAdvice } from "../../types";
import HelpMessage from "./HelpMessage";
-
-
const { Button } = Components;
const strings: Record<RestartAdvice, string> = {
[RestartAdvice.NotNeeded]: "how did you even",
···
[RestartAdvice.ReloadNeeded]: () => window.location.reload(),
[RestartAdvice.RestartNeeded]: () => MoonbaseSettingsStore.restartDiscord()
};
-
-
const { CircleWarningIcon } = Components;
export default function RestartAdviceMessage() {
const restartAdvice = useStateFromStores([MoonbaseSettingsStore], () => MoonbaseSettingsStore.restartAdvice);
+9 -3
packages/core-extensions/src/moonbase/webpackModules/ui/about.tsx
···
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import {
+
Card,
+
Text,
+
useThemeContext,
+
Button,
+
AngleBracketsIcon,
+
BookCheckIcon,
+
ClydeIcon
+
} from "@moonlight-mod/wp/discord/components/common/index";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import React from "@moonlight-mod/wp/react";
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
import AppCardClasses from "@moonlight-mod/wp/discord/modules/guild_settings/web/AppCard.css";
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
-
-
const { Card, Text, useThemeContext, Button, AngleBracketsIcon, BookCheckIcon, ClydeIcon } = Components;
const wordmark = "https://raw.githubusercontent.com/moonlight-mod/moonlight/refs/heads/main/img/wordmark.png";
const wordmarkLight =
+1 -3
packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx
···
Clickable
} from "@moonlight-mod/wp/discord/components/common/index";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { CircleXIcon } from "@moonlight-mod/wp/discord/components/common/index";
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
import FormSwitchClasses from "@moonlight-mod/wp/discord/components/common/FormSwitch.css";
···
"discord/modules/guild_settings/roles/web/GuildSettingsRoleEdit.css"
))
);
-
-
const { CircleXIcon } = Components;
function RemoveEntryButton({ onClick }: { onClick: () => void }) {
return (
+12 -5
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
···
import { constants, ExtensionLoadSource, ExtensionTag } from "@moonlight-mod/types";
import { ExtensionCompat } from "@moonlight-mod/core/extension/loader";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import {
+
BeakerIcon,
+
DownloadIcon,
+
TrashIcon,
+
AngleBracketsIcon,
+
Tooltip,
+
Card,
+
Text,
+
FormSwitch,
+
TabBar,
+
Button
+
} from "@moonlight-mod/wp/discord/components/common/index";
import React from "@moonlight-mod/wp/react";
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
···
Settings
}
-
const { BeakerIcon, DownloadIcon, TrashIcon, AngleBracketsIcon, Tooltip } = Components;
-
const COMPAT_TEXT_MAP: Record<ExtensionCompat, string> = {
[ExtensionCompat.Compatible]: "huh?",
[ExtensionCompat.InvalidApiLevel]: "Incompatible API level",
···
// Why it work like that :sob:
if (ext == null) return <></>;
-
-
const { Card, Text, FormSwitch, TabBar, Button } = Components;
const tagline = ext.manifest?.meta?.tagline;
const settings = ext.settingsOverride ?? ext.manifest?.settings;
+6 -4
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx
···
Menu,
MenuGroup,
MenuCheckboxItem,
-
MenuItem
+
MenuItem,
+
ChevronSmallDownIcon,
+
ChevronSmallUpIcon,
+
ArrowsUpDownIcon,
+
RetryIcon,
+
Tooltip
} from "@moonlight-mod/wp/discord/components/common/index";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css";
import TagItem from "@moonlight-mod/wp/discord/modules/forums/web/Tag";
···
HeaderClasses = spacepack.require("discord/modules/forums/web/Header.css");
SortMenuClasses = spacepack.require("discord/modules/forums/web/SortMenu.css");
});
-
-
const { ChevronSmallDownIcon, ChevronSmallUpIcon, ArrowsUpDownIcon, RetryIcon, Tooltip } = Components;
function toggleTag(selectedTags: Set<string>, setSelectedTags: (tags: Set<string>) => void, tag: string) {
const newState = new Set(selectedTags);
+1 -2
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx
···
import React from "@moonlight-mod/wp/react";
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
import { useStateFromStoresObject } from "@moonlight-mod/wp/discord/packages/flux";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { FormDivider, CircleInformationIcon, XSmallIcon } from "@moonlight-mod/wp/discord/components/common/index";
import PanelButton from "@moonlight-mod/wp/discord/components/common/PanelButton";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
···
import HelpMessage from "../HelpMessage";
const SearchBar = spacepack.require("discord/uikit/search/SearchBar").default;
-
const { FormDivider, CircleInformationIcon, XSmallIcon } = Components;
export default function ExtensionsPage() {
const { extensions, savedFilter, showOnlyUpdateable } = useStateFromStoresObject([MoonbaseSettingsStore], () => {
+7 -9
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/popup.tsx
···
// TODO: clean up the styling here
import React from "@moonlight-mod/wp/react";
import { MoonbaseExtension } from "core-extensions/src/moonbase/types";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import {
+
openModalLazy,
+
useModalsStore,
+
closeModal,
+
SingleSelect,
+
Text
+
} from "@moonlight-mod/wp/discord/components/common/index";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
import { ExtensionLoadSource } from "@moonlight-mod/types";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import ConfirmModal from "@moonlight-mod/wp/discord/components/modals/ConfirmModal";
-
-
const { openModalLazy, useModalsStore, closeModal } = Components;
function close() {
const ModalStore = useModalsStore.getState();
···
option: string | undefined;
setOption: (pick: string | undefined) => void;
}) {
-
const { SingleSelect } = Components;
-
return (
<SingleSelect
key={id}
···
deps: Record<string, MoonbaseExtension[]>;
transitionState: number | null;
}) {
-
const { Text } = Components;
-
const amountNotAvailable = Object.values(deps).filter((candidates) => candidates.length === 0).length;
const [options, setOptions] = React.useState<Record<string, string | undefined>>(
···
uniqueId: number;
cb: () => void;
}) {
-
const { Text } = Components;
-
return (
<ConfirmModal
title={title}
+16 -14
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx
···
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
import React from "@moonlight-mod/wp/react";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import {
+
FormSwitch,
+
FormItem,
+
FormText,
+
TextInput,
+
Slider,
+
TextArea,
+
Tooltip,
+
Clickable,
+
CircleXIcon,
+
Text,
+
SingleSelect,
+
Button,
+
useVariableSelect,
+
multiSelect
+
} from "@moonlight-mod/wp/discord/components/common/index";
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import Flex from "@moonlight-mod/wp/discord/uikit/Flex";
import MarkupUtils from "@moonlight-mod/wp/discord/modules/markup/MarkupUtils";
···
}
function Boolean({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormSwitch } = Components;
const { value, displayName, description } = useConfigEntry<boolean>(ext.uniqueId, name);
return (
···
}
function Number({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, Slider } = Components;
const { value, displayName, description } = useConfigEntry<number>(ext.uniqueId, name);
const castedSetting = setting as NumberSettingType;
···
}
function String({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, TextInput } = Components;
const { value, displayName, description } = useConfigEntry<string>(ext.uniqueId, name);
return (
···
}
function MultilineString({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, TextArea } = Components;
const { value, displayName, description } = useConfigEntry<string>(ext.uniqueId, name);
return (
···
}
function Select({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, SingleSelect } = Components;
const { value, displayName, description } = useConfigEntry<string>(ext.uniqueId, name);
const castedSetting = setting as SelectSettingType;
···
}
function MultiSelect({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, Select, useVariableSelect, multiSelect } = Components;
const { value, displayName, description } = useConfigEntry<string | string[]>(ext.uniqueId, name);
const castedSetting = setting as MultiSelectSettingType;
···
);
}
-
// FIXME: type component keys
-
const { CircleXIcon } = Components;
-
function RemoveEntryButton({ onClick, disabled }: { onClick: () => void; disabled: boolean }) {
-
const { Tooltip, Clickable } = Components;
return (
<div className={GuildSettingsRoleEditClasses.removeButtonContainer}>
<Tooltip text="Remove entry" position="top">
···
}
function List({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, TextInput, Button } = Components;
const { value, displayName, description } = useConfigEntry<string[]>(ext.uniqueId, name);
const entries = value ?? [];
···
}
function Dictionary({ ext, name, setting, disabled }: SettingsProps) {
-
const { FormItem, FormText, TextInput, Button } = Components;
const { value, displayName, description } = useConfigEntry<Record<string, string>>(ext.uniqueId, name);
const entries = Object.entries(value ?? {});
···
);
if (Component == null) {
-
const { Text } = Components;
return (
<Text variant="text-md/normal">{`Custom setting "${displayName}" is missing a component. Perhaps the extension is not installed?`}</Text>
);
+1 -3
packages/core-extensions/src/moonbase/webpackModules/ui/update.tsx
···
import { useStateFromStores } from "@moonlight-mod/wp/discord/packages/flux";
import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { ThemeDarkIcon, Button } from "@moonlight-mod/wp/discord/components/common/index";
import React from "@moonlight-mod/wp/react";
import { UpdateState } from "../../types";
import HelpMessage from "./HelpMessage";
-
-
const { ThemeDarkIcon, Button } = Components;
const logger = moonlight.getLogger("moonbase/ui/update");
+1 -3
packages/core-extensions/src/moonbase/webpackModules/updates.tsx
···
import Notices from "@moonlight-mod/wp/notices_notices";
import { MoonlightBranch } from "@moonlight-mod/types";
import React from "@moonlight-mod/wp/react";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
-
-
const { ThemeDarkIcon } = Components;
+
import { ThemeDarkIcon } from "@moonlight-mod/wp/discord/components/common/index";
function plural(str: string, num: number) {
return `${str}${num > 1 ? "s" : ""}`;
+3 -6
packages/core-extensions/src/notices/webpackModules/component.tsx
···
import React from "@moonlight-mod/wp/react";
import Dispatcher from "@moonlight-mod/wp/discord/Dispatcher";
-
import * as Components from "@moonlight-mod/wp/discord/components/common/index";
+
import { Notice, NoticeCloseButton, PrimaryCTANoticeButton } from "@moonlight-mod/wp/discord/components/common/index";
import { useStateFromStoresObject } from "@moonlight-mod/wp/discord/packages/flux";
import NoticesStore from "@moonlight-mod/wp/notices_notices";
-
import type { Notice } from "@moonlight-mod/types/coreExtensions/notices";
+
import type { Notice as NoticeType } from "@moonlight-mod/types/coreExtensions/notices";
-
// FIXME: types
-
const { Notice, NoticeCloseButton, PrimaryCTANoticeButton } = Components;
-
-
function popAndDismiss(notice: Notice) {
+
function popAndDismiss(notice: NoticeType) {
NoticesStore.popNotice();
if (notice?.onDismiss) {
notice.onDismiss();