@xyo-network/react-powered-by-xyo 2.57.8
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/LICENSE +165 -0
- package/README.md +13 -0
- package/dist/cjs/components/PoweredByXyoFlexBox.js +47 -0
- package/dist/cjs/components/PoweredByXyoFlexBox.js.map +1 -0
- package/dist/cjs/components/XyoBusyFlexBox.js +24 -0
- package/dist/cjs/components/XyoBusyFlexBox.js.map +1 -0
- package/dist/cjs/components/index.js +6 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/img/index.js +9 -0
- package/dist/cjs/img/index.js.map +1 -0
- package/dist/cjs/img/xyo-color-logo-text-only.svg +1 -0
- package/dist/cjs/img/xyo-color-logo.svg +1 -0
- package/dist/cjs/index.js +5 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/docs.json +23537 -0
- package/dist/esm/components/PoweredByXyoFlexBox.js +41 -0
- package/dist/esm/components/PoweredByXyoFlexBox.js.map +1 -0
- package/dist/esm/components/XyoBusyFlexBox.js +18 -0
- package/dist/esm/components/XyoBusyFlexBox.js.map +1 -0
- package/dist/esm/components/index.js +3 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/img/index.js +4 -0
- package/dist/esm/img/index.js.map +1 -0
- package/dist/esm/img/xyo-color-logo-text-only.svg +1 -0
- package/dist/esm/img/xyo-color-logo.svg +1 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/types/components/PoweredByXyoFlexBox.d.ts +9 -0
- package/dist/types/components/PoweredByXyoFlexBox.d.ts.map +1 -0
- package/dist/types/components/XyoBusyFlexBox.d.ts +8 -0
- package/dist/types/components/XyoBusyFlexBox.d.ts.map +1 -0
- package/dist/types/components/index.d.ts +3 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/types/img/index.d.ts +4 -0
- package/dist/types/img/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +77 -0
- package/src/components/PoweredByXyoFlexBox.tsx +70 -0
- package/src/components/PoweredByXyoFlexbox.stories.tsx +27 -0
- package/src/components/XyoBusyFlexBox.tsx +30 -0
- package/src/components/index.ts +2 -0
- package/src/img/index.ts +4 -0
- package/src/img/xyo-color-logo-text-only.svg +1 -0
- package/src/img/xyo-color-logo.svg +1 -0
- package/src/index.ts +1 -0
- package/src/types/images.d.ts +5 -0
- package/typedoc.json +5 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Paper, Typography } from '@mui/material';
|
|
3
|
+
import { useAsyncEffect } from '@xylabs/react-async-effect';
|
|
4
|
+
import { FlexCol, FlexRow } from '@xylabs/react-flexbox';
|
|
5
|
+
import { LinkEx } from '@xylabs/react-link';
|
|
6
|
+
import { useProvidedNode } from '@xyo-network/react-node';
|
|
7
|
+
import { useState } from 'react';
|
|
8
|
+
import { xyoColorLogoText } from '../img';
|
|
9
|
+
import { XyoBusyFlexBox } from './XyoBusyFlexBox';
|
|
10
|
+
export const PoweredByXyoFlexbox = ({
|
|
11
|
+
// leave animation on by default so when done testing, removing the prop lets it work
|
|
12
|
+
disableAnimation = false, logoHeight, logoTextSize, ...props }) => {
|
|
13
|
+
const [node] = useProvidedNode();
|
|
14
|
+
const [busyCount, setBusyCount] = useState(0);
|
|
15
|
+
useAsyncEffect(
|
|
16
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17
|
+
async () => {
|
|
18
|
+
let unsubscribes;
|
|
19
|
+
if (disableAnimation) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
const mods = await node?.resolve();
|
|
24
|
+
unsubscribes = mods?.map((mod) => {
|
|
25
|
+
return mod.on('moduleBusy', ({ busy }) => {
|
|
26
|
+
if (busy) {
|
|
27
|
+
setBusyCount(busyCount + 1);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
setBusyCount(busyCount - 1);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return () => {
|
|
36
|
+
unsubscribes?.forEach((unsubscribe) => unsubscribe?.());
|
|
37
|
+
};
|
|
38
|
+
}, [busyCount, disableAnimation, node]);
|
|
39
|
+
return (_jsx(FlexCol, { alignItems: "stretch", position: "absolute", bottom: "0", left: "0", ...props, children: _jsx(LinkEx, { href: "https://xyo.network", target: "_blank", children: _jsx(Paper, { sx: { borderRadius: 0, boxShadow: 0 }, children: _jsxs(FlexCol, { padding: 0.5, children: [_jsx(Typography, { style: { fontSize: logoTextSize ?? 10 }, fontSize: "small", children: "Powered by" }), _jsxs(FlexRow, { children: [_jsx(XyoBusyFlexBox, { busy: !!busyCount }), _jsx("img", { src: xyoColorLogoText, height: logoHeight ?? 24 })] })] }) }) }) }));
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=PoweredByXyoFlexBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoweredByXyoFlexBox.js","sourceRoot":"","sources":["../../../src/components/PoweredByXyoFlexBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAgB,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQjD,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC;AACtE,qFAAqF;AACrF,gBAAgB,GAAG,KAAK,EACxB,UAAU,EACV,YAAY,EACZ,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,EAAE,CAAA;IAChC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE7C,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,IAAI,YAAoD,CAAA;QACxD,IAAI,gBAAgB,EAAE;YACpB,OAAM;SACP;aAAM;YACL,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,OAAO,EAAE,CAAA;YAClC,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC/B,OAAO,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;oBACvC,IAAI,IAAI,EAAE;wBACR,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;qBAC5B;yBAAM;wBACL,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;qBAC5B;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;SACH;QACD,OAAO,GAAG,EAAE;YACV,YAAY,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACzD,CAAC,CAAA;IACH,CAAC,EACD,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,CACpC,CAAA;IAED,OAAO,CACL,KAAC,OAAO,IAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,UAAU,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,GAAG,KAAK,KAAK,YAC7E,KAAC,MAAM,IAAC,IAAI,EAAC,qBAAqB,EAAC,MAAM,EAAC,QAAQ,YAChD,KAAC,KAAK,IAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAC1C,MAAC,OAAO,IAAC,OAAO,EAAE,GAAG,aACnB,KAAC,UAAU,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,YAAY,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAC,OAAO,2BAExD,EACb,MAAC,OAAO,eACN,KAAC,cAAc,IAAC,IAAI,EAAE,CAAC,CAAC,SAAS,GAAI,EACrC,cAAK,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,IAAI,EAAE,GAAI,IAChD,IACF,GACJ,GACD,GACD,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FlexCol } from '@xylabs/react-flexbox';
|
|
3
|
+
import { xyoColorLogo } from '../img';
|
|
4
|
+
export const XyoBusyFlexBox = ({ widthInPixels, busy, ...props }) => {
|
|
5
|
+
return (_jsx(FlexCol, { sx: {
|
|
6
|
+
'@keyframes spin': {
|
|
7
|
+
'0%': {
|
|
8
|
+
transform: 'rotate(360deg)',
|
|
9
|
+
},
|
|
10
|
+
'100%': {
|
|
11
|
+
transform: 'rotate(0deg)',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
animation: busy ? 'spin 2s linear infinite' : undefined,
|
|
15
|
+
animationDirection: 'reverse',
|
|
16
|
+
}, ...props, children: _jsx("img", { src: xyoColorLogo, height: widthInPixels ?? 22 }) }));
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=XyoBusyFlexBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoBusyFlexBox.js","sourceRoot":"","sources":["../../../src/components/XyoBusyFlexBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAOrC,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACjG,OAAO,CACL,KAAC,OAAO,IACN,EAAE,EAAE;YACF,iBAAiB,EAAE;gBACjB,IAAI,EAAE;oBACJ,SAAS,EAAE,gBAAgB;iBAC5B;gBACD,MAAM,EAAE;oBACN,SAAS,EAAE,cAAc;iBAC1B;aACF;YACD,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,SAAS;YACvD,kBAAkB,EAAE,SAAS;SAC9B,KACG,KAAK,YAET,cAAK,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE,GAAI,GAC/C,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/img/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,gCAAgC,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="250 0 451 238"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class="cls-1" d="M570,55.35a61.13,61.13,0,1,0,61.11,61.1A61.21,61.21,0,0,0,570,55.35Zm-266.4.1-8.2,8.14,53,52.91-53,52.91,8.2,8.2,52.91-53,44.77,44.77,8.14,8.2,114-114-8.14-8.14-52.91,52.91-53-52.91-8.14,8.14-44.77,44.77ZM570,66.84a49.61,49.61,0,1,1-49.61,49.61A49.54,49.54,0,0,1,570,66.84ZM409.45,71.73l44.77,44.77-44.77,44.77L364.68,116.5Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 238"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class="cls-1" d="M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z"/><path class="cls-2" d="M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z"/><path class="cls-3" d="M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z"/><path class="cls-4" d="M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
|
3
|
+
export interface PoweredByXyoFlexboxProps extends FlexBoxProps {
|
|
4
|
+
disableAnimation?: boolean;
|
|
5
|
+
logoHeight?: number;
|
|
6
|
+
logoTextSize?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare const PoweredByXyoFlexbox: React.FC<PoweredByXyoFlexboxProps>;
|
|
9
|
+
//# sourceMappingURL=PoweredByXyoFlexBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PoweredByXyoFlexBox.d.ts","sourceRoot":"","sources":["../../../src/components/PoweredByXyoFlexBox.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAStE,MAAM,WAAW,wBAAyB,SAAQ,YAAY;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAoDlE,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
|
3
|
+
export type XyoBusyFlexBoxProps = FlexBoxProps & {
|
|
4
|
+
busy?: boolean;
|
|
5
|
+
widthInPixels?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const XyoBusyFlexBox: React.FC<XyoBusyFlexBoxProps>;
|
|
8
|
+
//# sourceMappingURL=XyoBusyFlexBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XyoBusyFlexBox.d.ts","sourceRoot":"","sources":["../../../src/components/XyoBusyFlexBox.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAI7D,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG;IAC/C,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoBxD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/img/index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,sBAAsB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,gCAAgC,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/react-powered-by-xyo",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@xylabs/react-async-effect": "~2.17.7",
|
|
14
|
+
"@xylabs/react-flexbox": "~2.17.7",
|
|
15
|
+
"@xylabs/react-link": "~2.17.7",
|
|
16
|
+
"@xyo-network/module-events": "~2.68.0",
|
|
17
|
+
"@xyo-network/react-node": "~2.59.1"
|
|
18
|
+
},
|
|
19
|
+
"peerDependencies": {
|
|
20
|
+
"@mui/icons-material": "^5",
|
|
21
|
+
"@mui/material": "^5",
|
|
22
|
+
"@mui/styles": "^5",
|
|
23
|
+
"axios": "^1.3.1",
|
|
24
|
+
"react": "^18.2.0",
|
|
25
|
+
"react-dom": "^18.2.0",
|
|
26
|
+
"react-router-dom": "^6.3.0"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@storybook/react": "^7.1.1",
|
|
30
|
+
"@xylabs/ts-scripts-yarn3": "^2.19.0",
|
|
31
|
+
"typescript": "^5.1.6"
|
|
32
|
+
},
|
|
33
|
+
"description": "Common React library for all XYO projects that use React",
|
|
34
|
+
"browser": "dist/esm/index.js",
|
|
35
|
+
"docs": "dist/docs.json",
|
|
36
|
+
"exports": {
|
|
37
|
+
".": {
|
|
38
|
+
"node": {
|
|
39
|
+
"import": "./dist/esm/index.js",
|
|
40
|
+
"require": "./dist/cjs/index.js"
|
|
41
|
+
},
|
|
42
|
+
"browser": {
|
|
43
|
+
"import": "./dist/esm/index.js",
|
|
44
|
+
"require": "./dist/cjs/index.js"
|
|
45
|
+
},
|
|
46
|
+
"default": "./dist/esm/index.js"
|
|
47
|
+
},
|
|
48
|
+
"./dist/docs.json": {
|
|
49
|
+
"default": "./dist/docs.json"
|
|
50
|
+
},
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"main": "dist/cjs/index.js",
|
|
54
|
+
"module": "dist/esm/index.js",
|
|
55
|
+
"homepage": "https://xyo.network",
|
|
56
|
+
"keywords": [
|
|
57
|
+
"xyo",
|
|
58
|
+
"utility",
|
|
59
|
+
"typescript",
|
|
60
|
+
"react"
|
|
61
|
+
],
|
|
62
|
+
"license": "LGPL-3.0",
|
|
63
|
+
"publishConfig": {
|
|
64
|
+
"access": "public"
|
|
65
|
+
},
|
|
66
|
+
"repository": {
|
|
67
|
+
"type": "git",
|
|
68
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js.git"
|
|
69
|
+
},
|
|
70
|
+
"scripts": {
|
|
71
|
+
"lint-pkg": "npmPkgJsonLint .",
|
|
72
|
+
"license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\""
|
|
73
|
+
},
|
|
74
|
+
"sideEffects": false,
|
|
75
|
+
"types": "dist/types/index.d.ts",
|
|
76
|
+
"version": "2.57.8"
|
|
77
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Paper, Typography } from '@mui/material'
|
|
2
|
+
import { useAsyncEffect } from '@xylabs/react-async-effect'
|
|
3
|
+
import { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'
|
|
4
|
+
import { LinkEx } from '@xylabs/react-link'
|
|
5
|
+
import { EventUnsubscribeFunction } from '@xyo-network/module-events'
|
|
6
|
+
import { useProvidedNode } from '@xyo-network/react-node'
|
|
7
|
+
import { useState } from 'react'
|
|
8
|
+
|
|
9
|
+
import { xyoColorLogoText } from '../img'
|
|
10
|
+
import { XyoBusyFlexBox } from './XyoBusyFlexBox'
|
|
11
|
+
|
|
12
|
+
export interface PoweredByXyoFlexboxProps extends FlexBoxProps {
|
|
13
|
+
disableAnimation?: boolean
|
|
14
|
+
logoHeight?: number
|
|
15
|
+
logoTextSize?: number
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const PoweredByXyoFlexbox: React.FC<PoweredByXyoFlexboxProps> = ({
|
|
19
|
+
// leave animation on by default so when done testing, removing the prop lets it work
|
|
20
|
+
disableAnimation = false,
|
|
21
|
+
logoHeight,
|
|
22
|
+
logoTextSize,
|
|
23
|
+
...props
|
|
24
|
+
}) => {
|
|
25
|
+
const [node] = useProvidedNode()
|
|
26
|
+
const [busyCount, setBusyCount] = useState(0)
|
|
27
|
+
|
|
28
|
+
useAsyncEffect(
|
|
29
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
+
async () => {
|
|
31
|
+
let unsubscribes: undefined | EventUnsubscribeFunction[]
|
|
32
|
+
if (disableAnimation) {
|
|
33
|
+
return
|
|
34
|
+
} else {
|
|
35
|
+
const mods = await node?.resolve()
|
|
36
|
+
unsubscribes = mods?.map((mod) => {
|
|
37
|
+
return mod.on('moduleBusy', ({ busy }) => {
|
|
38
|
+
if (busy) {
|
|
39
|
+
setBusyCount(busyCount + 1)
|
|
40
|
+
} else {
|
|
41
|
+
setBusyCount(busyCount - 1)
|
|
42
|
+
}
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
}
|
|
46
|
+
return () => {
|
|
47
|
+
unsubscribes?.forEach((unsubscribe) => unsubscribe?.())
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
[busyCount, disableAnimation, node],
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
return (
|
|
54
|
+
<FlexCol alignItems="stretch" position="absolute" bottom="0" left="0" {...props}>
|
|
55
|
+
<LinkEx href="https://xyo.network" target="_blank">
|
|
56
|
+
<Paper sx={{ borderRadius: 0, boxShadow: 0 }}>
|
|
57
|
+
<FlexCol padding={0.5}>
|
|
58
|
+
<Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize="small">
|
|
59
|
+
Powered by
|
|
60
|
+
</Typography>
|
|
61
|
+
<FlexRow>
|
|
62
|
+
<XyoBusyFlexBox busy={!!busyCount} />
|
|
63
|
+
<img src={xyoColorLogoText} height={logoHeight ?? 24} />
|
|
64
|
+
</FlexRow>
|
|
65
|
+
</FlexCol>
|
|
66
|
+
</Paper>
|
|
67
|
+
</LinkEx>
|
|
68
|
+
</FlexCol>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Meta, StoryFn } from '@storybook/react'
|
|
2
|
+
import { FlexCol } from '@xylabs/react-flexbox'
|
|
3
|
+
|
|
4
|
+
import { PoweredByXyoFlexbox } from './PoweredByXyoFlexBox'
|
|
5
|
+
|
|
6
|
+
const StorybookEntry = {
|
|
7
|
+
component: PoweredByXyoFlexbox,
|
|
8
|
+
parameters: {
|
|
9
|
+
docs: {
|
|
10
|
+
page: null,
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
title: 'powered-by-xyo',
|
|
14
|
+
} as Meta<typeof PoweredByXyoFlexbox>
|
|
15
|
+
|
|
16
|
+
const TemplateContainer: StoryFn<typeof PoweredByXyoFlexbox> = () => (
|
|
17
|
+
<FlexCol height="300px" width="100%" sx={{ backgroundColor: 'grey' }}>
|
|
18
|
+
<PoweredByXyoFlexbox />
|
|
19
|
+
</FlexCol>
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
const Default = TemplateContainer.bind({})
|
|
23
|
+
|
|
24
|
+
export { Default }
|
|
25
|
+
|
|
26
|
+
// eslint-disable-next-line import/no-default-export
|
|
27
|
+
export default StorybookEntry
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
|
|
2
|
+
|
|
3
|
+
import { xyoColorLogo } from '../img'
|
|
4
|
+
|
|
5
|
+
export type XyoBusyFlexBoxProps = FlexBoxProps & {
|
|
6
|
+
busy?: boolean
|
|
7
|
+
widthInPixels?: number
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const XyoBusyFlexBox: React.FC<XyoBusyFlexBoxProps> = ({ widthInPixels, busy, ...props }) => {
|
|
11
|
+
return (
|
|
12
|
+
<FlexCol
|
|
13
|
+
sx={{
|
|
14
|
+
'@keyframes spin': {
|
|
15
|
+
'0%': {
|
|
16
|
+
transform: 'rotate(360deg)',
|
|
17
|
+
},
|
|
18
|
+
'100%': {
|
|
19
|
+
transform: 'rotate(0deg)',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
animation: busy ? 'spin 2s linear infinite' : undefined,
|
|
23
|
+
animationDirection: 'reverse',
|
|
24
|
+
}}
|
|
25
|
+
{...props}
|
|
26
|
+
>
|
|
27
|
+
<img src={xyoColorLogo} height={widthInPixels ?? 22} />
|
|
28
|
+
</FlexCol>
|
|
29
|
+
)
|
|
30
|
+
}
|
package/src/img/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="250 0 451 238"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class="cls-1" d="M570,55.35a61.13,61.13,0,1,0,61.11,61.1A61.21,61.21,0,0,0,570,55.35Zm-266.4.1-8.2,8.14,53,52.91-53,52.91,8.2,8.2,52.91-53,44.77,44.77,8.14,8.2,114-114-8.14-8.14-52.91,52.91-53-52.91-8.14,8.14-44.77,44.77ZM570,66.84a49.61,49.61,0,1,1-49.61,49.61A49.54,49.54,0,0,1,570,66.84ZM409.45,71.73l44.77,44.77-44.77,44.77L364.68,116.5Z"/></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 238"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class="cls-1" d="M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z"/><path class="cls-2" d="M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z"/><path class="cls-3" d="M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z"/><path class="cls-4" d="M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z"/></svg>
|
package/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './components'
|