mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-09 16:13:31 +01:00
fix(website): nav / member provider
This commit is contained in:
@@ -2,12 +2,15 @@
|
||||
|
||||
import type { PropsWithChildren } from 'react';
|
||||
import { CmdKProvider } from '~/contexts/cmdK';
|
||||
import { MemberProvider } from '~/contexts/member';
|
||||
import { NavProvider } from '~/contexts/nav';
|
||||
|
||||
export function Providers({ children }: PropsWithChildren) {
|
||||
return (
|
||||
<NavProvider>
|
||||
<CmdKProvider>{children}</CmdKProvider>
|
||||
<MemberProvider>
|
||||
<CmdKProvider>{children}</CmdKProvider>
|
||||
</MemberProvider>
|
||||
</NavProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,17 +1,21 @@
|
||||
'use client';
|
||||
|
||||
import type { ApiItemJSON } from '@discordjs/api-extractor-utils';
|
||||
import { createContext, useContext, type ReactNode } from 'react';
|
||||
import type { ApiItem } from '@microsoft/api-extractor-model';
|
||||
import { createContext, useContext, useMemo, useState } from 'react';
|
||||
import type { PropsWithChildren, Dispatch, SetStateAction } from 'react';
|
||||
|
||||
export const MemberContext = createContext<ApiItemJSON | null | undefined>(undefined);
|
||||
export const MemberContext = createContext<{
|
||||
member: ApiItem | ApiItemJSON | null | undefined;
|
||||
setMember: Dispatch<SetStateAction<ApiItem | ApiItemJSON | null | undefined>>;
|
||||
}>({ member: undefined, setMember: (_) => {} });
|
||||
|
||||
export const MemberProvider = ({
|
||||
member,
|
||||
children,
|
||||
}: {
|
||||
children?: ReactNode | undefined;
|
||||
member: ApiItemJSON | null | undefined;
|
||||
}) => <MemberContext.Provider value={member}>{children}</MemberContext.Provider>;
|
||||
export const MemberProvider = ({ children }: PropsWithChildren) => {
|
||||
const [member, setMember] = useState<ApiItem | ApiItemJSON | null | undefined>(undefined);
|
||||
const value = useMemo(() => ({ member, setMember }), [member]);
|
||||
|
||||
return <MemberContext.Provider value={value}>{children}</MemberContext.Provider>;
|
||||
};
|
||||
|
||||
export function useMember() {
|
||||
return useContext(MemberContext);
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
'use client';
|
||||
|
||||
import { type PropsWithChildren, type Dispatch, type SetStateAction, createContext, useContext, useState } from 'react';
|
||||
import {
|
||||
type PropsWithChildren,
|
||||
type Dispatch,
|
||||
type SetStateAction,
|
||||
createContext,
|
||||
useContext,
|
||||
useState,
|
||||
useMemo,
|
||||
} from 'react';
|
||||
|
||||
export const NavContext = createContext<{ opened: boolean; setOpened: Dispatch<SetStateAction<boolean>> }>({
|
||||
opened: false,
|
||||
@@ -9,9 +17,9 @@ export const NavContext = createContext<{ opened: boolean; setOpened: Dispatch<S
|
||||
|
||||
export const NavProvider = ({ children }: PropsWithChildren) => {
|
||||
const [opened, setOpened] = useState(false);
|
||||
const value = useMemo(() => ({ opened, setOpened }), [opened]);
|
||||
|
||||
// eslint-disable-next-line react/jsx-no-constructed-context-values
|
||||
return <NavContext.Provider value={{ opened, setOpened }}>{children}</NavContext.Provider>;
|
||||
return <NavContext.Provider value={value}>{children}</NavContext.Provider>;
|
||||
};
|
||||
|
||||
export function useNav() {
|
||||
|
||||
Reference in New Issue
Block a user