@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.
Files changed (48) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +13 -0
  3. package/dist/cjs/components/PoweredByXyoFlexBox.js +47 -0
  4. package/dist/cjs/components/PoweredByXyoFlexBox.js.map +1 -0
  5. package/dist/cjs/components/XyoBusyFlexBox.js +24 -0
  6. package/dist/cjs/components/XyoBusyFlexBox.js.map +1 -0
  7. package/dist/cjs/components/index.js +6 -0
  8. package/dist/cjs/components/index.js.map +1 -0
  9. package/dist/cjs/img/index.js +9 -0
  10. package/dist/cjs/img/index.js.map +1 -0
  11. package/dist/cjs/img/xyo-color-logo-text-only.svg +1 -0
  12. package/dist/cjs/img/xyo-color-logo.svg +1 -0
  13. package/dist/cjs/index.js +5 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/docs.json +23537 -0
  16. package/dist/esm/components/PoweredByXyoFlexBox.js +41 -0
  17. package/dist/esm/components/PoweredByXyoFlexBox.js.map +1 -0
  18. package/dist/esm/components/XyoBusyFlexBox.js +18 -0
  19. package/dist/esm/components/XyoBusyFlexBox.js.map +1 -0
  20. package/dist/esm/components/index.js +3 -0
  21. package/dist/esm/components/index.js.map +1 -0
  22. package/dist/esm/img/index.js +4 -0
  23. package/dist/esm/img/index.js.map +1 -0
  24. package/dist/esm/img/xyo-color-logo-text-only.svg +1 -0
  25. package/dist/esm/img/xyo-color-logo.svg +1 -0
  26. package/dist/esm/index.js +2 -0
  27. package/dist/esm/index.js.map +1 -0
  28. package/dist/types/components/PoweredByXyoFlexBox.d.ts +9 -0
  29. package/dist/types/components/PoweredByXyoFlexBox.d.ts.map +1 -0
  30. package/dist/types/components/XyoBusyFlexBox.d.ts +8 -0
  31. package/dist/types/components/XyoBusyFlexBox.d.ts.map +1 -0
  32. package/dist/types/components/index.d.ts +3 -0
  33. package/dist/types/components/index.d.ts.map +1 -0
  34. package/dist/types/img/index.d.ts +4 -0
  35. package/dist/types/img/index.d.ts.map +1 -0
  36. package/dist/types/index.d.ts +2 -0
  37. package/dist/types/index.d.ts.map +1 -0
  38. package/package.json +77 -0
  39. package/src/components/PoweredByXyoFlexBox.tsx +70 -0
  40. package/src/components/PoweredByXyoFlexbox.stories.tsx +27 -0
  41. package/src/components/XyoBusyFlexBox.tsx +30 -0
  42. package/src/components/index.ts +2 -0
  43. package/src/img/index.ts +4 -0
  44. package/src/img/xyo-color-logo-text-only.svg +1 -0
  45. package/src/img/xyo-color-logo.svg +1 -0
  46. package/src/index.ts +1 -0
  47. package/src/types/images.d.ts +5 -0
  48. 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,3 @@
1
+ export * from './PoweredByXyoFlexBox';
2
+ export * from './XyoBusyFlexBox';
3
+ //# sourceMappingURL=index.js.map
@@ -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,4 @@
1
+ import xyoColorLogo from './xyo-color-logo.svg';
2
+ import xyoColorLogoText from './xyo-color-logo-text-only.svg';
3
+ export { xyoColorLogo, xyoColorLogoText };
4
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from './components';
2
+ //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export * from './PoweredByXyoFlexBox';
2
+ export * from './XyoBusyFlexBox';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ import xyoColorLogo from './xyo-color-logo.svg';
2
+ import xyoColorLogoText from './xyo-color-logo-text-only.svg';
3
+ export { xyoColorLogo, xyoColorLogoText };
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export * from './components';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ }
@@ -0,0 +1,2 @@
1
+ export * from './PoweredByXyoFlexBox'
2
+ export * from './XyoBusyFlexBox'
@@ -0,0 +1,4 @@
1
+ import xyoColorLogo from './xyo-color-logo.svg'
2
+ import xyoColorLogoText from './xyo-color-logo-text-only.svg'
3
+
4
+ export { xyoColorLogo, xyoColorLogoText }
@@ -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'
@@ -0,0 +1,5 @@
1
+ declare module '*.png'
2
+ declare module '*.jpg'
3
+ declare module '*.svg'
4
+ declare module '*.gif'
5
+ declare module '*.webp'
package/typedoc.json ADDED
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://typedoc.org/schema.json",
3
+ "entryPoints": ["src/index.ts"],
4
+ "tsconfig": "./tsconfig.typedoc.json"
5
+ }