diff --git a/docs/custom-components/custom-providers.mdx b/docs/custom-components/custom-providers.mdx index d3e5321622..26abe74fd1 100644 --- a/docs/custom-components/custom-providers.mdx +++ b/docs/custom-components/custom-providers.mdx @@ -27,19 +27,19 @@ Then build your Custom Provider as follows: ```tsx 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' const MyCustomContext = React.createContext(myCustomValue) export function MyProvider({ children }: { children: React.ReactNode }) { return ( - + {children} - + ) } -export const useMyCustomContext = () => useContext(MyCustomContext) +export const useMyCustomContext = () => use(MyCustomContext) ``` _For details on how to build Custom Components, see [Building Custom Components](./overview#building-custom-components)._ diff --git a/examples/auth/src/app/(app)/_providers/Auth/index.tsx b/examples/auth/src/app/(app)/_providers/Auth/index.tsx index 6083705c58..78da1ea569 100644 --- a/examples/auth/src/app/(app)/_providers/Auth/index.tsx +++ b/examples/auth/src/app/(app)/_providers/Auth/index.tsx @@ -2,7 +2,7 @@ import type { Permissions } from 'payload/auth' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, useCallback, use, useEffect, useState } from 'react' import type { User } from '../../../../payload-types' import type { AuthContext, Create, ForgotPassword, Login, Logout, ResetPassword } from './types' @@ -163,7 +163,7 @@ export const AuthProvider: React.FC<{ api?: 'gql' | 'rest'; children: React.Reac ) return ( - {children} - + ) } -type UseAuth = () => AuthContext +type UseAuth = () => AuthContext -export const useAuth: UseAuth = () => useContext(Context) +export const useAuth: UseAuth = () => use(Context) diff --git a/examples/localization/src/providers/HeaderTheme/index.tsx b/examples/localization/src/providers/HeaderTheme/index.tsx index 76666f1017..1d0255787c 100644 --- a/examples/localization/src/providers/HeaderTheme/index.tsx +++ b/examples/localization/src/providers/HeaderTheme/index.tsx @@ -2,7 +2,7 @@ import type { Theme } from '@/providers/Theme/types' -import React, { createContext, useCallback, useContext, useState } from 'react' +import React, { createContext, useCallback, use, useState } from 'react' import canUseDOM from '@/utilities/canUseDOM' @@ -27,11 +27,7 @@ export const HeaderThemeProvider = ({ children }: { children: React.ReactNode }) setThemeState(themeToSet) }, []) - return ( - - {children} - - ) + return {children} } -export const useHeaderTheme = (): ContextType => useContext(HeaderThemeContext) +export const useHeaderTheme = (): ContextType => use(HeaderThemeContext) diff --git a/examples/localization/src/providers/Theme/index.tsx b/examples/localization/src/providers/Theme/index.tsx index 882d8318d4..60dcedca40 100644 --- a/examples/localization/src/providers/Theme/index.tsx +++ b/examples/localization/src/providers/Theme/index.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, useCallback, use, useEffect, useState } from 'react' import type { Theme, ThemeContextType } from './types' @@ -51,7 +51,7 @@ export const ThemeProvider = ({ children }: { children: React.ReactNode }) => { setThemeState(themeToSet) }, []) - return {children} + return {children} } -export const useTheme = (): ThemeContextType => useContext(ThemeContext) +export const useTheme = (): ThemeContextType => use(ThemeContext) diff --git a/packages/next/src/views/LivePreview/Context/context.ts b/packages/next/src/views/LivePreview/Context/context.ts index 236bc419ae..a35d6dbe7d 100644 --- a/packages/next/src/views/LivePreview/Context/context.ts +++ b/packages/next/src/views/LivePreview/Context/context.ts @@ -4,7 +4,7 @@ import type { fieldSchemaToJSON } from 'payload/shared' import type { Dispatch } from 'react' import type React from 'react' -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' import type { usePopupWindow } from '../usePopupWindow.js' import type { SizeReducerAction } from './sizeReducer.js' @@ -83,4 +83,4 @@ export const LivePreviewContext = createContext({ zoom: 1, }) -export const useLivePreviewContext = () => useContext(LivePreviewContext) +export const useLivePreviewContext = () => use(LivePreviewContext) diff --git a/packages/next/src/views/LivePreview/Context/index.tsx b/packages/next/src/views/LivePreview/Context/index.tsx index 3ea06d3cb2..7878d3c441 100644 --- a/packages/next/src/views/LivePreview/Context/index.tsx +++ b/packages/next/src/views/LivePreview/Context/index.tsx @@ -166,7 +166,7 @@ export const LivePreviewProvider: React.FC = ({ }, [previewWindowType, isPopupOpen, handleWindowChange]) return ( - = ({ {listeningForMessages && children} - + ) } diff --git a/packages/next/src/views/Version/Default/SelectedLocalesContext.tsx b/packages/next/src/views/Version/Default/SelectedLocalesContext.tsx index 484b6a64d4..2913b82a64 100644 --- a/packages/next/src/views/Version/Default/SelectedLocalesContext.tsx +++ b/packages/next/src/views/Version/Default/SelectedLocalesContext.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext } from 'react' +import { createContext, use } from 'react' type SelectedLocalesContextType = { selectedLocales: string[] @@ -10,4 +10,4 @@ export const SelectedLocalesContext = createContext( selectedLocales: [], }) -export const useSelectedLocales = () => React.useContext(SelectedLocalesContext) +export const useSelectedLocales = () => use(SelectedLocalesContext) diff --git a/packages/next/src/views/Version/Default/index.tsx b/packages/next/src/views/Version/Default/index.tsx index d25dfb9261..034243c3d0 100644 --- a/packages/next/src/views/Version/Default/index.tsx +++ b/packages/next/src/views/Version/Default/index.tsx @@ -182,11 +182,11 @@ export const DefaultVersionView: React.FC = ({ /> )} - locale.value) }} > {doc?.version && RenderedDiff} - + ) diff --git a/packages/plugin-import-export/src/components/ImportExportProvider/index.tsx b/packages/plugin-import-export/src/components/ImportExportProvider/index.tsx index fc4c4d03f4..185708f8f8 100644 --- a/packages/plugin-import-export/src/components/ImportExportProvider/index.tsx +++ b/packages/plugin-import-export/src/components/ImportExportProvider/index.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useCallback, useContext, useState } from 'react' +import React, { createContext, use, useCallback, useState } from 'react' type ImportExportContext = { collection: string @@ -16,15 +16,15 @@ export const ImportExportProvider: React.FC<{ children: React.ReactNode }> = ({ }, []) return ( - {children} - + ) } -export const useImportExport = (): ImportExportContext => useContext(ImportExportContext) +export const useImportExport = (): ImportExportContext => use(ImportExportContext) diff --git a/packages/richtext-lexical/src/features/blocks/client/component/BlockContent.tsx b/packages/richtext-lexical/src/features/blocks/client/component/BlockContent.tsx index 471bd137e5..5f25764d1e 100644 --- a/packages/richtext-lexical/src/features/blocks/client/component/BlockContent.tsx +++ b/packages/richtext-lexical/src/features/blocks/client/component/BlockContent.tsx @@ -49,7 +49,7 @@ const BlockComponentContext = createContext({ initialState: false, }) -export const useBlockComponentContext = () => React.useContext(BlockComponentContext) +export const useBlockComponentContext = () => React.use(BlockComponentContext) /** * The actual content of the Block. This should be INSIDE a Form component, @@ -99,7 +99,7 @@ export const BlockContent: React.FC = (props) => { ) return CustomBlock ? ( - = (props) => { > {CustomBlock} - + ) : ( React.useContext(InlineBlockComponentContext) +export const useInlineBlockComponentContext = () => React.use(InlineBlockComponentContext) export const InlineBlockComponent: React.FC = (props) => { const { cacheBuster, formData, nodeKey } = props @@ -426,7 +426,7 @@ export const InlineBlockComponent: React.FC = (props) => { {CustomBlock ? ( - = (props) => { }} > {CustomBlock} - + ) : ( {initialState ? : } diff --git a/packages/richtext-lexical/src/features/experimental_table/client/plugins/TablePlugin/index.tsx b/packages/richtext-lexical/src/features/experimental_table/client/plugins/TablePlugin/index.tsx index 7c721cc9d1..3f98a78732 100644 --- a/packages/richtext-lexical/src/features/experimental_table/client/plugins/TablePlugin/index.tsx +++ b/packages/richtext-lexical/src/features/experimental_table/client/plugins/TablePlugin/index.tsx @@ -16,7 +16,7 @@ import { INSERT_TABLE_COMMAND, TableCellNode, TableNode, TableRowNode } from '@l import { mergeRegister } from '@lexical/utils' import { formatDrawerSlug, useEditDepth } from '@payloadcms/ui' import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical' -import { createContext, useContext, useEffect, useMemo, useState } from 'react' +import { createContext, use, useEffect, useMemo, useState } from 'react' import * as React from 'react' import type { PluginComponent } from '../../../../typesClient.js' @@ -64,7 +64,7 @@ export function TableContext({ children }: { children: JSX.Element }) { cellEditorPlugins: null, }) return ( - ({ cellEditorConfig: contextValue.cellEditorConfig, @@ -77,13 +77,13 @@ export function TableContext({ children }: { children: JSX.Element }) { )} > {children} - + ) } export const TablePlugin: PluginComponent = () => { const [editor] = useLexicalComposerContext() - const cellContext = useContext(CellContext) + const cellContext = use(CellContext) const editDepth = useEditDepth() const { fieldProps: { schemaPath }, diff --git a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx index 77017bb416..d831546e92 100644 --- a/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx +++ b/packages/richtext-lexical/src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx @@ -48,7 +48,7 @@ export function DropDownItem({ const ref = useRef(null) - const dropDownContext = React.useContext(DropDownContext) + const dropDownContext = React.use(DropDownContext) if (dropDownContext === null) { throw new Error('DropDownItem must be used within a DropDown') @@ -170,7 +170,7 @@ function DropDownItems({ }, [items, highlightedItem]) return ( - + {children} - + ) } diff --git a/packages/richtext-lexical/src/lexical/config/client/EditorConfigProvider.tsx b/packages/richtext-lexical/src/lexical/config/client/EditorConfigProvider.tsx index 20144407a9..fecef560b3 100644 --- a/packages/richtext-lexical/src/lexical/config/client/EditorConfigProvider.tsx +++ b/packages/richtext-lexical/src/lexical/config/client/EditorConfigProvider.tsx @@ -6,7 +6,7 @@ import type { MarkRequired } from 'ts-essentials' import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js' import { useEditDepth } from '@payloadcms/ui' import * as React from 'react' -import { createContext, useContext, useMemo, useRef, useState } from 'react' +import { createContext, use, useMemo, useRef, useState } from 'react' import type { InlineBlockNode } from '../../../features/blocks/client/nodes/InlineBlocksNode.js' import type { LexicalRichTextFieldProps } from '../../../types.js' @@ -140,11 +140,11 @@ export const EditorConfigProvider = ({ ], ) - return {children} + return {children} } export const useEditorConfigContext = (): EditorConfigContextType => { - const context = useContext(Context) + const context = use(Context) if (context === undefined) { throw new Error('useEditorConfigContext must be used within an EditorConfigProvider') } diff --git a/packages/richtext-slate/src/field/providers/ElementButtonProvider.tsx b/packages/richtext-slate/src/field/providers/ElementButtonProvider.tsx index 5cc7b3d483..1e359f60ef 100644 --- a/packages/richtext-slate/src/field/providers/ElementButtonProvider.tsx +++ b/packages/richtext-slate/src/field/providers/ElementButtonProvider.tsx @@ -25,17 +25,17 @@ export const ElementButtonProvider: React.FC< const { children, ...rest } = props return ( - {children} - + ) } export const useElementButton = () => { - const path = React.useContext(ElementButtonContext) + const path = React.use(ElementButtonContext) return path } diff --git a/packages/richtext-slate/src/field/providers/ElementProvider.tsx b/packages/richtext-slate/src/field/providers/ElementProvider.tsx index c1cb49fe78..4e987fd5eb 100644 --- a/packages/richtext-slate/src/field/providers/ElementProvider.tsx +++ b/packages/richtext-slate/src/field/providers/ElementProvider.tsx @@ -33,17 +33,17 @@ export const ElementProvider: React.FC< const { childNodes, children, ...rest } = props return ( - {children} - + ) } export const useElement = (): ElementContextType => { - return React.useContext(ElementContext) as ElementContextType + return React.use(ElementContext) as ElementContextType } diff --git a/packages/richtext-slate/src/field/providers/LeafButtonProvider.tsx b/packages/richtext-slate/src/field/providers/LeafButtonProvider.tsx index d642769448..655f443a25 100644 --- a/packages/richtext-slate/src/field/providers/LeafButtonProvider.tsx +++ b/packages/richtext-slate/src/field/providers/LeafButtonProvider.tsx @@ -24,17 +24,17 @@ export const LeafButtonProvider: React.FC< const { children, ...rest } = props return ( - {children} - + ) } export const useLeafButton = () => { - const path = React.useContext(LeafButtonContext) + const path = React.use(LeafButtonContext) return path } diff --git a/packages/richtext-slate/src/field/providers/LeafProvider.tsx b/packages/richtext-slate/src/field/providers/LeafProvider.tsx index 493e1fe73c..142a25e5ba 100644 --- a/packages/richtext-slate/src/field/providers/LeafProvider.tsx +++ b/packages/richtext-slate/src/field/providers/LeafProvider.tsx @@ -32,18 +32,18 @@ export const LeafProvider: React.FC< const { children, result, ...rest } = props return ( - {children} - + ) } export const useLeaf = () => { - const path = React.useContext(LeafContext) + const path = React.use(LeafContext) return path } diff --git a/packages/richtext-slate/src/utilities/SlatePropsProvider.tsx b/packages/richtext-slate/src/utilities/SlatePropsProvider.tsx index d96912d176..9bc688b512 100644 --- a/packages/richtext-slate/src/utilities/SlatePropsProvider.tsx +++ b/packages/richtext-slate/src/utilities/SlatePropsProvider.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, type ReactNode, useContext } from 'react' +import React, { createContext, type ReactNode, use } from 'react' interface SlateProps { schemaPath: string @@ -15,11 +15,11 @@ export function SlatePropsProvider({ children: ReactNode schemaPath: string }) { - return {children} + return {children} } export function useSlateProps() { - const context = useContext(SlatePropsContext) + const context = use(SlatePropsContext) if (!context) { throw new Error('useSlateProps must be used within SlatePropsProvider') } diff --git a/packages/ui/src/elements/BulkUpload/FormsManager/index.tsx b/packages/ui/src/elements/BulkUpload/FormsManager/index.tsx index 4bd7fdf52e..d80409cd45 100644 --- a/packages/ui/src/elements/BulkUpload/FormsManager/index.tsx +++ b/packages/ui/src/elements/BulkUpload/FormsManager/index.tsx @@ -514,7 +514,7 @@ export function FormsManagerProvider({ children }: FormsManagerProps) { ]) return ( - )} {children} - + ) } export function useFormsManager() { - return React.useContext(Context) + return React.use(Context) } diff --git a/packages/ui/src/elements/BulkUpload/index.tsx b/packages/ui/src/elements/BulkUpload/index.tsx index 05769807d2..cba2916d59 100644 --- a/packages/ui/src/elements/BulkUpload/index.tsx +++ b/packages/ui/src/elements/BulkUpload/index.tsx @@ -134,7 +134,7 @@ export function BulkUploadProvider({ children }: { readonly children: React.Reac }, []) return ( - - + ) } -export const useBulkUpload = () => React.useContext(Context) +export const useBulkUpload = () => React.use(Context) export function useBulkUploadDrawerSlug() { const depth = useDrawerDepth() diff --git a/packages/ui/src/elements/Collapsible/provider.tsx b/packages/ui/src/elements/Collapsible/provider.tsx index 91eeccfd79..36a91b1c6f 100644 --- a/packages/ui/src/elements/Collapsible/provider.tsx +++ b/packages/ui/src/elements/Collapsible/provider.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' type ContextType = { isCollapsed: boolean @@ -32,7 +32,7 @@ export const CollapsibleProvider: React.FC<{ } }, [isCollapsed, isWithinCollapsible, toggle, parentIsCollapsed, isVisible]) - return {children} + return {children} } -export const useCollapsible = (): ContextType => useContext(Context) +export const useCollapsible = (): ContextType => use(Context) diff --git a/packages/ui/src/elements/DocumentDrawer/Provider.tsx b/packages/ui/src/elements/DocumentDrawer/Provider.tsx index 92df413c9f..10e3be6e9e 100644 --- a/packages/ui/src/elements/DocumentDrawer/Provider.tsx +++ b/packages/ui/src/elements/DocumentDrawer/Provider.tsx @@ -1,6 +1,6 @@ import type { ClientCollectionConfig, Data, FormState, TypeWithID } from 'payload' -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' export type DocumentDrawerContextProps = { readonly clearDoc?: () => void @@ -31,15 +31,11 @@ export const DocumentDrawerContextProvider: React.FC< children: React.ReactNode } & DocumentDrawerContextProps > = ({ children, ...rest }) => { - return ( - - {children} - - ) + return {children} } export const useDocumentDrawerContext = (): DocumentDrawerContextType => { - const context = useContext(DocumentDrawerCallbacksContext) + const context = use(DocumentDrawerCallbacksContext) if (!context) { throw new Error('useDocumentDrawerContext must be used within a DocumentDrawerProvider') diff --git a/packages/ui/src/elements/Drawer/index.tsx b/packages/ui/src/elements/Drawer/index.tsx index c9ea6fd89b..e340960edb 100644 --- a/packages/ui/src/elements/Drawer/index.tsx +++ b/packages/ui/src/elements/Drawer/index.tsx @@ -1,6 +1,6 @@ 'use client' import { Modal, useModal } from '@faceless-ui/modal' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, use, useCallback, useEffect, useState } from 'react' import type { Props, TogglerProps } from './types.js' @@ -140,7 +140,7 @@ export const DrawerDepthProvider: React.FC<{ children: React.ReactNode }> = ({ c const parentDepth = useDrawerDepth() const depth = parentDepth + 1 - return {children} + return {children} } -export const useDrawerDepth = (): number => useContext(DrawerDepthContext) +export const useDrawerDepth = (): number => use(DrawerDepthContext) diff --git a/packages/ui/src/elements/EditMany/DrawerContent.tsx b/packages/ui/src/elements/EditMany/DrawerContent.tsx index 9c936c7e18..b5ab53a703 100644 --- a/packages/ui/src/elements/EditMany/DrawerContent.tsx +++ b/packages/ui/src/elements/EditMany/DrawerContent.tsx @@ -266,7 +266,7 @@ export const EditManyDrawerContent: React.FC< unpublishedVersionCount={0} versionCount={0} > - + @@ -332,7 +332,7 @@ export const EditManyDrawerContent: React.FC< - + ) } diff --git a/packages/ui/src/elements/ListDrawer/Provider.tsx b/packages/ui/src/elements/ListDrawer/Provider.tsx index c66f009680..8aeb4ed7ae 100644 --- a/packages/ui/src/elements/ListDrawer/Provider.tsx +++ b/packages/ui/src/elements/ListDrawer/Provider.tsx @@ -1,6 +1,6 @@ import type { CollectionSlug, Data, ListQuery } from 'payload' -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' import type { useSelection } from '../../providers/Selection/index.js' import type { UseDocumentDrawer } from '../DocumentDrawer/types.js' @@ -40,14 +40,14 @@ export const ListDrawerContextProvider: React.FC< } & ListDrawerContextProps > = ({ children, ...rest }) => { return ( - + {children} - + ) } export const useListDrawerContext = (): ListDrawerContextType => { - const context = useContext(ListDrawerContext) + const context = use(ListDrawerContext) if (!context) { throw new Error('useListDrawerContext must be used within a ListDrawerContextProvider') diff --git a/packages/ui/src/elements/LoadingOverlay/index.tsx b/packages/ui/src/elements/LoadingOverlay/index.tsx index 3d8390d8cf..978bfe4bc5 100644 --- a/packages/ui/src/elements/LoadingOverlay/index.tsx +++ b/packages/ui/src/elements/LoadingOverlay/index.tsx @@ -54,7 +54,7 @@ export const LoadingOverlayProvider: React.FC<{ children?: React.ReactNode }> = ) return ( - = /> )} {children} - + ) } export const useLoadingOverlay = (): LoadingOverlayContext => { - const contextHook = React.useContext(Context) + const contextHook = React.use(Context) if (contextHook === undefined) { throw new Error('useLoadingOverlay must be used within a LoadingOverlayProvider') } diff --git a/packages/ui/src/elements/Nav/context.tsx b/packages/ui/src/elements/Nav/context.tsx index a778c5cd8d..61430ff422 100644 --- a/packages/ui/src/elements/Nav/context.tsx +++ b/packages/ui/src/elements/Nav/context.tsx @@ -21,7 +21,7 @@ export const NavContext = React.createContext({ shouldAnimate: false, }) -export const useNav = () => React.useContext(NavContext) +export const useNav = () => React.use(NavContext) const getNavPreference = async (getPreference): Promise => { const navPrefs = await getPreference('nav') @@ -111,8 +111,8 @@ export const NavProvider: React.FC<{ }, []) return ( - + {children} - + ) } diff --git a/packages/ui/src/elements/StepNav/context.tsx b/packages/ui/src/elements/StepNav/context.tsx index 5708e3475a..58f7386829 100644 --- a/packages/ui/src/elements/StepNav/context.tsx +++ b/packages/ui/src/elements/StepNav/context.tsx @@ -1,9 +1,9 @@ 'use client' -import React, { createContext, useContext, useState } from 'react' +import React, { createContext, use, useState } from 'react' import type { ContextType } from './types.js' -export const useStepNav = (): ContextType => useContext(Context) +export const useStepNav = (): ContextType => use(Context) export const Context = createContext({} as ContextType) @@ -11,13 +11,13 @@ export const StepNavProvider: React.FC<{ children?: React.ReactNode }> = ({ chil const [stepNav, setStepNav] = useState([]) return ( - {children} - + ) } diff --git a/packages/ui/src/elements/Table/RelationshipProvider/index.tsx b/packages/ui/src/elements/Table/RelationshipProvider/index.tsx index e1a9bea22f..45d941ff56 100644 --- a/packages/ui/src/elements/Table/RelationshipProvider/index.tsx +++ b/packages/ui/src/elements/Table/RelationshipProvider/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { TypeWithID } from 'payload' -import React, { createContext, useCallback, useContext, useEffect, useReducer, useRef } from 'react' +import React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react' import { useDebounce } from '../../../hooks/useDebounce.js' import { useConfig } from '../../../providers/Config/index.js' @@ -115,7 +115,7 @@ export const RelationshipProvider: React.FC<{ readonly children?: React.ReactNod [], ) - return {children} + return {children} } -export const useListRelationships = (): ListRelationshipContext => useContext(Context) +export const useListRelationships = (): ListRelationshipContext => use(Context) diff --git a/packages/ui/src/elements/TableColumns/RenderDefaultCell/index.tsx b/packages/ui/src/elements/TableColumns/RenderDefaultCell/index.tsx index ee52e1fb7b..4fefe9bb96 100644 --- a/packages/ui/src/elements/TableColumns/RenderDefaultCell/index.tsx +++ b/packages/ui/src/elements/TableColumns/RenderDefaultCell/index.tsx @@ -13,7 +13,7 @@ const baseClass = 'default-cell' const CellPropsContext = React.createContext(null) export const useCellProps = (): DefaultCellComponentProps | null => - React.useContext(CellPropsContext) + React.use(CellPropsContext) export const RenderDefaultCell: React.FC<{ clientProps: DefaultCellComponentProps @@ -44,8 +44,8 @@ export const RenderDefaultCell: React.FC<{ } return ( - + {isLinkedColumn && LinkedCellOverride ? LinkedCellOverride : } - + ) } diff --git a/packages/ui/src/elements/TableColumns/context.ts b/packages/ui/src/elements/TableColumns/context.ts index 183f071041..7473931bee 100644 --- a/packages/ui/src/elements/TableColumns/context.ts +++ b/packages/ui/src/elements/TableColumns/context.ts @@ -1,7 +1,7 @@ -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' import type { ITableColumns } from './types.js' export const TableColumnContext = createContext({} as ITableColumns) -export const useTableColumns = (): ITableColumns => useContext(TableColumnContext) +export const useTableColumns = (): ITableColumns => use(TableColumnContext) diff --git a/packages/ui/src/elements/TableColumns/index.tsx b/packages/ui/src/elements/TableColumns/index.tsx index 0616985fbf..52c9cec4ea 100644 --- a/packages/ui/src/elements/TableColumns/index.tsx +++ b/packages/ui/src/elements/TableColumns/index.tsx @@ -90,7 +90,7 @@ export const TableColumnsProvider: React.FC = ({ }, [defaultColumns, setActiveColumns]) return ( - = ({ }} > {children} - + ) } diff --git a/packages/ui/src/fields/Group/provider.tsx b/packages/ui/src/fields/Group/provider.tsx index fa13d20387..54071e7541 100644 --- a/packages/ui/src/fields/Group/provider.tsx +++ b/packages/ui/src/fields/Group/provider.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export const GroupContext = createContext(false) @@ -7,7 +7,7 @@ export const GroupProvider: React.FC<{ children?: React.ReactNode; withinGroup?: children, withinGroup = true, }) => { - return {children} + return {children} } -export const useGroup = (): boolean => useContext(GroupContext) +export const useGroup = (): boolean => use(GroupContext) diff --git a/packages/ui/src/fields/Row/provider.tsx b/packages/ui/src/fields/Row/provider.tsx index b2c718fce6..7743d3fcb3 100644 --- a/packages/ui/src/fields/Row/provider.tsx +++ b/packages/ui/src/fields/Row/provider.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export const Context = createContext(false) @@ -7,7 +7,7 @@ export const RowProvider: React.FC<{ children?: React.ReactNode; withinRow?: boo children, withinRow = true, }) => { - return {children} + return {children} } -export const useRow = (): boolean => useContext(Context) +export const useRow = (): boolean => use(Context) diff --git a/packages/ui/src/fields/Tabs/provider.tsx b/packages/ui/src/fields/Tabs/provider.tsx index eed7a70efe..43967d9cea 100644 --- a/packages/ui/src/fields/Tabs/provider.tsx +++ b/packages/ui/src/fields/Tabs/provider.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' const Context = createContext(false) @@ -7,7 +7,7 @@ export const TabsProvider: React.FC<{ children?: React.ReactNode; withinTab?: bo children, withinTab = true, }) => { - return {children} + return {children} } -export const useTabs = (): boolean => useContext(Context) +export const useTabs = (): boolean => use(Context) diff --git a/packages/ui/src/forms/Form/context.ts b/packages/ui/src/forms/Form/context.ts index 28bba76b21..ecb7abd7e1 100644 --- a/packages/ui/src/forms/Form/context.ts +++ b/packages/ui/src/forms/Form/context.ts @@ -1,7 +1,7 @@ 'use client' import type { RenderedField } from 'payload' -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' import { createContext as createSelectorContext, useContextSelector, @@ -31,23 +31,23 @@ export type RenderedFieldSlots = Map * * @see https://payloadcms.com/docs/admin/react-hooks#useform */ -const useForm = (): Context => useContext(FormContext) +const useForm = (): Context => use(FormContext) /** * Get the state of the document-level form. This is useful if you need to access the document-level Form from within a child Form. * This is the case withing lexical Blocks, as each lexical blocks renders their own Form. */ -const useDocumentForm = (): Context => useContext(DocumentFormContext) +const useDocumentForm = (): Context => use(DocumentFormContext) -const useWatchForm = (): Context => useContext(FormWatchContext) -const useFormSubmitted = (): boolean => useContext(SubmittedContext) -const useFormProcessing = (): boolean => useContext(ProcessingContext) +const useWatchForm = (): Context => use(FormWatchContext) +const useFormSubmitted = (): boolean => use(SubmittedContext) +const useFormProcessing = (): boolean => use(ProcessingContext) /** * If the form has started processing in the background (e.g. * if autosave is running), this will be true. */ -const useFormBackgroundProcessing = (): boolean => useContext(BackgroundProcessingContext) -const useFormModified = (): boolean => useContext(ModifiedContext) -const useFormInitializing = (): boolean => useContext(InitializingContext) +const useFormBackgroundProcessing = (): boolean => use(BackgroundProcessingContext) +const useFormModified = (): boolean => use(ModifiedContext) +const useFormInitializing = (): boolean => use(InitializingContext) /** * Get and set the value of a form field based on a selector diff --git a/packages/ui/src/forms/Form/index.tsx b/packages/ui/src/forms/Form/index.tsx index 0aa670042e..f14ae390e4 100644 --- a/packages/ui/src/forms/Form/index.tsx +++ b/packages/ui/src/forms/Form/index.tsx @@ -771,7 +771,7 @@ export const Form: React.FC = (props) => { ) const DocumentFormContextComponent: React.FC = isDocumentForm - ? DocumentFormContext.Provider + ? DocumentFormContext : React.Fragment const documentFormContextProps = isDocumentForm @@ -792,28 +792,29 @@ export const Form: React.FC = (props) => { ref={formRef} > - - + - - - - - + + + + + + {/* eslint-disable-next-line @eslint-react/no-context-provider */} {children} - - - - - - - + + + + + + + ) diff --git a/packages/ui/src/forms/RowLabel/Context/index.tsx b/packages/ui/src/forms/RowLabel/Context/index.tsx index 72e9cbd27d..1a817a68b0 100644 --- a/packages/ui/src/forms/RowLabel/Context/index.tsx +++ b/packages/ui/src/forms/RowLabel/Context/index.tsx @@ -28,9 +28,9 @@ export const RowLabelProvider: React.FC> = ({ children, path, row const data = arrayData || collapsibleData - return {children} + return {children} } export const useRowLabel = () => { - return React.useContext(RowLabel) as RowLabelType + return React.use(RowLabel) as RowLabelType } diff --git a/packages/ui/src/providers/Actions/index.tsx b/packages/ui/src/providers/Actions/index.tsx index ccdc38086a..122b37e8f4 100644 --- a/packages/ui/src/providers/Actions/index.tsx +++ b/packages/ui/src/providers/Actions/index.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, useContext, useState } from 'react' +import React, { createContext, use, useState } from 'react' type ActionsContextType = { Actions: { @@ -14,7 +14,7 @@ const ActionsContext = createContext({ setViewActions: () => {}, }) -export const useActions = () => useContext(ActionsContext) +export const useActions = () => use(ActionsContext) export const ActionsProvider: React.FC<{ readonly Actions?: { @@ -25,7 +25,7 @@ export const ActionsProvider: React.FC<{ const [viewActions, setViewActions] = useState(Actions) return ( - {children} - + ) } diff --git a/packages/ui/src/providers/Auth/index.tsx b/packages/ui/src/providers/Auth/index.tsx index ba35bc388b..ac71935c75 100644 --- a/packages/ui/src/providers/Auth/index.tsx +++ b/packages/ui/src/providers/Auth/index.tsx @@ -5,7 +5,7 @@ import { useModal } from '@faceless-ui/modal' import { usePathname, useRouter } from 'next/navigation.js' import { formatAdminURL } from 'payload/shared' import * as qs from 'qs-esm' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, use, useCallback, useEffect, useState } from 'react' import { toast } from 'sonner' import { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js' @@ -307,7 +307,7 @@ export function AuthProvider({ }, [tokenExpiration, openModal, i18n, setNewUser, user, redirectToInactivityRoute]) return ( - {children} - + ) } -export const useAuth = (): AuthContext => useContext(Context) as AuthContext +export const useAuth = (): AuthContext => use(Context) as AuthContext diff --git a/packages/ui/src/providers/ClientFunction/index.tsx b/packages/ui/src/providers/ClientFunction/index.tsx index aabdf64056..9c52b35a94 100644 --- a/packages/ui/src/providers/ClientFunction/index.tsx +++ b/packages/ui/src/providers/ClientFunction/index.tsx @@ -35,21 +35,19 @@ export const ClientFunctionProvider: React.FC<{ children: React.ReactNode }> = ( }, []) return ( - - - {children} - - + {children} + ) } export const useAddClientFunction = (key: string, func: any) => { - const { addClientFunction, removeClientFunction } = React.useContext(ModifyClientFunctionContext) + const { addClientFunction, removeClientFunction } = React.use(ModifyClientFunctionContext) React.useEffect(() => { addClientFunction({ @@ -67,5 +65,5 @@ export const useAddClientFunction = (key: string, func: any) => { } export const useClientFunctions = () => { - return React.useContext(ClientFunctionsContext) + return React.use(ClientFunctionsContext) } diff --git a/packages/ui/src/providers/Config/index.tsx b/packages/ui/src/providers/Config/index.tsx index 1cc93820c3..23f375baa2 100644 --- a/packages/ui/src/providers/Config/index.tsx +++ b/packages/ui/src/providers/Config/index.tsx @@ -9,7 +9,7 @@ import type { UnsanitizedClientConfig, } from 'payload' -import React, { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react' +import React, { createContext, use, useCallback, useEffect, useMemo, useState } from 'react' type GetEntityConfigFn = { // Overload #1: collectionSlug only @@ -99,10 +99,8 @@ export const ConfigProvider: React.FC<{ ) return ( - - {children} - + {children} ) } -export const useConfig = (): ClientConfigContext => useContext(RootConfigContext) +export const useConfig = (): ClientConfigContext => use(RootConfigContext) diff --git a/packages/ui/src/providers/DocumentEvents/index.tsx b/packages/ui/src/providers/DocumentEvents/index.tsx index e472726b98..6493f74031 100644 --- a/packages/ui/src/providers/DocumentEvents/index.tsx +++ b/packages/ui/src/providers/DocumentEvents/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { DocumentEvent } from 'payload' -import React, { createContext, useContext, useState } from 'react' +import React, { createContext, use, useState } from 'react' const Context = createContext({ mostRecentUpdate: null, @@ -11,7 +11,7 @@ const Context = createContext({ export const DocumentEventsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { const [mostRecentUpdate, reportUpdate] = useState(null) - return {children} + return {children} } -export const useDocumentEvents = () => useContext(Context) +export const useDocumentEvents = () => use(Context) diff --git a/packages/ui/src/providers/DocumentInfo/index.tsx b/packages/ui/src/providers/DocumentInfo/index.tsx index 7a3fd18292..f92a43623c 100644 --- a/packages/ui/src/providers/DocumentInfo/index.tsx +++ b/packages/ui/src/providers/DocumentInfo/index.tsx @@ -4,8 +4,8 @@ import type { ClientUser, DocumentPreferences, SanitizedDocumentPermissions } fr import * as qs from 'qs-esm' import React, { createContext, + use, useCallback, - useContext, useEffect, useMemo, useRef, @@ -28,7 +28,7 @@ const Context = createContext({} as DocumentInfoContext) export type * from './types.js' -export const useDocumentInfo = (): DocumentInfoContext => useContext(Context) +export const useDocumentInfo = (): DocumentInfoContext => use(Context) const DocumentInfo: React.FC< { @@ -360,7 +360,7 @@ const DocumentInfo: React.FC< versionCount, } - return {children} + return {children} } export const DocumentInfoProvider: React.FC< diff --git a/packages/ui/src/providers/EditDepth/index.tsx b/packages/ui/src/providers/EditDepth/index.tsx index cc6fe228a0..3e52490f97 100644 --- a/packages/ui/src/providers/EditDepth/index.tsx +++ b/packages/ui/src/providers/EditDepth/index.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export const EditDepthContext = createContext(0) @@ -7,7 +7,7 @@ export const EditDepthProvider: React.FC<{ children: React.ReactNode }> = ({ chi const parentDepth = useEditDepth() const depth = parentDepth + 1 - return {children} + return {children} } -export const useEditDepth = (): number => useContext(EditDepthContext) +export const useEditDepth = (): number => use(EditDepthContext) diff --git a/packages/ui/src/providers/EntityVisibility/index.tsx b/packages/ui/src/providers/EntityVisibility/index.tsx index e32525c0e8..accaac5c43 100644 --- a/packages/ui/src/providers/EntityVisibility/index.tsx +++ b/packages/ui/src/providers/EntityVisibility/index.tsx @@ -1,7 +1,7 @@ 'use client' import type { SanitizedCollectionConfig, SanitizedGlobalConfig, VisibleEntities } from 'payload' -import React, { createContext, useCallback, useContext } from 'react' +import React, { createContext, use, useCallback } from 'react' export type VisibleEntitiesContextType = { isEntityVisible: ({ @@ -42,11 +42,11 @@ export const EntityVisibilityProvider: React.FC<{ ) return ( - + {children} - + ) } export const useEntityVisibility = (): VisibleEntitiesContextType => - useContext(EntityVisibilityContext) + use(EntityVisibilityContext) diff --git a/packages/ui/src/providers/ListQuery/context.ts b/packages/ui/src/providers/ListQuery/context.ts index d45c88849b..99c732889d 100644 --- a/packages/ui/src/providers/ListQuery/context.ts +++ b/packages/ui/src/providers/ListQuery/context.ts @@ -1,7 +1,7 @@ -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' import type { IListQueryContext } from './types.js' export const ListQueryContext = createContext({} as IListQueryContext) -export const useListQuery = (): IListQueryContext => useContext(ListQueryContext) +export const useListQuery = (): IListQueryContext => use(ListQueryContext) diff --git a/packages/ui/src/providers/ListQuery/index.tsx b/packages/ui/src/providers/ListQuery/index.tsx index c0435a012d..93d9ddf0eb 100644 --- a/packages/ui/src/providers/ListQuery/index.tsx +++ b/packages/ui/src/providers/ListQuery/index.tsx @@ -178,7 +178,7 @@ export const ListQueryProvider: React.FC = ({ }, [defaultSort, defaultLimit, modifySearchParams, columns]) return ( - = ({ }} > {children} - + ) } diff --git a/packages/ui/src/providers/Locale/index.tsx b/packages/ui/src/providers/Locale/index.tsx index 0aaa2884e7..ea22a5aedf 100644 --- a/packages/ui/src/providers/Locale/index.tsx +++ b/packages/ui/src/providers/Locale/index.tsx @@ -3,7 +3,7 @@ import type { Locale } from 'payload' import { useSearchParams } from 'next/navigation.js' -import React, { createContext, useContext, useEffect, useRef, useState } from 'react' +import React, { createContext, use, useEffect, useRef, useState } from 'react' import { findLocaleFromCode } from '../../utilities/findLocaleFromCode.js' import { useAuth } from '../Auth/index.js' @@ -114,18 +114,18 @@ export const LocaleProvider: React.FC<{ children?: React.ReactNode; locale?: Loc }, [defaultLocale, getPreference, localization, fetchURL, localeFromParams, user?.id]) return ( - - + + {children} - - + + ) } -export const useLocaleLoading = () => useContext(LocaleLoadingContext) +export const useLocaleLoading = () => use(LocaleLoadingContext) /** * TODO: V4 * The return type of the `useLocale` hook will change in v4. It will return `null | Locale` instead of `false | {} | Locale`. */ -export const useLocale = (): Locale => useContext(LocaleContext) +export const useLocale = (): Locale => use(LocaleContext) diff --git a/packages/ui/src/providers/Operation/index.tsx b/packages/ui/src/providers/Operation/index.tsx index 3b94c47b21..e748fa0f7f 100644 --- a/packages/ui/src/providers/Operation/index.tsx +++ b/packages/ui/src/providers/Operation/index.tsx @@ -1,13 +1,13 @@ 'use client' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export const OperationContext = createContext('' as Operation) export const OperationProvider: React.FC<{ children: React.ReactNode; operation: Operation }> = ({ children, operation, -}) => {children} +}) => {children} export type Operation = 'create' | 'update' -export const useOperation = (): Operation | undefined => useContext(OperationContext) +export const useOperation = (): Operation | undefined => use(OperationContext) diff --git a/packages/ui/src/providers/Params/index.tsx b/packages/ui/src/providers/Params/index.tsx index bfbcb74644..15d9a2bc51 100644 --- a/packages/ui/src/providers/Params/index.tsx +++ b/packages/ui/src/providers/Params/index.tsx @@ -1,7 +1,7 @@ 'use client' import { useParams as useNextParams } from 'next/navigation.js' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export type Params = ReturnType interface IParamsContext extends Params {} @@ -18,7 +18,7 @@ const Context = createContext({} as IParamsContext) */ export const ParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => { const params = useNextParams() - return {children} + return {children} } /** @@ -29,4 +29,4 @@ export const ParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ child * import { useParams } from 'next/navigation' * ``` */ -export const useParams = (): IParamsContext => useContext(Context) +export const useParams = (): IParamsContext => use(Context) diff --git a/packages/ui/src/providers/Preferences/index.tsx b/packages/ui/src/providers/Preferences/index.tsx index 1ca1b12ec5..f0fe18960c 100644 --- a/packages/ui/src/providers/Preferences/index.tsx +++ b/packages/ui/src/providers/Preferences/index.tsx @@ -1,6 +1,6 @@ 'use client' import { dequal } from 'dequal/lite' // lite: no need for Map and Set support -import React, { createContext, useCallback, useContext, useEffect, useRef } from 'react' +import React, { createContext, use, useCallback, useEffect, useRef } from 'react' import { useTranslation } from '../../providers/Translation/index.js' import { requests } from '../../utilities/api.js' @@ -149,7 +149,7 @@ export const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ contextRef.current.getPreference = getPreference contextRef.current.setPreference = setPreference - return {children} + return {children} } -export const usePreferences = (): PreferencesContext => useContext(Context) +export const usePreferences = (): PreferencesContext => use(Context) diff --git a/packages/ui/src/providers/RouteCache/index.tsx b/packages/ui/src/providers/RouteCache/index.tsx index 77682fbcbc..ffb99c402e 100644 --- a/packages/ui/src/providers/RouteCache/index.tsx +++ b/packages/ui/src/providers/RouteCache/index.tsx @@ -1,7 +1,7 @@ 'use client' import { usePathname, useRouter } from 'next/navigation.js' -import React, { createContext, useCallback, useContext, useEffect } from 'react' +import React, { createContext, use, useCallback, useEffect } from 'react' export type RouteCacheContext = { clearRouteCache: () => void @@ -23,7 +23,7 @@ export const RouteCache: React.FC<{ children: React.ReactNode }> = ({ children } clearRouteCache() }, [pathname, clearRouteCache]) - return {children} + return {children} } -export const useRouteCache = () => useContext(Context) +export const useRouteCache = () => use(Context) diff --git a/packages/ui/src/providers/RouteTransition/index.tsx b/packages/ui/src/providers/RouteTransition/index.tsx index 4e5a193815..d454aebd2c 100644 --- a/packages/ui/src/providers/RouteTransition/index.tsx +++ b/packages/ui/src/providers/RouteTransition/index.tsx @@ -74,11 +74,9 @@ export const RouteTransitionProvider: React.FC = ({ childr ) return ( - + {children} - + ) } @@ -121,4 +119,4 @@ const RouteTransitionContext = React.createContext( * // ... * } */ -export const useRouteTransition = () => React.useContext(RouteTransitionContext) +export const useRouteTransition = () => React.use(RouteTransitionContext) diff --git a/packages/ui/src/providers/SearchParams/index.tsx b/packages/ui/src/providers/SearchParams/index.tsx index ed51f77128..cb66385ea8 100644 --- a/packages/ui/src/providers/SearchParams/index.tsx +++ b/packages/ui/src/providers/SearchParams/index.tsx @@ -2,7 +2,7 @@ import { useSearchParams as useNextSearchParams } from 'next/navigation.js' import * as qs from 'qs-esm' -import React, { createContext, useContext } from 'react' +import React, { createContext, use } from 'react' export type SearchParamsContext = { searchParams: qs.ParsedQs @@ -50,7 +50,7 @@ export const SearchParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ [searchParams], ) - return {children} + return {children} } /** @@ -66,4 +66,4 @@ export const SearchParamsProvider: React.FC<{ children?: React.ReactNode }> = ({ * const parsedSearchParams = parseSearchParams(searchParams) * ``` */ -export const useSearchParams = (): SearchParamsContext => useContext(Context) +export const useSearchParams = (): SearchParamsContext => use(Context) diff --git a/packages/ui/src/providers/Selection/index.tsx b/packages/ui/src/providers/Selection/index.tsx index 167c9f29c7..d0828c3264 100644 --- a/packages/ui/src/providers/Selection/index.tsx +++ b/packages/ui/src/providers/Selection/index.tsx @@ -3,7 +3,7 @@ import type { ClientUser, Where } from 'payload' import { useSearchParams } from 'next/navigation.js' import * as qs from 'qs-esm' -import React, { createContext, useCallback, useContext, useEffect, useRef, useState } from 'react' +import React, { createContext, use, useCallback, useEffect, useRef, useState } from 'react' import { parseSearchParams } from '../../utilities/parseSearchParams.js' import { useLocale } from '../Locale/index.js' @@ -200,7 +200,7 @@ export const SelectionProvider: React.FC = ({ children, docs = [], totalD totalDocs, } - return {children} + return {children} } -export const useSelection = (): SelectionContext => useContext(Context) +export const useSelection = (): SelectionContext => use(Context) diff --git a/packages/ui/src/providers/ServerFunctions/index.tsx b/packages/ui/src/providers/ServerFunctions/index.tsx index 64573a7e9d..e0061a7e2d 100644 --- a/packages/ui/src/providers/ServerFunctions/index.tsx +++ b/packages/ui/src/providers/ServerFunctions/index.tsx @@ -77,7 +77,7 @@ export const ServerFunctionsContext = createContext { - const context = React.useContext(ServerFunctionsContext) + const context = React.use(ServerFunctionsContext) if (context === undefined) { throw new Error('useServerFunctions must be used within a ServerFunctionsProvider') } @@ -218,7 +218,7 @@ export const ServerFunctionsProvider: React.FC<{ ) return ( - {children} - + ) } diff --git a/packages/ui/src/providers/Theme/index.tsx b/packages/ui/src/providers/Theme/index.tsx index 43f92a2bd0..655d51019f 100644 --- a/packages/ui/src/providers/Theme/index.tsx +++ b/packages/ui/src/providers/Theme/index.tsx @@ -1,5 +1,5 @@ 'use client' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, use, useCallback, useEffect, useState } from 'react' import { useConfig } from '../Config/index.js' @@ -100,7 +100,7 @@ export const ThemeProvider: React.FC<{ [cookieKey], ) - return {children} + return {children} } -export const useTheme = (): ThemeContext => useContext(Context) +export const useTheme = (): ThemeContext => use(Context) diff --git a/packages/ui/src/providers/Translation/index.tsx b/packages/ui/src/providers/Translation/index.tsx index f165392f37..9e932f21c8 100644 --- a/packages/ui/src/providers/Translation/index.tsx +++ b/packages/ui/src/providers/Translation/index.tsx @@ -14,7 +14,7 @@ import type { LanguageOptions } from 'payload' import { importDateFNSLocale, t } from '@payloadcms/translations' import { enUS } from 'date-fns/locale/en-US' import { useRouter } from 'next/navigation.js' -import React, { createContext, useContext, useEffect, useState } from 'react' +import React, { createContext, use, useEffect, useState } from 'react' type ContextType< TAdditionalTranslations = {}, @@ -98,7 +98,7 @@ export const TranslationProvider: React.FC = ({ }, [dateFNSKey]) return ( - = ({ }} > {children} - + ) } export const useTranslation = < TAdditionalTranslations = {}, TAdditionalClientTranslationKeys extends string = never, ->() => useContext>(Context) +>() => use>(Context) diff --git a/packages/ui/src/providers/UploadEdits/index.tsx b/packages/ui/src/providers/UploadEdits/index.tsx index 2fb8235440..3f45a0dc37 100644 --- a/packages/ui/src/providers/UploadEdits/index.tsx +++ b/packages/ui/src/providers/UploadEdits/index.tsx @@ -29,11 +29,7 @@ export const UploadEditsProvider = ({ children }) => { })) } - return ( - - {children} - - ) + return {children} } -export const useUploadEdits = (): UploadEditsContext => React.useContext(Context) +export const useUploadEdits = (): UploadEditsContext => React.use(Context) diff --git a/packages/ui/src/providers/UploadHandlers/index.tsx b/packages/ui/src/providers/UploadHandlers/index.tsx index b3ac8009d8..ec754a27f2 100644 --- a/packages/ui/src/providers/UploadHandlers/index.tsx +++ b/packages/ui/src/providers/UploadHandlers/index.tsx @@ -38,13 +38,11 @@ export const UploadHandlersProvider = ({ children }) => { }) } - return ( - {children} - ) + return {children} } export const useUploadHandlers = (): UploadHandlersContext => { - const context = React.useContext(Context) + const context = React.use(Context) if (context === null) { throw new Error('useUploadHandlers must be used within UploadHandlersProvider') diff --git a/templates/website/src/providers/HeaderTheme/index.tsx b/templates/website/src/providers/HeaderTheme/index.tsx index 76666f1017..1d0255787c 100644 --- a/templates/website/src/providers/HeaderTheme/index.tsx +++ b/templates/website/src/providers/HeaderTheme/index.tsx @@ -2,7 +2,7 @@ import type { Theme } from '@/providers/Theme/types' -import React, { createContext, useCallback, useContext, useState } from 'react' +import React, { createContext, useCallback, use, useState } from 'react' import canUseDOM from '@/utilities/canUseDOM' @@ -27,11 +27,7 @@ export const HeaderThemeProvider = ({ children }: { children: React.ReactNode }) setThemeState(themeToSet) }, []) - return ( - - {children} - - ) + return {children} } -export const useHeaderTheme = (): ContextType => useContext(HeaderThemeContext) +export const useHeaderTheme = (): ContextType => use(HeaderThemeContext) diff --git a/templates/website/src/providers/Theme/index.tsx b/templates/website/src/providers/Theme/index.tsx index 882d8318d4..60dcedca40 100644 --- a/templates/website/src/providers/Theme/index.tsx +++ b/templates/website/src/providers/Theme/index.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, useCallback, use, useEffect, useState } from 'react' import type { Theme, ThemeContextType } from './types' @@ -51,7 +51,7 @@ export const ThemeProvider = ({ children }: { children: React.ReactNode }) => { setThemeState(themeToSet) }, []) - return {children} + return {children} } -export const useTheme = (): ThemeContextType => useContext(ThemeContext) +export const useTheme = (): ThemeContextType => use(ThemeContext) diff --git a/templates/with-vercel-website/src/providers/HeaderTheme/index.tsx b/templates/with-vercel-website/src/providers/HeaderTheme/index.tsx index 76666f1017..1d0255787c 100644 --- a/templates/with-vercel-website/src/providers/HeaderTheme/index.tsx +++ b/templates/with-vercel-website/src/providers/HeaderTheme/index.tsx @@ -2,7 +2,7 @@ import type { Theme } from '@/providers/Theme/types' -import React, { createContext, useCallback, useContext, useState } from 'react' +import React, { createContext, useCallback, use, useState } from 'react' import canUseDOM from '@/utilities/canUseDOM' @@ -27,11 +27,7 @@ export const HeaderThemeProvider = ({ children }: { children: React.ReactNode }) setThemeState(themeToSet) }, []) - return ( - - {children} - - ) + return {children} } -export const useHeaderTheme = (): ContextType => useContext(HeaderThemeContext) +export const useHeaderTheme = (): ContextType => use(HeaderThemeContext) diff --git a/templates/with-vercel-website/src/providers/Theme/index.tsx b/templates/with-vercel-website/src/providers/Theme/index.tsx index 882d8318d4..60dcedca40 100644 --- a/templates/with-vercel-website/src/providers/Theme/index.tsx +++ b/templates/with-vercel-website/src/providers/Theme/index.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, useCallback, useContext, useEffect, useState } from 'react' +import React, { createContext, useCallback, use, useEffect, useState } from 'react' import type { Theme, ThemeContextType } from './types' @@ -51,7 +51,7 @@ export const ThemeProvider = ({ children }: { children: React.ReactNode }) => { setThemeState(themeToSet) }, []) - return {children} + return {children} } -export const useTheme = (): ThemeContextType => useContext(ThemeContext) +export const useTheme = (): ThemeContextType => use(ThemeContext) diff --git a/test/admin/components/CustomProvider/index.tsx b/test/admin/components/CustomProvider/index.tsx index 52d2ff0fa4..5c5ecc2b96 100644 --- a/test/admin/components/CustomProvider/index.tsx +++ b/test/admin/components/CustomProvider/index.tsx @@ -1,6 +1,6 @@ 'use client' -import React, { createContext, useContext, useState } from 'react' +import React, { createContext, use, useState } from 'react' type CustomContext = { getCustom @@ -18,13 +18,13 @@ export const CustomProvider: React.FC<{ children: React.ReactNode }> = ({ childr } return ( - + This is a custom provider. {children} - + ) } -export const useCustom = () => useContext(Context) +export const useCustom = () => use(Context)