@xyo-network/react-xns 7.6.2 → 8.0.0
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SecondaryLink.d.ts","sourceRoot":"","sources":["../../../../src/components/XnsNameCapture/SecondaryLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAIrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EACV,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EACpF,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,4BAA4B,GAAG,2BAA2B,GAAG,0BAA0B,GAAG,0BAA0B,GAAG,WAAW,GAAG;IAC/I,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,
|
|
1
|
+
{"version":3,"file":"SecondaryLink.d.ts","sourceRoot":"","sources":["../../../../src/components/XnsNameCapture/SecondaryLink.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAIrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EACV,0BAA0B,EAAE,0BAA0B,EAAE,2BAA2B,EACpF,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,4BAA4B,GAAG,2BAA2B,GAAG,0BAA0B,GAAG,0BAA0B,GAAG,WAAW,GAAG;IAC/I,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAkD1E,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XnsNameCapture.d.ts","sourceRoot":"","sources":["../../../../src/components/XnsNameCapture/XnsNameCapture.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"XnsNameCapture.d.ts","sourceRoot":"","sources":["../../../../src/components/XnsNameCapture/XnsNameCapture.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0GxD,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -96,7 +96,7 @@ var XnsNameCaptureErrors = ({
|
|
|
96
96
|
)
|
|
97
97
|
}
|
|
98
98
|
) : (() => {
|
|
99
|
-
return /* @__PURE__ */ jsx2(FlexRow, { alignSelf: "stretch", children: /* @__PURE__ */ jsx2(
|
|
99
|
+
return /* @__PURE__ */ jsx2(FlexRow, { sx: { alignSelf: "stretch" }, children: /* @__PURE__ */ jsx2(
|
|
100
100
|
Alert,
|
|
101
101
|
{
|
|
102
102
|
severity: "error",
|
|
@@ -172,8 +172,6 @@ var XnsCaptureSecondaryLink = ({
|
|
|
172
172
|
return /* @__PURE__ */ jsx3(
|
|
173
173
|
LinkEx,
|
|
174
174
|
{
|
|
175
|
-
paddingX: 0,
|
|
176
|
-
color: "inherit",
|
|
177
175
|
style: { textDecoration: "underline", textUnderlineOffset: "5px" },
|
|
178
176
|
onClick: async () => {
|
|
179
177
|
const formattedXnsName = `${xnsName}.xyo`;
|
|
@@ -192,10 +190,25 @@ var XnsCaptureSecondaryLink = ({
|
|
|
192
190
|
}
|
|
193
191
|
},
|
|
194
192
|
...props,
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
193
|
+
sx: [{
|
|
194
|
+
paddingX: 0,
|
|
195
|
+
color: "inherit"
|
|
196
|
+
}, ...Array.isArray(props.sx) ? props.sx : [props.sx]],
|
|
197
|
+
children: /* @__PURE__ */ jsxs(
|
|
198
|
+
Stack,
|
|
199
|
+
{
|
|
200
|
+
sx: {
|
|
201
|
+
flexDirection: "row",
|
|
202
|
+
gap: 0.5,
|
|
203
|
+
alignItems: "center",
|
|
204
|
+
cursor: "pointer"
|
|
205
|
+
},
|
|
206
|
+
children: [
|
|
207
|
+
text,
|
|
208
|
+
/* @__PURE__ */ jsx3(ArrowForwardRounded, {})
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
)
|
|
199
212
|
}
|
|
200
213
|
);
|
|
201
214
|
};
|
|
@@ -275,51 +288,61 @@ var XnsNameCapture = ({
|
|
|
275
288
|
await onCaptureName?.();
|
|
276
289
|
}
|
|
277
290
|
}, [captureDisabled, onCaptureName]);
|
|
278
|
-
return /* @__PURE__ */ jsxs2(
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
291
|
+
return /* @__PURE__ */ jsxs2(
|
|
292
|
+
FlexCol,
|
|
293
|
+
{
|
|
294
|
+
...props,
|
|
295
|
+
sx: [{
|
|
296
|
+
gap: showSecondary ? 1.5 : 0,
|
|
297
|
+
alignItems: "center"
|
|
298
|
+
}, ...Array.isArray(props.sx) ? props.sx : [props.sx]],
|
|
299
|
+
children: [
|
|
300
|
+
/* @__PURE__ */ jsxs2(FlexRow2, { sx: { gap: 1 }, children: [
|
|
301
|
+
/* @__PURE__ */ jsx4(
|
|
302
|
+
XnsEstimateNameTextField,
|
|
303
|
+
{
|
|
304
|
+
autoFocus,
|
|
305
|
+
disabled,
|
|
306
|
+
label: "xNS Name",
|
|
307
|
+
variant: "outlined",
|
|
308
|
+
size: "small",
|
|
309
|
+
value: xnsName ?? "",
|
|
310
|
+
onKeyDown,
|
|
311
|
+
onChange: handleChange,
|
|
312
|
+
onBlur: handleChange
|
|
313
|
+
}
|
|
314
|
+
),
|
|
315
|
+
/* @__PURE__ */ jsx4(
|
|
316
|
+
ButtonEx,
|
|
317
|
+
{
|
|
318
|
+
disabled: captureDisabled,
|
|
319
|
+
funnel,
|
|
320
|
+
intent,
|
|
321
|
+
placement,
|
|
322
|
+
variant: "contained",
|
|
323
|
+
endIcon: /* @__PURE__ */ jsx4(KeyboardArrowRightRounded, {}),
|
|
324
|
+
onClick: onCaptureName,
|
|
325
|
+
sx: { color: "success" },
|
|
326
|
+
children: isMobile ? mobileButtonText : buttonText
|
|
327
|
+
}
|
|
328
|
+
)
|
|
329
|
+
] }),
|
|
330
|
+
showSecondary === true ? /* @__PURE__ */ jsx4(
|
|
331
|
+
XnsCaptureSecondaryLink,
|
|
332
|
+
{
|
|
333
|
+
xnsName,
|
|
334
|
+
placement,
|
|
335
|
+
funnel,
|
|
336
|
+
setError
|
|
337
|
+
}
|
|
338
|
+
) : null,
|
|
339
|
+
// eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary
|
|
340
|
+
showSecondary ? showSecondary : null,
|
|
341
|
+
children,
|
|
342
|
+
/* @__PURE__ */ jsx4(XnsNameCaptureErrors, { error, errorUi, resetError: () => setError(void 0) })
|
|
343
|
+
]
|
|
344
|
+
}
|
|
345
|
+
);
|
|
323
346
|
};
|
|
324
347
|
|
|
325
348
|
// src/components/XnsNameCapture/XnsNameCaptureWithContext.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/EstimateName/EstimateNameTextField.tsx","../../src/components/XnsNameCapture/Errors.tsx","../../src/components/XnsNameCapture/hooks/routing/useXnsNameCaptureRouting.ts","../../src/components/XnsNameCapture/hooks/routing/useXnsNameFromLocation.ts","../../src/components/XnsNameCapture/SecondaryLink.tsx","../../src/components/XnsNameCapture/XnsNameCapture.tsx","../../src/components/XnsNameCapture/lib/navigateWithUsername.ts","../../src/components/XnsNameCapture/XnsNameCaptureWithContext.tsx"],"sourcesContent":["import type { StandardTextFieldProps, TextFieldProps } from '@mui/material'\nimport { TextField, useTheme } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\nimport { MIN_DOMAIN_LENGTH, XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport React, {\n useLayoutEffect,\n useRef, useState,\n} from 'react'\n\nexport interface XnsEstimateNameTextFieldProps {\n maskOutput?: boolean\n}\n\nexport const XnsEstimateNameTextField: React.FC<XnsEstimateNameTextFieldProps & TextFieldProps> = ({\n maskOutput = true, onChange: onChangeProp, onBlur: onBlurProp, value, ...props\n}) => {\n const theme = useTheme()\n const [validLength, setValidLength] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n // watch for external changes to the value and update the validLength state\n const [previousValue, setPreviousValue] = useState<unknown>(value)\n if (value !== previousValue) {\n setPreviousValue(value)\n const validValueLength = !!(value && typeof value === 'string' && value.length >= MIN_DOMAIN_LENGTH)\n setValidLength(validValueLength)\n }\n\n // Update the input value when the value prop changes\n // The intent of this component is to remain uncontrolled to avoid the need to manage the value state\n // Therefore, we use useLayoutEffect to update the input value directly.\n useLayoutEffect(() => {\n if (inputRef.current && typeof value === 'string') {\n inputRef.current.value = value\n }\n }, [value])\n\n // override onChange to mask the input and update the event value\n const handleChange: StandardTextFieldProps['onChange'] = (event) => {\n if (maskOutput) {\n const value = event.target.value\n event.target.value = XnsNameHelper.mask(value)\n }\n onChangeProp?.(event)\n\n if (inputRef.current) {\n setValidLength(inputRef.current.value.length >= MIN_DOMAIN_LENGTH)\n }\n }\n\n // override onBlur to do a final mask of the input and update the event value\n const handleBlur: StandardTextFieldProps['onBlur'] = (event) => {\n if (maskOutput) {\n const value = event.target.value\n event.target.value = XnsNameHelper.mask(value, { maskStartEndHyphens: true })\n }\n onBlurProp?.(event)\n }\n\n return (\n <TextField\n inputRef={inputRef}\n onBlur={handleBlur}\n onChange={handleChange}\n {...props}\n slotProps={{ htmlInput: { style: { color: validLength ? theme.vars.palette.text.primary : alphaCss(theme.vars.palette.text.primary, 0.5) } } }}\n />\n )\n}\n","import {\n Alert, Snackbar, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface XnsNameCaptureErrorsProps {\n error?: Error\n errorUi?: 'alert' | 'toast'\n resetError?: () => void\n}\n\nexport const XnsNameCaptureErrors: React.FC<XnsNameCaptureErrorsProps> = ({\n error, errorUi, resetError,\n}) => {\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\n\n return (\n <>\n {(errorUi === 'toast')\n ? (\n <Snackbar\n open={!!error}\n message={error?.toString()}\n autoHideDuration={3000}\n onClose={() => resetError?.()}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n >\n <Alert\n severity=\"error\"\n sx={{\n width: '100%', display: (isMobile && !error) ? 'none' : undefined, visibility: error ? 'visible' : 'hidden',\n }}\n >\n {error?.message}\n </Alert>\n </Snackbar>\n )\n // eslint-disable-next-line react-x/unsupported-syntax\n : (() => {\n // setTimeout(() => setError(undefined), 1500)\n return (\n <FlexRow alignSelf=\"stretch\">\n <Alert\n severity=\"error\"\n sx={{ display: (isMobile && !error) ? 'none' : undefined, visibility: error ? 'visible' : 'hidden' }}\n >\n {error?.message}\n </Alert>\n </FlexRow>\n )\n })()}\n </>\n )\n}\n","import { useMemo } from 'react'\nimport { useNavigate, useSearchParams } from 'react-router-dom'\n\nimport type { XnsNameCaptureProps } from '../../Props.ts'\nimport { useXnsNameFromLocation } from './useXnsNameFromLocation.ts'\n\nexport const useXnsNameCaptureRouting = (props: XnsNameCaptureProps): XnsNameCaptureProps => {\n const [params] = useSearchParams()\n\n const navigate = useNavigate()\n\n const [name, error] = useXnsNameFromLocation()\n\n return useMemo(() => ({\n ...props,\n defaultXnsName: name,\n routingError: error,\n navigate: props.navigate ?? ((to: string) => navigate(to)),\n paramsString: props.paramsString ? `${props.paramsString}${params.toString()}` : params.toString(),\n }), [props, name, error, params, navigate])\n}\n","import { useLocation } from 'react-router-dom'\n\n/**\n * Assumes the user was redirected with a link that contains a username query parameter.\n * @returns The xNS name from the URI username query parameter.\n */\nexport const useXnsNameFromLocation = (): [name: string | undefined, error: Error | undefined] => {\n const location = useLocation()\n const search = new URLSearchParams(location.search)\n const rawName = (search.get('xnsname') ?? search.get('name') ?? search.get('username') ?? '').toLowerCase()\n switch (rawName?.split('.').length) {\n case 1: {\n return [rawName, undefined]\n }\n case 2: {\n const rawNameParts = rawName.split('.')\n if (rawNameParts[1] !== 'xyo') {\n return [undefined, new Error('Invalid xNS name [Bad root]')]\n }\n return [rawNameParts[0], undefined]\n }\n default: {\n return [undefined, new Error('Invalid xNS name [Too many parts]')]\n }\n }\n}\n","import { ArrowForwardRounded } from '@mui/icons-material'\nimport { Stack } from '@mui/material'\nimport type { LinkExProps } from '@xylabs/react-link'\nimport { LinkEx } from '@xylabs/react-link'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport type { Dispatch } from 'react'\nimport React from 'react'\n\nimport type {\n XnsNameCaptureBuyCallbacks, XnsNameCaptureRoutingProps, XnsNameCaptureTrackingProps,\n} from './Props.ts'\n\nexport type XnsCaptureSecondaryLinkProps = XnsNameCaptureTrackingProps & XnsNameCaptureRoutingProps & XnsNameCaptureBuyCallbacks & LinkExProps & {\n setError?: Dispatch<Error | undefined>\n text?: string\n xnsName: string\n}\n\nexport const XnsCaptureSecondaryLink: React.FC<XnsCaptureSecondaryLinkProps> = ({\n funnel = 'xns',\n navigate,\n onCaptureName,\n paramsString = '',\n intent,\n placement = '',\n setError,\n text = 'Or make a free reservation',\n to = '/xns/reservation',\n xnsName,\n ...props\n}) => {\n const userEvents = useUserEvents('warn')\n return (\n <LinkEx\n paddingX={0}\n color=\"inherit\"\n style={{ textDecoration: 'underline', textUnderlineOffset: '5px' }}\n onClick={async () => {\n const formattedXnsName = `${xnsName}.xyo`\n const helper = XnsNameHelper.fromString(formattedXnsName)\n const [valid, errors] = await helper.validate()\n if (valid) {\n await userEvents?.userClick({\n funnel, placement, intent,\n })\n navigate?.(`${to}?username=${xnsName}${paramsString}`)\n await onCaptureName?.(xnsName)\n } else {\n setError?.(new Error(errors.join(', ')))\n }\n }}\n {...props}\n >\n <Stack flexDirection=\"row\" gap={0.5} alignItems=\"center\" sx={{ cursor: 'pointer' }}>\n {text}\n <ArrowForwardRounded />\n </Stack>\n </LinkEx>\n )\n}\n","import { KeyboardArrowRightRounded } from '@mui/icons-material'\nimport type { StandardTextFieldProps } from '@mui/material'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { MIN_DOMAIN_LENGTH, XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport type { KeyboardEventHandler } from 'react'\nimport React, { useCallback, useState } from 'react'\n\nimport { XnsEstimateNameTextField } from '../EstimateName/index.ts'\nimport { XnsNameCaptureErrors } from './Errors.tsx'\nimport { navigateWithUsername } from './lib/index.ts'\nimport type { XnsNameCaptureProps } from './Props.ts'\nimport { XnsCaptureSecondaryLink } from './SecondaryLink.js'\n\nexport const XnsNameCapture: React.FC<XnsNameCaptureProps> = ({\n autoFocus = false,\n buttonText = 'Buy My Name',\n children,\n defaultXnsName,\n disabled,\n errorUi = 'alert',\n funnel = 'xns',\n intent = 'unset',\n mobileButtonText = 'Buy',\n navigate,\n onCaptureName: onCaptureNameProp,\n onNameChange,\n paramsString = '',\n placement = '',\n routingError,\n showSecondary = false,\n to = '/xns/estimation',\n ...props\n}) => {\n const [xnsName, setXnsName] = useState<string>(() => defaultXnsName ?? '')\n const [error, setError] = useState<Error | undefined>(routingError)\n\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\n\n const captureDisabled = !xnsName || xnsName.length < MIN_DOMAIN_LENGTH\n\n const handleChange: StandardTextFieldProps['onChange'] = (event) => {\n const NsName = XnsNameHelper.mask(event.target.value)\n onNameChange?.(NsName)\n setXnsName(NsName)\n setError(undefined)\n }\n\n const onCaptureName = useCallback(async () => {\n if (captureDisabled) return\n const formattedXnsName = `${xnsName}.xyo`\n const helper = XnsNameHelper.fromString(formattedXnsName)\n const [valid, errors] = await helper.validate()\n if (valid) {\n await onCaptureNameProp?.(xnsName)\n\n navigateWithUsername(xnsName, paramsString, navigate, to)\n } else {\n setError(new Error(errors.join(', ')))\n }\n }, [captureDisabled, xnsName, onCaptureNameProp, paramsString, navigate, to])\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(async (event) => {\n if (event.key === 'Enter' && !captureDisabled) {\n await onCaptureName?.()\n }\n }, [captureDisabled, onCaptureName])\n\n return (\n <FlexCol gap={showSecondary ? 1.5 : 0} alignItems=\"center\" {...props}>\n <FlexRow gap={1}>\n <XnsEstimateNameTextField\n autoFocus={autoFocus}\n disabled={disabled}\n label=\"xNS Name\"\n variant=\"outlined\"\n size=\"small\"\n value={xnsName ?? ''}\n onKeyDown={onKeyDown}\n onChange={handleChange}\n onBlur={handleChange}\n />\n <ButtonEx\n disabled={captureDisabled}\n funnel={funnel}\n intent={intent}\n placement={placement}\n variant=\"contained\"\n color=\"success\"\n endIcon={<KeyboardArrowRightRounded />}\n onClick={onCaptureName}\n >\n {isMobile ? mobileButtonText : buttonText}\n </ButtonEx>\n </FlexRow>\n {(showSecondary === true)\n ? (\n <XnsCaptureSecondaryLink\n xnsName={xnsName}\n placement={placement}\n funnel={funnel}\n setError={setError}\n />\n )\n : null}\n {\n // eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary\n showSecondary ? showSecondary : null\n }\n {children}\n <XnsNameCaptureErrors error={error} errorUi={errorUi} resetError={() => setError(undefined)} />\n </FlexCol>\n )\n}\n","import type { To } from 'react-router-dom'\n\nexport const navigateWithUsername = (xnsName: string, paramsString: string, navigate?: ((to: string) => void), to?: To) => {\n // avoid duplicating the username param\n const params = new URLSearchParams(paramsString)\n const usernameParam = params.get('username')\n if (usernameParam) {\n // if username param is the same as the xnsName, navigate\n if (usernameParam === xnsName) {\n navigate?.(`${to}?${paramsString}`)\n }\n if (usernameParam !== xnsName) {\n // if username param is different, replace it\n params.set('username', xnsName)\n navigate?.(`${to}?${params.toString()}`)\n }\n } else {\n // if no username param, include it\n navigate?.(`${to}?username=${xnsName}&${paramsString}`)\n }\n}\n","import React, { useMemo } from 'react'\n\nimport { useXnsNameCaptureRouting } from './hooks/index.ts'\nimport type { XnsNameCaptureProps } from './Props.ts'\nimport { XnsNameCapture } from './XnsNameCapture.tsx'\n\nexport const XnsNameCaptureWithContext: React.FC<XnsNameCaptureProps> = (props) => {\n const routingProps = useXnsNameCaptureRouting(props)\n\n const updatedProps = useMemo<XnsNameCaptureProps>(() => ({\n ...props,\n ...routingProps,\n }), [routingProps, props])\n\n return (\n <XnsNameCapture {...updatedProps} />\n )\n}\n"],"mappings":"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","names":["value","useTheme","jsx","XnsNameHelper","jsx","useMediaQuery","useTheme","FlexRow","MIN_DOMAIN_LENGTH","XnsNameHelper","useState","jsx","jsxs","useState","useTheme","useMediaQuery","MIN_DOMAIN_LENGTH","XnsNameHelper","FlexRow","useMemo","jsx","useMemo"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/EstimateName/EstimateNameTextField.tsx","../../src/components/XnsNameCapture/Errors.tsx","../../src/components/XnsNameCapture/hooks/routing/useXnsNameCaptureRouting.ts","../../src/components/XnsNameCapture/hooks/routing/useXnsNameFromLocation.ts","../../src/components/XnsNameCapture/SecondaryLink.tsx","../../src/components/XnsNameCapture/XnsNameCapture.tsx","../../src/components/XnsNameCapture/lib/navigateWithUsername.ts","../../src/components/XnsNameCapture/XnsNameCaptureWithContext.tsx"],"sourcesContent":["import type { StandardTextFieldProps, TextFieldProps } from '@mui/material'\nimport { TextField, useTheme } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\nimport { MIN_DOMAIN_LENGTH, XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport React, {\n useLayoutEffect,\n useRef, useState,\n} from 'react'\n\nexport interface XnsEstimateNameTextFieldProps {\n maskOutput?: boolean\n}\n\nexport const XnsEstimateNameTextField: React.FC<XnsEstimateNameTextFieldProps & TextFieldProps> = ({\n maskOutput = true, onChange: onChangeProp, onBlur: onBlurProp, value, ...props\n}) => {\n const theme = useTheme()\n const [validLength, setValidLength] = useState(false)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n // watch for external changes to the value and update the validLength state\n const [previousValue, setPreviousValue] = useState<unknown>(value)\n if (value !== previousValue) {\n setPreviousValue(value)\n const validValueLength = !!(value && typeof value === 'string' && value.length >= MIN_DOMAIN_LENGTH)\n setValidLength(validValueLength)\n }\n\n // Update the input value when the value prop changes\n // The intent of this component is to remain uncontrolled to avoid the need to manage the value state\n // Therefore, we use useLayoutEffect to update the input value directly.\n useLayoutEffect(() => {\n if (inputRef.current && typeof value === 'string') {\n inputRef.current.value = value\n }\n }, [value])\n\n // override onChange to mask the input and update the event value\n const handleChange: StandardTextFieldProps['onChange'] = (event) => {\n if (maskOutput) {\n const value = event.target.value\n event.target.value = XnsNameHelper.mask(value)\n }\n onChangeProp?.(event)\n\n if (inputRef.current) {\n setValidLength(inputRef.current.value.length >= MIN_DOMAIN_LENGTH)\n }\n }\n\n // override onBlur to do a final mask of the input and update the event value\n const handleBlur: StandardTextFieldProps['onBlur'] = (event) => {\n if (maskOutput) {\n const value = event.target.value\n event.target.value = XnsNameHelper.mask(value, { maskStartEndHyphens: true })\n }\n onBlurProp?.(event)\n }\n\n return (\n <TextField\n inputRef={inputRef}\n onBlur={handleBlur}\n onChange={handleChange}\n {...props}\n slotProps={{ htmlInput: { style: { color: validLength ? theme.vars.palette.text.primary : alphaCss(theme.vars.palette.text.primary, 0.5) } } }}\n />\n )\n}\n","import {\n Alert, Snackbar, useMediaQuery, useTheme,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface XnsNameCaptureErrorsProps {\n error?: Error\n errorUi?: 'alert' | 'toast'\n resetError?: () => void\n}\n\nexport const XnsNameCaptureErrors: React.FC<XnsNameCaptureErrorsProps> = ({\n error, errorUi, resetError,\n}) => {\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\n\n return (\n <>\n {(errorUi === 'toast')\n ? (\n <Snackbar\n open={!!error}\n message={error?.toString()}\n autoHideDuration={3000}\n onClose={() => resetError?.()}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n >\n <Alert\n severity=\"error\"\n sx={{\n width: '100%', display: (isMobile && !error) ? 'none' : undefined, visibility: error ? 'visible' : 'hidden',\n }}\n >\n {error?.message}\n </Alert>\n </Snackbar>\n )\n // eslint-disable-next-line react-x/unsupported-syntax\n : (() => {\n // setTimeout(() => setError(undefined), 1500)\n return (\n <FlexRow sx={{ alignSelf: 'stretch' }}>\n <Alert\n severity=\"error\"\n sx={{ display: (isMobile && !error) ? 'none' : undefined, visibility: error ? 'visible' : 'hidden' }}\n >\n {error?.message}\n </Alert>\n </FlexRow>\n )\n })()}\n </>\n )\n}\n","import { useMemo } from 'react'\nimport { useNavigate, useSearchParams } from 'react-router-dom'\n\nimport type { XnsNameCaptureProps } from '../../Props.ts'\nimport { useXnsNameFromLocation } from './useXnsNameFromLocation.ts'\n\nexport const useXnsNameCaptureRouting = (props: XnsNameCaptureProps): XnsNameCaptureProps => {\n const [params] = useSearchParams()\n\n const navigate = useNavigate()\n\n const [name, error] = useXnsNameFromLocation()\n\n return useMemo(() => ({\n ...props,\n defaultXnsName: name,\n routingError: error,\n navigate: props.navigate ?? ((to: string) => navigate(to)),\n paramsString: props.paramsString ? `${props.paramsString}${params.toString()}` : params.toString(),\n }), [props, name, error, params, navigate])\n}\n","import { useLocation } from 'react-router-dom'\n\n/**\n * Assumes the user was redirected with a link that contains a username query parameter.\n * @returns The xNS name from the URI username query parameter.\n */\nexport const useXnsNameFromLocation = (): [name: string | undefined, error: Error | undefined] => {\n const location = useLocation()\n const search = new URLSearchParams(location.search)\n const rawName = (search.get('xnsname') ?? search.get('name') ?? search.get('username') ?? '').toLowerCase()\n switch (rawName?.split('.').length) {\n case 1: {\n return [rawName, undefined]\n }\n case 2: {\n const rawNameParts = rawName.split('.')\n if (rawNameParts[1] !== 'xyo') {\n return [undefined, new Error('Invalid xNS name [Bad root]')]\n }\n return [rawNameParts[0], undefined]\n }\n default: {\n return [undefined, new Error('Invalid xNS name [Too many parts]')]\n }\n }\n}\n","import { ArrowForwardRounded } from '@mui/icons-material'\nimport { Stack } from '@mui/material'\nimport type { LinkExProps } from '@xylabs/react-link'\nimport { LinkEx } from '@xylabs/react-link'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport type { Dispatch } from 'react'\nimport React from 'react'\n\nimport type {\n XnsNameCaptureBuyCallbacks, XnsNameCaptureRoutingProps, XnsNameCaptureTrackingProps,\n} from './Props.ts'\n\nexport type XnsCaptureSecondaryLinkProps = XnsNameCaptureTrackingProps & XnsNameCaptureRoutingProps & XnsNameCaptureBuyCallbacks & LinkExProps & {\n setError?: Dispatch<Error | undefined>\n text?: string\n xnsName: string\n}\n\nexport const XnsCaptureSecondaryLink: React.FC<XnsCaptureSecondaryLinkProps> = ({\n funnel = 'xns',\n navigate,\n onCaptureName,\n paramsString = '',\n intent,\n placement = '',\n setError,\n text = 'Or make a free reservation',\n to = '/xns/reservation',\n xnsName,\n ...props\n}) => {\n const userEvents = useUserEvents('warn')\n return (\n <LinkEx\n style={{ textDecoration: 'underline', textUnderlineOffset: '5px' }}\n onClick={async () => {\n const formattedXnsName = `${xnsName}.xyo`\n const helper = XnsNameHelper.fromString(formattedXnsName)\n const [valid, errors] = await helper.validate()\n if (valid) {\n await userEvents?.userClick({\n funnel, placement, intent,\n })\n navigate?.(`${to}?username=${xnsName}${paramsString}`)\n await onCaptureName?.(xnsName)\n } else {\n setError?.(new Error(errors.join(', ')))\n }\n }}\n {...props}\n sx={[{\n paddingX: 0,\n color: 'inherit',\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <Stack\n sx={{\n flexDirection: 'row',\n gap: 0.5,\n alignItems: 'center',\n cursor: 'pointer',\n }}\n >\n {text}\n <ArrowForwardRounded />\n </Stack>\n </LinkEx>\n )\n}\n","import { KeyboardArrowRightRounded } from '@mui/icons-material'\nimport type { StandardTextFieldProps } from '@mui/material'\nimport { useMediaQuery, useTheme } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { MIN_DOMAIN_LENGTH, XnsNameHelper } from '@xyo-network/xns-record-payloadset-plugins'\nimport type { KeyboardEventHandler } from 'react'\nimport React, { useCallback, useState } from 'react'\n\nimport { XnsEstimateNameTextField } from '../EstimateName/index.ts'\nimport { XnsNameCaptureErrors } from './Errors.tsx'\nimport { navigateWithUsername } from './lib/index.ts'\nimport type { XnsNameCaptureProps } from './Props.ts'\nimport { XnsCaptureSecondaryLink } from './SecondaryLink.js'\n\nexport const XnsNameCapture: React.FC<XnsNameCaptureProps> = ({\n autoFocus = false,\n buttonText = 'Buy My Name',\n children,\n defaultXnsName,\n disabled,\n errorUi = 'alert',\n funnel = 'xns',\n intent = 'unset',\n mobileButtonText = 'Buy',\n navigate,\n onCaptureName: onCaptureNameProp,\n onNameChange,\n paramsString = '',\n placement = '',\n routingError,\n showSecondary = false,\n to = '/xns/estimation',\n ...props\n}) => {\n const [xnsName, setXnsName] = useState<string>(() => defaultXnsName ?? '')\n const [error, setError] = useState<Error | undefined>(routingError)\n\n const theme = useTheme()\n const isMobile = useMediaQuery(theme.breakpoints.down('md'))\n\n const captureDisabled = !xnsName || xnsName.length < MIN_DOMAIN_LENGTH\n\n const handleChange: StandardTextFieldProps['onChange'] = (event) => {\n const NsName = XnsNameHelper.mask(event.target.value)\n onNameChange?.(NsName)\n setXnsName(NsName)\n setError(undefined)\n }\n\n const onCaptureName = useCallback(async () => {\n if (captureDisabled) return\n const formattedXnsName = `${xnsName}.xyo`\n const helper = XnsNameHelper.fromString(formattedXnsName)\n const [valid, errors] = await helper.validate()\n if (valid) {\n await onCaptureNameProp?.(xnsName)\n\n navigateWithUsername(xnsName, paramsString, navigate, to)\n } else {\n setError(new Error(errors.join(', ')))\n }\n }, [captureDisabled, xnsName, onCaptureNameProp, paramsString, navigate, to])\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(async (event) => {\n if (event.key === 'Enter' && !captureDisabled) {\n await onCaptureName?.()\n }\n }, [captureDisabled, onCaptureName])\n\n return (\n <FlexCol\n {...props}\n sx={[{\n gap: showSecondary ? 1.5 : 0,\n alignItems: 'center',\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <FlexRow sx={{ gap: 1 }}>\n <XnsEstimateNameTextField\n autoFocus={autoFocus}\n disabled={disabled}\n label=\"xNS Name\"\n variant=\"outlined\"\n size=\"small\"\n value={xnsName ?? ''}\n onKeyDown={onKeyDown}\n onChange={handleChange}\n onBlur={handleChange}\n />\n <ButtonEx\n disabled={captureDisabled}\n funnel={funnel}\n intent={intent}\n placement={placement}\n variant=\"contained\"\n endIcon={<KeyboardArrowRightRounded />}\n onClick={onCaptureName}\n sx={{ color: 'success' }}\n >\n {isMobile ? mobileButtonText : buttonText}\n </ButtonEx>\n </FlexRow>\n {(showSecondary === true)\n ? (\n <XnsCaptureSecondaryLink\n xnsName={xnsName}\n placement={placement}\n funnel={funnel}\n setError={setError}\n />\n )\n : null}\n {\n // eslint-disable-next-line unicorn/prefer-logical-operator-over-ternary\n showSecondary ? showSecondary : null\n }\n {children}\n <XnsNameCaptureErrors error={error} errorUi={errorUi} resetError={() => setError(undefined)} />\n </FlexCol>\n )\n}\n","import type { To } from 'react-router-dom'\n\nexport const navigateWithUsername = (xnsName: string, paramsString: string, navigate?: ((to: string) => void), to?: To) => {\n // avoid duplicating the username param\n const params = new URLSearchParams(paramsString)\n const usernameParam = params.get('username')\n if (usernameParam) {\n // if username param is the same as the xnsName, navigate\n if (usernameParam === xnsName) {\n navigate?.(`${to}?${paramsString}`)\n }\n if (usernameParam !== xnsName) {\n // if username param is different, replace it\n params.set('username', xnsName)\n navigate?.(`${to}?${params.toString()}`)\n }\n } else {\n // if no username param, include it\n navigate?.(`${to}?username=${xnsName}&${paramsString}`)\n }\n}\n","import React, { useMemo } from 'react'\n\nimport { useXnsNameCaptureRouting } from './hooks/index.ts'\nimport type { XnsNameCaptureProps } from './Props.ts'\nimport { XnsNameCapture } from './XnsNameCapture.tsx'\n\nexport const XnsNameCaptureWithContext: React.FC<XnsNameCaptureProps> = (props) => {\n const routingProps = useXnsNameCaptureRouting(props)\n\n const updatedProps = useMemo<XnsNameCaptureProps>(() => ({\n ...props,\n ...routingProps,\n }), [routingProps, props])\n\n return (\n <XnsNameCapture {...updatedProps} />\n )\n}\n"],"mappings":"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","names":["value","useTheme","jsx","XnsNameHelper","jsx","useMediaQuery","useTheme","FlexRow","MIN_DOMAIN_LENGTH","XnsNameHelper","useState","jsx","jsxs","useState","useTheme","useMediaQuery","MIN_DOMAIN_LENGTH","XnsNameHelper","FlexRow","useMemo","jsx","useMemo"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-xns",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@bitauth/libauth": "~3.0.0",
|
|
45
45
|
"@metamask/providers": "^22.1.1",
|
|
46
|
-
"@mui/icons-material": "
|
|
47
|
-
"@mui/material": "
|
|
46
|
+
"@mui/icons-material": "~9.0",
|
|
47
|
+
"@mui/material": "~9.0",
|
|
48
48
|
"@opentelemetry/api": "^1.9.1",
|
|
49
49
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
50
50
|
"@react-spring/web": "~10.0.3",
|
|
@@ -52,43 +52,43 @@
|
|
|
52
52
|
"@scure/bip39": "~2.2.0",
|
|
53
53
|
"@storybook/react-vite": "~10.3.6",
|
|
54
54
|
"@types/react": "^19.2.14",
|
|
55
|
-
"@xylabs/geo": "^5.1.
|
|
56
|
-
"@xylabs/pixel": "~5.1.
|
|
57
|
-
"@xylabs/react-button": "~
|
|
58
|
-
"@xylabs/react-flexbox": "~
|
|
59
|
-
"@xylabs/react-link": "~
|
|
60
|
-
"@xylabs/react-pixel": "~
|
|
61
|
-
"@xylabs/react-theme": "~
|
|
62
|
-
"@xylabs/sdk-js": "^5.1.
|
|
63
|
-
"@xylabs/threads": "~5.1.
|
|
64
|
-
"@xylabs/toolchain": "~7.13.
|
|
65
|
-
"@xylabs/tsconfig": "^7.13.
|
|
66
|
-
"@xylabs/tsconfig-dom": "^7.13.
|
|
67
|
-
"@xylabs/tsconfig-react": "~7.13.
|
|
68
|
-
"@xyo-network/account": "~5.6.
|
|
69
|
-
"@xyo-network/account-model": "^5.6.
|
|
70
|
-
"@xyo-network/api": "~5.6.
|
|
71
|
-
"@xyo-network/api-models": "~5.6.
|
|
72
|
-
"@xyo-network/boundwitness-builder": "^5.6.
|
|
73
|
-
"@xyo-network/boundwitness-model": "^5.6.
|
|
74
|
-
"@xyo-network/boundwitness-validator": "^5.6.
|
|
75
|
-
"@xyo-network/boundwitness-wrapper": "~5.6.
|
|
76
|
-
"@xyo-network/config-payload-plugin": "~5.6.
|
|
77
|
-
"@xyo-network/diviner-hash-lease": "^5.6.
|
|
78
|
-
"@xyo-network/huri": "^5.6.
|
|
79
|
-
"@xyo-network/manifest-model": "~5.6.
|
|
80
|
-
"@xyo-network/module-model": "^5.6.
|
|
81
|
-
"@xyo-network/payload-builder": "^5.6.
|
|
82
|
-
"@xyo-network/payload-model": "^5.6.
|
|
83
|
-
"@xyo-network/payload-plugin": "^5.6.
|
|
84
|
-
"@xyo-network/payload-wrapper": "~5.6.
|
|
85
|
-
"@xyo-network/query-payload-plugin": "~5.6.
|
|
86
|
-
"@xyo-network/sdk-js": "^5.6.
|
|
87
|
-
"@xyo-network/sdk-protocol-js": "~5.6.
|
|
88
|
-
"@xyo-network/wallet": "~5.6.
|
|
89
|
-
"@xyo-network/wallet-model": "^5.6.
|
|
90
|
-
"@xyo-network/witness-model": "^5.6.
|
|
91
|
-
"@xyo-network/xns-record-payloadset-plugins": "~5.5.
|
|
55
|
+
"@xylabs/geo": "^5.1.2",
|
|
56
|
+
"@xylabs/pixel": "~5.1.2",
|
|
57
|
+
"@xylabs/react-button": "~8.0",
|
|
58
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
59
|
+
"@xylabs/react-link": "~8.0",
|
|
60
|
+
"@xylabs/react-pixel": "~8.0",
|
|
61
|
+
"@xylabs/react-theme": "~8.0",
|
|
62
|
+
"@xylabs/sdk-js": "^5.1.2",
|
|
63
|
+
"@xylabs/threads": "~5.1.2",
|
|
64
|
+
"@xylabs/toolchain": "~7.13.22",
|
|
65
|
+
"@xylabs/tsconfig": "^7.13.22",
|
|
66
|
+
"@xylabs/tsconfig-dom": "^7.13.22",
|
|
67
|
+
"@xylabs/tsconfig-react": "~7.13.22",
|
|
68
|
+
"@xyo-network/account": "~5.6.2",
|
|
69
|
+
"@xyo-network/account-model": "^5.6.3",
|
|
70
|
+
"@xyo-network/api": "~5.6.2",
|
|
71
|
+
"@xyo-network/api-models": "~5.6.3",
|
|
72
|
+
"@xyo-network/boundwitness-builder": "^5.6.2",
|
|
73
|
+
"@xyo-network/boundwitness-model": "^5.6.3",
|
|
74
|
+
"@xyo-network/boundwitness-validator": "^5.6.2",
|
|
75
|
+
"@xyo-network/boundwitness-wrapper": "~5.6.2",
|
|
76
|
+
"@xyo-network/config-payload-plugin": "~5.6.3",
|
|
77
|
+
"@xyo-network/diviner-hash-lease": "^5.6.4",
|
|
78
|
+
"@xyo-network/huri": "^5.6.2",
|
|
79
|
+
"@xyo-network/manifest-model": "~5.6.3",
|
|
80
|
+
"@xyo-network/module-model": "^5.6.4",
|
|
81
|
+
"@xyo-network/payload-builder": "^5.6.2",
|
|
82
|
+
"@xyo-network/payload-model": "^5.6.3",
|
|
83
|
+
"@xyo-network/payload-plugin": "^5.6.3",
|
|
84
|
+
"@xyo-network/payload-wrapper": "~5.6.2",
|
|
85
|
+
"@xyo-network/query-payload-plugin": "~5.6.3",
|
|
86
|
+
"@xyo-network/sdk-js": "^5.6.4",
|
|
87
|
+
"@xyo-network/sdk-protocol-js": "~5.6.3",
|
|
88
|
+
"@xyo-network/wallet": "~5.6.2",
|
|
89
|
+
"@xyo-network/wallet-model": "^5.6.3",
|
|
90
|
+
"@xyo-network/witness-model": "^5.6.4",
|
|
91
|
+
"@xyo-network/xns-record-payloadset-plugins": "~5.5.2",
|
|
92
92
|
"ajv": "^8.20.0",
|
|
93
93
|
"async-mutex": "^0.5.0",
|
|
94
94
|
"bn.js": "^5.2.3",
|
|
@@ -108,91 +108,91 @@
|
|
|
108
108
|
"observable-fns": "~0.6.1",
|
|
109
109
|
"pako": "^2.1.0",
|
|
110
110
|
"query-string": "~9.3.1",
|
|
111
|
-
"react": "^19.2.
|
|
112
|
-
"react-dom": "^19.2.
|
|
113
|
-
"react-is": "^19.2.
|
|
111
|
+
"react": "^19.2.6",
|
|
112
|
+
"react-dom": "^19.2.6",
|
|
113
|
+
"react-is": "^19.2.6",
|
|
114
114
|
"react-router-dom": "^7.15.0",
|
|
115
115
|
"recharts": "~3.8.1",
|
|
116
116
|
"spark-md5": "~3.0.2",
|
|
117
117
|
"store2": "~2.14.4",
|
|
118
118
|
"storybook": "^10.3.6",
|
|
119
119
|
"typescript": "^5.9.3",
|
|
120
|
-
"vite": "^8.0.
|
|
120
|
+
"vite": "^8.0.11",
|
|
121
121
|
"wasm-feature-detect": "~1.8.0",
|
|
122
122
|
"webextension-polyfill": "^0.12.0",
|
|
123
123
|
"zod": "^4.4.3"
|
|
124
124
|
},
|
|
125
125
|
"peerDependencies": {
|
|
126
|
-
"@bitauth/libauth": "
|
|
127
|
-
"@metamask/providers": "
|
|
128
|
-
"@mui/icons-material": "
|
|
129
|
-
"@mui/material": "
|
|
130
|
-
"@opentelemetry/api": "
|
|
131
|
-
"@opentelemetry/sdk-trace-base": "
|
|
132
|
-
"@react-spring/web": "
|
|
133
|
-
"@scure/base": "
|
|
134
|
-
"@scure/bip39": "
|
|
135
|
-
"@xylabs/geo": "
|
|
136
|
-
"@xylabs/pixel": "
|
|
137
|
-
"@xylabs/react-button": "
|
|
138
|
-
"@xylabs/react-flexbox": "
|
|
139
|
-
"@xylabs/react-link": "
|
|
140
|
-
"@xylabs/react-pixel": "
|
|
141
|
-
"@xylabs/react-theme": "
|
|
142
|
-
"@xylabs/sdk-js": "
|
|
143
|
-
"@xylabs/threads": "
|
|
144
|
-
"@xyo-network/account": "
|
|
145
|
-
"@xyo-network/account-model": "
|
|
146
|
-
"@xyo-network/api": "
|
|
147
|
-
"@xyo-network/api-models": "
|
|
148
|
-
"@xyo-network/boundwitness-builder": "
|
|
149
|
-
"@xyo-network/boundwitness-model": "
|
|
150
|
-
"@xyo-network/boundwitness-validator": "
|
|
151
|
-
"@xyo-network/boundwitness-wrapper": "
|
|
152
|
-
"@xyo-network/config-payload-plugin": "
|
|
153
|
-
"@xyo-network/diviner-hash-lease": "
|
|
154
|
-
"@xyo-network/huri": "
|
|
155
|
-
"@xyo-network/manifest-model": "
|
|
156
|
-
"@xyo-network/module-model": "
|
|
157
|
-
"@xyo-network/payload-builder": "
|
|
158
|
-
"@xyo-network/payload-model": "
|
|
159
|
-
"@xyo-network/payload-plugin": "
|
|
160
|
-
"@xyo-network/payload-wrapper": "
|
|
161
|
-
"@xyo-network/query-payload-plugin": "
|
|
162
|
-
"@xyo-network/sdk-js": "
|
|
163
|
-
"@xyo-network/sdk-protocol-js": "
|
|
164
|
-
"@xyo-network/wallet": "
|
|
165
|
-
"@xyo-network/wallet-model": "
|
|
166
|
-
"@xyo-network/witness-model": "
|
|
167
|
-
"@xyo-network/xns-record-payloadset-plugins": "
|
|
168
|
-
"ajv": "
|
|
169
|
-
"async-mutex": "
|
|
170
|
-
"bn.js": "
|
|
171
|
-
"bowser": "
|
|
172
|
-
"buffer": "
|
|
173
|
-
"chalk": "
|
|
174
|
-
"debug": "
|
|
175
|
-
"ethers": "
|
|
176
|
-
"fast-deep-equal": "
|
|
177
|
-
"hash-wasm": "
|
|
178
|
-
"idb": "
|
|
179
|
-
"js-cookie": "
|
|
180
|
-
"lru-cache": "
|
|
181
|
-
"mapbox-gl": "
|
|
182
|
-
"mixpanel-browser": "
|
|
183
|
-
"observable-fns": "
|
|
184
|
-
"pako": "
|
|
185
|
-
"query-string": "
|
|
186
|
-
"react": "
|
|
187
|
-
"react-dom": "
|
|
188
|
-
"react-is": "
|
|
189
|
-
"react-router-dom": "
|
|
190
|
-
"recharts": "
|
|
191
|
-
"spark-md5": "
|
|
192
|
-
"store2": "
|
|
193
|
-
"wasm-feature-detect": "
|
|
194
|
-
"webextension-polyfill": "
|
|
195
|
-
"zod": "
|
|
126
|
+
"@bitauth/libauth": "~3.0",
|
|
127
|
+
"@metamask/providers": "^22.1",
|
|
128
|
+
"@mui/icons-material": "~9.0",
|
|
129
|
+
"@mui/material": "~9.0",
|
|
130
|
+
"@opentelemetry/api": "^1.9",
|
|
131
|
+
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
132
|
+
"@react-spring/web": "~10.0",
|
|
133
|
+
"@scure/base": "~2.2",
|
|
134
|
+
"@scure/bip39": "~2.2",
|
|
135
|
+
"@xylabs/geo": "^5.1",
|
|
136
|
+
"@xylabs/pixel": "~5.1",
|
|
137
|
+
"@xylabs/react-button": "~8.0",
|
|
138
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
139
|
+
"@xylabs/react-link": "~8.0",
|
|
140
|
+
"@xylabs/react-pixel": "~8.0",
|
|
141
|
+
"@xylabs/react-theme": "~8.0",
|
|
142
|
+
"@xylabs/sdk-js": "^5.1",
|
|
143
|
+
"@xylabs/threads": "~5.1",
|
|
144
|
+
"@xyo-network/account": "~5.6",
|
|
145
|
+
"@xyo-network/account-model": "^5.6",
|
|
146
|
+
"@xyo-network/api": "~5.6",
|
|
147
|
+
"@xyo-network/api-models": "~5.6",
|
|
148
|
+
"@xyo-network/boundwitness-builder": "^5.6",
|
|
149
|
+
"@xyo-network/boundwitness-model": "^5.6",
|
|
150
|
+
"@xyo-network/boundwitness-validator": "^5.6",
|
|
151
|
+
"@xyo-network/boundwitness-wrapper": "~5.6",
|
|
152
|
+
"@xyo-network/config-payload-plugin": "~5.6",
|
|
153
|
+
"@xyo-network/diviner-hash-lease": "^5.6",
|
|
154
|
+
"@xyo-network/huri": "^5.6",
|
|
155
|
+
"@xyo-network/manifest-model": "~5.6",
|
|
156
|
+
"@xyo-network/module-model": "^5.6",
|
|
157
|
+
"@xyo-network/payload-builder": "^5.6",
|
|
158
|
+
"@xyo-network/payload-model": "^5.6",
|
|
159
|
+
"@xyo-network/payload-plugin": "^5.6",
|
|
160
|
+
"@xyo-network/payload-wrapper": "~5.6",
|
|
161
|
+
"@xyo-network/query-payload-plugin": "~5.6",
|
|
162
|
+
"@xyo-network/sdk-js": "^5.6",
|
|
163
|
+
"@xyo-network/sdk-protocol-js": "~5.6",
|
|
164
|
+
"@xyo-network/wallet": "~5.6",
|
|
165
|
+
"@xyo-network/wallet-model": "^5.6",
|
|
166
|
+
"@xyo-network/witness-model": "^5.6",
|
|
167
|
+
"@xyo-network/xns-record-payloadset-plugins": "~5.5",
|
|
168
|
+
"ajv": "^8.20",
|
|
169
|
+
"async-mutex": "^0.5",
|
|
170
|
+
"bn.js": "^5.2",
|
|
171
|
+
"bowser": "^2.14",
|
|
172
|
+
"buffer": "^6.0",
|
|
173
|
+
"chalk": "^5.6",
|
|
174
|
+
"debug": "~4.4",
|
|
175
|
+
"ethers": "^6.16",
|
|
176
|
+
"fast-deep-equal": "~3.1",
|
|
177
|
+
"hash-wasm": "~4.12",
|
|
178
|
+
"idb": "^8.0",
|
|
179
|
+
"js-cookie": "~3.0",
|
|
180
|
+
"lru-cache": "^11.3",
|
|
181
|
+
"mapbox-gl": "^3.23",
|
|
182
|
+
"mixpanel-browser": "~2.78",
|
|
183
|
+
"observable-fns": "~0.6",
|
|
184
|
+
"pako": "^2.1",
|
|
185
|
+
"query-string": "~9.3",
|
|
186
|
+
"react": "^19.2",
|
|
187
|
+
"react-dom": "^19.2",
|
|
188
|
+
"react-is": "^19.2",
|
|
189
|
+
"react-router-dom": "^7.15",
|
|
190
|
+
"recharts": "~3.8",
|
|
191
|
+
"spark-md5": "~3.0",
|
|
192
|
+
"store2": "~2.14",
|
|
193
|
+
"wasm-feature-detect": "~1.8",
|
|
194
|
+
"webextension-polyfill": "^0.12",
|
|
195
|
+
"zod": "^4.4"
|
|
196
196
|
},
|
|
197
197
|
"publishConfig": {
|
|
198
198
|
"access": "public"
|