@xyo-network/react-share 3.0.4 → 3.0.5

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.
@@ -136,9 +136,10 @@ var HideParentsFlexbox = /* @__PURE__ */ __name(({ children, ...props }) => {
136
136
  }, children);
137
137
  }, "HideParentsFlexbox");
138
138
 
139
- // src/out/CopyLinkTextField.tsx
140
- import { InputAdornment, TextField } from "@mui/material";
141
- import React7, { useCallback, useState as useState3 } from "react";
139
+ // src/out/CopyLinkStack.tsx
140
+ import { Cancel } from "@mui/icons-material";
141
+ import { Stack, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
142
+ import React7, { useCallback, useMemo, useState as useState3 } from "react";
142
143
 
143
144
  // src/out/CopyIconButton.tsx
144
145
  import { CopyAllRounded } from "@mui/icons-material";
@@ -175,41 +176,6 @@ var CopyIconButton = /* @__PURE__ */ __name(({ onCopyToClipboard, shareLinkName,
175
176
  }, /* @__PURE__ */ React6.createElement(CopyAllRounded, null)));
176
177
  }, "CopyIconButton");
177
178
 
178
- // src/out/CopyLinkTextField.tsx
179
- var CopyLinkTextField = /* @__PURE__ */ __name(({ shareLinkName, shareUrl, ...props }) => {
180
- const [error, setError] = useState3();
181
- const onCopyToClipboard = useCallback((error2) => {
182
- setError(error2);
183
- }, []);
184
- return /* @__PURE__ */ React7.createElement(TextField, {
185
- disabled: true,
186
- error: !!error,
187
- helperText: error?.message,
188
- // to override the color that appears when it's a text field, only on dark mode
189
- sx: {
190
- input: {
191
- WebkitTextFillColor: "lightgray !important"
192
- }
193
- },
194
- InputProps: {
195
- endAdornment: /* @__PURE__ */ React7.createElement(InputAdornment, {
196
- position: "end"
197
- }, /* @__PURE__ */ React7.createElement(CopyIconButton, {
198
- shareLinkName,
199
- shareUrl,
200
- onCopyToClipboard
201
- }))
202
- },
203
- value: shareUrl,
204
- ...props
205
- });
206
- }, "CopyLinkTextField");
207
-
208
- // src/out/CopyLinkTypography.tsx
209
- import { Cancel } from "@mui/icons-material";
210
- import { Stack, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
211
- import React8, { useCallback as useCallback2, useMemo, useState as useState4 } from "react";
212
-
213
179
  // src/out/lib/AnimatedGradientTypography.tsx
214
180
  import { keyframes, styled, Typography } from "@mui/material";
215
181
  var moveBg = keyframes(`
@@ -222,37 +188,39 @@ var moveBg = keyframes(`
222
188
  `);
223
189
  var AnimatedGradientTypography = styled(Typography, {
224
190
  name: "AnimatedGradientTypography"
225
- })(({ theme }) => ({
226
- // Set the color variables for the gradient
227
- "--color-one": theme.palette.secondary.dark,
228
- "--color-two": theme.palette.primary.light,
229
- // set the gradient so it has the same start and end color for looping effect
230
- "background": `linear-gradient(
231
- .25turn,
232
- var(--color-one),
233
- var(--color-two),
234
- var(--color-one)
235
- )`,
236
- // Set the text color to transparent so the gradient shows through
237
- "color": "transparent",
238
- // Clip the background to the text shape
239
- "backgroundClip": "text",
240
- // Set the background size to 800% so we don't see the third color initially creating the looping effect
241
- "backgroundSize": "800%",
242
- // Set the text to bold so the gradient is more visible
243
- "fontWeight": "bold",
244
- // Set the animation
245
- "@media (prefers-reduced-motion: no-preference)": {
246
- animationName: moveBg,
247
- animationDuration: "2s",
248
- animationIterationCount: "infinite"
249
- },
250
- // reset for users that prefer reduced motion
251
- "@media (prefers-reduced-motion)": {
252
- background: "none",
253
- color: theme.palette.text.primary
254
- }
255
- }));
191
+ })(({ theme, color1, color2 }) => {
192
+ return {
193
+ // Set the color variables for the gradient
194
+ "--color-one": color1 ?? theme.palette.secondary.dark,
195
+ "--color-two": color2 ?? theme.palette.primary.light,
196
+ // set the gradient so it has the same start and end color for looping effect
197
+ "background": `linear-gradient(
198
+ .25turn,
199
+ var(--color-one),
200
+ var(--color-two),
201
+ var(--color-one)
202
+ )`,
203
+ // Set the text color to transparent so the gradient shows through
204
+ "color": "transparent",
205
+ // Clip the background to the text shape
206
+ "backgroundClip": "text",
207
+ // Set the background size to 800% so we don't see the third color initially creating the looping effect
208
+ "backgroundSize": "800%",
209
+ // Set the text to bold so the gradient is more visible
210
+ "fontWeight": "bold",
211
+ // Set the animation
212
+ "@media (prefers-reduced-motion: no-preference)": {
213
+ animationName: moveBg,
214
+ animationDuration: "2s",
215
+ animationIterationCount: "infinite"
216
+ },
217
+ // reset for users that prefer reduced motion
218
+ "@media (prefers-reduced-motion)": {
219
+ background: "none",
220
+ color: theme.palette.text.primary
221
+ }
222
+ };
223
+ });
256
224
 
257
225
  // src/out/lib/splitAroundSubstring.ts
258
226
  var splitAroundSubstring = /* @__PURE__ */ __name((path, substring) => {
@@ -270,10 +238,10 @@ var splitAroundSubstring = /* @__PURE__ */ __name((path, substring) => {
270
238
  ];
271
239
  }, "splitAroundSubstring");
272
240
 
273
- // src/out/CopyLinkTypography.tsx
274
- var CopyLinkTypography = /* @__PURE__ */ __name(({ shareLinkName, shareUrl, xnsName: xnsNameProp, ...props }) => {
275
- const [error, setError] = useState4();
276
- const onCopyToClipboard = useCallback2((error2) => {
241
+ // src/out/CopyLinkStack.tsx
242
+ var CopyLinkStack = /* @__PURE__ */ __name(({ shareLinkName, shareUrl, xnsName: xnsNameProp, xnsEndColor, xnsStartColor, ...props }) => {
243
+ const [error, setError] = useState3();
244
+ const onCopyToClipboard = useCallback((error2) => {
277
245
  setError(error2);
278
246
  }, []);
279
247
  const parsedXnsName = useMemo(() => {
@@ -287,48 +255,83 @@ var CopyLinkTypography = /* @__PURE__ */ __name(({ shareLinkName, shareUrl, xnsN
287
255
  }
288
256
  }, []);
289
257
  const [part1, xnsName, part3] = parsedXnsName || [];
290
- return /* @__PURE__ */ React8.createElement(Stack, {
258
+ return /* @__PURE__ */ React7.createElement(Stack, {
291
259
  direction: "row",
292
260
  alignItems: "center",
293
- gap: 0.25
294
- }, xnsName ? /* @__PURE__ */ React8.createElement(Stack, {
295
- direction: "row"
296
- }, /* @__PURE__ */ React8.createElement(Typography2, {
261
+ gap: 0.25,
262
+ ...props
263
+ }, xnsName ? /* @__PURE__ */ React7.createElement(Stack, {
264
+ direction: "row",
265
+ maxWidth: "100%",
266
+ sx: {
267
+ overflowX: "auto"
268
+ }
269
+ }, /* @__PURE__ */ React7.createElement(Typography2, {
297
270
  sx: {
298
271
  display: "inline-flex"
299
- },
300
- ...props
301
- }, part1), /* @__PURE__ */ React8.createElement(AnimatedGradientTypography, {
272
+ }
273
+ }, part1), /* @__PURE__ */ React7.createElement(AnimatedGradientTypography, {
274
+ color1: xnsStartColor,
275
+ color2: xnsEndColor,
302
276
  sx: {
303
277
  display: "inline-flex"
304
- },
305
- ...props
306
- }, xnsName), /* @__PURE__ */ React8.createElement(Typography2, {
278
+ }
279
+ }, xnsName), /* @__PURE__ */ React7.createElement(Typography2, {
307
280
  sx: {
308
281
  display: "inline-flex"
309
- },
310
- ...props
311
- }, part3)) : /* @__PURE__ */ React8.createElement(Typography2, {
282
+ }
283
+ }, part3)) : /* @__PURE__ */ React7.createElement(Typography2, {
312
284
  sx: {
313
285
  display: "inline-flex"
314
- },
315
- ...props
316
- }, shareUrl), /* @__PURE__ */ React8.createElement(CopyIconButton, {
286
+ }
287
+ }, shareUrl), /* @__PURE__ */ React7.createElement(CopyIconButton, {
317
288
  onCopyToClipboard,
318
289
  shareLinkName,
319
290
  shareUrl,
320
291
  sx: {
321
292
  display: "inline-flex"
322
293
  }
323
- }), error ? /* @__PURE__ */ React8.createElement(Tooltip2, {
294
+ }), error ? /* @__PURE__ */ React7.createElement(Tooltip2, {
324
295
  title: error.message
325
- }, /* @__PURE__ */ React8.createElement(Cancel, {
296
+ }, /* @__PURE__ */ React7.createElement(Cancel, {
326
297
  color: "error",
327
298
  sx: {
328
299
  display: "inline-flex"
329
300
  }
330
301
  })) : null);
331
- }, "CopyLinkTypography");
302
+ }, "CopyLinkStack");
303
+
304
+ // src/out/CopyLinkTextField.tsx
305
+ import { InputAdornment, TextField } from "@mui/material";
306
+ import React8, { useCallback as useCallback2, useState as useState4 } from "react";
307
+ var CopyLinkTextField = /* @__PURE__ */ __name(({ shareLinkName, shareUrl, ...props }) => {
308
+ const [error, setError] = useState4();
309
+ const onCopyToClipboard = useCallback2((error2) => {
310
+ setError(error2);
311
+ }, []);
312
+ return /* @__PURE__ */ React8.createElement(TextField, {
313
+ disabled: true,
314
+ error: !!error,
315
+ helperText: error?.message,
316
+ // to override the color that appears when it's a text field, only on dark mode
317
+ sx: {
318
+ input: {
319
+ WebkitTextFillColor: "lightgray !important"
320
+ }
321
+ },
322
+ InputProps: {
323
+ endAdornment: /* @__PURE__ */ React8.createElement(InputAdornment, {
324
+ position: "end"
325
+ }, /* @__PURE__ */ React8.createElement(CopyIconButton, {
326
+ shareLinkName,
327
+ shareUrl,
328
+ onCopyToClipboard
329
+ }))
330
+ },
331
+ value: shareUrl,
332
+ ...props
333
+ });
334
+ }, "CopyLinkTextField");
332
335
 
333
336
  // src/out/Dialog.tsx
334
337
  import { Dialog, DialogActions, DialogContent, DialogTitle, Stack as Stack2, Typography as Typography3 } from "@mui/material";
@@ -472,8 +475,8 @@ var SocialButtonsFlexbox = /* @__PURE__ */ __name(({ shareUrl, ...props }) => {
472
475
  }, "Share on Facebook")) : null));
473
476
  }, "SocialButtonsFlexbox");
474
477
  export {
478
+ CopyLinkStack,
475
479
  CopyLinkTextField,
476
- CopyLinkTypography,
477
480
  DynamicShareImage,
478
481
  FacebookSvgIcon,
479
482
  GenerateShareLinkButton,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/button/ShareButton.tsx","../../src/icons/social/Facebook.tsx","../../src/icons/social/XTwitter.tsx","../../src/meta-server/dynamic-share/DynamicShareImage.tsx","../../src/meta-server/live-share/HideParentsFlexbox.tsx","../../src/out/CopyLinkTextField.tsx","../../src/out/CopyIconButton.tsx","../../src/out/CopyLinkTypography.tsx","../../src/out/lib/AnimatedGradientTypography.tsx","../../src/out/lib/splitAroundSubstring.ts","../../src/out/Dialog.tsx","../../src/out/Explanation.tsx","../../src/out/GenerateShareLinkButton.tsx","../../src/out/HeadingFlexbox.tsx","../../src/out/SocialButtonsFlexbox.tsx"],"sourcesContent":["import {\n Facebook as FacebookIcon, Share as ShareIcon, Twitter as TwitterIcon,\n} from '@mui/icons-material'\nimport { Popover } from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport React, { useRef, useState } from 'react'\n\nexport interface ShareButtonProps extends ButtonExProps {\n prepared?: boolean\n shareLink?: string\n}\n\nexport const ShareButton: React.FC<ShareButtonProps> = ({\n prepared = true, shareLink, ...props\n}) => {\n const [expanded, setExpanded] = useState(false)\n const anchorRef = useRef(null)\n const link = shareLink ?? window.location.href\n\n return (\n <FlexRow gap={1} ref={anchorRef}>\n <ButtonEx\n variant=\"text\"\n minWidth={32}\n size=\"small\"\n disabled={!prepared}\n onClick={() => {\n setExpanded(true)\n }}\n {...props}\n >\n <ShareIcon htmlColor=\"gray\" fontSize=\"small\" />\n </ButtonEx>\n <Popover open={prepared ? expanded : false} anchorEl={anchorRef.current} onClose={() => setExpanded(false)} transitionDuration={500}>\n <FlexRow gap={0.5} padding={0.5}>\n <LinkEx\n lineHeight={0}\n style={{ color: '#1da1f2' }}\n onClick={() => {\n window.open(`https://twitter.com/intent/tweet?url=${encodeURIComponent(link)}`)\n setExpanded(false)\n }}\n >\n <TwitterIcon fontSize=\"small\" />\n </LinkEx>\n <LinkEx\n lineHeight={0}\n style={{ color: '#4267b2' }}\n onClick={() => {\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(link)}`)\n setExpanded(false)\n }}\n >\n <FacebookIcon fontSize=\"small\" />\n </LinkEx>\n </FlexRow>\n </Popover>\n </FlexRow>\n )\n}\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const FacebookSvgIcon = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"800\" width=\"1200\" viewBox=\"-204.79995 -341.33325 1774.9329 2047.9995\">\n <path d=\"M1365.333 682.667C1365.333 305.64 1059.693 0 682.667 0 305.64 0 0 305.64 0 682.667c0 340.738 249.641 623.16 576 674.373V880H402.667V682.667H576v-150.4c0-171.094 101.917-265.6 257.853-265.6 74.69 0 152.814 13.333 152.814 13.333v168h-86.083c-84.804 0-111.25 52.623-111.25 106.61v128.057h189.333L948.4 880H789.333v477.04c326.359-51.213 576-333.635 576-674.373\" fill=\"#1877f2\" />\n <path d=\"M948.4 880l30.267-197.333H789.333V554.609C789.333 500.623 815.78 448 900.584 448h86.083V280s-78.124-13.333-152.814-13.333c-155.936 0-257.853 94.506-257.853 265.6v150.4H402.667V880H576v477.04a687.805 687.805 0 00106.667 8.293c36.288 0 71.91-2.84 106.666-8.293V880H948.4\" fill=\"#fff\" />\n </svg>\n , 'Facebook',\n)\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const XTwitterSvgIcon = createSvgIcon(\n <svg viewBox=\"0 0 1200 1227\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\" fill=\"white\" />\n </svg>\n , 'XTwitterSvgIcon',\n)\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\n\n/**\n * The props for the DynamicShareImage component.\n */\nexport interface DynamicShareImageProps {\n /**\n * The URL of the share image for the page.\n */\n image: string\n}\n\n/**\n * Used in conjunction with the XY Meta Server to dynamically set the share image for a page.\n */\nexport const DynamicShareImage: React.FC<DynamicShareImageProps> = ({ image }) => {\n return (\n <Helmet>\n <meta property=\"xyo:og:image\" content={image} />\n </Helmet>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport React, { useEffect } from 'react'\n\nexport const HideParentsFlexbox: React.FC<WithChildren & FlexBoxProps> = ({ children, ...props }) => {\n useEffect(() => {\n const style = document.createElement('style')\n document.head.append(style)\n style.innerHTML = `\n /** make all elements hidden */\n * {\n visibility: hidden;\n }\n\n /** move the preview area to the top of the page */\n #preview-area {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 9999;\n }\n\n /** make the preview area and all its children visible */\n #preview-area * {\n visibility: visible;\n }`\n\n return () => {\n style.remove()\n }\n }, [])\n\n return (\n <FlexGrowRow alignItems=\"stretch\" id=\"preview-area\" justifyContent=\"start\" {...props}>\n {children}\n </FlexGrowRow>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport { InputAdornment, TextField } from '@mui/material'\nimport React, { useCallback, useState } from 'react'\n\nimport { CopyIconButton } from './CopyIconButton.tsx'\n\nexport interface CopyLinkTextFieldProps extends StandardTextFieldProps {\n shareLinkName?: string\n shareUrl?: string\n}\n\nexport const CopyLinkTextField: React.FC<CopyLinkTextFieldProps> = ({\n shareLinkName, shareUrl, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const onCopyToClipboard = useCallback((error?: Error) => {\n setError(error)\n }, [])\n\n return (\n <TextField\n disabled\n error={!!error}\n helperText={error?.message}\n // to override the color that appears when it's a text field, only on dark mode\n sx={{ input: { WebkitTextFillColor: 'lightgray !important' } }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <CopyIconButton shareLinkName={shareLinkName} shareUrl={shareUrl} onCopyToClipboard={onCopyToClipboard} />\n </InputAdornment>\n ),\n }}\n value={shareUrl}\n {...props}\n />\n )\n}\n","import { CopyAllRounded } from '@mui/icons-material'\nimport {\n type ButtonProps, IconButton, Tooltip,\n} from '@mui/material'\nimport { forget } from '@xylabs/forget'\nimport React, { useState } from 'react'\n\nimport type { ShareLinkProps } from './lib/index.ts'\n\nexport interface CopyIconButtonProps extends ButtonProps, ShareLinkProps {\n onCopyToClipboard?: (error?: Error) => void\n}\n\nconst CopyLink = 'Copy Link'\nconst Copied = 'Copied!'\n\nexport const CopyIconButton: React.FC<CopyIconButtonProps> = ({\n onCopyToClipboard, shareLinkName, shareUrl, ...props\n}) => {\n const [copyTooltipTitle, setCopyToolTipTitle] = useState(CopyLink)\n\n const copyToClipboard = async (link?: string) => {\n if (link) {\n try {\n await navigator.clipboard.writeText(link)\n onCopyToClipboard?.()\n setCopyToolTipTitle(Copied)\n setTimeout(() => setCopyToolTipTitle(CopyLink), 2000)\n } catch (e) {\n const message = 'Error copying shareUrl to clipboard'\n console.error(message, e, link)\n onCopyToClipboard?.(new Error(message))\n }\n } else {\n console.warn('tried to copy shareUrl before it was generated')\n }\n }\n\n return (\n <Tooltip title={copyTooltipTitle}>\n <IconButton aria-label={`copy ${shareLinkName} link`} onClick={() => forget(copyToClipboard(shareUrl))} edge=\"end\" {...props}>\n <CopyAllRounded />\n </IconButton>\n </Tooltip>\n )\n}\n","import { Cancel } from '@mui/icons-material'\nimport type { TypographyProps } from '@mui/material'\nimport {\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { CopyIconButton } from './CopyIconButton.tsx'\nimport {\n AnimatedGradientTypography, type ShareLinkProps, splitAroundSubstring,\n} from './lib/index.ts'\n\nexport interface CopyLinkTypographyProps extends ShareLinkProps, TypographyProps {}\n\nexport const CopyLinkTypography: React.FC<CopyLinkTypographyProps> = ({\n shareLinkName, shareUrl, xnsName: xnsNameProp, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const onCopyToClipboard = useCallback((error?: Error) => {\n setError(error)\n }, [])\n\n const parsedXnsName = useMemo(() => {\n if (shareUrl && xnsNameProp) {\n try {\n const parts = splitAroundSubstring(shareUrl, xnsNameProp)\n return parts\n } catch (e) {\n setError(e as Error)\n }\n }\n }, [])\n\n const [part1, xnsName, part3] = parsedXnsName || []\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.25}>\n {xnsName\n ? (\n <Stack direction=\"row\">\n <Typography sx={{ display: 'inline-flex' }} {...props}>{part1}</Typography>\n <AnimatedGradientTypography sx={{ display: 'inline-flex' }} {...props}>{xnsName}</AnimatedGradientTypography>\n <Typography sx={{ display: 'inline-flex' }} {...props}>{part3}</Typography>\n </Stack>\n )\n : <Typography sx={{ display: 'inline-flex' }} {...props}>{shareUrl}</Typography>}\n <CopyIconButton onCopyToClipboard={onCopyToClipboard} shareLinkName={shareLinkName} shareUrl={shareUrl} sx={{ display: 'inline-flex' }} />\n {error ? <Tooltip title={error.message}><Cancel color=\"error\" sx={{ display: 'inline-flex' }} /></Tooltip> : null}\n </Stack>\n )\n}\n","import {\n keyframes, styled, Typography,\n} from '@mui/material'\n\n/**\n * Start the animation at 100% to give the gradient a left to right effect\n */\nconst moveBg = keyframes(`\n 0% {\n background-position: 100% 0%;\n }\n 100% {\n background-position: 0% 0%;\n }\n`)\n\n/**\n * Adapted from - https://codepen.io/web-dot-dev/pen/vYrGPNE\n */\nexport const AnimatedGradientTypography = styled(Typography, { name: 'AnimatedGradientTypography' })(({ theme }) => ({\n // Set the color variables for the gradient\n '--color-one': theme.palette.secondary.dark,\n '--color-two': theme.palette.primary.light,\n // set the gradient so it has the same start and end color for looping effect\n 'background': `linear-gradient(\n .25turn,\n var(--color-one),\n var(--color-two),\n var(--color-one)\n )`,\n // Set the text color to transparent so the gradient shows through\n 'color': 'transparent',\n // Clip the background to the text shape\n 'backgroundClip': 'text',\n // Set the background size to 800% so we don't see the third color initially creating the looping effect\n 'backgroundSize': '800%',\n // Set the text to bold so the gradient is more visible\n 'fontWeight': 'bold',\n // Set the animation\n '@media (prefers-reduced-motion: no-preference)': {\n animationName: moveBg,\n animationDuration: '2s',\n animationIterationCount: 'infinite',\n },\n // reset for users that prefer reduced motion\n '@media (prefers-reduced-motion)': {\n background: 'none',\n color: theme.palette.text.primary,\n },\n}))\n","export const splitAroundSubstring = (path: string, substring: string): [string, string, string] => {\n // Find the index of the substring\n const index = path.indexOf(substring)\n\n if (index === -1) {\n throw new Error(`XNS name \"${substring}\" not found in path.`)\n }\n\n // Extract the part before the substring\n const part1 = path.slice(0, index)\n\n // The substring itself is part2\n const part2 = substring\n\n // Extract the part after the substring\n const part3 = path.slice(index + substring.length)\n\n return [part1, part2, part3]\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Dialog, DialogActions, DialogContent, DialogTitle, Stack, Typography,\n} from '@mui/material'\nimport { FlexCol, FlexGrowCol } from '@xylabs/react-flexbox'\nimport type { ComponentType, ReactNode } from 'react'\nimport React from 'react'\n\nexport interface ShareOutDialogProps extends DialogProps {\n ShareOutDialogActions?: ComponentType<{ onClose?: () => void }>\n cardImg?: ReactNode\n shareOutDialogContent?: ReactNode\n subtitle?: string\n title?: string\n}\n\nexport const ShareOutDialog: React.FC<ShareOutDialogProps> = ({\n ShareOutDialogActions, cardImg, open, onClose, shareOutDialogContent, subtitle, title, ...props\n}) => {\n const handleClose = () => {\n onClose?.('', 'backdropClick')\n }\n\n return (\n <Dialog onClose={onClose} open={open} {...props}>\n <DialogTitle>\n <Stack direction=\"row\" spacing={2}>\n <FlexGrowCol alignItems=\"flex-start\" width=\"60%\">\n <Typography variant=\"h5\">{title}</Typography>\n <Typography variant=\"body1\">\n {' '}\n {subtitle}\n </Typography>\n </FlexGrowCol>\n <FlexGrowCol alignItems=\"flex-end\" width=\"40%\">\n {cardImg}\n </FlexGrowCol>\n </Stack>\n </DialogTitle>\n <DialogContent>\n {shareOutDialogContent}\n <FlexCol alignItems=\"stretch\">\n </FlexCol>\n </DialogContent>\n {ShareOutDialogActions ? <DialogActions><ShareOutDialogActions onClose={handleClose} /></DialogActions> : null}\n </Dialog>\n )\n}\n","import { InfoOutlined } from '@mui/icons-material'\nimport {\n Tooltip, Typography, useTheme,\n} from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface ShareOutExplanationProps {\n toolTipTitle?: string\n}\n\nexport const ShareOutExplanation: React.FC<ShareOutExplanationProps> = ({ toolTipTitle }) => {\n const theme = useTheme()\n // eslint-disable-next-line @stylistic/max-len\n const title = toolTipTitle ?? 'In order for your data to be publicly viewable, it needs to be saved to the XYO Network Public Archivist. Public data can be seen by your friends, and XYO can generate preview images for easier sharing on social media.'\n return (\n <>\n <FlexGrowRow alignItems=\"center\">\n <Typography variant=\"body2\" paddingRight={0.5}>\n What am I sharing?\n </Typography>\n <Tooltip\n title={title}\n placement=\"bottom\"\n >\n <InfoOutlined fontSize=\"small\" sx={{ fontSize: theme.typography.caption.fontSize }} />\n </Tooltip>\n </FlexGrowRow>\n </>\n )\n}\n","import type { ButtonProps } from '@mui/material'\nimport {\n Button, CircularProgress, styled,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface GenerateShareLinkButtonProps extends ButtonProps {\n loading?: boolean\n}\n\nexport const GenerateShareLinkButton: React.FC<GenerateShareLinkButtonProps> = ({\n children = 'Generate My Share Link', loading, ...props\n}) => {\n return (\n <Button\n variant=\"contained\"\n startIcon={loading ? <StyledCircularProgress size=\"small\" /> : null}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nconst StyledCircularProgress = styled(CircularProgress, { name: 'StyledCircularProgress' })(({ theme }) => ({\n // ensure the color of the spinner is the same as the button color\n color: theme.palette.getContrastText(theme.palette.primary.main),\n height: '20px',\n opacity: '.87',\n width: '20px',\n}))\n","import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface ShareOutHeadingFlexboxProps extends FlexBoxProps {\n shareLinkName?: string\n shareUrl?: string\n}\n\nexport const ShareOutHeadingFlexbox: React.FC<ShareOutHeadingFlexboxProps> = ({\n children, shareLinkName, shareUrl, ...props\n}) => {\n const GenerateShareLinkExplanation = \"When you generate your share link, we'll make a small amount of your data public so friends can check it out!\"\n\n return (\n <FlexGrowCol alignItems=\"flex-start\" paddingBottom={1} {...props}>\n <Typography variant=\"body1\" gutterBottom>\n <strong>Your Share Link</strong>\n </Typography>\n <Typography variant=\"body1\">\n {shareUrl ? `Use this link or the buttons below to share ${shareLinkName}` : GenerateShareLinkExplanation}\n </Typography>\n {children}\n </FlexGrowCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { FacebookSvgIcon, XTwitterSvgIcon } from '../icons/index.ts'\n\nexport interface SocialButtonsFlexboxProps extends FlexBoxProps {\n shareUrl?: string\n}\n\nexport const SocialButtonsFlexbox: React.FC<SocialButtonsFlexboxProps> = ({ shareUrl, ...props }) => {\n return (\n <FlexGrowCol alignItems=\"stretch\" paddingTop={2} {...props}>\n <Typography variant=\"body1\" gutterBottom>\n <strong>Share on Social Media</strong>\n </Typography>\n <FlexRow\n gap={0.5}\n sx={{ flexDirection: { md: 'row', xs: 'column' } }}\n >\n {shareUrl\n ? (\n <>\n <ButtonEx\n variant=\"contained\"\n style={{ backgroundColor: '#000', color: '#fff' }}\n onClick={() => {\n window.open(`https://twitter.com/intent/tweet?url=${encodeURIComponent(shareUrl)}`)\n }}\n startIcon={<XTwitterSvgIcon width=\"20px\" />}\n >\n Share on X (Twitter)\n </ButtonEx>\n <ButtonEx\n variant=\"contained\"\n style={{ backgroundColor: '#4267b2', color: '#fff' }}\n onClick={() => {\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(shareUrl)}`)\n }}\n startIcon={<FacebookSvgIcon />}\n >\n Share on Facebook\n </ButtonEx>\n </>\n )\n : null}\n </FlexRow>\n </FlexGrowCol>\n )\n}\n"],"mappings":"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","names":["Facebook","FacebookIcon","Share","ShareIcon","Twitter","TwitterIcon","Popover","ButtonEx","FlexRow","LinkEx","React","useRef","useState","ShareButton","prepared","shareLink","props","expanded","setExpanded","useState","anchorRef","useRef","link","window","location","href","FlexRow","gap","ref","ButtonEx","variant","minWidth","size","disabled","onClick","ShareIcon","htmlColor","fontSize","Popover","open","anchorEl","current","onClose","transitionDuration","padding","LinkEx","lineHeight","style","color","encodeURIComponent","TwitterIcon","FacebookIcon","createSvgIcon","React","FacebookSvgIcon","svg","xmlns","height","width","viewBox","path","d","fill","createSvgIcon","React","XTwitterSvgIcon","svg","viewBox","fill","xmlns","path","d","React","Helmet","DynamicShareImage","image","React","Helmet","meta","property","content","FlexGrowRow","React","useEffect","HideParentsFlexbox","children","props","useEffect","style","document","createElement","head","append","innerHTML","remove","React","FlexGrowRow","alignItems","id","justifyContent","InputAdornment","TextField","React","useCallback","useState","CopyAllRounded","IconButton","Tooltip","forget","React","useState","CopyLink","Copied","CopyIconButton","onCopyToClipboard","shareLinkName","shareUrl","props","copyTooltipTitle","setCopyToolTipTitle","useState","copyToClipboard","link","navigator","clipboard","writeText","setTimeout","e","message","console","error","Error","warn","React","Tooltip","title","IconButton","aria-label","onClick","forget","edge","CopyAllRounded","CopyLinkTextField","shareLinkName","shareUrl","props","error","setError","useState","onCopyToClipboard","useCallback","React","TextField","disabled","helperText","message","sx","input","WebkitTextFillColor","InputProps","endAdornment","InputAdornment","position","CopyIconButton","value","Cancel","Stack","Tooltip","Typography","React","useCallback","useMemo","useState","keyframes","styled","Typography","moveBg","AnimatedGradientTypography","name","theme","palette","secondary","dark","primary","light","animationName","animationDuration","animationIterationCount","background","color","text","splitAroundSubstring","path","substring","index","indexOf","Error","part1","slice","part2","part3","length","CopyLinkTypography","shareLinkName","shareUrl","xnsName","xnsNameProp","props","error","setError","useState","onCopyToClipboard","useCallback","parsedXnsName","useMemo","parts","splitAroundSubstring","e","part1","part3","React","Stack","direction","alignItems","gap","Typography","sx","display","AnimatedGradientTypography","CopyIconButton","Tooltip","title","message","Cancel","color","Dialog","DialogActions","DialogContent","DialogTitle","Stack","Typography","FlexCol","FlexGrowCol","React","ShareOutDialog","ShareOutDialogActions","cardImg","open","onClose","shareOutDialogContent","subtitle","title","props","handleClose","React","Dialog","DialogTitle","Stack","direction","spacing","FlexGrowCol","alignItems","width","Typography","variant","DialogContent","FlexCol","DialogActions","InfoOutlined","Tooltip","Typography","useTheme","FlexGrowRow","React","ShareOutExplanation","toolTipTitle","theme","useTheme","title","React","FlexGrowRow","alignItems","Typography","variant","paddingRight","Tooltip","placement","InfoOutlined","fontSize","sx","typography","caption","Button","CircularProgress","styled","React","GenerateShareLinkButton","children","loading","props","React","Button","variant","startIcon","StyledCircularProgress","size","styled","CircularProgress","name","theme","color","palette","getContrastText","primary","main","height","opacity","width","Typography","FlexGrowCol","React","ShareOutHeadingFlexbox","children","shareLinkName","shareUrl","props","GenerateShareLinkExplanation","React","FlexGrowCol","alignItems","paddingBottom","Typography","variant","gutterBottom","strong","Typography","ButtonEx","FlexGrowCol","FlexRow","React","SocialButtonsFlexbox","shareUrl","props","React","FlexGrowCol","alignItems","paddingTop","Typography","variant","gutterBottom","strong","FlexRow","gap","sx","flexDirection","md","xs","ButtonEx","style","backgroundColor","color","onClick","window","open","encodeURIComponent","startIcon","XTwitterSvgIcon","width","FacebookSvgIcon"]}
1
+ {"version":3,"sources":["../../src/button/ShareButton.tsx","../../src/icons/social/Facebook.tsx","../../src/icons/social/XTwitter.tsx","../../src/meta-server/dynamic-share/DynamicShareImage.tsx","../../src/meta-server/live-share/HideParentsFlexbox.tsx","../../src/out/CopyLinkStack.tsx","../../src/out/CopyIconButton.tsx","../../src/out/lib/AnimatedGradientTypography.tsx","../../src/out/lib/splitAroundSubstring.ts","../../src/out/CopyLinkTextField.tsx","../../src/out/Dialog.tsx","../../src/out/Explanation.tsx","../../src/out/GenerateShareLinkButton.tsx","../../src/out/HeadingFlexbox.tsx","../../src/out/SocialButtonsFlexbox.tsx"],"sourcesContent":["import {\n Facebook as FacebookIcon, Share as ShareIcon, Twitter as TwitterIcon,\n} from '@mui/icons-material'\nimport { Popover } from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport React, { useRef, useState } from 'react'\n\nexport interface ShareButtonProps extends ButtonExProps {\n prepared?: boolean\n shareLink?: string\n}\n\nexport const ShareButton: React.FC<ShareButtonProps> = ({\n prepared = true, shareLink, ...props\n}) => {\n const [expanded, setExpanded] = useState(false)\n const anchorRef = useRef(null)\n const link = shareLink ?? window.location.href\n\n return (\n <FlexRow gap={1} ref={anchorRef}>\n <ButtonEx\n variant=\"text\"\n minWidth={32}\n size=\"small\"\n disabled={!prepared}\n onClick={() => {\n setExpanded(true)\n }}\n {...props}\n >\n <ShareIcon htmlColor=\"gray\" fontSize=\"small\" />\n </ButtonEx>\n <Popover open={prepared ? expanded : false} anchorEl={anchorRef.current} onClose={() => setExpanded(false)} transitionDuration={500}>\n <FlexRow gap={0.5} padding={0.5}>\n <LinkEx\n lineHeight={0}\n style={{ color: '#1da1f2' }}\n onClick={() => {\n window.open(`https://twitter.com/intent/tweet?url=${encodeURIComponent(link)}`)\n setExpanded(false)\n }}\n >\n <TwitterIcon fontSize=\"small\" />\n </LinkEx>\n <LinkEx\n lineHeight={0}\n style={{ color: '#4267b2' }}\n onClick={() => {\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(link)}`)\n setExpanded(false)\n }}\n >\n <FacebookIcon fontSize=\"small\" />\n </LinkEx>\n </FlexRow>\n </Popover>\n </FlexRow>\n )\n}\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const FacebookSvgIcon = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"800\" width=\"1200\" viewBox=\"-204.79995 -341.33325 1774.9329 2047.9995\">\n <path d=\"M1365.333 682.667C1365.333 305.64 1059.693 0 682.667 0 305.64 0 0 305.64 0 682.667c0 340.738 249.641 623.16 576 674.373V880H402.667V682.667H576v-150.4c0-171.094 101.917-265.6 257.853-265.6 74.69 0 152.814 13.333 152.814 13.333v168h-86.083c-84.804 0-111.25 52.623-111.25 106.61v128.057h189.333L948.4 880H789.333v477.04c326.359-51.213 576-333.635 576-674.373\" fill=\"#1877f2\" />\n <path d=\"M948.4 880l30.267-197.333H789.333V554.609C789.333 500.623 815.78 448 900.584 448h86.083V280s-78.124-13.333-152.814-13.333c-155.936 0-257.853 94.506-257.853 265.6v150.4H402.667V880H576v477.04a687.805 687.805 0 00106.667 8.293c36.288 0 71.91-2.84 106.666-8.293V880H948.4\" fill=\"#fff\" />\n </svg>\n , 'Facebook',\n)\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const XTwitterSvgIcon = createSvgIcon(\n <svg viewBox=\"0 0 1200 1227\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z\" fill=\"white\" />\n </svg>\n , 'XTwitterSvgIcon',\n)\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\n\n/**\n * The props for the DynamicShareImage component.\n */\nexport interface DynamicShareImageProps {\n /**\n * The URL of the share image for the page.\n */\n image: string\n}\n\n/**\n * Used in conjunction with the XY Meta Server to dynamically set the share image for a page.\n */\nexport const DynamicShareImage: React.FC<DynamicShareImageProps> = ({ image }) => {\n return (\n <Helmet>\n <meta property=\"xyo:og:image\" content={image} />\n </Helmet>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport React, { useEffect } from 'react'\n\nexport const HideParentsFlexbox: React.FC<WithChildren & FlexBoxProps> = ({ children, ...props }) => {\n useEffect(() => {\n const style = document.createElement('style')\n document.head.append(style)\n style.innerHTML = `\n /** make all elements hidden */\n * {\n visibility: hidden;\n }\n\n /** move the preview area to the top of the page */\n #preview-area {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n z-index: 9999;\n }\n\n /** make the preview area and all its children visible */\n #preview-area * {\n visibility: visible;\n }`\n\n return () => {\n style.remove()\n }\n }, [])\n\n return (\n <FlexGrowRow alignItems=\"stretch\" id=\"preview-area\" justifyContent=\"start\" {...props}>\n {children}\n </FlexGrowRow>\n )\n}\n","import { Cancel } from '@mui/icons-material'\nimport type { StackProps, TypographyProps } from '@mui/material'\nimport {\n Stack,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { CopyIconButton } from './CopyIconButton.tsx'\nimport {\n AnimatedGradientTypography, type ShareLinkProps, splitAroundSubstring,\n} from './lib/index.ts'\n\nexport interface CopyLinkStackProps extends ShareLinkProps, StackProps {\n xnsEndColor?: string\n xnsStartColor?: string\n}\n\nexport const CopyLinkStack: React.FC<CopyLinkStackProps> = ({\n shareLinkName, shareUrl, xnsName: xnsNameProp, xnsEndColor, xnsStartColor, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const onCopyToClipboard = useCallback((error?: Error) => {\n setError(error)\n }, [])\n\n const parsedXnsName = useMemo(() => {\n if (shareUrl && xnsNameProp) {\n try {\n const parts = splitAroundSubstring(shareUrl, xnsNameProp)\n return parts\n } catch (e) {\n setError(e as Error)\n }\n }\n }, [])\n\n const [part1, xnsName, part3] = parsedXnsName || []\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" gap={0.25} {...props}>\n {xnsName\n ? (\n <Stack direction=\"row\" maxWidth=\"100%\" sx={{ overflowX: 'auto' }}>\n <Typography sx={{ display: 'inline-flex' }}>{part1}</Typography>\n <AnimatedGradientTypography color1={xnsStartColor} color2={xnsEndColor} sx={{ display: 'inline-flex' }}>{xnsName}</AnimatedGradientTypography>\n <Typography sx={{ display: 'inline-flex' }}>{part3}</Typography>\n </Stack>\n )\n : <Typography sx={{ display: 'inline-flex' }}>{shareUrl}</Typography>}\n <CopyIconButton onCopyToClipboard={onCopyToClipboard} shareLinkName={shareLinkName} shareUrl={shareUrl} sx={{ display: 'inline-flex' }} />\n {error ? <Tooltip title={error.message}><Cancel color=\"error\" sx={{ display: 'inline-flex' }} /></Tooltip> : null}\n </Stack>\n )\n}\n","import { CopyAllRounded } from '@mui/icons-material'\nimport {\n type ButtonProps, IconButton, Tooltip,\n} from '@mui/material'\nimport { forget } from '@xylabs/forget'\nimport React, { useState } from 'react'\n\nimport type { ShareLinkProps } from './lib/index.ts'\n\nexport interface CopyIconButtonProps extends ButtonProps, ShareLinkProps {\n onCopyToClipboard?: (error?: Error) => void\n}\n\nconst CopyLink = 'Copy Link'\nconst Copied = 'Copied!'\n\nexport const CopyIconButton: React.FC<CopyIconButtonProps> = ({\n onCopyToClipboard, shareLinkName, shareUrl, ...props\n}) => {\n const [copyTooltipTitle, setCopyToolTipTitle] = useState(CopyLink)\n\n const copyToClipboard = async (link?: string) => {\n if (link) {\n try {\n await navigator.clipboard.writeText(link)\n onCopyToClipboard?.()\n setCopyToolTipTitle(Copied)\n setTimeout(() => setCopyToolTipTitle(CopyLink), 2000)\n } catch (e) {\n const message = 'Error copying shareUrl to clipboard'\n console.error(message, e, link)\n onCopyToClipboard?.(new Error(message))\n }\n } else {\n console.warn('tried to copy shareUrl before it was generated')\n }\n }\n\n return (\n <Tooltip title={copyTooltipTitle}>\n <IconButton aria-label={`copy ${shareLinkName} link`} onClick={() => forget(copyToClipboard(shareUrl))} edge=\"end\" {...props}>\n <CopyAllRounded />\n </IconButton>\n </Tooltip>\n )\n}\n","import {\n keyframes, styled, Typography,\n} from '@mui/material'\n\n/**\n * Start the animation at 100% to give the gradient a left to right effect\n */\nconst moveBg = keyframes(`\n 0% {\n background-position: 100% 0%;\n }\n 100% {\n background-position: 0% 0%;\n }\n`)\n\n/**\n * Adapted from - https://codepen.io/web-dot-dev/pen/vYrGPNE\n */\nexport const AnimatedGradientTypography = styled(Typography, { name: 'AnimatedGradientTypography' })<{ color1?: string; color2?: string }>(({\n theme, color1, color2,\n}) => {\n return {\n // Set the color variables for the gradient\n '--color-one': color1 ?? theme.palette.secondary.dark,\n '--color-two': color2 ?? theme.palette.primary.light,\n // set the gradient so it has the same start and end color for looping effect\n 'background': `linear-gradient(\n .25turn,\n var(--color-one),\n var(--color-two),\n var(--color-one)\n )`,\n // Set the text color to transparent so the gradient shows through\n 'color': 'transparent',\n // Clip the background to the text shape\n 'backgroundClip': 'text',\n // Set the background size to 800% so we don't see the third color initially creating the looping effect\n 'backgroundSize': '800%',\n // Set the text to bold so the gradient is more visible\n 'fontWeight': 'bold',\n // Set the animation\n '@media (prefers-reduced-motion: no-preference)': {\n animationName: moveBg,\n animationDuration: '2s',\n animationIterationCount: 'infinite',\n },\n // reset for users that prefer reduced motion\n '@media (prefers-reduced-motion)': {\n background: 'none',\n color: theme.palette.text.primary,\n },\n }\n})\n","export const splitAroundSubstring = (path: string, substring: string): [string, string, string] => {\n // Find the index of the substring\n const index = path.indexOf(substring)\n\n if (index === -1) {\n throw new Error(`XNS name \"${substring}\" not found in path.`)\n }\n\n // Extract the part before the substring\n const part1 = path.slice(0, index)\n\n // The substring itself is part2\n const part2 = substring\n\n // Extract the part after the substring\n const part3 = path.slice(index + substring.length)\n\n return [part1, part2, part3]\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport { InputAdornment, TextField } from '@mui/material'\nimport React, { useCallback, useState } from 'react'\n\nimport { CopyIconButton } from './CopyIconButton.tsx'\n\nexport interface CopyLinkTextFieldProps extends StandardTextFieldProps {\n shareLinkName?: string\n shareUrl?: string\n}\n\nexport const CopyLinkTextField: React.FC<CopyLinkTextFieldProps> = ({\n shareLinkName, shareUrl, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const onCopyToClipboard = useCallback((error?: Error) => {\n setError(error)\n }, [])\n\n return (\n <TextField\n disabled\n error={!!error}\n helperText={error?.message}\n // to override the color that appears when it's a text field, only on dark mode\n sx={{ input: { WebkitTextFillColor: 'lightgray !important' } }}\n InputProps={{\n endAdornment: (\n <InputAdornment position=\"end\">\n <CopyIconButton shareLinkName={shareLinkName} shareUrl={shareUrl} onCopyToClipboard={onCopyToClipboard} />\n </InputAdornment>\n ),\n }}\n value={shareUrl}\n {...props}\n />\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Dialog, DialogActions, DialogContent, DialogTitle, Stack, Typography,\n} from '@mui/material'\nimport { FlexCol, FlexGrowCol } from '@xylabs/react-flexbox'\nimport type { ComponentType, ReactNode } from 'react'\nimport React from 'react'\n\nexport interface ShareOutDialogProps extends DialogProps {\n ShareOutDialogActions?: ComponentType<{ onClose?: () => void }>\n cardImg?: ReactNode\n shareOutDialogContent?: ReactNode\n subtitle?: string\n title?: string\n}\n\nexport const ShareOutDialog: React.FC<ShareOutDialogProps> = ({\n ShareOutDialogActions, cardImg, open, onClose, shareOutDialogContent, subtitle, title, ...props\n}) => {\n const handleClose = () => {\n onClose?.('', 'backdropClick')\n }\n\n return (\n <Dialog onClose={onClose} open={open} {...props}>\n <DialogTitle>\n <Stack direction=\"row\" spacing={2}>\n <FlexGrowCol alignItems=\"flex-start\" width=\"60%\">\n <Typography variant=\"h5\">{title}</Typography>\n <Typography variant=\"body1\">\n {' '}\n {subtitle}\n </Typography>\n </FlexGrowCol>\n <FlexGrowCol alignItems=\"flex-end\" width=\"40%\">\n {cardImg}\n </FlexGrowCol>\n </Stack>\n </DialogTitle>\n <DialogContent>\n {shareOutDialogContent}\n <FlexCol alignItems=\"stretch\">\n </FlexCol>\n </DialogContent>\n {ShareOutDialogActions ? <DialogActions><ShareOutDialogActions onClose={handleClose} /></DialogActions> : null}\n </Dialog>\n )\n}\n","import { InfoOutlined } from '@mui/icons-material'\nimport {\n Tooltip, Typography, useTheme,\n} from '@mui/material'\nimport { FlexGrowRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface ShareOutExplanationProps {\n toolTipTitle?: string\n}\n\nexport const ShareOutExplanation: React.FC<ShareOutExplanationProps> = ({ toolTipTitle }) => {\n const theme = useTheme()\n // eslint-disable-next-line @stylistic/max-len\n const title = toolTipTitle ?? 'In order for your data to be publicly viewable, it needs to be saved to the XYO Network Public Archivist. Public data can be seen by your friends, and XYO can generate preview images for easier sharing on social media.'\n return (\n <>\n <FlexGrowRow alignItems=\"center\">\n <Typography variant=\"body2\" paddingRight={0.5}>\n What am I sharing?\n </Typography>\n <Tooltip\n title={title}\n placement=\"bottom\"\n >\n <InfoOutlined fontSize=\"small\" sx={{ fontSize: theme.typography.caption.fontSize }} />\n </Tooltip>\n </FlexGrowRow>\n </>\n )\n}\n","import type { ButtonProps } from '@mui/material'\nimport {\n Button, CircularProgress, styled,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface GenerateShareLinkButtonProps extends ButtonProps {\n loading?: boolean\n}\n\nexport const GenerateShareLinkButton: React.FC<GenerateShareLinkButtonProps> = ({\n children = 'Generate My Share Link', loading, ...props\n}) => {\n return (\n <Button\n variant=\"contained\"\n startIcon={loading ? <StyledCircularProgress size=\"small\" /> : null}\n {...props}\n >\n {children}\n </Button>\n )\n}\n\nconst StyledCircularProgress = styled(CircularProgress, { name: 'StyledCircularProgress' })(({ theme }) => ({\n // ensure the color of the spinner is the same as the button color\n color: theme.palette.getContrastText(theme.palette.primary.main),\n height: '20px',\n opacity: '.87',\n width: '20px',\n}))\n","import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface ShareOutHeadingFlexboxProps extends FlexBoxProps {\n shareLinkName?: string\n shareUrl?: string\n}\n\nexport const ShareOutHeadingFlexbox: React.FC<ShareOutHeadingFlexboxProps> = ({\n children, shareLinkName, shareUrl, ...props\n}) => {\n const GenerateShareLinkExplanation = \"When you generate your share link, we'll make a small amount of your data public so friends can check it out!\"\n\n return (\n <FlexGrowCol alignItems=\"flex-start\" paddingBottom={1} {...props}>\n <Typography variant=\"body1\" gutterBottom>\n <strong>Your Share Link</strong>\n </Typography>\n <Typography variant=\"body1\">\n {shareUrl ? `Use this link or the buttons below to share ${shareLinkName}` : GenerateShareLinkExplanation}\n </Typography>\n {children}\n </FlexGrowCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport { FacebookSvgIcon, XTwitterSvgIcon } from '../icons/index.ts'\n\nexport interface SocialButtonsFlexboxProps extends FlexBoxProps {\n shareUrl?: string\n}\n\nexport const SocialButtonsFlexbox: React.FC<SocialButtonsFlexboxProps> = ({ shareUrl, ...props }) => {\n return (\n <FlexGrowCol alignItems=\"stretch\" paddingTop={2} {...props}>\n <Typography variant=\"body1\" gutterBottom>\n <strong>Share on Social Media</strong>\n </Typography>\n <FlexRow\n gap={0.5}\n sx={{ flexDirection: { md: 'row', xs: 'column' } }}\n >\n {shareUrl\n ? (\n <>\n <ButtonEx\n variant=\"contained\"\n style={{ backgroundColor: '#000', color: '#fff' }}\n onClick={() => {\n window.open(`https://twitter.com/intent/tweet?url=${encodeURIComponent(shareUrl)}`)\n }}\n startIcon={<XTwitterSvgIcon width=\"20px\" />}\n >\n Share on X (Twitter)\n </ButtonEx>\n <ButtonEx\n variant=\"contained\"\n style={{ backgroundColor: '#4267b2', color: '#fff' }}\n onClick={() => {\n window.open(`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(shareUrl)}`)\n }}\n startIcon={<FacebookSvgIcon />}\n >\n Share on Facebook\n </ButtonEx>\n </>\n )\n : null}\n </FlexRow>\n </FlexGrowCol>\n )\n}\n"],"mappings":"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","names":["Facebook","FacebookIcon","Share","ShareIcon","Twitter","TwitterIcon","Popover","ButtonEx","FlexRow","LinkEx","React","useRef","useState","ShareButton","prepared","shareLink","props","expanded","setExpanded","useState","anchorRef","useRef","link","window","location","href","FlexRow","gap","ref","ButtonEx","variant","minWidth","size","disabled","onClick","ShareIcon","htmlColor","fontSize","Popover","open","anchorEl","current","onClose","transitionDuration","padding","LinkEx","lineHeight","style","color","encodeURIComponent","TwitterIcon","FacebookIcon","createSvgIcon","React","FacebookSvgIcon","svg","xmlns","height","width","viewBox","path","d","fill","createSvgIcon","React","XTwitterSvgIcon","svg","viewBox","fill","xmlns","path","d","React","Helmet","DynamicShareImage","image","React","Helmet","meta","property","content","FlexGrowRow","React","useEffect","HideParentsFlexbox","children","props","useEffect","style","document","createElement","head","append","innerHTML","remove","React","FlexGrowRow","alignItems","id","justifyContent","Cancel","Stack","Tooltip","Typography","React","useCallback","useMemo","useState","CopyAllRounded","IconButton","Tooltip","forget","React","useState","CopyLink","Copied","CopyIconButton","onCopyToClipboard","shareLinkName","shareUrl","props","copyTooltipTitle","setCopyToolTipTitle","useState","copyToClipboard","link","navigator","clipboard","writeText","setTimeout","e","message","console","error","Error","warn","React","Tooltip","title","IconButton","aria-label","onClick","forget","edge","CopyAllRounded","keyframes","styled","Typography","moveBg","AnimatedGradientTypography","name","theme","color1","color2","palette","secondary","dark","primary","light","animationName","animationDuration","animationIterationCount","background","color","text","splitAroundSubstring","path","substring","index","indexOf","Error","part1","slice","part2","part3","length","CopyLinkStack","shareLinkName","shareUrl","xnsName","xnsNameProp","xnsEndColor","xnsStartColor","props","error","setError","useState","onCopyToClipboard","useCallback","parsedXnsName","useMemo","parts","splitAroundSubstring","e","part1","part3","React","Stack","direction","alignItems","gap","maxWidth","sx","overflowX","Typography","display","AnimatedGradientTypography","color1","color2","CopyIconButton","Tooltip","title","message","Cancel","color","InputAdornment","TextField","React","useCallback","useState","CopyLinkTextField","shareLinkName","shareUrl","props","error","setError","useState","onCopyToClipboard","useCallback","React","TextField","disabled","helperText","message","sx","input","WebkitTextFillColor","InputProps","endAdornment","InputAdornment","position","CopyIconButton","value","Dialog","DialogActions","DialogContent","DialogTitle","Stack","Typography","FlexCol","FlexGrowCol","React","ShareOutDialog","ShareOutDialogActions","cardImg","open","onClose","shareOutDialogContent","subtitle","title","props","handleClose","React","Dialog","DialogTitle","Stack","direction","spacing","FlexGrowCol","alignItems","width","Typography","variant","DialogContent","FlexCol","DialogActions","InfoOutlined","Tooltip","Typography","useTheme","FlexGrowRow","React","ShareOutExplanation","toolTipTitle","theme","useTheme","title","React","FlexGrowRow","alignItems","Typography","variant","paddingRight","Tooltip","placement","InfoOutlined","fontSize","sx","typography","caption","Button","CircularProgress","styled","React","GenerateShareLinkButton","children","loading","props","React","Button","variant","startIcon","StyledCircularProgress","size","styled","CircularProgress","name","theme","color","palette","getContrastText","primary","main","height","opacity","width","Typography","FlexGrowCol","React","ShareOutHeadingFlexbox","children","shareLinkName","shareUrl","props","GenerateShareLinkExplanation","React","FlexGrowCol","alignItems","paddingBottom","Typography","variant","gutterBottom","strong","Typography","ButtonEx","FlexGrowCol","FlexRow","React","SocialButtonsFlexbox","shareUrl","props","React","FlexGrowCol","alignItems","paddingTop","Typography","variant","gutterBottom","strong","FlexRow","gap","sx","flexDirection","md","xs","ButtonEx","style","backgroundColor","color","onClick","window","open","encodeURIComponent","startIcon","XTwitterSvgIcon","width","FacebookSvgIcon"]}
@@ -0,0 +1,9 @@
1
+ import type { StackProps } from '@mui/material';
2
+ import React from 'react';
3
+ import { type ShareLinkProps } from './lib/index.ts';
4
+ export interface CopyLinkStackProps extends ShareLinkProps, StackProps {
5
+ xnsEndColor?: string;
6
+ xnsStartColor?: string;
7
+ }
8
+ export declare const CopyLinkStack: React.FC<CopyLinkStackProps>;
9
+ //# sourceMappingURL=CopyLinkStack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyLinkStack.d.ts","sourceRoot":"","sources":["../../../src/out/CopyLinkStack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAA;AAMhE,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,EACuB,KAAK,cAAc,EAChD,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,kBAAmB,SAAQ,cAAc,EAAE,UAAU;IACpE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqCtD,CAAA"}
@@ -1,5 +1,5 @@
1
+ export * from './CopyLinkStack.tsx';
1
2
  export * from './CopyLinkTextField.tsx';
2
- export * from './CopyLinkTypography.tsx';
3
3
  export * from './Dialog.tsx';
4
4
  export * from './Explanation.tsx';
5
5
  export * from './GenerateShareLinkButton.tsx';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/out/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA;AACxC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/out/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,4BAA4B,CAAA"}
@@ -1,4 +1,7 @@
1
1
  export declare const AnimatedGradientTypography: import("@emotion/styled").StyledComponent<Pick<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent.js").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
2
2
  ref?: ((instance: HTMLSpanElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLSpanElement> | null | undefined;
3
- }, "className" | "style" | "classes" | "children" | "sx" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "variant" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping">, "className" | "style" | "classes" | "children" | "sx" | "tabIndex" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "color" | "columnGap" | "content" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "translate" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "variant" | "ref" | "slot" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "spellCheck" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme>, {}, {}>;
3
+ }, "className" | "style" | "classes" | "children" | "sx" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "color" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "variant" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping">, "className" | "style" | "classes" | "children" | "sx" | "tabIndex" | "border" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "bottom" | "boxSizing" | "color" | "columnGap" | "content" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "left" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "top" | "translate" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "flex" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "marginBlock" | "marginInline" | "overflow" | "padding" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "variant" | "ref" | "slot" | "title" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "autoFocus" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "hidden" | "id" | "lang" | "nonce" | "spellCheck" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "rel" | "resource" | "rev" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-braillelabel" | "aria-brailleroledescription" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-description" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onResize" | "onResizeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerLeave" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variantMapping"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material").Theme> & {
4
+ color1?: string;
5
+ color2?: string;
6
+ }, {}, {}>;
4
7
  //# sourceMappingURL=AnimatedGradientTypography.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedGradientTypography.d.ts","sourceRoot":"","sources":["../../../../src/out/lib/AnimatedGradientTypography.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,0BAA0B;;4vPA8BpC,CAAA"}
1
+ {"version":3,"file":"AnimatedGradientTypography.d.ts","sourceRoot":"","sources":["../../../../src/out/lib/AnimatedGradientTypography.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,0BAA0B;;;aAAyE,MAAM;aAAW,MAAM;UAkCrI,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-share",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -0,0 +1,41 @@
1
+ import type { Meta, StoryFn } from '@storybook/react'
2
+ import React from 'react'
3
+
4
+ import { CopyLinkStack } from './CopyLinkStack.tsx'
5
+
6
+ export default { title: 'modules/ShareOut/CopyLinkStack' } as Meta<typeof CopyLinkStack>
7
+
8
+ const Template: StoryFn<typeof CopyLinkStack> = (props) => {
9
+ return <CopyLinkStack {...props} />
10
+ }
11
+
12
+ const Default = Template.bind({})
13
+ Default.args = {}
14
+
15
+ const WithShareUrl = Template.bind({})
16
+ WithShareUrl.args = { shareUrl: 'https://google.com' }
17
+
18
+ const WithXnsName = Template.bind({})
19
+ WithXnsName.args = { shareUrl: 'https://beta.node.xyo.network.com/view/arietrouw.xyo/profile', xnsName: 'arietrouw.xyo' }
20
+
21
+ const WithXnsNameShortened = Template.bind({})
22
+ WithXnsNameShortened.args = {
23
+ shareUrl: 'https://beta.node.xyo.network.com/view/arietrouw.xyo/profile', xnsName: 'arietrouw.xyo', sx: { maxWidth: '200px' },
24
+ }
25
+
26
+ const WithXnsNameInSubdomain = Template.bind({})
27
+ WithXnsNameInSubdomain.args = { shareUrl: 'https://arietrouw.xyo.network', xnsName: 'arietrouw.xyo' }
28
+
29
+ const WithXnsNameCustomColors = Template.bind({})
30
+ WithXnsNameCustomColors.args = {
31
+ shareUrl: 'https://arietrouw.xyo.network', xnsName: 'arietrouw.xyo', xnsStartColor: 'blue', xnsEndColor: 'red',
32
+ }
33
+
34
+ const WithError = Template.bind({})
35
+ WithError.args = { shareUrl: 'https://google.com', xnsName: 'foo.xyo' }
36
+
37
+ export {
38
+ Default, WithError,
39
+ WithShareUrl, WithXnsName, WithXnsNameCustomColors,
40
+ WithXnsNameInSubdomain, WithXnsNameShortened,
41
+ }
@@ -1,5 +1,5 @@
1
1
  import { Cancel } from '@mui/icons-material'
2
- import type { TypographyProps } from '@mui/material'
2
+ import type { StackProps, TypographyProps } from '@mui/material'
3
3
  import {
4
4
  Stack,
5
5
  Tooltip,
@@ -14,10 +14,13 @@ import {
14
14
  AnimatedGradientTypography, type ShareLinkProps, splitAroundSubstring,
15
15
  } from './lib/index.ts'
16
16
 
17
- export interface CopyLinkTypographyProps extends ShareLinkProps, TypographyProps {}
17
+ export interface CopyLinkStackProps extends ShareLinkProps, StackProps {
18
+ xnsEndColor?: string
19
+ xnsStartColor?: string
20
+ }
18
21
 
19
- export const CopyLinkTypography: React.FC<CopyLinkTypographyProps> = ({
20
- shareLinkName, shareUrl, xnsName: xnsNameProp, ...props
22
+ export const CopyLinkStack: React.FC<CopyLinkStackProps> = ({
23
+ shareLinkName, shareUrl, xnsName: xnsNameProp, xnsEndColor, xnsStartColor, ...props
21
24
  }) => {
22
25
  const [error, setError] = useState<Error>()
23
26
 
@@ -39,16 +42,16 @@ export const CopyLinkTypography: React.FC<CopyLinkTypographyProps> = ({
39
42
  const [part1, xnsName, part3] = parsedXnsName || []
40
43
 
41
44
  return (
42
- <Stack direction="row" alignItems="center" gap={0.25}>
45
+ <Stack direction="row" alignItems="center" gap={0.25} {...props}>
43
46
  {xnsName
44
47
  ? (
45
- <Stack direction="row">
46
- <Typography sx={{ display: 'inline-flex' }} {...props}>{part1}</Typography>
47
- <AnimatedGradientTypography sx={{ display: 'inline-flex' }} {...props}>{xnsName}</AnimatedGradientTypography>
48
- <Typography sx={{ display: 'inline-flex' }} {...props}>{part3}</Typography>
48
+ <Stack direction="row" maxWidth="100%" sx={{ overflowX: 'auto' }}>
49
+ <Typography sx={{ display: 'inline-flex' }}>{part1}</Typography>
50
+ <AnimatedGradientTypography color1={xnsStartColor} color2={xnsEndColor} sx={{ display: 'inline-flex' }}>{xnsName}</AnimatedGradientTypography>
51
+ <Typography sx={{ display: 'inline-flex' }}>{part3}</Typography>
49
52
  </Stack>
50
53
  )
51
- : <Typography sx={{ display: 'inline-flex' }} {...props}>{shareUrl}</Typography>}
54
+ : <Typography sx={{ display: 'inline-flex' }}>{shareUrl}</Typography>}
52
55
  <CopyIconButton onCopyToClipboard={onCopyToClipboard} shareLinkName={shareLinkName} shareUrl={shareUrl} sx={{ display: 'inline-flex' }} />
53
56
  {error ? <Tooltip title={error.message}><Cancel color="error" sx={{ display: 'inline-flex' }} /></Tooltip> : null}
54
57
  </Stack>
package/src/out/index.ts CHANGED
@@ -1,5 +1,5 @@
1
+ export * from './CopyLinkStack.tsx'
1
2
  export * from './CopyLinkTextField.tsx'
2
- export * from './CopyLinkTypography.tsx'
3
3
  export * from './Dialog.tsx'
4
4
  export * from './Explanation.tsx'
5
5
  export * from './GenerateShareLinkButton.tsx'
@@ -17,34 +17,38 @@ const moveBg = keyframes(`
17
17
  /**
18
18
  * Adapted from - https://codepen.io/web-dot-dev/pen/vYrGPNE
19
19
  */
20
- export const AnimatedGradientTypography = styled(Typography, { name: 'AnimatedGradientTypography' })(({ theme }) => ({
21
- // Set the color variables for the gradient
22
- '--color-one': theme.palette.secondary.dark,
23
- '--color-two': theme.palette.primary.light,
24
- // set the gradient so it has the same start and end color for looping effect
25
- 'background': `linear-gradient(
26
- .25turn,
27
- var(--color-one),
28
- var(--color-two),
29
- var(--color-one)
30
- )`,
31
- // Set the text color to transparent so the gradient shows through
32
- 'color': 'transparent',
33
- // Clip the background to the text shape
34
- 'backgroundClip': 'text',
35
- // Set the background size to 800% so we don't see the third color initially creating the looping effect
36
- 'backgroundSize': '800%',
37
- // Set the text to bold so the gradient is more visible
38
- 'fontWeight': 'bold',
39
- // Set the animation
40
- '@media (prefers-reduced-motion: no-preference)': {
41
- animationName: moveBg,
42
- animationDuration: '2s',
43
- animationIterationCount: 'infinite',
44
- },
45
- // reset for users that prefer reduced motion
46
- '@media (prefers-reduced-motion)': {
47
- background: 'none',
48
- color: theme.palette.text.primary,
49
- },
50
- }))
20
+ export const AnimatedGradientTypography = styled(Typography, { name: 'AnimatedGradientTypography' })<{ color1?: string; color2?: string }>(({
21
+ theme, color1, color2,
22
+ }) => {
23
+ return {
24
+ // Set the color variables for the gradient
25
+ '--color-one': color1 ?? theme.palette.secondary.dark,
26
+ '--color-two': color2 ?? theme.palette.primary.light,
27
+ // set the gradient so it has the same start and end color for looping effect
28
+ 'background': `linear-gradient(
29
+ .25turn,
30
+ var(--color-one),
31
+ var(--color-two),
32
+ var(--color-one)
33
+ )`,
34
+ // Set the text color to transparent so the gradient shows through
35
+ 'color': 'transparent',
36
+ // Clip the background to the text shape
37
+ 'backgroundClip': 'text',
38
+ // Set the background size to 800% so we don't see the third color initially creating the looping effect
39
+ 'backgroundSize': '800%',
40
+ // Set the text to bold so the gradient is more visible
41
+ 'fontWeight': 'bold',
42
+ // Set the animation
43
+ '@media (prefers-reduced-motion: no-preference)': {
44
+ animationName: moveBg,
45
+ animationDuration: '2s',
46
+ animationIterationCount: 'infinite',
47
+ },
48
+ // reset for users that prefer reduced motion
49
+ '@media (prefers-reduced-motion)': {
50
+ background: 'none',
51
+ color: theme.palette.text.primary,
52
+ },
53
+ }
54
+ })
@@ -1,7 +0,0 @@
1
- import type { TypographyProps } from '@mui/material';
2
- import React from 'react';
3
- import { type ShareLinkProps } from './lib/index.ts';
4
- export interface CopyLinkTypographyProps extends ShareLinkProps, TypographyProps {
5
- }
6
- export declare const CopyLinkTypography: React.FC<CopyLinkTypographyProps>;
7
- //# sourceMappingURL=CopyLinkTypography.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CopyLinkTypography.d.ts","sourceRoot":"","sources":["../../../src/out/CopyLinkTypography.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAMpD,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,EACuB,KAAK,cAAc,EAChD,MAAM,gBAAgB,CAAA;AAEvB,MAAM,WAAW,uBAAwB,SAAQ,cAAc,EAAE,eAAe;CAAG;AAEnF,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqChE,CAAA"}
@@ -1,30 +0,0 @@
1
- import type { Meta, StoryFn } from '@storybook/react'
2
- import React from 'react'
3
-
4
- import { CopyLinkTypography } from './CopyLinkTypography.tsx'
5
-
6
- export default { title: 'modules/ShareOut/CopyLinkTypography' } as Meta<typeof CopyLinkTypography>
7
-
8
- const Template: StoryFn<typeof CopyLinkTypography> = (props) => {
9
- return <CopyLinkTypography {...props} />
10
- }
11
-
12
- const Default = Template.bind({})
13
- Default.args = {}
14
-
15
- const WithShareUrl = Template.bind({})
16
- WithShareUrl.args = { shareUrl: 'https://google.com' }
17
-
18
- const WithXnsName = Template.bind({})
19
- WithXnsName.args = { shareUrl: 'https://beta.node.xyo.network.com/view/arietrouw.xyo/profile', xnsName: 'arietrouw.xyo' }
20
-
21
- const WithXnsNameInSubdomain = Template.bind({})
22
- WithXnsNameInSubdomain.args = { shareUrl: 'https://arietrouw.xyo.network', xnsName: 'arietrouw.xyo' }
23
-
24
- const WithError = Template.bind({})
25
- WithError.args = { shareUrl: 'https://google.com', xnsName: 'foo.xyo' }
26
-
27
- export {
28
- Default, WithError,
29
- WithShareUrl, WithXnsName, WithXnsNameInSubdomain,
30
- }