@xyo-network/react-footer 2.64.0 → 2.64.2
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.
- package/dist/browser/AlwaysLinks.js +36 -5
- package/dist/browser/AlwaysLinks.js.map +1 -1
- package/dist/browser/Footer.js +50 -8
- package/dist/browser/Footer.js.map +1 -1
- package/dist/browser/Link.js +4 -3
- package/dist/browser/Link.js.map +1 -1
- package/dist/browser/Links.js +3 -2
- package/dist/browser/Links.js.map +1 -1
- package/dist/browser/Xyo/AlwaysLinks.js +48 -4
- package/dist/browser/Xyo/AlwaysLinks.js.map +1 -1
- package/dist/browser/Xyo/DeveloperLinks.js +48 -9
- package/dist/browser/Xyo/DeveloperLinks.js.map +1 -1
- package/dist/browser/Xyo/Footer.js +161 -18
- package/dist/browser/Xyo/Footer.js.map +1 -1
- package/dist/browser/Xyo/MoreLinks.js +46 -7
- package/dist/browser/Xyo/MoreLinks.js.map +1 -1
- package/dist/browser/Xyo/NetworkLinks.js +47 -8
- package/dist/browser/Xyo/NetworkLinks.js.map +1 -1
- package/dist/browser/Xyo/SocialLinks.js +54 -13
- package/dist/browser/Xyo/SocialLinks.js.map +1 -1
- package/dist/browser/Xyo/SupportLinks.js +45 -6
- package/dist/browser/Xyo/SupportLinks.js.map +1 -1
- package/dist/browser/Xyo/TokenLinks.js +48 -9
- package/dist/browser/Xyo/TokenLinks.js.map +1 -1
- package/dist/browser/Xyo/index.js +229 -8
- package/dist/browser/Xyo/index.js.map +1 -1
- package/dist/browser/index.js +234 -6
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/copyrightLinkTitle.js +2 -1
- package/dist/browser/lib/copyrightLinkTitle.js.map +1 -1
- package/dist/browser/lib/index.js +7 -1
- package/dist/browser/lib/index.js.map +1 -1
- package/dist/docs.json +29 -29
- package/package.json +6 -6
|
@@ -1,10 +1,41 @@
|
|
|
1
|
-
|
|
1
|
+
// src/AlwaysLinks.tsx
|
|
2
2
|
import { MoreHoriz as MoreHorizIcon } from "@mui/icons-material";
|
|
3
3
|
import { FlexRow } from "@xylabs/react-flexbox";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
|
|
5
|
+
// src/Link.tsx
|
|
6
|
+
import { assertEx } from "@xylabs/assert";
|
|
7
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
8
|
+
import { jsx } from "react/jsx-runtime";
|
|
9
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
10
|
+
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
11
|
+
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
12
|
+
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
13
|
+
const beta = currentHostnameParts.shift() === "beta";
|
|
14
|
+
if (beta) {
|
|
15
|
+
const currentHostnameWithoutBeta = currentHostnameParts.join(".");
|
|
16
|
+
if (currentHostnameWithoutBeta === urlObj.hostname) {
|
|
17
|
+
urlObj.hostname = currentUrlObj.hostname;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return urlObj;
|
|
21
|
+
};
|
|
22
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
23
|
+
const url = new URL(assertEx(href, "href not set"));
|
|
24
|
+
assertEx(url.hostname, "Hostname is required in href");
|
|
25
|
+
const convertedUrl = convertToBetaIfNeeded(url);
|
|
26
|
+
if (document.location.hostname === convertedUrl.hostname) {
|
|
27
|
+
const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname;
|
|
28
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, to, target, variant, ...props });
|
|
29
|
+
} else {
|
|
30
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, href, target: target ?? "_blank", variant, ...props });
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// src/AlwaysLinks.tsx
|
|
35
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
36
|
+
var FooterAlwaysLinks = ({ style, footerLinks, onMore, ...props }) => /* @__PURE__ */ jsxs(FlexRow, { flexWrap: "wrap", textTransform: "uppercase", style: { opacity: 0.6, ...style }, ...props, children: [
|
|
37
|
+
footerLinks?.map((footerLink, index) => /* @__PURE__ */ jsx2(FooterLink, { noWrap: true, paddingX: 1, margin: 0, ...footerLink, children: /* @__PURE__ */ jsx2("small", { children: footerLink.title }) }, index)),
|
|
38
|
+
onMore ? /* @__PURE__ */ jsx2(FlexRow, { style: { cursor: "pointer" }, paddingX: 0.5, onClick: onMore, children: /* @__PURE__ */ jsx2(MoreHorizIcon, { color: "primary", fontSize: "small" }) }) : null
|
|
8
39
|
] });
|
|
9
40
|
export {
|
|
10
41
|
FooterAlwaysLinks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AlwaysLinks.tsx"],"sourcesContent":["import { MoreHoriz as MoreHorizIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { LinkExProps } from '@xylabs/react-link'\n\nimport { FooterLink } from './Link'\n\nexport interface FooterAlwaysLinksProps extends FlexBoxProps {\n footerLinks?: LinkExProps[]\n onMore?: () => void\n}\n\nexport const FooterAlwaysLinks: React.FC<FooterAlwaysLinksProps> = ({ style, footerLinks, onMore, ...props }) => (\n <FlexRow flexWrap=\"wrap\" textTransform=\"uppercase\" style={{ opacity: 0.6, ...style }} {...props}>\n {footerLinks?.map((footerLink, index) => (\n <FooterLink noWrap key={index} paddingX={1} margin={0} {...footerLink}>\n <small>{footerLink.title}</small>\n </FooterLink>\n ))}\n {onMore ? (\n <FlexRow style={{ cursor: 'pointer' }} paddingX={0.5} onClick={onMore}>\n <MoreHorizIcon color=\"primary\" fontSize=\"small\" />\n </FlexRow>\n ) : null}\n </FlexRow>\n)\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/AlwaysLinks.tsx","../../src/Link.tsx"],"sourcesContent":["import { MoreHoriz as MoreHorizIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { LinkExProps } from '@xylabs/react-link'\n\nimport { FooterLink } from './Link'\n\nexport interface FooterAlwaysLinksProps extends FlexBoxProps {\n footerLinks?: LinkExProps[]\n onMore?: () => void\n}\n\nexport const FooterAlwaysLinks: React.FC<FooterAlwaysLinksProps> = ({ style, footerLinks, onMore, ...props }) => (\n <FlexRow flexWrap=\"wrap\" textTransform=\"uppercase\" style={{ opacity: 0.6, ...style }} {...props}>\n {footerLinks?.map((footerLink, index) => (\n <FooterLink noWrap key={index} paddingX={1} margin={0} {...footerLink}>\n <small>{footerLink.title}</small>\n </FooterLink>\n ))}\n {onMore ? (\n <FlexRow style={{ cursor: 'pointer' }} paddingX={0.5} onClick={onMore}>\n <MoreHorizIcon color=\"primary\" fontSize=\"small\" />\n </FlexRow>\n ) : null}\n </FlexRow>\n)\n","import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n"],"mappings":";AAAA,SAAS,aAAa,qBAAqB;AAC3C,SAAuB,eAAe;;;ACDtC,SAAS,gBAAgB;AACzB,SAAS,cAA2B;AA6BzB;AApBX,IAAM,wBAAwB,CAAC,KAAmB,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,MAAM;AACjG,QAAM,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI;AACxD,QAAM,gBAAgB,OAAO,eAAe,WAAW,IAAI,IAAI,UAAU,IAAI;AAC7E,QAAM,uBAAuB,cAAc,SAAS,MAAM,GAAG;AAC7D,QAAM,OAAO,qBAAqB,MAAM,MAAM;AAC9C,MAAI,MAAM;AACR,UAAM,6BAA6B,qBAAqB,KAAK,GAAG;AAChE,QAAI,+BAA+B,OAAO,UAAU;AAClD,aAAO,WAAW,cAAc;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAoC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,UAAU,SAAS,GAAG,MAAM,MAAM;AAChH,QAAM,MAAM,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC;AAClD,WAAS,IAAI,UAAU,8BAA8B;AACrD,QAAM,eAAe,sBAAsB,GAAG;AAC9C,MAAI,SAAS,SAAS,aAAa,aAAa,UAAU;AACxD,UAAM,KAAK,IAAI,OAAO,SAAS,IAAI,GAAG,aAAa,QAAQ,GAAG,aAAa,MAAM,KAAK,IAAI;AAC1F,WAAO,oBAAC,UAAO,QAAgB,IAAQ,QAAgB,SAAmB,GAAG,OAAO;AAAA,EACtF,OAAO;AACL,WAAO,oBAAC,UAAO,QAAgB,MAAY,QAAQ,UAAU,UAAU,SAAmB,GAAG,OAAO;AAAA,EACtG;AACF;;;ADtBE,SAGM,OAAAA,MAHN;AADK,IAAM,oBAAsD,CAAC,EAAE,OAAO,aAAa,QAAQ,GAAG,MAAM,MACzG,qBAAC,WAAQ,UAAS,QAAO,eAAc,aAAY,OAAO,EAAE,SAAS,KAAK,GAAG,MAAM,GAAI,GAAG,OACvF;AAAA,eAAa,IAAI,CAAC,YAAY,UAC7B,gBAAAA,KAAC,cAAW,QAAM,MAAa,UAAU,GAAG,QAAQ,GAAI,GAAG,YACzD,0BAAAA,KAAC,WAAO,qBAAW,OAAM,KADH,KAExB,CACD;AAAA,EACA,SACC,gBAAAA,KAAC,WAAQ,OAAO,EAAE,QAAQ,UAAU,GAAG,UAAU,KAAK,SAAS,QAC7D,0BAAAA,KAAC,iBAAc,OAAM,WAAU,UAAS,SAAQ,GAClD,IACE;AAAA,GACN;","names":["jsx"]}
|
package/dist/browser/Footer.js
CHANGED
|
@@ -1,15 +1,57 @@
|
|
|
1
|
-
|
|
1
|
+
// src/Footer.tsx
|
|
2
2
|
import { Container, useTheme } from "@mui/material";
|
|
3
|
-
import { FlexCol, FlexRow } from "@xylabs/react-flexbox";
|
|
3
|
+
import { FlexCol, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
|
|
4
4
|
import { useState } from "react";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
|
|
6
|
+
// src/AlwaysLinks.tsx
|
|
7
|
+
import { MoreHoriz as MoreHorizIcon } from "@mui/icons-material";
|
|
8
|
+
import { FlexRow } from "@xylabs/react-flexbox";
|
|
9
|
+
|
|
10
|
+
// src/Link.tsx
|
|
11
|
+
import { assertEx } from "@xylabs/assert";
|
|
12
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
13
|
+
import { jsx } from "react/jsx-runtime";
|
|
14
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
15
|
+
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
16
|
+
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
17
|
+
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
18
|
+
const beta = currentHostnameParts.shift() === "beta";
|
|
19
|
+
if (beta) {
|
|
20
|
+
const currentHostnameWithoutBeta = currentHostnameParts.join(".");
|
|
21
|
+
if (currentHostnameWithoutBeta === urlObj.hostname) {
|
|
22
|
+
urlObj.hostname = currentUrlObj.hostname;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return urlObj;
|
|
26
|
+
};
|
|
27
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
28
|
+
const url = new URL(assertEx(href, "href not set"));
|
|
29
|
+
assertEx(url.hostname, "Hostname is required in href");
|
|
30
|
+
const convertedUrl = convertToBetaIfNeeded(url);
|
|
31
|
+
if (document.location.hostname === convertedUrl.hostname) {
|
|
32
|
+
const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname;
|
|
33
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, to, target, variant, ...props });
|
|
34
|
+
} else {
|
|
35
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, href, target: target ?? "_blank", variant, ...props });
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// src/AlwaysLinks.tsx
|
|
40
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
41
|
+
var FooterAlwaysLinks = ({ style, footerLinks, onMore, ...props }) => /* @__PURE__ */ jsxs(FlexRow, { flexWrap: "wrap", textTransform: "uppercase", style: { opacity: 0.6, ...style }, ...props, children: [
|
|
42
|
+
footerLinks?.map((footerLink, index) => /* @__PURE__ */ jsx2(FooterLink, { noWrap: true, paddingX: 1, margin: 0, ...footerLink, children: /* @__PURE__ */ jsx2("small", { children: footerLink.title }) }, index)),
|
|
43
|
+
onMore ? /* @__PURE__ */ jsx2(FlexRow, { style: { cursor: "pointer" }, paddingX: 0.5, onClick: onMore, children: /* @__PURE__ */ jsx2(MoreHorizIcon, { color: "primary", fontSize: "small" }) }) : null
|
|
44
|
+
] });
|
|
45
|
+
|
|
46
|
+
// src/Footer.tsx
|
|
47
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
48
|
+
var Footer = ({ alwaysFooterLinksProps, children, container, dynamicHeight = false, ...props }) => {
|
|
7
49
|
const [more, setMore] = useState(false);
|
|
8
50
|
const onMore = () => {
|
|
9
51
|
setMore(!more);
|
|
10
52
|
};
|
|
11
53
|
const theme = useTheme();
|
|
12
|
-
return /* @__PURE__ */
|
|
54
|
+
return /* @__PURE__ */ jsxs2(
|
|
13
55
|
FlexCol,
|
|
14
56
|
{
|
|
15
57
|
alignItems: "stretch",
|
|
@@ -18,9 +60,9 @@ const Footer = ({ alwaysFooterLinksProps, children, container, dynamicHeight = f
|
|
|
18
60
|
},
|
|
19
61
|
...props,
|
|
20
62
|
children: [
|
|
21
|
-
more && dynamicHeight ? /* @__PURE__ */
|
|
22
|
-
!dynamicHeight ? /* @__PURE__ */
|
|
23
|
-
/* @__PURE__ */
|
|
63
|
+
more && dynamicHeight ? /* @__PURE__ */ jsx3(FlexCol, { alignItems: "stretch", children: /* @__PURE__ */ jsx3(FlexRow2, { bottom: -1, position: "absolute", width: "100%", bgcolor: theme.palette.background.default, children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children }) : children }) }) : null,
|
|
64
|
+
!dynamicHeight ? /* @__PURE__ */ jsx3(FlexCol, { alignItems: "stretch", children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children }) : children }) : null,
|
|
65
|
+
/* @__PURE__ */ jsx3(FlexRow2, { children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children: /* @__PURE__ */ jsx3(FooterAlwaysLinks, { ...alwaysFooterLinksProps, onMore: dynamicHeight ? onMore : void 0 }) }) : /* @__PURE__ */ jsx3(FooterAlwaysLinks, { ...alwaysFooterLinksProps, onMore: dynamicHeight ? onMore : void 0 }) })
|
|
24
66
|
]
|
|
25
67
|
}
|
|
26
68
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Footer.tsx"],"sourcesContent":["import { Container, ContainerProps, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { FooterAlwaysLinks, FooterAlwaysLinksProps } from './AlwaysLinks'\n\nexport interface FooterProps extends FlexBoxProps {\n alwaysFooterLinksProps?: FooterAlwaysLinksProps\n container?: ContainerProps['maxWidth'] | 'none'\n dynamicHeight?: boolean\n}\n\nexport const Footer: React.FC<FooterProps> = ({ alwaysFooterLinksProps, children, container, dynamicHeight = false, ...props }) => {\n const [more, setMore] = useState(false)\n const onMore = () => {\n setMore(!more)\n }\n\n const theme = useTheme()\n\n return (\n <FlexCol\n alignItems=\"stretch\"\n onMouseLeave={() => {\n setMore(false)\n }}\n {...props}\n >\n {more && dynamicHeight ? (\n <FlexCol alignItems=\"stretch\">\n <FlexRow bottom={-1} position=\"absolute\" width=\"100%\" bgcolor={theme.palette.background.default}>\n {container && container !== 'none' ? <Container>{children}</Container> : children}\n </FlexRow>\n </FlexCol>\n ) : null}\n {!dynamicHeight ? (\n <FlexCol alignItems=\"stretch\">{container && container !== 'none' ? <Container>{children}</Container> : children}</FlexCol>\n ) : null}\n <FlexRow>\n {container && container !== 'none' ? (\n <Container>\n <FooterAlwaysLinks {...alwaysFooterLinksProps} onMore={dynamicHeight ? onMore : undefined} />\n </Container>\n ) : (\n <FooterAlwaysLinks {...alwaysFooterLinksProps} onMore={dynamicHeight ? onMore : undefined} />\n )}\n </FlexRow>\n </FlexCol>\n )\n}\n"],"
|
|
1
|
+
{"version":3,"sources":["../../src/Footer.tsx","../../src/AlwaysLinks.tsx","../../src/Link.tsx"],"sourcesContent":["import { Container, ContainerProps, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { FooterAlwaysLinks, FooterAlwaysLinksProps } from './AlwaysLinks'\n\nexport interface FooterProps extends FlexBoxProps {\n alwaysFooterLinksProps?: FooterAlwaysLinksProps\n container?: ContainerProps['maxWidth'] | 'none'\n dynamicHeight?: boolean\n}\n\nexport const Footer: React.FC<FooterProps> = ({ alwaysFooterLinksProps, children, container, dynamicHeight = false, ...props }) => {\n const [more, setMore] = useState(false)\n const onMore = () => {\n setMore(!more)\n }\n\n const theme = useTheme()\n\n return (\n <FlexCol\n alignItems=\"stretch\"\n onMouseLeave={() => {\n setMore(false)\n }}\n {...props}\n >\n {more && dynamicHeight ? (\n <FlexCol alignItems=\"stretch\">\n <FlexRow bottom={-1} position=\"absolute\" width=\"100%\" bgcolor={theme.palette.background.default}>\n {container && container !== 'none' ? <Container>{children}</Container> : children}\n </FlexRow>\n </FlexCol>\n ) : null}\n {!dynamicHeight ? (\n <FlexCol alignItems=\"stretch\">{container && container !== 'none' ? <Container>{children}</Container> : children}</FlexCol>\n ) : null}\n <FlexRow>\n {container && container !== 'none' ? (\n <Container>\n <FooterAlwaysLinks {...alwaysFooterLinksProps} onMore={dynamicHeight ? onMore : undefined} />\n </Container>\n ) : (\n <FooterAlwaysLinks {...alwaysFooterLinksProps} onMore={dynamicHeight ? onMore : undefined} />\n )}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { MoreHoriz as MoreHorizIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { LinkExProps } from '@xylabs/react-link'\n\nimport { FooterLink } from './Link'\n\nexport interface FooterAlwaysLinksProps extends FlexBoxProps {\n footerLinks?: LinkExProps[]\n onMore?: () => void\n}\n\nexport const FooterAlwaysLinks: React.FC<FooterAlwaysLinksProps> = ({ style, footerLinks, onMore, ...props }) => (\n <FlexRow flexWrap=\"wrap\" textTransform=\"uppercase\" style={{ opacity: 0.6, ...style }} {...props}>\n {footerLinks?.map((footerLink, index) => (\n <FooterLink noWrap key={index} paddingX={1} margin={0} {...footerLink}>\n <small>{footerLink.title}</small>\n </FooterLink>\n ))}\n {onMore ? (\n <FlexRow style={{ cursor: 'pointer' }} paddingX={0.5} onClick={onMore}>\n <MoreHorizIcon color=\"primary\" fontSize=\"small\" />\n </FlexRow>\n ) : null}\n </FlexRow>\n)\n","import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n"],"mappings":";AAAA,SAAS,WAA2B,gBAAgB;AACpD,SAAuB,SAAS,WAAAA,gBAAe;AAC/C,SAAS,gBAAgB;;;ACFzB,SAAS,aAAa,qBAAqB;AAC3C,SAAuB,eAAe;;;ACDtC,SAAS,gBAAgB;AACzB,SAAS,cAA2B;AA6BzB;AApBX,IAAM,wBAAwB,CAAC,KAAmB,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,MAAM;AACjG,QAAM,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI;AACxD,QAAM,gBAAgB,OAAO,eAAe,WAAW,IAAI,IAAI,UAAU,IAAI;AAC7E,QAAM,uBAAuB,cAAc,SAAS,MAAM,GAAG;AAC7D,QAAM,OAAO,qBAAqB,MAAM,MAAM;AAC9C,MAAI,MAAM;AACR,UAAM,6BAA6B,qBAAqB,KAAK,GAAG;AAChE,QAAI,+BAA+B,OAAO,UAAU;AAClD,aAAO,WAAW,cAAc;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAoC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,UAAU,SAAS,GAAG,MAAM,MAAM;AAChH,QAAM,MAAM,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC;AAClD,WAAS,IAAI,UAAU,8BAA8B;AACrD,QAAM,eAAe,sBAAsB,GAAG;AAC9C,MAAI,SAAS,SAAS,aAAa,aAAa,UAAU;AACxD,UAAM,KAAK,IAAI,OAAO,SAAS,IAAI,GAAG,aAAa,QAAQ,GAAG,aAAa,MAAM,KAAK,IAAI;AAC1F,WAAO,oBAAC,UAAO,QAAgB,IAAQ,QAAgB,SAAmB,GAAG,OAAO;AAAA,EACtF,OAAO;AACL,WAAO,oBAAC,UAAO,QAAgB,MAAY,QAAQ,UAAU,UAAU,SAAmB,GAAG,OAAO;AAAA,EACtG;AACF;;;ADtBE,SAGM,OAAAC,MAHN;AADK,IAAM,oBAAsD,CAAC,EAAE,OAAO,aAAa,QAAQ,GAAG,MAAM,MACzG,qBAAC,WAAQ,UAAS,QAAO,eAAc,aAAY,OAAO,EAAE,SAAS,KAAK,GAAG,MAAM,GAAI,GAAG,OACvF;AAAA,eAAa,IAAI,CAAC,YAAY,UAC7B,gBAAAA,KAAC,cAAW,QAAM,MAAa,UAAU,GAAG,QAAQ,GAAI,GAAG,YACzD,0BAAAA,KAAC,WAAO,qBAAW,OAAM,KADH,KAExB,CACD;AAAA,EACA,SACC,gBAAAA,KAAC,WAAQ,OAAO,EAAE,QAAQ,UAAU,GAAG,UAAU,KAAK,SAAS,QAC7D,0BAAAA,KAAC,iBAAc,OAAM,WAAU,UAAS,SAAQ,GAClD,IACE;AAAA,GACN;;;ADFE,SAU6C,OAAAC,MAV7C,QAAAC,aAAA;AATG,IAAM,SAAgC,CAAC,EAAE,wBAAwB,UAAU,WAAW,gBAAgB,OAAO,GAAG,MAAM,MAAM;AACjI,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,SAAS,MAAM;AACnB,YAAQ,CAAC,IAAI;AAAA,EACf;AAEA,QAAM,QAAQ,SAAS;AAEvB,SACE,gBAAAA;AAAA,IAAC;AAAA;AAAA,MACC,YAAW;AAAA,MACX,cAAc,MAAM;AAClB,gBAAQ,KAAK;AAAA,MACf;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,gBAAQ,gBACP,gBAAAD,KAAC,WAAQ,YAAW,WAClB,0BAAAA,KAACE,UAAA,EAAQ,QAAQ,IAAI,UAAS,YAAW,OAAM,QAAO,SAAS,MAAM,QAAQ,WAAW,SACrF,uBAAa,cAAc,SAAS,gBAAAF,KAAC,aAAW,UAAS,IAAe,UAC3E,GACF,IACE;AAAA,QACH,CAAC,gBACA,gBAAAA,KAAC,WAAQ,YAAW,WAAW,uBAAa,cAAc,SAAS,gBAAAA,KAAC,aAAW,UAAS,IAAe,UAAS,IAC9G;AAAA,QACJ,gBAAAA,KAACE,UAAA,EACE,uBAAa,cAAc,SAC1B,gBAAAF,KAAC,aACC,0BAAAA,KAAC,qBAAmB,GAAG,wBAAwB,QAAQ,gBAAgB,SAAS,QAAW,GAC7F,IAEA,gBAAAA,KAAC,qBAAmB,GAAG,wBAAwB,QAAQ,gBAAgB,SAAS,QAAW,GAE/F;AAAA;AAAA;AAAA,EACF;AAEJ;","names":["FlexRow","jsx","jsx","jsxs","FlexRow"]}
|
package/dist/browser/Link.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
// src/Link.tsx
|
|
2
2
|
import { assertEx } from "@xylabs/assert";
|
|
3
3
|
import { LinkEx } from "@xylabs/react-link";
|
|
4
|
-
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
5
6
|
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
6
7
|
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
7
8
|
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
@@ -14,7 +15,7 @@ const convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)
|
|
|
14
15
|
}
|
|
15
16
|
return urlObj;
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
18
19
|
const url = new URL(assertEx(href, "href not set"));
|
|
19
20
|
assertEx(url.hostname, "Hostname is required in href");
|
|
20
21
|
const convertedUrl = convertToBetaIfNeeded(url);
|
package/dist/browser/Link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Link.tsx"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/Link.tsx"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,cAA2B;AA6BzB;AApBX,IAAM,wBAAwB,CAAC,KAAmB,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,MAAM;AACjG,QAAM,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI;AACxD,QAAM,gBAAgB,OAAO,eAAe,WAAW,IAAI,IAAI,UAAU,IAAI;AAC7E,QAAM,uBAAuB,cAAc,SAAS,MAAM,GAAG;AAC7D,QAAM,OAAO,qBAAqB,MAAM,MAAM;AAC9C,MAAI,MAAM;AACR,UAAM,6BAA6B,qBAAqB,KAAK,GAAG;AAChE,QAAI,+BAA+B,OAAO,UAAU;AAClD,aAAO,WAAW,cAAc;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAoC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,UAAU,SAAS,GAAG,MAAM,MAAM;AAChH,QAAM,MAAM,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC;AAClD,WAAS,IAAI,UAAU,8BAA8B;AACrD,QAAM,eAAe,sBAAsB,GAAG;AAC9C,MAAI,SAAS,SAAS,aAAa,aAAa,UAAU;AACxD,UAAM,KAAK,IAAI,OAAO,SAAS,IAAI,GAAG,aAAa,QAAQ,GAAG,aAAa,MAAM,KAAK,IAAI;AAC1F,WAAO,oBAAC,UAAO,QAAgB,IAAQ,QAAgB,SAAmB,GAAG,OAAO;AAAA,EACtF,OAAO;AACL,WAAO,oBAAC,UAAO,QAAgB,MAAY,QAAQ,UAAU,UAAU,SAAmB,GAAG,OAAO;AAAA,EACtG;AACF;","names":[]}
|
package/dist/browser/Links.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
// src/Links.tsx
|
|
2
2
|
import { Typography } from "@mui/material";
|
|
3
3
|
import { FlexCol } from "@xylabs/react-flexbox";
|
|
4
|
-
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
var FooterLinks = ({ children, title, ...props }) => {
|
|
5
6
|
return /* @__PURE__ */ jsxs(FlexCol, { margin: 1, justifyContent: "flex-start", title, ...props, children: [
|
|
6
7
|
/* @__PURE__ */ jsx(Typography, { margin: 0.5, variant: "h6", noWrap: true, children: title }),
|
|
7
8
|
children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Links.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport const FooterLinks: React.FC<FlexBoxProps> = ({ children, title, ...props }) => {\n return (\n <FlexCol margin={1} justifyContent=\"flex-start\" title={title} {...props}>\n <Typography margin={0.5} variant=\"h6\" noWrap>\n {title}\n </Typography>\n {children}\n </FlexCol>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/Links.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport const FooterLinks: React.FC<FlexBoxProps> = ({ children, title, ...props }) => {\n return (\n <FlexCol margin={1} justifyContent=\"flex-start\" title={title} {...props}>\n <Typography margin={0.5} variant=\"h6\" noWrap>\n {title}\n </Typography>\n {children}\n </FlexCol>\n )\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,SAAuB,eAAe;AAIlC,SACE,KADF;AAFG,IAAM,cAAsC,CAAC,EAAE,UAAU,OAAO,GAAG,MAAM,MAAM;AACpF,SACE,qBAAC,WAAQ,QAAQ,GAAG,gBAAe,cAAa,OAAe,GAAG,OAChE;AAAA,wBAAC,cAAW,QAAQ,KAAK,SAAQ,MAAK,QAAM,MACzC,iBACH;AAAA,IACC;AAAA,KACH;AAEJ;","names":[]}
|
|
@@ -1,7 +1,51 @@
|
|
|
1
|
+
// src/AlwaysLinks.tsx
|
|
2
|
+
import { MoreHoriz as MoreHorizIcon } from "@mui/icons-material";
|
|
3
|
+
import { FlexRow } from "@xylabs/react-flexbox";
|
|
4
|
+
|
|
5
|
+
// src/Link.tsx
|
|
6
|
+
import { assertEx } from "@xylabs/assert";
|
|
7
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
1
8
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
9
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
10
|
+
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
11
|
+
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
12
|
+
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
13
|
+
const beta = currentHostnameParts.shift() === "beta";
|
|
14
|
+
if (beta) {
|
|
15
|
+
const currentHostnameWithoutBeta = currentHostnameParts.join(".");
|
|
16
|
+
if (currentHostnameWithoutBeta === urlObj.hostname) {
|
|
17
|
+
urlObj.hostname = currentUrlObj.hostname;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return urlObj;
|
|
21
|
+
};
|
|
22
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
23
|
+
const url = new URL(assertEx(href, "href not set"));
|
|
24
|
+
assertEx(url.hostname, "Hostname is required in href");
|
|
25
|
+
const convertedUrl = convertToBetaIfNeeded(url);
|
|
26
|
+
if (document.location.hostname === convertedUrl.hostname) {
|
|
27
|
+
const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname;
|
|
28
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, to, target, variant, ...props });
|
|
29
|
+
} else {
|
|
30
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, href, target: target ?? "_blank", variant, ...props });
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// src/AlwaysLinks.tsx
|
|
35
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
36
|
+
var FooterAlwaysLinks = ({ style, footerLinks, onMore, ...props }) => /* @__PURE__ */ jsxs(FlexRow, { flexWrap: "wrap", textTransform: "uppercase", style: { opacity: 0.6, ...style }, ...props, children: [
|
|
37
|
+
footerLinks?.map((footerLink, index) => /* @__PURE__ */ jsx2(FooterLink, { noWrap: true, paddingX: 1, margin: 0, ...footerLink, children: /* @__PURE__ */ jsx2("small", { children: footerLink.title }) }, index)),
|
|
38
|
+
onMore ? /* @__PURE__ */ jsx2(FlexRow, { style: { cursor: "pointer" }, paddingX: 0.5, onClick: onMore, children: /* @__PURE__ */ jsx2(MoreHorizIcon, { color: "primary", fontSize: "small" }) }) : null
|
|
39
|
+
] });
|
|
40
|
+
|
|
41
|
+
// src/lib/copyrightLinkTitle.ts
|
|
42
|
+
var copyrightLinkTitle = (entity) => {
|
|
43
|
+
return `Copyright \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} ${entity}`;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/Xyo/AlwaysLinks.tsx
|
|
47
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
48
|
+
var XyoFooterAlwaysLinks = (props) => /* @__PURE__ */ jsx3(
|
|
5
49
|
FooterAlwaysLinks,
|
|
6
50
|
{
|
|
7
51
|
footerLinks: [
|
|
@@ -29,7 +73,7 @@ const XyoFooterAlwaysLinks = (props) => /* @__PURE__ */ jsx(
|
|
|
29
73
|
...props
|
|
30
74
|
}
|
|
31
75
|
);
|
|
32
|
-
|
|
76
|
+
var Copyright = FooterAlwaysLinks;
|
|
33
77
|
export {
|
|
34
78
|
Copyright,
|
|
35
79
|
XyoFooterAlwaysLinks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Xyo/AlwaysLinks.tsx"],"sourcesContent":["import { FlexBoxProps } from '@xylabs/react-flexbox'\n\nimport { FooterAlwaysLinks } from '../AlwaysLinks'\nimport { copyrightLinkTitle } from '../lib'\n\nexport interface XyoFooterAlwaysLinksProps extends FlexBoxProps {\n onMore?: () => void\n}\n\nexport const XyoFooterAlwaysLinks: React.FC<XyoFooterAlwaysLinksProps> = (props) => (\n <FooterAlwaysLinks\n footerLinks={[\n {\n href: 'https://xylabs.com/',\n title: copyrightLinkTitle('XY Labs, Inc.'),\n },\n {\n href: 'https://xyo.network/',\n title: 'XYO Foundation',\n },\n {\n href: 'https://xylabs.com/privacy/',\n title: 'Privacy',\n },\n {\n href: 'https://xylabs.com/terms/',\n title: 'Terms',\n },\n {\n href: 'https://xylabs.com/jobs',\n title: 'Careers',\n },\n ]}\n {...props}\n />\n)\n\n/** @deprecated use FooterAlwaysLinksProps*/\nexport type CopyrightProps = XyoFooterAlwaysLinksProps\n\n/** @deprecated use FooterAlwaysLinks*/\nexport const Copyright = FooterAlwaysLinks\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/AlwaysLinks.tsx","../../../src/Link.tsx","../../../src/lib/copyrightLinkTitle.ts","../../../src/Xyo/AlwaysLinks.tsx"],"sourcesContent":["import { MoreHoriz as MoreHorizIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { LinkExProps } from '@xylabs/react-link'\n\nimport { FooterLink } from './Link'\n\nexport interface FooterAlwaysLinksProps extends FlexBoxProps {\n footerLinks?: LinkExProps[]\n onMore?: () => void\n}\n\nexport const FooterAlwaysLinks: React.FC<FooterAlwaysLinksProps> = ({ style, footerLinks, onMore, ...props }) => (\n <FlexRow flexWrap=\"wrap\" textTransform=\"uppercase\" style={{ opacity: 0.6, ...style }} {...props}>\n {footerLinks?.map((footerLink, index) => (\n <FooterLink noWrap key={index} paddingX={1} margin={0} {...footerLink}>\n <small>{footerLink.title}</small>\n </FooterLink>\n ))}\n {onMore ? (\n <FlexRow style={{ cursor: 'pointer' }} paddingX={0.5} onClick={onMore}>\n <MoreHorizIcon color=\"primary\" fontSize=\"small\" />\n </FlexRow>\n ) : null}\n </FlexRow>\n)\n","import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n","export const copyrightLinkTitle = (entity: string) => {\n return `Copyright © ${new Date().getFullYear()} ${entity}`\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\n\nimport { FooterAlwaysLinks } from '../AlwaysLinks'\nimport { copyrightLinkTitle } from '../lib'\n\nexport interface XyoFooterAlwaysLinksProps extends FlexBoxProps {\n onMore?: () => void\n}\n\nexport const XyoFooterAlwaysLinks: React.FC<XyoFooterAlwaysLinksProps> = (props) => (\n <FooterAlwaysLinks\n footerLinks={[\n {\n href: 'https://xylabs.com/',\n title: copyrightLinkTitle('XY Labs, Inc.'),\n },\n {\n href: 'https://xyo.network/',\n title: 'XYO Foundation',\n },\n {\n href: 'https://xylabs.com/privacy/',\n title: 'Privacy',\n },\n {\n href: 'https://xylabs.com/terms/',\n title: 'Terms',\n },\n {\n href: 'https://xylabs.com/jobs',\n title: 'Careers',\n },\n ]}\n {...props}\n />\n)\n\n/** @deprecated use FooterAlwaysLinksProps*/\nexport type CopyrightProps = XyoFooterAlwaysLinksProps\n\n/** @deprecated use FooterAlwaysLinks*/\nexport const Copyright = FooterAlwaysLinks\n"],"mappings":";AAAA,SAAS,aAAa,qBAAqB;AAC3C,SAAuB,eAAe;;;ACDtC,SAAS,gBAAgB;AACzB,SAAS,cAA2B;AA6BzB;AApBX,IAAM,wBAAwB,CAAC,KAAmB,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,MAAM;AACjG,QAAM,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI;AACxD,QAAM,gBAAgB,OAAO,eAAe,WAAW,IAAI,IAAI,UAAU,IAAI;AAC7E,QAAM,uBAAuB,cAAc,SAAS,MAAM,GAAG;AAC7D,QAAM,OAAO,qBAAqB,MAAM,MAAM;AAC9C,MAAI,MAAM;AACR,UAAM,6BAA6B,qBAAqB,KAAK,GAAG;AAChE,QAAI,+BAA+B,OAAO,UAAU;AAClD,aAAO,WAAW,cAAc;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAoC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,UAAU,SAAS,GAAG,MAAM,MAAM;AAChH,QAAM,MAAM,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC;AAClD,WAAS,IAAI,UAAU,8BAA8B;AACrD,QAAM,eAAe,sBAAsB,GAAG;AAC9C,MAAI,SAAS,SAAS,aAAa,aAAa,UAAU;AACxD,UAAM,KAAK,IAAI,OAAO,SAAS,IAAI,GAAG,aAAa,QAAQ,GAAG,aAAa,MAAM,KAAK,IAAI;AAC1F,WAAO,oBAAC,UAAO,QAAgB,IAAQ,QAAgB,SAAmB,GAAG,OAAO;AAAA,EACtF,OAAO;AACL,WAAO,oBAAC,UAAO,QAAgB,MAAY,QAAQ,UAAU,UAAU,SAAmB,GAAG,OAAO;AAAA,EACtG;AACF;;;ADtBE,SAGM,OAAAA,MAHN;AADK,IAAM,oBAAsD,CAAC,EAAE,OAAO,aAAa,QAAQ,GAAG,MAAM,MACzG,qBAAC,WAAQ,UAAS,QAAO,eAAc,aAAY,OAAO,EAAE,SAAS,KAAK,GAAG,MAAM,GAAI,GAAG,OACvF;AAAA,eAAa,IAAI,CAAC,YAAY,UAC7B,gBAAAA,KAAC,cAAW,QAAM,MAAa,UAAU,GAAG,QAAQ,GAAI,GAAG,YACzD,0BAAAA,KAAC,WAAO,qBAAW,OAAM,KADH,KAExB,CACD;AAAA,EACA,SACC,gBAAAA,KAAC,WAAQ,OAAO,EAAE,QAAQ,UAAU,GAAG,UAAU,KAAK,SAAS,QAC7D,0BAAAA,KAAC,iBAAc,OAAM,WAAU,UAAS,SAAQ,GAClD,IACE;AAAA,GACN;;;AEvBK,IAAM,qBAAqB,CAAC,WAAmB;AACpD,SAAO,mBAAe,oBAAI,KAAK,GAAE,YAAY,CAAC,IAAI,MAAM;AAC1D;;;ACQE,gBAAAC,YAAA;AADK,IAAM,uBAA4D,CAAC,UACxE,gBAAAA;AAAA,EAAC;AAAA;AAAA,IACC,aAAa;AAAA,MACX;AAAA,QACE,MAAM;AAAA,QACN,OAAO,mBAAmB,eAAe;AAAA,MAC3C;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACC,GAAG;AAAA;AACN;AAOK,IAAM,YAAY;","names":["jsx","jsx"]}
|
|
@@ -1,12 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
// src/Link.tsx
|
|
2
|
+
import { assertEx } from "@xylabs/assert";
|
|
3
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
6
|
+
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
7
|
+
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
8
|
+
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
9
|
+
const beta = currentHostnameParts.shift() === "beta";
|
|
10
|
+
if (beta) {
|
|
11
|
+
const currentHostnameWithoutBeta = currentHostnameParts.join(".");
|
|
12
|
+
if (currentHostnameWithoutBeta === urlObj.hostname) {
|
|
13
|
+
urlObj.hostname = currentUrlObj.hostname;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return urlObj;
|
|
17
|
+
};
|
|
18
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
19
|
+
const url = new URL(assertEx(href, "href not set"));
|
|
20
|
+
assertEx(url.hostname, "Hostname is required in href");
|
|
21
|
+
const convertedUrl = convertToBetaIfNeeded(url);
|
|
22
|
+
if (document.location.hostname === convertedUrl.hostname) {
|
|
23
|
+
const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname;
|
|
24
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, to, target, variant, ...props });
|
|
25
|
+
} else {
|
|
26
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, href, target: target ?? "_blank", variant, ...props });
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// src/Links.tsx
|
|
31
|
+
import { Typography } from "@mui/material";
|
|
32
|
+
import { FlexCol } from "@xylabs/react-flexbox";
|
|
33
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
34
|
+
var FooterLinks = ({ children, title, ...props }) => {
|
|
35
|
+
return /* @__PURE__ */ jsxs(FlexCol, { margin: 1, justifyContent: "flex-start", title, ...props, children: [
|
|
36
|
+
/* @__PURE__ */ jsx2(Typography, { margin: 0.5, variant: "h6", noWrap: true, children: title }),
|
|
37
|
+
children
|
|
38
|
+
] });
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/Xyo/DeveloperLinks.tsx
|
|
42
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
43
|
+
var DeveloperLinks = (props) => /* @__PURE__ */ jsxs2(FooterLinks, { title: "Developer", ...props, children: [
|
|
44
|
+
/* @__PURE__ */ jsx3(FooterLink, { href: "https://xyo.network/developer", children: "Overview" }),
|
|
45
|
+
/* @__PURE__ */ jsx3(FooterLink, { href: "https://xyo.network/developer/get-started", children: "Get Started" }),
|
|
46
|
+
/* @__PURE__ */ jsx3(FooterLink, { href: "https://xyo.network/developer", children: "SDKs" }),
|
|
47
|
+
/* @__PURE__ */ jsx3(FooterLink, { href: "https://github.com/xyoraclenetwork", children: "Open Source Github" }),
|
|
48
|
+
/* @__PURE__ */ jsx3(FooterLink, { href: "https://xyo.network/docs/sdk/js", children: "Documentation" })
|
|
10
49
|
] });
|
|
11
50
|
export {
|
|
12
51
|
DeveloperLinks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/Xyo/DeveloperLinks.tsx"],"sourcesContent":["import { FlexBoxProps } from '@xylabs/react-flexbox'\n\nimport { FooterLink } from '../Link'\nimport { FooterLinks } from '../Links'\n\nexport const DeveloperLinks: React.FC<FlexBoxProps> = (props) => (\n <FooterLinks title=\"Developer\" {...props}>\n <FooterLink href=\"https://xyo.network/developer\">Overview</FooterLink>\n <FooterLink href=\"https://xyo.network/developer/get-started\">Get Started</FooterLink>\n <FooterLink href=\"https://xyo.network/developer\">SDKs</FooterLink>\n <FooterLink href=\"https://github.com/xyoraclenetwork\">Open Source Github</FooterLink>\n <FooterLink href=\"https://xyo.network/docs/sdk/js\">Documentation</FooterLink>\n </FooterLinks>\n)\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/Link.tsx","../../../src/Links.tsx","../../../src/Xyo/DeveloperLinks.tsx"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { LinkEx, LinkExProps } from '@xylabs/react-link'\n\n/**\n * @description\n * FooterLink automatically uses a local To if the link is to the current domain\n * If the link is not local, it defaults to target being _blank\n * In the case of 'beta' domains, it navigates correctly\n */\n\nconst convertToBetaIfNeeded = (url: string | URL, currentUrl = new URL(document.location.href)) => {\n const urlObj = typeof url === 'string' ? new URL(url) : url\n const currentUrlObj = typeof currentUrl === 'string' ? new URL(currentUrl) : currentUrl\n const currentHostnameParts = currentUrlObj.hostname.split('.')\n const beta = currentHostnameParts.shift() === 'beta'\n if (beta) {\n const currentHostnameWithoutBeta = currentHostnameParts.join('.')\n if (currentHostnameWithoutBeta === urlObj.hostname) {\n urlObj.hostname = currentUrlObj.hostname\n }\n }\n return urlObj\n}\n\nexport const FooterLink: React.FC<LinkExProps> = ({ target, href, margin = 0.5, variant = 'body2', ...props }) => {\n const url = new URL(assertEx(href, 'href not set'))\n assertEx(url.hostname, 'Hostname is required in href')\n const convertedUrl = convertToBetaIfNeeded(url)\n if (document.location.hostname === convertedUrl.hostname) {\n const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname\n return <LinkEx margin={margin} to={to} target={target} variant={variant} {...props} />\n } else {\n return <LinkEx margin={margin} href={href} target={target ?? '_blank'} variant={variant} {...props} />\n }\n}\n","import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport const FooterLinks: React.FC<FlexBoxProps> = ({ children, title, ...props }) => {\n return (\n <FlexCol margin={1} justifyContent=\"flex-start\" title={title} {...props}>\n <Typography margin={0.5} variant=\"h6\" noWrap>\n {title}\n </Typography>\n {children}\n </FlexCol>\n )\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\n\nimport { FooterLink } from '../Link'\nimport { FooterLinks } from '../Links'\n\nexport const DeveloperLinks: React.FC<FlexBoxProps> = (props) => (\n <FooterLinks title=\"Developer\" {...props}>\n <FooterLink href=\"https://xyo.network/developer\">Overview</FooterLink>\n <FooterLink href=\"https://xyo.network/developer/get-started\">Get Started</FooterLink>\n <FooterLink href=\"https://xyo.network/developer\">SDKs</FooterLink>\n <FooterLink href=\"https://github.com/xyoraclenetwork\">Open Source Github</FooterLink>\n <FooterLink href=\"https://xyo.network/docs/sdk/js\">Documentation</FooterLink>\n </FooterLinks>\n)\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,cAA2B;AA6BzB;AApBX,IAAM,wBAAwB,CAAC,KAAmB,aAAa,IAAI,IAAI,SAAS,SAAS,IAAI,MAAM;AACjG,QAAM,SAAS,OAAO,QAAQ,WAAW,IAAI,IAAI,GAAG,IAAI;AACxD,QAAM,gBAAgB,OAAO,eAAe,WAAW,IAAI,IAAI,UAAU,IAAI;AAC7E,QAAM,uBAAuB,cAAc,SAAS,MAAM,GAAG;AAC7D,QAAM,OAAO,qBAAqB,MAAM,MAAM;AAC9C,MAAI,MAAM;AACR,UAAM,6BAA6B,qBAAqB,KAAK,GAAG;AAChE,QAAI,+BAA+B,OAAO,UAAU;AAClD,aAAO,WAAW,cAAc;AAAA,IAClC;AAAA,EACF;AACA,SAAO;AACT;AAEO,IAAM,aAAoC,CAAC,EAAE,QAAQ,MAAM,SAAS,KAAK,UAAU,SAAS,GAAG,MAAM,MAAM;AAChH,QAAM,MAAM,IAAI,IAAI,SAAS,MAAM,cAAc,CAAC;AAClD,WAAS,IAAI,UAAU,8BAA8B;AACrD,QAAM,eAAe,sBAAsB,GAAG;AAC9C,MAAI,SAAS,SAAS,aAAa,aAAa,UAAU;AACxD,UAAM,KAAK,IAAI,OAAO,SAAS,IAAI,GAAG,aAAa,QAAQ,GAAG,aAAa,MAAM,KAAK,IAAI;AAC1F,WAAO,oBAAC,UAAO,QAAgB,IAAQ,QAAgB,SAAmB,GAAG,OAAO;AAAA,EACtF,OAAO;AACL,WAAO,oBAAC,UAAO,QAAgB,MAAY,QAAQ,UAAU,UAAU,SAAmB,GAAG,OAAO;AAAA,EACtG;AACF;;;AClCA,SAAS,kBAAkB;AAC3B,SAAuB,eAAe;AAIlC,SACE,OAAAA,MADF;AAFG,IAAM,cAAsC,CAAC,EAAE,UAAU,OAAO,GAAG,MAAM,MAAM;AACpF,SACE,qBAAC,WAAQ,QAAQ,GAAG,gBAAe,cAAa,OAAe,GAAG,OAChE;AAAA,oBAAAA,KAAC,cAAW,QAAQ,KAAK,SAAQ,MAAK,QAAM,MACzC,iBACH;AAAA,IACC;AAAA,KACH;AAEJ;;;ACNE,SACE,OAAAC,MADF,QAAAC,aAAA;AADK,IAAM,iBAAyC,CAAC,UACrD,gBAAAA,MAAC,eAAY,OAAM,aAAa,GAAG,OACjC;AAAA,kBAAAD,KAAC,cAAW,MAAK,iCAAgC,sBAAQ;AAAA,EACzD,gBAAAA,KAAC,cAAW,MAAK,6CAA4C,yBAAW;AAAA,EACxE,gBAAAA,KAAC,cAAW,MAAK,iCAAgC,kBAAI;AAAA,EACrD,gBAAAA,KAAC,cAAW,MAAK,sCAAqC,gCAAkB;AAAA,EACxE,gBAAAA,KAAC,cAAW,MAAK,mCAAkC,2BAAa;AAAA,GAClE;","names":["jsx","jsx","jsxs"]}
|
|
@@ -1,14 +1,157 @@
|
|
|
1
|
-
|
|
1
|
+
// src/Xyo/Footer.tsx
|
|
2
2
|
import { Grid } from "@mui/material";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
|
|
3
|
+
|
|
4
|
+
// src/Footer.tsx
|
|
5
|
+
import { Container, useTheme } from "@mui/material";
|
|
6
|
+
import { FlexCol, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
|
|
9
|
+
// src/AlwaysLinks.tsx
|
|
10
|
+
import { MoreHoriz as MoreHorizIcon } from "@mui/icons-material";
|
|
11
|
+
import { FlexRow } from "@xylabs/react-flexbox";
|
|
12
|
+
|
|
13
|
+
// src/Link.tsx
|
|
14
|
+
import { assertEx } from "@xylabs/assert";
|
|
15
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
16
|
+
import { jsx } from "react/jsx-runtime";
|
|
17
|
+
var convertToBetaIfNeeded = (url, currentUrl = new URL(document.location.href)) => {
|
|
18
|
+
const urlObj = typeof url === "string" ? new URL(url) : url;
|
|
19
|
+
const currentUrlObj = typeof currentUrl === "string" ? new URL(currentUrl) : currentUrl;
|
|
20
|
+
const currentHostnameParts = currentUrlObj.hostname.split(".");
|
|
21
|
+
const beta = currentHostnameParts.shift() === "beta";
|
|
22
|
+
if (beta) {
|
|
23
|
+
const currentHostnameWithoutBeta = currentHostnameParts.join(".");
|
|
24
|
+
if (currentHostnameWithoutBeta === urlObj.hostname) {
|
|
25
|
+
urlObj.hostname = currentUrlObj.hostname;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return urlObj;
|
|
29
|
+
};
|
|
30
|
+
var FooterLink = ({ target, href, margin = 0.5, variant = "body2", ...props }) => {
|
|
31
|
+
const url = new URL(assertEx(href, "href not set"));
|
|
32
|
+
assertEx(url.hostname, "Hostname is required in href");
|
|
33
|
+
const convertedUrl = convertToBetaIfNeeded(url);
|
|
34
|
+
if (document.location.hostname === convertedUrl.hostname) {
|
|
35
|
+
const to = url.search.length > 0 ? `${convertedUrl.pathname}${convertedUrl.search}` : url.pathname;
|
|
36
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, to, target, variant, ...props });
|
|
37
|
+
} else {
|
|
38
|
+
return /* @__PURE__ */ jsx(LinkEx, { margin, href, target: target ?? "_blank", variant, ...props });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/AlwaysLinks.tsx
|
|
43
|
+
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
44
|
+
var FooterAlwaysLinks = ({ style, footerLinks: footerLinks2, onMore, ...props }) => /* @__PURE__ */ jsxs(FlexRow, { flexWrap: "wrap", textTransform: "uppercase", style: { opacity: 0.6, ...style }, ...props, children: [
|
|
45
|
+
footerLinks2?.map((footerLink, index) => /* @__PURE__ */ jsx2(FooterLink, { noWrap: true, paddingX: 1, margin: 0, ...footerLink, children: /* @__PURE__ */ jsx2("small", { children: footerLink.title }) }, index)),
|
|
46
|
+
onMore ? /* @__PURE__ */ jsx2(FlexRow, { style: { cursor: "pointer" }, paddingX: 0.5, onClick: onMore, children: /* @__PURE__ */ jsx2(MoreHorizIcon, { color: "primary", fontSize: "small" }) }) : null
|
|
47
|
+
] });
|
|
48
|
+
|
|
49
|
+
// src/Footer.tsx
|
|
50
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
51
|
+
var Footer = ({ alwaysFooterLinksProps, children, container, dynamicHeight = false, ...props }) => {
|
|
52
|
+
const [more, setMore] = useState(false);
|
|
53
|
+
const onMore = () => {
|
|
54
|
+
setMore(!more);
|
|
55
|
+
};
|
|
56
|
+
const theme = useTheme();
|
|
57
|
+
return /* @__PURE__ */ jsxs2(
|
|
58
|
+
FlexCol,
|
|
59
|
+
{
|
|
60
|
+
alignItems: "stretch",
|
|
61
|
+
onMouseLeave: () => {
|
|
62
|
+
setMore(false);
|
|
63
|
+
},
|
|
64
|
+
...props,
|
|
65
|
+
children: [
|
|
66
|
+
more && dynamicHeight ? /* @__PURE__ */ jsx3(FlexCol, { alignItems: "stretch", children: /* @__PURE__ */ jsx3(FlexRow2, { bottom: -1, position: "absolute", width: "100%", bgcolor: theme.palette.background.default, children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children }) : children }) }) : null,
|
|
67
|
+
!dynamicHeight ? /* @__PURE__ */ jsx3(FlexCol, { alignItems: "stretch", children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children }) : children }) : null,
|
|
68
|
+
/* @__PURE__ */ jsx3(FlexRow2, { children: container && container !== "none" ? /* @__PURE__ */ jsx3(Container, { children: /* @__PURE__ */ jsx3(FooterAlwaysLinks, { ...alwaysFooterLinksProps, onMore: dynamicHeight ? onMore : void 0 }) }) : /* @__PURE__ */ jsx3(FooterAlwaysLinks, { ...alwaysFooterLinksProps, onMore: dynamicHeight ? onMore : void 0 }) })
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/lib/copyrightLinkTitle.ts
|
|
75
|
+
var copyrightLinkTitle = (entity) => {
|
|
76
|
+
return `Copyright \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} ${entity}`;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
// src/Links.tsx
|
|
80
|
+
import { Typography } from "@mui/material";
|
|
81
|
+
import { FlexCol as FlexCol2 } from "@xylabs/react-flexbox";
|
|
82
|
+
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
83
|
+
var FooterLinks = ({ children, title, ...props }) => {
|
|
84
|
+
return /* @__PURE__ */ jsxs3(FlexCol2, { margin: 1, justifyContent: "flex-start", title, ...props, children: [
|
|
85
|
+
/* @__PURE__ */ jsx4(Typography, { margin: 0.5, variant: "h6", noWrap: true, children: title }),
|
|
86
|
+
children
|
|
87
|
+
] });
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// src/Xyo/DeveloperLinks.tsx
|
|
91
|
+
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
92
|
+
var DeveloperLinks = (props) => /* @__PURE__ */ jsxs4(FooterLinks, { title: "Developer", ...props, children: [
|
|
93
|
+
/* @__PURE__ */ jsx5(FooterLink, { href: "https://xyo.network/developer", children: "Overview" }),
|
|
94
|
+
/* @__PURE__ */ jsx5(FooterLink, { href: "https://xyo.network/developer/get-started", children: "Get Started" }),
|
|
95
|
+
/* @__PURE__ */ jsx5(FooterLink, { href: "https://xyo.network/developer", children: "SDKs" }),
|
|
96
|
+
/* @__PURE__ */ jsx5(FooterLink, { href: "https://github.com/xyoraclenetwork", children: "Open Source Github" }),
|
|
97
|
+
/* @__PURE__ */ jsx5(FooterLink, { href: "https://xyo.network/docs/sdk/js", children: "Documentation" })
|
|
98
|
+
] });
|
|
99
|
+
|
|
100
|
+
// src/Xyo/MoreLinks.tsx
|
|
101
|
+
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
102
|
+
var MoreLinks = (props) => /* @__PURE__ */ jsxs5(FooterLinks, { title: "More", ...props, children: [
|
|
103
|
+
/* @__PURE__ */ jsx6(FooterLink, { href: "https://xyo.network/partners", children: "Partners" }),
|
|
104
|
+
/* @__PURE__ */ jsx6(FooterLink, { href: "https://xyo.network/fhr", children: "FHR" }),
|
|
105
|
+
/* @__PURE__ */ jsx6(FooterLink, { href: "https://xyo.network/brand", children: "Brand" })
|
|
106
|
+
] });
|
|
107
|
+
|
|
108
|
+
// src/Xyo/NetworkLinks.tsx
|
|
109
|
+
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
110
|
+
var NetworkLinks = (props) => /* @__PURE__ */ jsxs6(FooterLinks, { title: "Network", ...props, children: [
|
|
111
|
+
/* @__PURE__ */ jsx7(FooterLink, { href: "https://xyo.network/network", children: "Overview" }),
|
|
112
|
+
/* @__PURE__ */ jsx7(FooterLink, { href: "https://xyo.network/network/bound-witness", children: "Bound Witness" }),
|
|
113
|
+
/* @__PURE__ */ jsx7(FooterLink, { href: "https://xyo.network/network/proof-of-origin", children: "Proof Of Origin" }),
|
|
114
|
+
/* @__PURE__ */ jsx7(FooterLink, { href: "https://xyo.network/papers", children: "White Paper" })
|
|
115
|
+
] });
|
|
116
|
+
|
|
117
|
+
// src/Xyo/SocialLinks.tsx
|
|
118
|
+
import { Facebook, Instagram, LinkedIn, Reddit, Telegram, Twitter, YouTube } from "@mui/icons-material";
|
|
119
|
+
import { FlexRow as FlexRow3 } from "@xylabs/react-flexbox";
|
|
120
|
+
import { FaDiscord } from "react-icons/fa/index.js";
|
|
121
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
122
|
+
var SocialLinks = (props) => {
|
|
123
|
+
return /* @__PURE__ */ jsx8(FooterLinks, { title: "XYO Socials", ...props, children: /* @__PURE__ */ jsxs7(FlexRow3, { flexWrap: "wrap", justifyContent: "flex-start", children: [
|
|
124
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://business.facebook.com/OfficialXYO/", children: /* @__PURE__ */ jsx8(Facebook, {}) }),
|
|
125
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://twitter.com/OfficialXYO", children: /* @__PURE__ */ jsx8(Twitter, {}) }),
|
|
126
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://www.instagram.com/officialxyo/", children: /* @__PURE__ */ jsx8(Instagram, {}) }),
|
|
127
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://t.me/xyonetwork", children: /* @__PURE__ */ jsx8(Telegram, {}) }),
|
|
128
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://www.reddit.com/r/XYONetwork/", children: /* @__PURE__ */ jsx8(Reddit, {}) }),
|
|
129
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://www.youtube.com/channel/UCyZDqb9pgntVHJVt1pxXtsw", children: /* @__PURE__ */ jsx8(YouTube, {}) }),
|
|
130
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://www.linkedin.com/company/officialxyo/", children: /* @__PURE__ */ jsx8(LinkedIn, {}) }),
|
|
131
|
+
/* @__PURE__ */ jsx8(FooterLink, { href: "https://discord.gg/officialxyo", children: /* @__PURE__ */ jsx8(FaDiscord, {}) })
|
|
132
|
+
] }) });
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// src/Xyo/SupportLinks.tsx
|
|
136
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
137
|
+
var SupportLinks = (props) => /* @__PURE__ */ jsxs8(FooterLinks, { title: "Support", ...props, children: [
|
|
138
|
+
/* @__PURE__ */ jsx9(FooterLink, { href: "https://support.xy.company/hc/en-us/categories/360001417734", children: "Help Center" }),
|
|
139
|
+
/* @__PURE__ */ jsx9(FooterLink, { href: "https://support.xy.company/hc/en-us/requests/new", children: "Contact Support" })
|
|
140
|
+
] });
|
|
141
|
+
|
|
142
|
+
// src/Xyo/TokenLinks.tsx
|
|
143
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
144
|
+
var TokenLinks = (props) => /* @__PURE__ */ jsxs9(FooterLinks, { title: "XYO Tokens", ...props, children: [
|
|
145
|
+
/* @__PURE__ */ jsx10(FooterLink, { href: "https://xyo.network/token", children: "About" }),
|
|
146
|
+
/* @__PURE__ */ jsx10(FooterLink, { href: "https://xyo.network/token/exchange", children: "Exchanges" }),
|
|
147
|
+
/* @__PURE__ */ jsx10(FooterLink, { href: "https://xyo.network/token/price", children: "Prices" }),
|
|
148
|
+
/* @__PURE__ */ jsx10(FooterLink, { href: "https://xyo.network/token/wallet", children: "Wallets" }),
|
|
149
|
+
/* @__PURE__ */ jsx10(FooterLink, { href: "https://etherscan.io/address/0x55296f69f40ea6d20e478533c15a6b08b654e758", children: "Contract" })
|
|
150
|
+
] });
|
|
151
|
+
|
|
152
|
+
// src/Xyo/Footer.tsx
|
|
153
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
154
|
+
var footerLinks = [
|
|
12
155
|
{
|
|
13
156
|
href: "https://xylabs.com/",
|
|
14
157
|
title: copyrightLinkTitle("XY Labs, Inc.")
|
|
@@ -30,17 +173,17 @@ const footerLinks = [
|
|
|
30
173
|
title: "Careers"
|
|
31
174
|
}
|
|
32
175
|
];
|
|
33
|
-
|
|
176
|
+
var XyoFooter = ({
|
|
34
177
|
alwaysFooterLinksProps = { footerLinks },
|
|
35
178
|
...props
|
|
36
179
|
}) => {
|
|
37
|
-
return /* @__PURE__ */
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
/* @__PURE__ */
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
-
/* @__PURE__ */
|
|
42
|
-
/* @__PURE__ */
|
|
43
|
-
/* @__PURE__ */
|
|
180
|
+
return /* @__PURE__ */ jsx11(Footer, { alwaysFooterLinksProps, ...props, children: /* @__PURE__ */ jsxs10(Grid, { container: true, children: [
|
|
181
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 12, md: 2, children: /* @__PURE__ */ jsx11(SocialLinks, { alignItems: "flex-start" }) }),
|
|
182
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 6, md: 2, children: /* @__PURE__ */ jsx11(NetworkLinks, { alignItems: "flex-start" }) }),
|
|
183
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 6, md: 2, children: /* @__PURE__ */ jsx11(TokenLinks, { alignItems: "flex-start" }) }),
|
|
184
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 6, md: 2, children: /* @__PURE__ */ jsx11(DeveloperLinks, { alignItems: "flex-start" }) }),
|
|
185
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 6, md: 2, children: /* @__PURE__ */ jsx11(MoreLinks, { alignItems: "flex-start" }) }),
|
|
186
|
+
/* @__PURE__ */ jsx11(Grid, { item: true, xs: 6, md: 2, children: /* @__PURE__ */ jsx11(SupportLinks, { alignItems: "flex-start" }) })
|
|
44
187
|
] }) });
|
|
45
188
|
};
|
|
46
189
|
export {
|