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