@payloadcms/next 3.0.0-beta.110 → 3.0.0-beta.112

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/dist/elements/FormHeader/index.d.ts +9 -0
  2. package/dist/elements/FormHeader/index.d.ts.map +1 -0
  3. package/dist/elements/FormHeader/index.js +20 -0
  4. package/dist/elements/FormHeader/index.js.map +1 -0
  5. package/dist/elements/FormHeader/index.scss +6 -0
  6. package/dist/exports/utilities.d.ts +1 -0
  7. package/dist/exports/utilities.d.ts.map +1 -1
  8. package/dist/exports/utilities.js +1 -0
  9. package/dist/exports/utilities.js.map +1 -1
  10. package/dist/layouts/Root/index.js +6 -6
  11. package/dist/layouts/Root/index.js.map +1 -1
  12. package/dist/prod/styles.css +1 -1
  13. package/dist/routes/rest/auth/login.js +2 -2
  14. package/dist/routes/rest/auth/login.js.map +1 -1
  15. package/dist/routes/rest/auth/logout.d.ts.map +1 -1
  16. package/dist/routes/rest/auth/logout.js +3 -2
  17. package/dist/routes/rest/auth/logout.js.map +1 -1
  18. package/dist/routes/rest/auth/refresh.js +2 -2
  19. package/dist/routes/rest/auth/refresh.js.map +1 -1
  20. package/dist/routes/rest/auth/registerFirstUser.js +2 -2
  21. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  22. package/dist/routes/rest/auth/resetPassword.js +2 -2
  23. package/dist/routes/rest/auth/resetPassword.js.map +1 -1
  24. package/dist/routes/rest/index.d.ts +12 -12
  25. package/dist/routes/rest/index.d.ts.map +1 -1
  26. package/dist/routes/rest/index.js +17 -15
  27. package/dist/routes/rest/index.js.map +1 -1
  28. package/dist/scss/app.scss +166 -162
  29. package/dist/scss/colors.scss +256 -254
  30. package/dist/scss/resets.scss +9 -7
  31. package/dist/scss/toastify.scss +42 -40
  32. package/dist/scss/toasts.scss +105 -103
  33. package/dist/scss/type.scss +80 -79
  34. package/dist/utilities/getNextRequestI18n.js +2 -2
  35. package/dist/utilities/getNextRequestI18n.js.map +1 -1
  36. package/dist/utilities/initPage/handleAdminPage.d.ts +11 -11
  37. package/dist/utilities/initPage/handleAdminPage.d.ts.map +1 -1
  38. package/dist/utilities/initPage/handleAdminPage.js +7 -20
  39. package/dist/utilities/initPage/handleAdminPage.js.map +1 -1
  40. package/dist/utilities/initPage/handleAuthRedirect.d.ts +6 -3
  41. package/dist/utilities/initPage/handleAuthRedirect.d.ts.map +1 -1
  42. package/dist/utilities/initPage/handleAuthRedirect.js +23 -36
  43. package/dist/utilities/initPage/handleAuthRedirect.js.map +1 -1
  44. package/dist/utilities/initPage/index.d.ts +1 -1
  45. package/dist/utilities/initPage/index.d.ts.map +1 -1
  46. package/dist/utilities/initPage/index.js +21 -10
  47. package/dist/utilities/initPage/index.js.map +1 -1
  48. package/dist/utilities/initPage/shared.d.ts +2 -2
  49. package/dist/utilities/initPage/shared.d.ts.map +1 -1
  50. package/dist/utilities/initPage/shared.js +18 -13
  51. package/dist/utilities/initPage/shared.js.map +1 -1
  52. package/dist/utilities/initReq.js +1 -1
  53. package/dist/utilities/initReq.js.map +1 -1
  54. package/dist/views/API/index.scss +98 -96
  55. package/dist/views/Account/Settings/index.scss +37 -35
  56. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  57. package/dist/views/CreateFirstUser/index.client.js +1 -1
  58. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  59. package/dist/views/CreateFirstUser/index.scss +13 -11
  60. package/dist/views/Dashboard/Default/index.scss +51 -49
  61. package/dist/views/Edit/Default/Auth/index.scss +56 -54
  62. package/dist/views/Edit/Default/index.js +2 -2
  63. package/dist/views/Edit/Default/index.js.map +1 -1
  64. package/dist/views/Edit/Default/index.scss +15 -13
  65. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  66. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +9 -11
  67. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  68. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  69. package/dist/views/ForgotPassword/index.js +6 -6
  70. package/dist/views/ForgotPassword/index.js.map +1 -1
  71. package/dist/views/List/Default/index.scss +136 -134
  72. package/dist/views/LivePreview/IFrame/index.scss +8 -6
  73. package/dist/views/LivePreview/Preview/index.scss +32 -30
  74. package/dist/views/LivePreview/Toolbar/Controls/index.scss +49 -47
  75. package/dist/views/LivePreview/Toolbar/SizeInput/index.scss +11 -9
  76. package/dist/views/LivePreview/Toolbar/index.scss +33 -31
  77. package/dist/views/LivePreview/ToolbarArea/index.scss +5 -3
  78. package/dist/views/LivePreview/index.client.js +2 -2
  79. package/dist/views/LivePreview/index.client.js.map +1 -1
  80. package/dist/views/LivePreview/index.scss +48 -46
  81. package/dist/views/Login/LoginForm/index.js +1 -1
  82. package/dist/views/Login/LoginForm/index.js.map +1 -1
  83. package/dist/views/Login/LoginForm/index.scss +8 -6
  84. package/dist/views/Login/index.scss +8 -6
  85. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  86. package/dist/views/Logout/LogoutClient.js +77 -55
  87. package/dist/views/Logout/LogoutClient.js.map +1 -1
  88. package/dist/views/Logout/index.scss +17 -15
  89. package/dist/views/NotFound/index.d.ts +5 -5
  90. package/dist/views/NotFound/index.d.ts.map +1 -1
  91. package/dist/views/NotFound/index.js +4 -2
  92. package/dist/views/NotFound/index.js.map +1 -1
  93. package/dist/views/NotFound/index.scss +38 -36
  94. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts +7 -0
  95. package/dist/views/ResetPassword/ResetPasswordForm/index.d.ts.map +1 -0
  96. package/dist/views/ResetPassword/{index.client.js → ResetPasswordForm/index.js} +16 -19
  97. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -0
  98. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  99. package/dist/views/ResetPassword/index.js +17 -10
  100. package/dist/views/ResetPassword/index.js.map +1 -1
  101. package/dist/views/ResetPassword/index.scss +6 -26
  102. package/dist/views/Root/getViewFromConfig.d.ts.map +1 -1
  103. package/dist/views/Root/getViewFromConfig.js +0 -6
  104. package/dist/views/Root/getViewFromConfig.js.map +1 -1
  105. package/dist/views/Root/index.d.ts +5 -5
  106. package/dist/views/Root/index.d.ts.map +1 -1
  107. package/dist/views/Root/index.js +9 -4
  108. package/dist/views/Root/index.js.map +1 -1
  109. package/dist/views/Root/meta.d.ts +5 -5
  110. package/dist/views/Root/meta.d.ts.map +1 -1
  111. package/dist/views/Root/meta.js +2 -1
  112. package/dist/views/Root/meta.js.map +1 -1
  113. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  114. package/dist/views/Unauthorized/index.js +14 -7
  115. package/dist/views/Unauthorized/index.js.map +1 -1
  116. package/dist/views/Unauthorized/index.scss +4 -31
  117. package/dist/views/Verify/index.client.d.ts +7 -0
  118. package/dist/views/Verify/index.client.d.ts.map +1 -0
  119. package/dist/views/Verify/index.client.js +46 -0
  120. package/dist/views/Verify/index.client.js.map +1 -0
  121. package/dist/views/Verify/index.d.ts.map +1 -1
  122. package/dist/views/Verify/index.js +12 -11
  123. package/dist/views/Verify/index.js.map +1 -1
  124. package/dist/views/Verify/index.scss +13 -11
  125. package/dist/views/Version/Default/index.scss +52 -50
  126. package/dist/views/Version/RenderFieldsToDiff/Label/index.scss +5 -3
  127. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +29 -27
  128. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +11 -9
  129. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +12 -10
  130. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +12 -10
  131. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +12 -10
  132. package/dist/views/Version/RenderFieldsToDiff/index.scss +12 -10
  133. package/dist/views/Version/Restore/index.scss +57 -55
  134. package/dist/views/Version/SelectComparison/index.scss +12 -10
  135. package/dist/views/Version/SelectLocales/index.scss +6 -4
  136. package/dist/views/Version/index.d.ts.map +1 -1
  137. package/dist/views/Version/index.js +2 -0
  138. package/dist/views/Version/index.js.map +1 -1
  139. package/dist/views/Versions/getLatestVersion.d.ts +1 -0
  140. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -1
  141. package/dist/views/Versions/getLatestVersion.js +14 -3
  142. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  143. package/dist/views/Versions/index.d.ts.map +1 -1
  144. package/dist/views/Versions/index.js +2 -0
  145. package/dist/views/Versions/index.js.map +1 -1
  146. package/dist/views/Versions/index.scss +78 -76
  147. package/package.json +9 -9
  148. package/dist/views/ResetPassword/index.client.d.ts +0 -7
  149. package/dist/views/ResetPassword/index.client.d.ts.map +0 -1
  150. package/dist/views/ResetPassword/index.client.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","onSave","onSaveFromProps","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","documentLockStateRef","hasShownLockedModal","isLocked","lastUpdateTime","setLastUpdateTime","Date","now","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","api","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","actions","components","views","edit","livePreview","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from '../Edit/Default/SetDocumentTitle/index.js'\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n onSave: onSaveFromProps,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n\n const isLockingEnabled = lockDocumentsProp !== false\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const [lastUpdateTime, setLastUpdateTime] = useState(Date.now())\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - lastUpdateTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setLastUpdateTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId = documentLockStateRef.current?.user?.id\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n collectionSlug,\n globalSlug,\n serverURL,\n apiRoute,\n id,\n isLockingEnabled,\n lastUpdateTime,\n operation,\n schemaPath,\n getDocPreferences,\n setCurrentEditor,\n setDocumentIsLocked,\n user,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (documentLockStateRef.current?.user?.id === user.id) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user.id,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n currentEditor.id !== user.id &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeDocument}\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <SetViewActions\n actions={\n (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions\n }\n />\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","Form","OperationProvider","SetViewActions","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useTranslation","getFormState","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","React","Fragment","useCallback","useEffect","useRef","useState","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","SetDocumentStepNav","SetDocumentTitle","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","apiRoute","collectionConfig","config","fields","globalConfig","schemaPath","serverURL","id","action","AfterDocument","AfterFields","apiURL","BeforeDocument","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","initialData","initialState","isEditing","isInitializing","onSave","onSaveFromProps","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","operation","admin","user","userSlug","routes","adminRoute","router","t","previewWindowType","refreshCookieAsync","reportUpdate","docConfig","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","documentLockStateRef","hasShownLockedModal","isLocked","lastUpdateTime","setLastUpdateTime","Date","now","json","entitySlug","updatedAt","result","toISOString","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","body","returnLockStatus","previousOwnerId","current","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","path","includes","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","versions","drafts","autosave","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","data","permissions","readOnlyForIncomingUser","slug","filter","Boolean","join","forceSidebarWrap","readOnly","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","api","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","children","actions","components","views","edit","livePreview","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n Form,\n OperationProvider,\n SetViewActions,\n useAuth,\n useConfig,\n useDocumentEvents,\n useDocumentInfo,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n getFormState,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { SetDocumentStepNav } from '../Edit/Default/SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from '../Edit/Default/SetDocumentTitle/index.js'\nimport { useLivePreviewContext } from './Context/context.js'\nimport { LivePreviewProvider } from './Context/index.js'\nimport './index.scss'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n}\n\nconst PreviewView: React.FC<Props> = ({\n apiRoute,\n collectionConfig,\n config,\n fields,\n globalConfig,\n schemaPath,\n serverURL,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeDocument,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n onSave: onSaveFromProps,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n\n const isLockingEnabled = lockDocumentsProp !== false\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const [lastUpdateTime, setLastUpdateTime] = useState(Date.now())\n\n const onSave = useCallback(\n (json) => {\n reportUpdate({\n id,\n entitySlug: collectionSlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (typeof onSaveFromProps === 'function') {\n void onSaveFromProps({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n },\n [\n collectionSlug,\n globalSlug,\n id,\n isLockingEnabled,\n onSaveFromProps,\n refreshCookieAsync,\n reportUpdate,\n setDocumentIsLocked,\n user,\n userSlug,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - lastUpdateTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setLastUpdateTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n apiRoute,\n body: {\n id,\n collectionSlug,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n updateLastEdited,\n },\n serverURL,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId = documentLockStateRef.current?.user?.id\n\n if (lockedState) {\n if (!documentLockStateRef.current || lockedState.user.id !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedState.user.id !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user,\n }\n setCurrentEditor(lockedState.user)\n }\n }\n }\n\n return state\n },\n [\n collectionSlug,\n globalSlug,\n serverURL,\n apiRoute,\n id,\n isLockingEnabled,\n lastUpdateTime,\n operation,\n schemaPath,\n getDocPreferences,\n setCurrentEditor,\n setDocumentIsLocked,\n user,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (documentLockStateRef.current?.user?.id === user?.id) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n currentEditor.id !== user.id &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {((collectionConfig &&\n !(collectionConfig.versions?.drafts && collectionConfig.versions?.drafts?.autosave)) ||\n (globalConfig &&\n !(globalConfig.versions?.drafts && globalConfig.versions?.drafts?.autosave))) &&\n !disableLeaveWithoutSaving &&\n !isReadOnlyForIncomingUser && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {BeforeDocument}\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPath={collectionSlug || globalSlug}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<{\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n}> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <SetViewActions\n actions={\n (collectionConfig || globalConfig)?.admin?.components?.views?.edit?.livePreview?.actions\n }\n />\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n schemaPath={schemaPath}\n serverURL={serverURL}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,66 +1,68 @@
1
1
  @import '../../scss/styles.scss';
2
2
 
3
- .live-preview {
4
- width: 100%;
5
- display: flex;
6
- --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.04) 0%, transparent 100%);
3
+ @layer payload-default {
4
+ .live-preview {
5
+ width: 100%;
6
+ display: flex;
7
+ --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.04) 0%, transparent 100%);
7
8
 
8
- [dir='rtl'] & {
9
- flex-direction: row-reverse;
10
- }
9
+ [dir='rtl'] & {
10
+ flex-direction: row-reverse;
11
+ }
11
12
 
12
- &--popup-open {
13
- .live-preview {
14
- &__edit {
15
- padding-right: var(--gutter-h);
13
+ &--popup-open {
14
+ .live-preview {
15
+ &__edit {
16
+ padding-right: var(--gutter-h);
17
+ }
16
18
  }
17
19
  }
18
- }
19
20
 
20
- &__main {
21
- width: 40%;
22
- display: flex;
23
- flex-direction: column;
24
- min-height: 100%;
25
- position: relative;
21
+ &__main {
22
+ width: 40%;
23
+ display: flex;
24
+ flex-direction: column;
25
+ min-height: 100%;
26
+ position: relative;
26
27
 
27
- &--popup-open {
28
- width: 100%;
29
- }
28
+ &--popup-open {
29
+ width: 100%;
30
+ }
30
31
 
31
- &::after {
32
- content: ' ';
33
- position: absolute;
34
- top: 0;
35
- right: 0;
36
- width: calc(var(--base) * 2);
37
- height: 100%;
38
- background: var(--gradient);
39
- pointer-events: none;
40
- z-index: -1;
32
+ &::after {
33
+ content: ' ';
34
+ position: absolute;
35
+ top: 0;
36
+ right: 0;
37
+ width: calc(var(--base) * 2);
38
+ height: 100%;
39
+ background: var(--gradient);
40
+ pointer-events: none;
41
+ z-index: -1;
42
+ }
41
43
  }
42
- }
43
44
 
44
- @include mid-break {
45
- flex-direction: column;
45
+ @include mid-break {
46
+ flex-direction: column;
46
47
 
47
- &__main {
48
- min-height: initial;
49
- width: 100%;
48
+ &__main {
49
+ min-height: initial;
50
+ width: 100%;
50
51
 
51
- &::after {
52
- display: none;
52
+ &::after {
53
+ display: none;
54
+ }
53
55
  }
54
- }
55
56
 
56
- &__form {
57
- display: block;
57
+ &__form {
58
+ display: block;
59
+ }
58
60
  }
59
61
  }
60
- }
61
62
 
62
- html[data-theme='dark'] {
63
- .live-preview {
64
- --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
63
+ html[data-theme='dark'] {
64
+ .live-preview {
65
+ --gradient: linear-gradient(to left, rgba(0, 0, 0, 0.4) 0%, rgba(0, 0, 0, 0) 100%);
66
+ }
65
67
  }
66
68
  }
@@ -102,7 +102,7 @@ export const LoginForm = t0 => {
102
102
  let t9;
103
103
  if ($[20] !== setUser) {
104
104
  t9 = data => {
105
- setUser(data.user);
105
+ setUser(data);
106
106
  };
107
107
  $[20] = setUser;
108
108
  $[21] = t9;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","t4","collections","find","collection","slug","collectionConfig","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","t5","loginType","useState","t","setUser","t6","undefined","t7","t8","redirect","initialState","password","initialValue","valid","value","username","email","t9","data","handleLogin","_jsxs","action","className","disableSuccessStatus","method","onSuccess","waitForAutocomplete","children","_jsx","type","field","name","label","required","href","path","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { ClientUser, FormState } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useAuth, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n const handleLogin = (data: { user: ClientUser }) => {\n setUser(data.user)\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n onSuccess={handleLogin}\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","LinkImport","React","baseClass","Link","default","Form","FormSubmit","PasswordField","useAuth","useConfig","useTranslation","formatAdminURL","LoginField","LoginForm","t0","$","prefillEmail","prefillPassword","prefillUsername","searchParams","config","admin","t1","routes","t2","t3","user","userSlug","forgot","forgotRoute","adminRoute","api","apiRoute","t4","collections","find","collection","slug","collectionConfig","auth","authOptions","loginWithUsername","canLoginWithEmail","allowEmailLogin","canLoginWithUsername","t5","loginType","useState","t","setUser","t6","undefined","t7","t8","redirect","initialState","password","initialValue","valid","value","username","email","t9","data","handleLogin","_jsxs","action","className","disableSuccessStatus","method","onSuccess","waitForAutocomplete","children","_jsx","type","field","name","label","required","href","path","size"],"sources":["../../../../src/views/Login/LoginForm/index.tsx"],"sourcesContent":["'use client'\n\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst baseClass = 'login__form'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nimport type { ClientUser, FormState, MeOperationResult } from 'payload'\n\nimport { Form, FormSubmit, PasswordField, useAuth, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\n\nimport type { LoginFieldProps } from '../LoginField/index.js'\n\nimport { LoginField } from '../LoginField/index.js'\nimport './index.scss'\n\nexport const LoginForm: React.FC<{\n prefillEmail?: string\n prefillPassword?: string\n prefillUsername?: string\n searchParams: { [key: string]: string | string[] | undefined }\n}> = ({ prefillEmail, prefillPassword, prefillUsername, searchParams }) => {\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { forgot: forgotRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const collectionConfig = config.collections?.find((collection) => collection?.slug === userSlug)\n const { auth: authOptions } = collectionConfig\n const loginWithUsername = authOptions.loginWithUsername\n const canLoginWithEmail =\n !authOptions.loginWithUsername || authOptions.loginWithUsername.allowEmailLogin\n const canLoginWithUsername = authOptions.loginWithUsername\n\n const [loginType] = React.useState<LoginFieldProps['type']>(() => {\n if (canLoginWithEmail && canLoginWithUsername) {\n return 'emailOrUsername'\n }\n if (canLoginWithUsername) {\n return 'username'\n }\n return 'email'\n })\n\n const { t } = useTranslation()\n const { setUser } = useAuth()\n\n const initialState: FormState = {\n password: {\n initialValue: prefillPassword ?? undefined,\n valid: true,\n value: prefillPassword ?? undefined,\n },\n }\n\n if (loginWithUsername) {\n initialState.username = {\n initialValue: prefillUsername ?? undefined,\n valid: true,\n value: prefillUsername ?? undefined,\n }\n } else {\n initialState.email = {\n initialValue: prefillEmail ?? undefined,\n valid: true,\n value: prefillEmail ?? undefined,\n }\n }\n\n const handleLogin = (data: MeOperationResult) => {\n setUser(data)\n }\n\n return (\n <Form\n action={`${apiRoute}/${userSlug}/login`}\n className={baseClass}\n disableSuccessStatus\n initialState={initialState}\n method=\"POST\"\n onSuccess={handleLogin}\n redirect={typeof searchParams?.redirect === 'string' ? searchParams.redirect : adminRoute}\n waitForAutocomplete\n >\n <div className={`${baseClass}__inputWrap`}>\n <LoginField type={loginType} />\n <PasswordField\n field={{\n name: 'password',\n label: t('general:password'),\n required: true,\n }}\n />\n </div>\n <Link\n href={formatAdminURL({\n adminRoute,\n path: forgotRoute,\n })}\n >\n {t('authentication:forgotPasswordQuestion')}\n </Link>\n <FormSubmit size=\"large\">{t('authentication:login')}</FormSubmit>\n </Form>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,10 @@
1
- .login__form {
2
- &__inputWrap {
3
- display: flex;
4
- flex-direction: column;
5
- gap: var(--base);
6
- margin-bottom: calc(var(--base) / 4);
1
+ @layer payload-default {
2
+ .login__form {
3
+ &__inputWrap {
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: var(--base);
7
+ margin-bottom: calc(var(--base) / 4);
8
+ }
7
9
  }
8
10
  }
@@ -1,8 +1,10 @@
1
- .login {
2
- &__brand {
3
- display: flex;
4
- justify-content: center;
5
- width: 100%;
6
- margin-bottom: calc(var(--base) * 2);
1
+ @layer payload-default {
2
+ .login {
3
+ &__brand {
4
+ display: flex;
5
+ justify-content: center;
6
+ width: 100%;
7
+ margin-bottom: calc(var(--base) * 2);
8
+ }
7
9
  }
8
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LogoutClient.d.ts","sourceRoot":"","sources":["../../../src/views/Logout/LogoutClient.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAsCA,CAAA"}
1
+ {"version":3,"file":"LogoutClient.d.ts","sourceRoot":"","sources":["../../../src/views/Logout/LogoutClient.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAExC,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAgDA,CAAA"}
@@ -2,96 +2,118 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
- import { Button, useAuth, useTranslation } from '@payloadcms/ui';
5
+ import { Button, LoadingOverlay, toast, useAuth, useTranslation } from '@payloadcms/ui';
6
6
  import { formatAdminURL } from '@payloadcms/ui/shared';
7
7
  import LinkImport from 'next/link.js';
8
- import React, { Fragment, useEffect } from 'react';
8
+ import { useRouter } from 'next/navigation.js';
9
+ import React, { useEffect } from 'react';
9
10
  const baseClass = 'logout';
10
11
  const Link = LinkImport.default || LinkImport;
11
12
  export const LogoutClient = props => {
12
- const $ = _c(15);
13
+ const $ = _c(19);
13
14
  const {
14
15
  adminRoute,
15
16
  inactivity,
16
17
  redirect
17
18
  } = props;
18
- const [isLoggingOut, setIsLoggingOut] = React.useState(undefined);
19
+ const [isLoggedOut, setIsLoggedOut] = React.useState(undefined);
20
+ const logOutSuccessRef = React.useRef(false);
21
+ let t0;
22
+ if ($[0] !== adminRoute || $[1] !== inactivity || $[2] !== redirect) {
23
+ t0 = () => formatAdminURL({
24
+ adminRoute,
25
+ path: `/login${inactivity && redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ""}`
26
+ });
27
+ $[0] = adminRoute;
28
+ $[1] = inactivity;
29
+ $[2] = redirect;
30
+ $[3] = t0;
31
+ } else {
32
+ t0 = $[3];
33
+ }
34
+ const [loginRoute] = React.useState(t0);
19
35
  const {
20
36
  logOut
21
37
  } = useAuth();
22
38
  const {
23
39
  t
24
40
  } = useTranslation();
25
- let t0;
41
+ const router = useRouter();
26
42
  let t1;
27
- if ($[0] !== isLoggingOut || $[1] !== logOut) {
28
- t0 = () => {
29
- if (!isLoggingOut) {
30
- setIsLoggingOut(true);
31
- logOut();
43
+ if ($[4] !== logOut || $[5] !== inactivity || $[6] !== t || $[7] !== router || $[8] !== loginRoute) {
44
+ t1 = async () => {
45
+ const loggedOut = await logOut();
46
+ setIsLoggedOut(loggedOut);
47
+ if (!inactivity && loggedOut && !logOutSuccessRef.current) {
48
+ toast.success(t("authentication:loggedOutSuccessfully"));
49
+ logOutSuccessRef.current = true;
50
+ router.push(loginRoute);
51
+ return;
32
52
  }
33
53
  };
34
- t1 = [isLoggingOut, logOut];
35
- $[0] = isLoggingOut;
36
- $[1] = logOut;
37
- $[2] = t0;
38
- $[3] = t1;
54
+ $[4] = logOut;
55
+ $[5] = inactivity;
56
+ $[6] = t;
57
+ $[7] = router;
58
+ $[8] = loginRoute;
59
+ $[9] = t1;
39
60
  } else {
40
- t0 = $[2];
41
- t1 = $[3];
61
+ t1 = $[9];
42
62
  }
43
- useEffect(t0, t1);
44
- if (isLoggingOut) {
45
- let t2;
46
- if ($[4] !== inactivity || $[5] !== t) {
47
- t2 = inactivity && _jsx("h2", {
48
- children: t("authentication:loggedOutInactivity")
49
- });
50
- $[4] = inactivity;
51
- $[5] = t;
52
- $[6] = t2;
53
- } else {
54
- t2 = $[6];
55
- }
56
- let t3;
57
- if ($[7] !== inactivity || $[8] !== t || $[9] !== redirect || $[10] !== adminRoute || $[11] !== t2) {
58
- t3 = _jsxs("div", {
63
+ const handleLogOut = t1;
64
+ let t2;
65
+ let t3;
66
+ if ($[10] !== isLoggedOut || $[11] !== handleLogOut) {
67
+ t2 = () => {
68
+ if (!isLoggedOut) {
69
+ handleLogOut();
70
+ }
71
+ };
72
+ t3 = [handleLogOut, isLoggedOut];
73
+ $[10] = isLoggedOut;
74
+ $[11] = handleLogOut;
75
+ $[12] = t2;
76
+ $[13] = t3;
77
+ } else {
78
+ t2 = $[12];
79
+ t3 = $[13];
80
+ }
81
+ useEffect(t2, t3);
82
+ if (isLoggedOut && inactivity) {
83
+ let t4;
84
+ if ($[14] !== t || $[15] !== loginRoute) {
85
+ t4 = _jsxs("div", {
59
86
  className: `${baseClass}__wrap`,
60
- children: [t2, !inactivity && _jsx("h2", {
61
- children: t("authentication:loggedOutSuccessfully")
87
+ children: [_jsx("h2", {
88
+ children: t("authentication:loggedOutInactivity")
62
89
  }), _jsx(Button, {
63
90
  buttonStyle: "secondary",
64
91
  el: "link",
65
92
  Link,
66
93
  size: "large",
67
- url: formatAdminURL({
68
- adminRoute,
69
- path: `/login${redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ""}`
70
- }),
94
+ url: loginRoute,
71
95
  children: t("authentication:logBackIn")
72
96
  })]
73
97
  });
74
- $[7] = inactivity;
75
- $[8] = t;
76
- $[9] = redirect;
77
- $[10] = adminRoute;
78
- $[11] = t2;
79
- $[12] = t3;
98
+ $[14] = t;
99
+ $[15] = loginRoute;
100
+ $[16] = t4;
80
101
  } else {
81
- t3 = $[12];
102
+ t4 = $[16];
82
103
  }
83
- return t3;
104
+ return t4;
84
105
  }
85
- let t2;
86
- if ($[13] !== t) {
87
- t2 = _jsx(Fragment, {
88
- children: t("authentication:loggingOut")
106
+ let t4;
107
+ if ($[17] !== t) {
108
+ t4 = _jsx(LoadingOverlay, {
109
+ animationDuration: "0ms",
110
+ loadingText: t("authentication:loggingOut")
89
111
  });
90
- $[13] = t;
91
- $[14] = t2;
112
+ $[17] = t;
113
+ $[18] = t4;
92
114
  } else {
93
- t2 = $[14];
115
+ t4 = $[18];
94
116
  }
95
- return t2;
117
+ return t4;
96
118
  };
97
119
  //# sourceMappingURL=LogoutClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogoutClient.js","names":["c","_c","Button","useAuth","useTranslation","formatAdminURL","LinkImport","React","Fragment","useEffect","baseClass","Link","default","LogoutClient","props","$","adminRoute","inactivity","redirect","isLoggingOut","setIsLoggingOut","useState","undefined","logOut","t","t0","t1","t2","_jsx","children","t3","_jsxs","className","buttonStyle","el","size","url","path","length","encodeURIComponent"],"sources":["../../../src/views/Logout/LogoutClient.tsx"],"sourcesContent":["'use client'\nimport { Button, useAuth, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React, { Fragment, useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'logout'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const LogoutClient: React.FC<{\n adminRoute: string\n inactivity?: boolean\n redirect: string\n}> = (props) => {\n const { adminRoute, inactivity, redirect } = props\n\n const [isLoggingOut, setIsLoggingOut] = React.useState<boolean | undefined>(undefined)\n const { logOut } = useAuth()\n const { t } = useTranslation()\n\n useEffect(() => {\n if (!isLoggingOut) {\n setIsLoggingOut(true)\n void logOut()\n }\n }, [isLoggingOut, logOut])\n\n if (isLoggingOut) {\n return (\n <div className={`${baseClass}__wrap`}>\n {inactivity && <h2>{t('authentication:loggedOutInactivity')}</h2>}\n {!inactivity && <h2>{t('authentication:loggedOutSuccessfully')}</h2>}\n <Button\n buttonStyle=\"secondary\"\n el=\"link\"\n Link={Link}\n size=\"large\"\n url={formatAdminURL({\n adminRoute,\n path: `/login${\n redirect && redirect.length > 0 ? `?redirect=${encodeURIComponent(redirect)}` : ''\n }`,\n })}\n >\n {t('authentication:logBackIn')}\n </Button>\n </div>\n )\n }\n\n return <Fragment>{t('authentication:loggingOut')}</Fragment>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,MAAM,EAAEC,OAAO,EAAEC,cAAc,QAAQ;AAChD,SAASC,cAAc,QAAQ;AAC/B,OAAOC,UAAA,MAAgB;AACvB,OAAOC,KAAA,IAASC,QAAQ,EAAEC,SAAS,QAAQ;AAI3C,MAAMC,SAAA,GAAY;AAElB,MAAMC,IAAA,GAAQL,UAAA,CAAWM,OAAO,IAAIN,UAAA;AAEpC,OAAO,MAAMO,YAAA,GAIRC,KAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EACH;IAAAe,UAAA;IAAAC,UAAA;IAAAC;EAAA,IAA6CJ,KAAA;EAE7C,OAAAK,YAAA,EAAAC,eAAA,IAAwCb,KAAA,CAAAc,QAAA,CAAAC,SAAoC;EAC5E;IAAAC;EAAA,IAAmBpB,OAAA;EACnB;IAAAqB;EAAA,IAAcpB,cAAA;EAAA,IAAAqB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAX,CAAA,QAAAI,YAAA,IAAAJ,CAAA,QAAAQ,MAAA;IAEJE,EAAA,GAAAA,CAAA;MAAA,KACHN,YAAA;QACHC,eAAA,KAAgB;QACXG,MAAA;MAAA;IAAA;IAENG,EAAA,IAACP,YAAA,EAAcI,MAAA;IAAOR,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAQ,MAAA;IAAAR,CAAA,MAAAU,EAAA;IAAAV,CAAA,MAAAW,EAAA;EAAA;IAAAD,EAAA,GAAAV,CAAA;IAAAW,EAAA,GAAAX,CAAA;EAAA;EALzBN,SAAA,CAAUgB,EAKV,EAAGC,EAAsB;EAAA,IAErBP,YAAA;IAAA,IAAAQ,EAAA;IAAA,IAAAZ,CAAA,QAAAE,UAAA,IAAAF,CAAA,QAAAS,CAAA;MAGGG,EAAA,GAAAV,UAAA,IAAcW,IAAA,CAAC;QAAAC,QAAA,EAAIL,CAAA,CAAE;MAAA,C;;;;;;;;;MADxBM,EAAA,GAAAC,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAAtB,SAAA,QAAoB;QAAAmB,QAAA,GACjCF,E,EACA,CAACV,UAAA,IAAcW,IAAA,CAAC;UAAAC,QAAA,EAAIL,CAAA,CAAE;QAAA,C,GACvBI,IAAA,CAAA1B,MAAA;UAAA+B,WAAA,EACc;UAAAC,EAAA,EACT;UAAAvB,IAAA;UAAAwB,IAAA,EAEE;UAAAC,GAAA,EACA/B,cAAA;YAAAW,UAAA;YAAAqB,IAAA,EAEG,SACJnB,QAAA,IAAYA,QAAA,CAAAoB,MAAA,IAAkB,GAAI,aAAaC,kBAAA,CAAmBrB,QAAA,GAAW,GAAG;UAChF,CACJ;UAAAW,QAAA,EAECL,CAAA,CAAE;QAAA,C;;;;;;;;;;;WAfPM,E;;;;IAqBGH,EAAA,GAAAC,IAAA,CAAApB,QAAA;MAAAqB,QAAA,EAAWL,CAAA,CAAE;IAAA,C;;;;;;SAAbG,E;CACT","ignoreList":[]}
1
+ {"version":3,"file":"LogoutClient.js","names":["c","_c","Button","LoadingOverlay","toast","useAuth","useTranslation","formatAdminURL","LinkImport","useRouter","React","useEffect","baseClass","Link","default","LogoutClient","props","$","adminRoute","inactivity","redirect","isLoggedOut","setIsLoggedOut","useState","undefined","logOutSuccessRef","useRef","t0","path","length","encodeURIComponent","loginRoute","logOut","t","router","t1","loggedOut","current","success","push","handleLogOut","t2","t3","t4","_jsxs","className","children","_jsx","buttonStyle","el","size","url","animationDuration","loadingText"],"sources":["../../../src/views/Logout/LogoutClient.tsx"],"sourcesContent":["'use client'\nimport { Button, LoadingOverlay, toast, useAuth, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useEffect } from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'logout'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport const LogoutClient: React.FC<{\n adminRoute: string\n inactivity?: boolean\n redirect: string\n}> = (props) => {\n const { adminRoute, inactivity, redirect } = props\n\n const [isLoggedOut, setIsLoggedOut] = React.useState<boolean | undefined>(undefined)\n const logOutSuccessRef = React.useRef(false)\n const [loginRoute] = React.useState(() =>\n formatAdminURL({\n adminRoute,\n path: `/login${\n inactivity && redirect && redirect.length > 0\n ? `?redirect=${encodeURIComponent(redirect)}`\n : ''\n }`,\n }),\n )\n const { logOut } = useAuth()\n const { t } = useTranslation()\n const router = useRouter()\n\n const handleLogOut = React.useCallback(async () => {\n const loggedOut = await logOut()\n setIsLoggedOut(loggedOut)\n if (!inactivity && loggedOut && !logOutSuccessRef.current) {\n toast.success(t('authentication:loggedOutSuccessfully'))\n logOutSuccessRef.current = true\n router.push(loginRoute)\n return\n }\n }, [inactivity, logOut, loginRoute, router, t])\n\n useEffect(() => {\n if (!isLoggedOut) {\n void handleLogOut()\n }\n }, [handleLogOut, isLoggedOut])\n\n if (isLoggedOut && inactivity) {\n return (\n <div className={`${baseClass}__wrap`}>\n <h2>{t('authentication:loggedOutInactivity')}</h2>\n <Button buttonStyle=\"secondary\" el=\"link\" Link={Link} size=\"large\" url={loginRoute}>\n {t('authentication:logBackIn')}\n </Button>\n </div>\n )\n }\n\n return <LoadingOverlay animationDuration={'0ms'} loadingText={t('authentication:loggingOut')} />\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,23 +1,25 @@
1
1
  @import '../../scss/styles.scss';
2
2
 
3
- .logout {
4
- display: flex;
5
- flex-direction: column;
6
- align-items: center;
7
- flex-wrap: wrap;
8
-
9
- &__wrap {
10
- z-index: 1;
11
- position: relative;
3
+ @layer payload-default {
4
+ .logout {
12
5
  display: flex;
13
6
  flex-direction: column;
14
- align-items: flex-start;
15
- gap: base(0.8);
16
- width: 100%;
17
- max-width: base(36);
7
+ align-items: center;
8
+ flex-wrap: wrap;
9
+
10
+ &__wrap {
11
+ z-index: 1;
12
+ position: relative;
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: flex-start;
16
+ gap: base(0.8);
17
+ width: 100%;
18
+ max-width: base(36);
18
19
 
19
- & > * {
20
- margin: 0;
20
+ & > * {
21
+ margin: 0;
22
+ }
21
23
  }
22
24
  }
23
25
  }
@@ -15,15 +15,15 @@ export type GenerateViewMetadata = (args: {
15
15
  [key: string]: string | string[];
16
16
  };
17
17
  }) => Promise<Metadata>;
18
- export declare const NotFoundPage: ({ config: configPromise, importMap, params, searchParams, }: {
18
+ export declare const NotFoundPage: ({ config: configPromise, importMap, params: paramsPromise, searchParams: searchParamsPromise, }: {
19
19
  config: Promise<SanitizedConfig>;
20
20
  importMap: ImportMap;
21
- params: {
21
+ params: Promise<{
22
22
  segments: string[];
23
- };
24
- searchParams: {
23
+ }>;
24
+ searchParams: Promise<{
25
25
  [key: string]: string | string[];
26
- };
26
+ }>;
27
27
  }) => Promise<React.JSX.Element>;
28
28
  export declare const NotFoundView: PayloadServerReactComponent<AdminViewComponent>;
29
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,2BAA2B,EAC3B,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,oBAAoB,+BAE9B;IACD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAG,OAAO,CAAC,QAAQ,CAUnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB,eAAO,MAAM,YAAY,gEAKtB;IACD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAA;IACD,YAAY,EAAE;QACZ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAA;CACF,+BA0BA,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,2BAA2B,CAAC,kBAAkB,CAExE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/NotFound/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EACV,kBAAkB,EAClB,SAAS,EACT,2BAA2B,EAC3B,eAAe,EAChB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,oBAAoB,+BAE9B;IACD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,eAAe,CAAA;IAClD,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAG,OAAO,CAAC,QAAQ,CAUnB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAC9C,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEvB,eAAO,MAAM,YAAY,oGAKtB;IACD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,OAAO,CAAC;QACd,QAAQ,EAAE,MAAM,EAAE,CAAA;KACnB,CAAC,CAAA;IACF,YAAY,EAAE,OAAO,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAC,CAAA;CACH,+BA6BA,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,2BAA2B,CAAC,kBAAkB,CAExE,CAAA"}