{"version":3,"file":"SignaturePage-m1adiAav.js","sources":["../../node_modules/@mantine/core/esm/components/Alert/Alert.module.css.mjs","../../node_modules/@mantine/core/esm/components/Alert/Alert.mjs","../../node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs","../../node_modules/viem/_esm/clients/createPublicClient.js","../../src/components/CustomAlert.tsx","../../src/components/Wallet/utils.ts","../../src/components/Wallet/SignaturePage.tsx"],"sourcesContent":["'use client';\nvar classes = {\"root\":\"m_66836ed3\",\"wrapper\":\"m_a5d60502\",\"body\":\"m_667c2793\",\"title\":\"m_6a03f287\",\"label\":\"m_698f4f23\",\"icon\":\"m_667f2a6a\",\"message\":\"m_7fa78076\",\"closeButton\":\"m_87f54839\"};\n\nexport { classes as default };\n//# sourceMappingURL=Alert.module.css.mjs.map\n","'use client';\nimport { jsx, jsxs } from 'react/jsx-runtime';\nimport { useId } from '@mantine/hooks';\nimport 'react';\nimport { getRadius } from '../../core/utils/get-size/get-size.mjs';\nimport { createVarsResolver } from '../../core/styles-api/create-vars-resolver/create-vars-resolver.mjs';\nimport 'clsx';\nimport '../../core/MantineProvider/Mantine.context.mjs';\nimport '../../core/MantineProvider/default-theme.mjs';\nimport '../../core/MantineProvider/MantineProvider.mjs';\nimport '../../core/MantineProvider/MantineThemeProvider/MantineThemeProvider.mjs';\nimport { useProps } from '../../core/MantineProvider/use-props/use-props.mjs';\nimport '../../core/MantineProvider/MantineCssVariables/MantineCssVariables.mjs';\nimport { useStyles } from '../../core/styles-api/use-styles/use-styles.mjs';\nimport { Box } from '../../core/Box/Box.mjs';\nimport { factory } from '../../core/factory/factory.mjs';\nimport '../../core/DirectionProvider/DirectionProvider.mjs';\nimport '../CloseButton/CloseIcon.mjs';\nimport { CloseButton } from '../CloseButton/CloseButton.mjs';\nimport classes from './Alert.module.css.mjs';\n\nconst defaultProps = {};\nconst varsResolver = createVarsResolver(\n (theme, { radius, color, variant, autoContrast }) => {\n const colors = theme.variantColorResolver({\n color: color || theme.primaryColor,\n theme,\n variant: variant || \"light\",\n autoContrast\n });\n return {\n root: {\n \"--alert-radius\": radius === void 0 ? void 0 : getRadius(radius),\n \"--alert-bg\": color || variant ? colors.background : void 0,\n \"--alert-color\": colors.color,\n \"--alert-bd\": color || variant ? colors.border : void 0\n }\n };\n }\n);\nconst Alert = factory((_props, ref) => {\n const props = useProps(\"Alert\", defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n radius,\n color,\n title,\n children,\n id,\n icon,\n withCloseButton,\n onClose,\n closeButtonLabel,\n variant,\n autoContrast,\n ...others\n } = props;\n const getStyles = useStyles({\n name: \"Alert\",\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver\n });\n const rootId = useId(id);\n const titleId = title && `${rootId}-title` || void 0;\n const bodyId = `${rootId}-body`;\n return /* @__PURE__ */ jsx(\n Box,\n {\n id: rootId,\n ...getStyles(\"root\", { variant }),\n variant,\n ref,\n ...others,\n role: \"alert\",\n \"aria-describedby\": bodyId,\n \"aria-labelledby\": titleId,\n children: /* @__PURE__ */ jsxs(\"div\", { ...getStyles(\"wrapper\"), children: [\n icon && /* @__PURE__ */ jsx(\"div\", { ...getStyles(\"icon\"), children: icon }),\n /* @__PURE__ */ jsxs(\"div\", { ...getStyles(\"body\"), children: [\n title && /* @__PURE__ */ jsx(\"div\", { ...getStyles(\"title\"), \"data-with-close-button\": withCloseButton || void 0, children: /* @__PURE__ */ jsx(\"span\", { id: titleId, ...getStyles(\"label\"), children: title }) }),\n children && /* @__PURE__ */ jsx(\"div\", { id: bodyId, ...getStyles(\"message\"), \"data-variant\": variant, children })\n ] }),\n withCloseButton && /* @__PURE__ */ jsx(\n CloseButton,\n {\n ...getStyles(\"closeButton\"),\n onClick: onClose,\n variant: \"transparent\",\n size: 16,\n iconSize: 16,\n \"aria-label\": closeButtonLabel,\n unstyled\n }\n )\n ] })\n }\n );\n});\nAlert.classes = classes;\nAlert.displayName = \"@mantine/core/Alert\";\n\nexport { Alert };\n//# sourceMappingURL=Alert.mjs.map\n","/**\n * @license @tabler/icons-react v3.22.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nvar IconCircleCheck = createReactComponent(\"outline\", \"circle-check\", \"IconCircleCheck\", [[\"path\", { \"d\": \"M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M9 12l2 2l4 -4\", \"key\": \"svg-1\" }]]);\n\nexport { IconCircleCheck as default };\n//# sourceMappingURL=IconCircleCheck.mjs.map\n","import { createClient, } from './createClient.js';\nimport { publicActions } from './decorators/public.js';\n/**\n * Creates a Public Client with a given [Transport](https://viem.sh/docs/clients/intro) configured for a [Chain](https://viem.sh/docs/clients/chains).\n *\n * - Docs: https://viem.sh/docs/clients/public\n *\n * A Public Client is an interface to \"public\" [JSON-RPC API](https://ethereum.org/en/developers/docs/apis/json-rpc/) methods such as retrieving block numbers, transactions, reading from smart contracts, etc through [Public Actions](/docs/actions/public/introduction).\n *\n * @param config - {@link PublicClientConfig}\n * @returns A Public Client. {@link PublicClient}\n *\n * @example\n * import { createPublicClient, http } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createPublicClient({\n * chain: mainnet,\n * transport: http(),\n * })\n */\nexport function createPublicClient(parameters) {\n const { key = 'public', name = 'Public Client' } = parameters;\n const client = createClient({\n ...parameters,\n key,\n name,\n type: 'publicClient',\n });\n return client.extend(publicActions);\n}\n//# sourceMappingURL=createPublicClient.js.map","import { Alert, AlertProps, Stack, Text, useMantineTheme } from '@mantine/core'\nimport React, { FC } from 'react'\n\ninterface CustomAlertProps extends AlertProps {\n title: string\n}\n\nconst CustomAlert: FC = ({ children, title, ...props }) => {\n const theme = useMantineTheme()\n\n return (\n \n {props.icon &&
{props.icon}
}\n \n {title}\n \n \n }\n >\n
{children}
\n \n )\n}\nexport default CustomAlert\n","import { createPublicClient, http } from 'viem'\n\nimport { l1NativeWagmiConfig } from '@/plugins/auth/config'\n\nexport interface VerifySignature {\n address: `0x${string}` | ''\n message: string\n signHash: `0x${string}` | ''\n}\n\nconst publicViemClient = createPublicClient({\n chain: l1NativeWagmiConfig,\n transport: http(),\n})\n\nexport default publicViemClient\n","import { Stack, Text, TextInput, Title, useMantineTheme } from '@mantine/core'\nimport { IconAlertTriangle, IconCircleCheck } from '@tabler/icons-react'\nimport { signMessage } from '@wagmi/core'\nimport React, { FC, useCallback, useMemo, useState } from 'react'\nimport { Trans, useTranslation } from 'react-i18next'\nimport { Link, useSearchParams } from 'react-router-dom'\nimport { hashMessage, isAddress } from 'viem'\n\nimport RootButton from '@/components/Buttons/RootButton'\nimport ErrorMessage from '@/components/ErrorMessage'\nimport Loading from '@/components/Loading'\nimport { useAuth } from '@/plugins/auth'\nimport { getWagmiConfig } from '@/plugins/auth/config'\nimport ConnectMiddleware from '@/plugins/auth/RouteRedirectors/ConnectMiddleware'\nimport { BodyStack, StyledActionText, StyledInlineCode } from '@/styled/components'\n\nimport CopyButton from '../Buttons/CopyButton'\nimport CustomAlert from '../CustomAlert'\nimport publicViemClient, { VerifySignature } from './utils'\n\ninterface ErrorSigning {\n message: string\n details: string\n}\n\nconst emptyErrorSigning: ErrorSigning = {\n message: '',\n details: '',\n}\n\nexport const l1SignBotEndpoint = process.env.L1_SIGN_BOT_ENDPOINT || 'address-bot.lamina1.network'\n\nconst Component: FC = () => {\n const theme = useMantineTheme()\n const { t } = useTranslation()\n const { status } = useAuth()\n\n // Extract query parameters\n const [searchParams] = useSearchParams()\n const queryMessage = searchParams.get('message') || ''\n const queryEndpoint = searchParams.get('endpoint') || ''\n\n const [inputMessage, setInputMessage] = useState(queryMessage)\n const [signature, setSignature] = useState('')\n const [isValid, setIsValid] = useState(undefined)\n const [verify, setVerify] = useState({\n address: '',\n message: '',\n signHash: '',\n })\n const [isLoadingVerify, setIsLoadingVerify] = useState(false)\n const [confirmed, setConfirmed] = useState(false)\n const [errorSigning, setErrorSigning] = useState(emptyErrorSigning)\n const [isLoading, setIsLoading] = useState(false)\n\n // extract platform name from message, first key is the platform name with \"_id\"\n const platform = useMemo(() => {\n try {\n const jsonObject = JSON.parse(inputMessage)\n const firstKey = Object.keys(jsonObject)[0]\n // return the platform name with first letter capitalized\n return firstKey.split('_')[0].charAt(0).toUpperCase() + firstKey.split('_')[0].slice(1)\n } catch (e) {\n // If inputMessage is not a valid JSON, return an empty string\n return ''\n }\n }, [inputMessage])\n\n const isDisabledSign = !inputMessage || isLoading || status !== 'connected'\n\n // Check if the endpoint is using HTTPS; if not, return a warning message.\n const warningHttps = useMemo(() => {\n if (!queryEndpoint) return false\n if (!queryEndpoint.startsWith('https://')) {\n return t('modals.signature.warningHttps', 'Endpoint must use TLS (https).')\n }\n return false\n }, [queryEndpoint])\n\n // Check if the endpoint matches the known Lamina1 Discord endpoint; if so, return true\n const warningL1Endpoint = useMemo(() => {\n if (!queryEndpoint) return ''\n if (queryEndpoint.replace('https://', '').startsWith(l1SignBotEndpoint)) {\n return true\n }\n return false\n }, [queryEndpoint])\n\n const endpointInfoMessage = useMemo(\n () => (\n <>\n {warningHttps ? (\n }\n color={theme.colors.notification[0]}\n title={t('modals.signature.endpointInvalidTitle', 'Invalid Endpoint')}\n >\n \n {decodeURIComponent(queryEndpoint)}\n \n
\n {t(\n 'modals.signature.endpointInvalidMessage',\n 'The endpoint you’re directing this signature to must use TLS (https://) and be in the right format. Please adjust or alert the endpoint developer, then try again.'\n )}\n \n ) : warningL1Endpoint ? (\n }\n color={theme.colors.l1Primary[0]}\n title={t('modals.signature.endpointConfirmedTitle', 'Endpoint confirmed')}\n >\n \n {decodeURIComponent(queryEndpoint)}\n \n \n ) : (\n }\n color={theme.colors.barChartYellow[0]}\n title={t('modals.signature.externalEndpointTitle', 'Connect to External Application?')}\n >\n \n {decodeURIComponent(queryEndpoint)}\n \n
\n {t(\n 'modals.signature.externalEndpointMessage',\n 'The LAMINA1 Hub does not recognize the recipient application’s address. Make sure you trust the URL above before confirming your signature.'\n )}\n \n )}\n \n ),\n [queryEndpoint, warningHttps, warningL1Endpoint]\n )\n\n const postConfirmationL1EndpointMessage =\n platform === 'Discord' ? (\n \n {'Return to the '}\n /registration\n {' bot on Discord and hit '}\n Refresh\n {\n ' to make sure your account is connected. You can disconnect your accounts or connect new accounts via the '\n }\n /registration\n {' bot anytime.'}\n \n ) : (\n t(\n 'modals.signature.endpointConfirmedMessage2',\n 'Return to the {{platform}} bot to make sure your account is successfully connected.',\n { platform }\n )\n )\n\n const msgHash = useMemo(() => {\n if (!inputMessage) return ''\n return hashMessage(inputMessage)\n }, [inputMessage])\n\n const handleSign = useCallback(async () => {\n setErrorSigning(emptyErrorSigning)\n if (!inputMessage) return\n try {\n setIsLoading(true)\n const sig = await signMessage(getWagmiConfig(), { message: inputMessage })\n setSignature(sig)\n } catch (error: any) {\n setErrorSigning({\n message: t('modals.signature.errorSigning', 'Error requesting message signature'),\n details: error.message,\n })\n setIsLoading(false)\n }\n setIsLoading(false)\n }, [inputMessage])\n\n const handleVerify = useCallback(async () => {\n try {\n setIsLoadingVerify(true)\n const valid = await publicViemClient.verifyMessage({\n address: verify.address as `0x${string}`,\n message: verify.message,\n signature: verify.signHash as `0x${string}`,\n })\n setIsValid(valid)\n setIsLoadingVerify(false)\n } catch (error: any) {\n setIsValid(false)\n console.error(error)\n }\n }, [verify])\n\n const handleConfirm = useCallback(async () => {\n setErrorSigning(emptyErrorSigning)\n try {\n setIsLoading(true)\n\n if (warningHttps) {\n setErrorSigning({\n message: t('modals.signature.endpointInvalid', 'Endpoint Invalid'),\n details: warningHttps,\n })\n setIsLoading(false)\n return\n }\n\n const response = await fetch(queryEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n message: inputMessage,\n msg_hash: msgHash,\n signature,\n }),\n })\n if (response.status === 200 || response.status === 201) {\n setConfirmed(true)\n } else {\n const body = await response.json()\n setErrorSigning({\n message: t('modals.signature.errorConfirming', 'Error confirming signature'),\n details: body.error,\n })\n setIsLoading(false)\n setConfirmed(false)\n }\n } catch (error: any) {\n console.log('error', error)\n setErrorSigning({\n message: t('modals.signature.errorConfirming', 'Error confirming signature'),\n details: error.message,\n })\n setIsLoading(false)\n setConfirmed(false)\n }\n setIsLoading(false)\n }, [signature, queryEndpoint, inputMessage, msgHash])\n\n const handleReset = useCallback(() => {\n setInputMessage('')\n setSignature('')\n setIsLoading(false)\n setErrorSigning(emptyErrorSigning)\n setConfirmed(false)\n }, [])\n\n const onChangeMessage = useCallback((event: React.ChangeEvent) => {\n setInputMessage(event.currentTarget.value)\n setErrorSigning(emptyErrorSigning)\n }, [])\n\n const onChangeAddress = useCallback((event: React.ChangeEvent) => {\n setIsValid(undefined)\n const value = event.currentTarget.value as `0x${string}`\n setVerify(prev => ({\n ...prev,\n address: value,\n }))\n }, [])\n\n const onChangeSignHash = useCallback((event: React.ChangeEvent) => {\n setIsValid(undefined)\n const value = event.currentTarget.value as `0x${string}`\n setVerify(prev => ({\n ...prev,\n signHash: value,\n }))\n }, [])\n\n const onChangeVerifyMessage = useCallback((event: React.ChangeEvent) => {\n setIsValid(undefined)\n const value = event.currentTarget.value as string\n setVerify(prev => ({\n ...prev,\n message: value,\n }))\n }, [])\n\n return (\n \n \n \n {t('components.wallet.sign', 'Sign Message')}\n \n {warningL1Endpoint && platform ? (\n \n {t(\n 'modals.signature.signingMessageForL1Platform',\n 'Signing this message will connect your account to {{platform}}, and allow the {{platform}} Bot to see into your on-chain assets for token-gated content, roles, and experiences on LAMINA1.',\n { platform }\n )}\n \n ) : (\n \n {t(\n 'modals.signature.signingMessageGeneral',\n 'Securely sign messages with your LAMINA1 account. Signing this message can be used to verify your identity, authorize transactions, or interact with decentralized applications.'\n )}\n \n )}\n {queryEndpoint && (\n \n {queryEndpoint &&\n t(\n 'modals.signature.signingMessageGeneralEndpoint',\n 'The following message is set up to automatically forward your signature to an external application. Make sure you trust this application before you press Confirm.'\n )}\n \n )}\n \n \n {!isLoading && !errorSigning?.message && signature ? (\n <>\n \n {t('modals.signature.resultTitle', 'Signature')}\n \n \n \n {signature}\n \n \n ) : (\n \n )}\n {errorSigning?.message !== '' && (\n \n {errorSigning.details} +
\n \n Press Sign again and make sure you\n confirm the transaction in your Metamask wallet. If you reject the\n transaction, your signature will not go through.\n \n \n ) : (\n errorSigning.details\n )\n }\n />\n )}\n {isLoading ? (\n \n ) : (\n <>\n {!confirmed ? (\n <>\n {queryEndpoint && endpointInfoMessage}\n \n {signature && (\n \n {t('buttons.reset', 'Reset')}\n \n )}\n {!signature && (\n \n {t('buttons.sign', 'Sign')}\n \n )}\n {queryEndpoint && (\n \n {t('buttons.confirm', 'Confirm')}\n \n )}\n
\n \n ) : (\n \n {warningL1Endpoint && (\n }\n color={theme.colors.l1Primary[0]}\n title={t(\n 'modals.signature.confirmed',\n 'Message signed and signature successfully sent!'\n )}\n >\n {postConfirmationL1EndpointMessage}\n \n )}\n \n )}\n \n )}\n
\n \n \n {t('components.wallet.verify', 'Verify Message')}\n \n \n {t(\n 'modals.signature.verifyMessage',\n 'Verify the signature of a message to ensure it was signed by the owner of the address.'\n )}\n \n \n \n \n \n \n \n {t('buttons.verify', 'Verify')}\n \n \n {!isLoadingVerify ? (\n <>\n {isValid !== undefined && (\n \n {isValid ? (\n }\n color={theme.colors.l1Primary[0]}\n title={t(\n 'modals.verify.confirmed',\n 'Message signature successfully verified!'\n )}\n />\n ) : (\n }\n color={theme.colors.notification[0]}\n title={t('modals.verify.failed', 'Message signature verification failed')}\n />\n )}\n \n )}\n \n ) : (\n \n )}\n \n \n \n
\n
\n )\n}\n\nComponent.displayName = 'SignaturePage'\n\nexport { Component }\n"],"names":["classes","defaultProps","varsResolver","createVarsResolver","theme","radius","color","variant","autoContrast","colors","getRadius","Alert","factory","_props","ref","props","useProps","classNames","className","style","styles","unstyled","vars","title","children","id","icon","withCloseButton","onClose","closeButtonLabel","others","getStyles","useStyles","rootId","useId","titleId","bodyId","jsx","Box","jsxs","CloseButton","IconCircleCheck","createReactComponent","createPublicClient","parameters","key","name","createClient","publicActions","CustomAlert","useMantineTheme","Stack","Text","publicViemClient","l1NativeWagmiConfig","http","emptyErrorSigning","l1SignBotEndpoint","define_process_env_default","Component","useTranslation","status","useAuth","searchParams","useSearchParams","queryMessage","queryEndpoint","inputMessage","setInputMessage","useState","signature","setSignature","isValid","setIsValid","verify","setVerify","isLoadingVerify","setIsLoadingVerify","confirmed","setConfirmed","errorSigning","setErrorSigning","isLoading","setIsLoading","platform","useMemo","jsonObject","firstKey","isDisabledSign","warningHttps","warningL1Endpoint","endpointInfoMessage","IconAlertTriangle","Link","postConfirmationL1EndpointMessage","Trans","StyledInlineCode","StyledActionText","msgHash","hashMessage","handleSign","useCallback","sig","signMessage","getWagmiConfig","error","handleVerify","valid","handleConfirm","response","body","handleReset","onChangeMessage","event","onChangeAddress","value","prev","onChangeSignHash","onChangeVerifyMessage","ConnectMiddleware","BodyStack","Title","Fragment","CopyButton","TextInput","ErrorMessage","Loading","RootButton","isAddress"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}