diff --git a/lib/discord/src/design.ts b/lib/discord/src/design.ts index 01757b9..a3a8aa3 100644 --- a/lib/discord/src/design.ts +++ b/lib/discord/src/design.ts @@ -102,6 +102,9 @@ export interface Design { NavigatorHeader: DiscordModules.Components.NavigatorHeader Stack: DiscordModules.Components.Stack Slider: DiscordModules.Components.Slider + TableCheckboxRow: DiscordModules.Components.TableCheckboxRow + TableRadioGroup: typeof DiscordModules.Components.TableRadioGroup + TableRadioRow: typeof DiscordModules.Components.TableRadioRow TableRow: DiscordModules.Components.TableRow TableRowGroup: DiscordModules.Components.TableRowGroup TableRowTrailingText: DiscordModules.Components.TableRowTrailingText diff --git a/lib/discord/src/types/index.ts b/lib/discord/src/types/index.ts index 5741be7..b8811b1 100644 --- a/lib/discord/src/types/index.ts +++ b/lib/discord/src/types/index.ts @@ -1,7 +1,15 @@ import { EventEmitter } from 'node:events' import type { StackScreenProps } from '@react-navigation/stack' import type { ReactNavigationParamList } from '@revenge-mod/externals/react-navigation' -import type { ComponentProps, ComponentType, FC, JSX, ReactNode } from 'react' +import type { + ComponentProps, + ComponentType, + FC, + ReactElement, + ReactNode, + RefAttributes, + RefObject, +} from 'react' import type { ImageSourcePropType, ImageStyle, @@ -148,7 +156,7 @@ export namespace DiscordModules { export namespace Actions { export interface AlertActionCreators { - openAlert(key: string, alert: JSX.Element): void + openAlert(key: string, alert: ReactElement): void dismissAlert(key: string): void dismissAlerts(): void // TODO @@ -235,7 +243,7 @@ export namespace DiscordModules { } export type UseTooltipFunction = ( - ref: React.MutableRefObject, + ref: RefObject, props: UseTooltipFunctionProps, ) => unknown @@ -248,7 +256,7 @@ export namespace DiscordModules { export interface BaseButtonProps extends PressableProps, - React.RefAttributes { + RefAttributes { disabled?: boolean size?: ButtonSize variant?: @@ -416,6 +424,34 @@ export namespace DiscordModules { export type TableRowVariant = 'default' | 'danger' + export interface TableCheckboxRowProps + extends Omit { + checked: boolean + value: string + } + + export type TableCheckboxRow = FC + + export interface TableRadioGroupProps + extends TableRowGroupProps { + children: ReactNode + onChange: (value: T) => void + defaultValue?: T + } + + export interface TableRadioRowProps extends TableRowProps { + label: string + value: T + } + + export declare function TableRadioGroup( + props: TableRadioGroupProps, + ): ReactElement + + export declare function TableRadioRow( + props: TableRadioRowProps, + ): ReactElement + export interface TableRowProps { label: string subLabel?: string @@ -547,8 +583,8 @@ export namespace DiscordModules { onValueChange: (value: number) => void onSlidingStart?: () => void onSlidingComplete?: (value: number) => void - startIcon?: React.ReactNode - endIcon?: React.ReactNode + startIcon?: ReactNode + endIcon?: ReactNode } export type Slider = FC diff --git a/src/plugins/start/settings/components/FilterAndSortActionSheet.tsx b/src/plugins/start/settings/components/FilterAndSortActionSheet.tsx index b9f75ad..7ca0692 100644 --- a/src/plugins/start/settings/components/FilterAndSortActionSheet.tsx +++ b/src/plugins/start/settings/components/FilterAndSortActionSheet.tsx @@ -93,7 +93,7 @@ export default function FilterAndSortActionSheet({ { + onChange={v => { setSort(v) setSort_(v) }}