{
  "version": 3,
  "sources": ["../../src/web/pages/access/Access.tsx", "../../src/web/pages/access/Access.styles.ts", "../../src/web/pages/access/components/AccessDenied.tsx", "../../src/web/pages/access/components/AccessGranted.tsx", "../../src/web/pages/access/components/Confirm.tsx", "../../src/web/pages/access/components/EditorLimitReached.tsx", "../../src/web/pages/access/components/InvalidRequest.tsx", "../../src/web/pages/access/components/ProjectEditorLimitReached.tsx", "../../src/web/pages/access/components/RequestAlreadyProcessed.tsx", "../../src/web/pages/access/index.tsx"],
  "sourcesContent": ["import type { ProjectLicenseType, TeamLicenseType } from \"@framerjs/app-shared\"\nimport { dashboardPath, openNewTab } from \"@framerjs/app-shared\"\nimport { IconFramerLogo, Stack } from \"@framerjs/fresco\"\nimport { assertNever } from \"@framerjs/shared\"\nimport { useState } from \"react\"\nimport { useRecordEffect } from \"utils/useRecordEffect.ts\"\nimport { validate as uuidValidate, version as uuidVersion } from \"uuid\"\nimport type { AccessRequestResourceType } from \"web/lib/RequestEditorAccess.ts\"\nimport type { RequestingUser } from \"../../lib/grantAccessRequest.ts\"\nimport { AccessRequestResponseStatus, denyAccessRequest, grantAccessRequest } from \"../../lib/grantAccessRequest.ts\"\nimport { Pages, UIInteraction, UpsellUIInteraction, record } from \"../../lib/tracker.ts\"\nimport * as styles from \"./Access.styles.ts\"\nimport { AccessDenied } from \"./components/AccessDenied.tsx\"\nimport { AccessGranted } from \"./components/AccessGranted.tsx\"\nimport { Confirm } from \"./components/Confirm.tsx\"\nimport { EditorLimitReached } from \"./components/EditorLimitReached.tsx\"\nimport { InvalidRequest } from \"./components/InvalidRequest.tsx\"\nimport { ProjectEditorLimitReached } from \"./components/ProjectEditorLimitReached.tsx\"\nimport { RequestAlreadyProcessed } from \"./components/RequestAlreadyProcessed.tsx\"\n\nenum Status {\n\tConfirmation,\n\tPending,\n\tAccessGrantSuccess,\n\tAccessDenySuccess,\n\tInvalidRequestError,\n\tEditorLimitReachedError,\n\tProjectEditorLimitReachedError,\n\tRequestAlreadyProcessedError,\n}\n\ntype State =\n\t| { status: Status.Confirmation; requestId: string }\n\t| { status: Status.Pending }\n\t| { status: Status.InvalidRequestError }\n\t| {\n\t\t\tstatus: Status.EditorLimitReachedError\n\t\t\teditorLimit: number\n\t\t\tlicenseType: TeamLicenseType\n\t\t\tteamId: string\n\t\t\tteamName: string\n\t  }\n\t| {\n\t\t\tstatus: Status.ProjectEditorLimitReachedError\n\t\t\teditorLimit: number\n\t\t\tlicenseType: ProjectLicenseType\n\t\t\tprojectId: string\n\t  }\n\t| {\n\t\t\tstatus: Status.AccessGrantSuccess\n\t\t\tresourceType: AccessRequestResourceType\n\t\t\tresourceName: string\n\t\t\tuser: RequestingUser\n\t  }\n\t| {\n\t\t\tstatus: Status.AccessDenySuccess\n\t\t\tresourceType: AccessRequestResourceType\n\t\t\tresourceName: string\n\t\t\tuser: RequestingUser\n\t  }\n\t| { status: Status.RequestAlreadyProcessedError }\n\nconst page = Pages.requestEditorAccessInterstitial\n\nfunction isValidRequestId(uuid: unknown): uuid is string {\n\tif (typeof uuid !== \"string\") return false\n\treturn uuidValidate(uuid) && uuidVersion(uuid) === 4\n}\n\nexport function Access({ requestId }: { requestId: string | null }) {\n\treturn (\n\t\t<div className={styles.content}>\n\t\t\t<Stack gap={20} alignItems=\"center\">\n\t\t\t\t<IconFramerLogo width={30} height={30} className={styles.logo} />\n\t\t\t\t<AccessInner requestId={requestId} />\n\t\t\t</Stack>\n\t\t</div>\n\t)\n}\n\nfunction AccessInner({ requestId }: { requestId: string | null }) {\n\tconst [state, setState] = useState<State>(() =>\n\t\tisValidRequestId(requestId) ? { status: Status.Confirmation, requestId } : { status: Status.InvalidRequestError },\n\t)\n\n\tuseRecordEffect(\"ui_impression\", { page })\n\n\tconst handleDeclineRequest = async () => {\n\t\tif (state.status !== Status.Confirmation) return\n\t\trecord(\"ui_interaction\", { id: UIInteraction.denyAccess, page })\n\t\tsetState({ status: Status.Pending })\n\n\t\tconst response = await denyAccessRequest(state.requestId)\n\t\tswitch (response.status) {\n\t\t\tcase AccessRequestResponseStatus.Success:\n\t\t\t\treturn setState({\n\t\t\t\t\tstatus: Status.AccessDenySuccess,\n\t\t\t\t\tresourceName: response.resource.name,\n\t\t\t\t\tresourceType: response.accessRequest.resourceType,\n\t\t\t\t\tuser: response.requestingUser,\n\t\t\t\t})\n\t\t\tcase AccessRequestResponseStatus.RequestAlreadyProcessedError:\n\t\t\t\treturn setState({ status: Status.RequestAlreadyProcessedError })\n\t\t\tcase AccessRequestResponseStatus.UnhandledError:\n\t\t\t\treturn setState({ status: Status.InvalidRequestError })\n\t\t\tdefault:\n\t\t\t\tassertNever(response)\n\t\t}\n\t}\n\n\tconst handleAcceptRequest = async () => {\n\t\tif (state.status !== Status.Confirmation) return\n\t\trecord(\"ui_interaction\", { id: UIInteraction.grantAccess, page })\n\t\tsetState({ status: Status.Pending })\n\n\t\tconst response = await grantAccessRequest(state.requestId)\n\t\tswitch (response.status) {\n\t\t\tcase AccessRequestResponseStatus.Success:\n\t\t\t\treturn setState({\n\t\t\t\t\tstatus: Status.AccessGrantSuccess,\n\t\t\t\t\tresourceName: response.resource.name,\n\t\t\t\t\tresourceType: response.accessRequest.resourceType,\n\t\t\t\t\tuser: response.requestingUser,\n\t\t\t\t})\n\t\t\tcase AccessRequestResponseStatus.RequestAlreadyProcessedError:\n\t\t\t\treturn setState({ status: Status.RequestAlreadyProcessedError })\n\t\t\tcase AccessRequestResponseStatus.EditorLimitReachedError:\n\t\t\t\treturn setState({\n\t\t\t\t\tstatus: Status.EditorLimitReachedError,\n\t\t\t\t\teditorLimit: response.editorLimit,\n\t\t\t\t\tlicenseType: response.licenseType,\n\t\t\t\t\tteamId: response.teamId,\n\t\t\t\t\tteamName: response.teamName,\n\t\t\t\t})\n\t\t\tcase AccessRequestResponseStatus.ProjectEditorLimitReachedError:\n\t\t\t\treturn setState({\n\t\t\t\t\tstatus: Status.ProjectEditorLimitReachedError,\n\t\t\t\t\teditorLimit: response.editorLimit,\n\t\t\t\t\tlicenseType: response.licenseType,\n\t\t\t\t\tprojectId: response.projectId,\n\t\t\t\t})\n\t\t\tcase AccessRequestResponseStatus.UnhandledError:\n\t\t\t\treturn setState({ status: Status.InvalidRequestError })\n\t\t\tdefault:\n\t\t\t\tassertNever(response)\n\t\t}\n\t}\n\n\tconst handleGoToFramer = () => {\n\t\trecord(\"ui_interaction\", { id: UIInteraction.goToFramer, page })\n\t\twindow.location.href = dashboardPath\n\t}\n\n\tswitch (state.status) {\n\t\tcase Status.Confirmation:\n\t\tcase Status.Pending:\n\t\t\treturn (\n\t\t\t\t<Confirm\n\t\t\t\t\tisLoading={state.status === Status.Pending}\n\t\t\t\t\tonDecline={handleDeclineRequest}\n\t\t\t\t\tonAccept={handleAcceptRequest}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.InvalidRequestError:\n\t\t\treturn (\n\t\t\t\t<InvalidRequest\n\t\t\t\t\tonGoToFramer={handleGoToFramer}\n\t\t\t\t\tonBackToConfirm={\n\t\t\t\t\t\t// can only navigate back to confirm page if the requestId is valid\n\t\t\t\t\t\tisValidRequestId(requestId) ? () => setState({ status: Status.Confirmation, requestId }) : undefined\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.EditorLimitReachedError:\n\t\t\treturn (\n\t\t\t\t<EditorLimitReached\n\t\t\t\t\tpage={page}\n\t\t\t\t\teditorLimit={state.editorLimit}\n\t\t\t\t\tlicenseType={state.licenseType}\n\t\t\t\t\tteamId={state.teamId}\n\t\t\t\t\tteamName={state.teamName}\n\t\t\t\t\tonGoToFramer={handleGoToFramer}\n\t\t\t\t\tonContactUs={() => {\n\t\t\t\t\t\trecord(\"ui_interaction\", { id: UpsellUIInteraction.contactUs, page })\n\t\t\t\t\t\topenNewTab(\"https://www.framer.com/contact\")\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.ProjectEditorLimitReachedError:\n\t\t\treturn (\n\t\t\t\t<ProjectEditorLimitReached\n\t\t\t\t\tpage={page}\n\t\t\t\t\teditorLimit={state.editorLimit}\n\t\t\t\t\tlicenseType={state.licenseType}\n\t\t\t\t\tprojectId={state.projectId}\n\t\t\t\t\tonGoToFramer={handleGoToFramer}\n\t\t\t\t\tonContactUs={() => {\n\t\t\t\t\t\trecord(\"ui_interaction\", { id: UpsellUIInteraction.contactUs, page })\n\t\t\t\t\t\topenNewTab(\"https://www.framer.com/contact\")\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.AccessGrantSuccess:\n\t\t\treturn (\n\t\t\t\t<AccessGranted\n\t\t\t\t\tuser={state.user}\n\t\t\t\t\tresourceName={state.resourceName}\n\t\t\t\t\tresourceType={state.resourceType}\n\t\t\t\t\tonGoToFramer={handleGoToFramer}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.AccessDenySuccess:\n\t\t\treturn (\n\t\t\t\t<AccessDenied\n\t\t\t\t\tuser={state.user}\n\t\t\t\t\tresourceName={state.resourceName}\n\t\t\t\t\tresourceType={state.resourceType}\n\t\t\t\t\tonGoToFramer={handleGoToFramer}\n\t\t\t\t/>\n\t\t\t)\n\t\tcase Status.RequestAlreadyProcessedError:\n\t\t\treturn <RequestAlreadyProcessed onGoToFramer={handleGoToFramer} />\n\t\tdefault:\n\t\t\tassertNever(state)\n\t}\n}\n", "import \"Access.styles_8xkc4n.wyw.css\"; export const logo = \"logo_loceorj\";\nexport const content = \"content_c9vfl1i\";\nexport const title = \"title_t1902ara\";\nexport const description = \"description_d1u4q86p\";", "import { Button, Stack, Translatable as T } from \"@framerjs/fresco\"\nimport { AccessRequestResourceType } from \"../../../lib/RequestEditorAccess.ts\"\nimport type { RequestingUser } from \"../../../lib/grantAccessRequest.ts\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tuser: RequestingUser\n\tresourceType: AccessRequestResourceType\n\tresourceName: string\n\tonGoToFramer: () => void\n}\n\nexport function AccessDenied({ user, resourceName, resourceType, onGoToFramer }: Props) {\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>\n\t\t\t\t\t<T>Request Declined</T>\n\t\t\t\t</div>\n\t\t\t\t{resourceType === AccessRequestResourceType.Team && (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t{user.fullName} will remain a Viewer on the {resourceName} workspace.\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{resourceType === AccessRequestResourceType.Project && (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t{user.fullName} will remain a Viewer of the {resourceName} project.\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"primary\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { Button, Stack, Translatable as T } from \"@framerjs/fresco\"\nimport { AccessRequestResourceType } from \"../../../lib/RequestEditorAccess.ts\"\nimport type { RequestingUser } from \"../../../lib/grantAccessRequest.ts\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tuser: RequestingUser\n\tresourceType: AccessRequestResourceType\n\tresourceName: string\n\tonGoToFramer: () => void\n}\n\nexport function AccessGranted({ user, resourceType, resourceName, onGoToFramer }: Props) {\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>\n\t\t\t\t\t<T>Request Accepted</T>\n\t\t\t\t</div>\n\t\t\t\t{resourceType === AccessRequestResourceType.Team && (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t{user.fullName} is now an {user.requestedRole} on the {resourceName} workspace.\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{resourceType === AccessRequestResourceType.Project && (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t{user.fullName} is now an {user.requestedRole} of the {resourceName} project.\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"primary\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { Button, Stack, Translatable as T } from \"@framerjs/fresco\"\nimport * as styles from \"../Access.styles.ts\"\ninterface Props {\n\tisLoading: boolean\n\tonDecline: () => void\n\tonAccept: () => void\n}\n\nexport function Confirm({ isLoading, onDecline, onAccept }: Props) {\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>\n\t\t\t\t\t<T>Editor Access Request</T>\n\t\t\t\t</div>\n\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t<T>Click \u201CAccept\u201D to grant the</T>\n\t\t\t\t\t<br />\n\t\t\t\t\t<T> requesting user Edit access.</T>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"default\" enabled={!isLoading} onClick={onDecline}>\n\t\t\t\t\tDecline\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"primary\" enabled={!isLoading} onClick={onAccept}>\n\t\t\t\t\tAccept\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { TeamLicenseType } from \"@framerjs/app-shared\"\nimport { Button, Stack, T } from \"@framerjs/fresco\"\nimport React from \"react\"\nimport { countAndNoun } from \"utils/countAndNoun.ts\"\nimport { generateUpgradeTeamPlanModalLink } from \"web/lib/useUpgradeTeamPlanUtils.ts\"\nimport type { Pages } from \"../../../lib/tracker.ts\"\nimport { UIInteraction, record } from \"../../../lib/tracker.ts\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tpage: Pages\n\teditorLimit: number\n\tlicenseType: TeamLicenseType\n\tteamId: string\n\tteamName: string\n\tonGoToFramer: () => void\n\tonContactUs: () => void\n}\n\nexport function EditorLimitReached({\n\tpage,\n\teditorLimit,\n\tlicenseType,\n\tteamId,\n\tteamName,\n\tonGoToFramer,\n\tonContactUs,\n}: Props) {\n\tconst onUpgradePlan = React.useCallback(() => {\n\t\trecord(\"ui_interaction\", { id: UIInteraction.goToCheckout, page })\n\t\twindow.location.href = generateUpgradeTeamPlanModalLink(teamId)\n\t}, [page, teamId])\n\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>Editor Limit Reached</div>\n\n\t\t\t\t{licenseType === TeamLicenseType.EnterprisePlan ? (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\tThe {teamName} team has reached its limit of {countAndNoun(editorLimit, \"editor\", \"editors\")}. Contact us to\n\t\t\t\t\t\tincrease the number of editors for this workspace.\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t<T>Your workspace has a limit of {countAndNoun(editorLimit, \"editor\", \"editors\")}.</T>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<T>Upgrade your plan to get more seats. </T>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"default\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t\t{licenseType === TeamLicenseType.EnterprisePlan ? (\n\t\t\t\t\t<Button variant=\"primary\" onClick={onContactUs}>\n\t\t\t\t\t\tContact Us\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button variant=\"primary\" onClick={onUpgradePlan}>\n\t\t\t\t\t\tUpgrade Plan\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { Button, Stack, Translatable as T } from \"@framerjs/fresco\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tonBackToConfirm?: () => void\n\tonGoToFramer: () => void\n}\n\nexport function InvalidRequest({ onGoToFramer, onBackToConfirm }: Props) {\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>\n\t\t\t\t\t<T>Invalid Request</T>\n\t\t\t\t</div>\n\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t<T>We are currently unable to</T>\n\t\t\t\t\t<br />\n\t\t\t\t\t<T>process this request.</T>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"default\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t\t{onBackToConfirm && (\n\t\t\t\t\t<Button variant=\"primary\" onClick={onBackToConfirm}>\n\t\t\t\t\t\tBack to Confirm Page\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { ProjectLicenseType } from \"@framerjs/app-shared\"\nimport { Button, Stack, T } from \"@framerjs/fresco\"\nimport React from \"react\"\nimport { countAndNoun } from \"utils/countAndNoun.ts\"\nimport { getProjectPlansURL } from \"web/lib/Project.ts\"\nimport type { Pages } from \"../../../lib/tracker.ts\"\nimport { UIInteraction, record } from \"../../../lib/tracker.ts\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tpage: Pages\n\teditorLimit: number\n\tlicenseType: ProjectLicenseType\n\tprojectId: string\n\tonGoToFramer: () => void\n\tonContactUs: () => void\n}\n\nexport function ProjectEditorLimitReached({\n\tpage,\n\teditorLimit,\n\tlicenseType,\n\tprojectId,\n\tonGoToFramer,\n\tonContactUs,\n}: Props) {\n\tconst onUpgradePlan = React.useCallback(() => {\n\t\trecord(\"ui_interaction\", { id: UIInteraction.goToCheckout, page })\n\t\twindow.location.href = getProjectPlansURL({ id: projectId, title: null, canvasFeatures: {} }).toString()\n\t}, [page, projectId])\n\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>Editor Limit Reached</div>\n\n\t\t\t\t{licenseType === ProjectLicenseType.EnterpriseSite ? (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\tThis project has reached its limit of {countAndNoun(editorLimit, \"editor\", \"editors\")}. Contact us to\n\t\t\t\t\t\tincrease the number of editors for this project.\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t\t<T>This project has a limit of {countAndNoun(editorLimit, \"editor\", \"editors\")}.</T>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<T>Upgrade your plan to get more seats.</T>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"default\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t\t{licenseType === ProjectLicenseType.EnterpriseSite ? (\n\t\t\t\t\t<Button variant=\"primary\" onClick={onContactUs}>\n\t\t\t\t\t\tContact Us\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button variant=\"primary\" onClick={onUpgradePlan}>\n\t\t\t\t\t\tUpgrade Plan\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "import { Button, Stack, Translatable as T } from \"@framerjs/fresco\"\nimport * as styles from \"../Access.styles.ts\"\n\ninterface Props {\n\tonGoToFramer: () => void\n}\n\nexport function RequestAlreadyProcessed({ onGoToFramer }: Props) {\n\treturn (\n\t\t<Stack gap={15}>\n\t\t\t<Stack gap={10}>\n\t\t\t\t<div className={styles.title}>\n\t\t\t\t\t<T>Invalid Request</T>\n\t\t\t\t</div>\n\t\t\t\t<div className={styles.description}>\n\t\t\t\t\t<T>This request has been approved</T>\n\t\t\t\t\t<br />\n\t\t\t\t\t<T>or denied already by another admin.</T>\n\t\t\t\t</div>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={10} justifyContent=\"center\">\n\t\t\t\t<Button variant=\"primary\" onClick={onGoToFramer}>\n\t\t\t\t\tGo to Framer\n\t\t\t\t</Button>\n\t\t\t</Stack>\n\t\t</Stack>\n\t)\n}\n", "// Please keep this as the first import in the file, to make sure\n// Sentry initializes before any other imports\nimport \"sentry/entrypoints/access.ts\"\nimport \"app/styles/projects+access.css\"\nimport { initializeEnvironment } from \"@framerjs/framer-environment\"\nimport { renderReact } from \"utils/renderReact.ts\"\nimport { DarkModeProvider } from \"web/components/DarkModeProvider.tsx\"\nimport { setSentryContext } from \"web/lib/setSentryContext.ts\"\nimport { useServiceWorker } from \"../../lib/serviceWorker.ts\"\nimport { Access } from \"./Access.tsx\"\n\ninitializeEnvironment({\n\tname: \"web:access\",\n\tsecurity: {},\n})\n\nconst query = new URLSearchParams(window.location.search)\nconst requestId = query.get(\"requestId\")\n\nvoid setSentryContext()\n\nfunction Page() {\n\tuseServiceWorker()\n\treturn <Access requestId={requestId} />\n}\n\nrenderReact(\n\t<DarkModeProvider>\n\t\t<Page />\n\t</DarkModeProvider>,\n\tdocument.getElementById(\"root\"),\n)\n"],
  "mappings": "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",
  "names": ["import_react", "import_jsx_runtime", "import_jsx_runtime", "import_jsx_runtime", "page", "React", "import_jsx_runtime", "import_react", "import_jsx_runtime", "page", "React", "import_jsx_runtime", "import_jsx_runtime", "requestId", "import_jsx_runtime"]
}
