@xyo-network/react-webapp 2.26.8 → 2.26.9

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 (71) hide show
  1. package/dist/cjs/components/Chrome.d.ts +3 -0
  2. package/dist/cjs/components/Chrome.js +2 -2
  3. package/dist/cjs/components/Chrome.js.map +1 -1
  4. package/dist/cjs/components/ErrorPage.d.ts +3 -2
  5. package/dist/cjs/components/ErrorPage.js +1 -1
  6. package/dist/cjs/components/ErrorPage.js.map +1 -1
  7. package/dist/cjs/components/Page.d.ts +3 -1
  8. package/dist/cjs/components/Page.js +3 -3
  9. package/dist/cjs/components/Page.js.map +1 -1
  10. package/dist/cjs/components/ResultLoader.d.ts +8 -0
  11. package/dist/cjs/components/ResultLoader.js +24 -0
  12. package/dist/cjs/components/ResultLoader.js.map +1 -0
  13. package/dist/cjs/components/index.d.ts +1 -0
  14. package/dist/cjs/components/index.js +1 -0
  15. package/dist/cjs/components/index.js.map +1 -1
  16. package/dist/cjs/contexts/AppSettings/Context.d.ts +11 -0
  17. package/dist/cjs/contexts/AppSettings/Context.js +7 -0
  18. package/dist/cjs/contexts/AppSettings/Context.js.map +1 -0
  19. package/dist/cjs/contexts/AppSettings/Provider.d.ts +8 -0
  20. package/dist/cjs/contexts/AppSettings/Provider.js +34 -0
  21. package/dist/cjs/contexts/AppSettings/Provider.js.map +1 -0
  22. package/dist/cjs/contexts/AppSettings/Slug.d.ts +5 -0
  23. package/dist/cjs/contexts/AppSettings/Slug.js +10 -0
  24. package/dist/cjs/contexts/AppSettings/Slug.js.map +1 -0
  25. package/dist/cjs/contexts/AppSettings/Storage.d.ts +11 -0
  26. package/dist/cjs/contexts/AppSettings/Storage.js +31 -0
  27. package/dist/cjs/contexts/AppSettings/Storage.js.map +1 -0
  28. package/dist/cjs/contexts/AppSettings/StorageBase.d.ts +15 -0
  29. package/dist/cjs/contexts/AppSettings/StorageBase.js +78 -0
  30. package/dist/cjs/contexts/AppSettings/StorageBase.js.map +1 -0
  31. package/dist/cjs/contexts/AppSettings/appSettingDefault.d.ts +1 -0
  32. package/dist/cjs/contexts/AppSettings/appSettingDefault.js +13 -0
  33. package/dist/cjs/contexts/AppSettings/appSettingDefault.js.map +1 -0
  34. package/dist/cjs/contexts/AppSettings/index.d.ts +6 -0
  35. package/dist/cjs/contexts/AppSettings/index.js +10 -0
  36. package/dist/cjs/contexts/AppSettings/index.js.map +1 -0
  37. package/dist/cjs/contexts/AppSettings/useAppSettings.d.ts +1 -0
  38. package/dist/cjs/contexts/AppSettings/useAppSettings.js +10 -0
  39. package/dist/cjs/contexts/AppSettings/useAppSettings.js.map +1 -0
  40. package/dist/cjs/contexts/index.d.ts +1 -0
  41. package/dist/cjs/contexts/index.js +5 -0
  42. package/dist/cjs/contexts/index.js.map +1 -0
  43. package/dist/esm/contexts/AppSettings/Context.d.ts +11 -0
  44. package/dist/esm/contexts/AppSettings/Context.js +4 -0
  45. package/dist/esm/contexts/AppSettings/Context.js.map +1 -0
  46. package/dist/esm/contexts/AppSettings/Provider.d.ts +8 -0
  47. package/dist/esm/contexts/AppSettings/Provider.js +31 -0
  48. package/dist/esm/contexts/AppSettings/Provider.js.map +1 -0
  49. package/dist/esm/contexts/AppSettings/Slug.d.ts +5 -0
  50. package/dist/esm/contexts/AppSettings/Slug.js +7 -0
  51. package/dist/esm/contexts/AppSettings/Slug.js.map +1 -0
  52. package/dist/esm/contexts/AppSettings/Storage.d.ts +11 -0
  53. package/dist/esm/contexts/AppSettings/Storage.js +27 -0
  54. package/dist/esm/contexts/AppSettings/Storage.js.map +1 -0
  55. package/dist/esm/contexts/AppSettings/StorageBase.d.ts +15 -0
  56. package/dist/esm/contexts/AppSettings/StorageBase.js +73 -0
  57. package/dist/esm/contexts/AppSettings/StorageBase.js.map +1 -0
  58. package/dist/esm/contexts/AppSettings/appSettingDefault.d.ts +1 -0
  59. package/dist/esm/contexts/AppSettings/appSettingDefault.js +9 -0
  60. package/dist/esm/contexts/AppSettings/appSettingDefault.js.map +1 -0
  61. package/dist/esm/contexts/AppSettings/index.d.ts +6 -0
  62. package/dist/esm/contexts/AppSettings/index.js +7 -0
  63. package/dist/esm/contexts/AppSettings/index.js.map +1 -0
  64. package/dist/esm/contexts/AppSettings/useAppSettings.d.ts +1 -0
  65. package/dist/esm/contexts/AppSettings/useAppSettings.js +6 -0
  66. package/dist/esm/contexts/AppSettings/useAppSettings.js.map +1 -0
  67. package/dist/esm/contexts/index.d.ts +1 -0
  68. package/dist/esm/contexts/index.js +2 -0
  69. package/dist/esm/contexts/index.js.map +1 -0
  70. package/package.json +14 -13
  71. package/src/components/Chrome.stories.tsx +1 -1
@@ -1,4 +1,5 @@
1
1
  import { FlexBoxProps } from '@xylabs/react-flexbox';
2
+ import { WebAppNavigationType } from '@xyo-network/react-app-settings';
2
3
  import { ReactNode } from 'react';
3
4
  export interface WebAppChromeProps extends FlexBoxProps {
4
5
  appName: string;
@@ -6,5 +7,7 @@ export interface WebAppChromeProps extends FlexBoxProps {
6
7
  appbar?: ReactNode;
7
8
  errorPage?: ReactNode;
8
9
  footerElevation?: number;
10
+ navigationType?: WebAppNavigationType;
11
+ menuItems?: ReactNode;
9
12
  }
10
13
  export declare const WebAppChrome: React.FC<WebAppChromeProps>;
@@ -11,8 +11,8 @@ const react_shared_1 = require("@xyo-network/react-shared");
11
11
  const react_helmet_1 = require("react-helmet");
12
12
  const ErrorPage_1 = require("./ErrorPage");
13
13
  const WebAppChrome = (_a) => {
14
- var { footerElevation = 4, errorPage, appbar, footer, children, appName } = _a, props = tslib_1.__rest(_a, ["footerElevation", "errorPage", "appbar", "footer", "children", "appName"]);
15
- return ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexCol, Object.assign({ alignItems: "stretch", height: "100vh" }, props, { children: [(0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, Object.assign({ defaultTitle: appName, titleTemplate: `%s | ${appName}` }, { children: (0, jsx_runtime_1.jsx)("meta", { content: "website", property: "og:type" }) })), appbar !== null && appbar !== void 0 ? appbar : (0, jsx_runtime_1.jsx)(react_appbar_1.ApplicationAppBar, {}), (0, jsx_runtime_1.jsx)(react_flexbox_1.FlexGrowCol, Object.assign({ overflow: "hidden", justifyContent: "flex-start", alignItems: "stretch" }, { children: (0, jsx_runtime_1.jsx)(react_shared_1.ErrorBoundary, Object.assign({ fallback: errorPage !== null && errorPage !== void 0 ? errorPage : (0, jsx_runtime_1.jsx)(ErrorPage_1.WebAppErrorPage, {}) }, { children: children })) })), (0, jsx_runtime_1.jsx)(material_1.Paper, Object.assign({ elevation: footerElevation, square: true }, { children: footer !== null && footer !== void 0 ? footer : (0, jsx_runtime_1.jsx)(react_footer_1.Footer, { dynamicHeight: true }) }))] })));
14
+ var { menuItems, navigationType = 'menu', footerElevation = 4, errorPage, appbar, footer, children, appName } = _a, props = tslib_1.__rest(_a, ["menuItems", "navigationType", "footerElevation", "errorPage", "appbar", "footer", "children", "appName"]);
15
+ return ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexCol, Object.assign({ alignItems: "stretch", overflow: "hidden", height: "100vh" }, props, { children: [(0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, Object.assign({ defaultTitle: appName, titleTemplate: `%s | ${appName}` }, { children: (0, jsx_runtime_1.jsx)("meta", { content: "website", property: "og:type" }) })), appbar !== null && appbar !== void 0 ? appbar : (0, jsx_runtime_1.jsx)(react_appbar_1.ApplicationAppBar, { systemToolbar: (0, jsx_runtime_1.jsx)(react_appbar_1.SystemToolbar, { menuItems: navigationType === 'menu' ? menuItems : undefined }) }), (0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexGrowRow, Object.assign({ overflow: "hidden", alignItems: "stretch" }, { children: [navigationType !== 'menu' ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [menuItems, (0, jsx_runtime_1.jsx)(material_1.Divider, { orientation: "vertical" })] })) : null, (0, jsx_runtime_1.jsx)(react_flexbox_1.FlexGrowCol, Object.assign({ justifyContent: "flex-start", alignItems: "stretch" }, { children: (0, jsx_runtime_1.jsx)(react_shared_1.ErrorBoundary, Object.assign({ fallback: errorPage !== null && errorPage !== void 0 ? errorPage : (0, jsx_runtime_1.jsx)(ErrorPage_1.WebAppErrorPage, {}) }, { children: children })) }))] })), (0, jsx_runtime_1.jsx)(react_flexbox_1.FlexCol, Object.assign({ alignItems: "stretch" }, { children: (0, jsx_runtime_1.jsx)(material_1.Paper, Object.assign({ elevation: footerElevation, square: true }, { children: footer !== null && footer !== void 0 ? footer : (0, jsx_runtime_1.jsx)(react_footer_1.Footer, { dynamicHeight: true }) })) }))] })));
16
16
  };
17
17
  exports.WebAppChrome = WebAppChrome;
18
18
  //# sourceMappingURL=Chrome.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome.js","sourceRoot":"","sources":["../../../src/components/Chrome.tsx"],"names":[],"mappings":";;;;;AAAA,4CAAqC;AACrC,yDAA0E;AAC1E,4DAA6D;AAC7D,4DAAkD;AAClD,4DAAyD;AAEzD,+CAAqC;AAErC,2CAA6C;AAUtC,MAAM,YAAY,GAAgC,CAAC,EAA+E,EAAE,EAAE;QAAnF,EAAE,eAAe,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,OAAY,EAAP,KAAK,sBAA7E,2EAA+E,CAAF;IACrI,OAAO,CACL,wBAAC,uBAAO,kBAAC,UAAU,EAAC,SAAS,EAAC,MAAM,EAAC,OAAO,IAAK,KAAK,eACpD,uBAAC,qBAAM,kBAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,OAAO,EAAE,gBAC7D,iCAAM,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,GAAG,IACtC,EACR,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,uBAAC,gCAAiB,KAAG,EAChC,uBAAC,2BAAW,kBAAC,QAAQ,EAAC,QAAQ,EAAC,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,gBAC7E,uBAAC,4BAAa,kBAAC,QAAQ,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,uBAAC,2BAAe,KAAG,gBAAG,QAAQ,IAAiB,IACzE,EACd,uBAAC,gBAAK,kBAAC,SAAS,EAAE,eAAe,EAAE,MAAM,sBACtC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,uBAAC,qBAAM,IAAC,aAAa,SAAG,IAC7B,KACA,CACX,CAAA;AACH,CAAC,CAAA;AAfY,QAAA,YAAY,gBAexB"}
1
+ {"version":3,"file":"Chrome.js","sourceRoot":"","sources":["../../../src/components/Chrome.tsx"],"names":[],"mappings":";;;;;AAAA,4CAA8C;AAC9C,yDAAuF;AAEvF,4DAA4E;AAC5E,4DAAkD;AAClD,4DAAyD;AAEzD,+CAAqC;AAErC,2CAA6C;AAYtC,MAAM,YAAY,GAAgC,CAAC,EAAmH,EAAE,EAAE;QAAvH,EAAE,SAAS,EAAE,cAAc,GAAG,MAAM,EAAE,eAAe,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,OAAY,EAAP,KAAK,sBAAjH,0GAAmH,CAAF;IACzK,OAAO,CACL,wBAAC,uBAAO,kBAAC,UAAU,EAAC,SAAS,EAAC,QAAQ,EAAC,QAAQ,EAAC,MAAM,EAAC,OAAO,IAAK,KAAK,eACtE,uBAAC,qBAAM,kBAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,OAAO,EAAE,gBAC7D,iCAAM,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,GAAG,IACtC,EACR,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,uBAAC,gCAAiB,IAAC,aAAa,EAAE,uBAAC,4BAAa,IAAC,SAAS,EAAE,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAI,GAAI,EAChI,wBAAC,2BAAW,kBAAC,QAAQ,EAAC,QAAQ,EAAC,UAAU,EAAC,SAAS,iBAChD,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,CAC3B,6DACG,SAAS,EACV,uBAAC,kBAAO,IAAC,WAAW,EAAC,UAAU,GAAG,IACjC,CACJ,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,2BAAW,kBAAC,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,gBAC3D,uBAAC,4BAAa,kBAAC,QAAQ,EAAE,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,uBAAC,2BAAe,KAAG,gBAAG,QAAQ,IAAiB,IACzE,KACF,EACd,uBAAC,uBAAO,kBAAC,UAAU,EAAC,SAAS,gBAC3B,uBAAC,gBAAK,kBAAC,SAAS,EAAE,eAAe,EAAE,MAAM,sBACtC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,uBAAC,qBAAM,IAAC,aAAa,SAAG,IAC7B,IACA,KACF,CACX,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,YAAY,gBAyBxB"}
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
- export declare const WebAppErrorPage: () => JSX.Element;
2
+ import { WebAppPageProps } from './Page';
3
+ export declare const WebAppErrorPage: React.FC<WebAppPageProps>;
3
4
  /** @deprecated use WebAppErrorPage instead */
4
- export declare const ErrorPage: () => JSX.Element;
5
+ export declare const ErrorPage: import("react").FC<WebAppPageProps>;
@@ -4,7 +4,7 @@ exports.ErrorPage = exports.WebAppErrorPage = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_button_1 = require("@xylabs/react-button");
6
6
  const Page_1 = require("./Page");
7
- const WebAppErrorPage = () => ((0, jsx_runtime_1.jsxs)(Page_1.WebAppPage, Object.assign({ title: "Oops! Something went wrong" }, { children: [(0, jsx_runtime_1.jsx)("h1", { children: "Oops! Something went wrong!" }), (0, jsx_runtime_1.jsx)(react_button_1.ButtonEx, Object.assign({ href: "/", variant: "contained" }, { children: "Homepage" }))] })));
7
+ const WebAppErrorPage = (props) => ((0, jsx_runtime_1.jsxs)(Page_1.WebAppPage, Object.assign({ title: "Oops! Something went wrong" }, props, { children: [(0, jsx_runtime_1.jsx)("h1", { children: "Oops! Something went wrong!" }), (0, jsx_runtime_1.jsx)(react_button_1.ButtonEx, Object.assign({ href: "/", variant: "contained" }, { children: "Homepage" }))] })));
8
8
  exports.WebAppErrorPage = WebAppErrorPage;
9
9
  /** @deprecated use WebAppErrorPage instead */
10
10
  exports.ErrorPage = exports.WebAppErrorPage;
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../../src/components/ErrorPage.tsx"],"names":[],"mappings":";;;;AAAA,uDAA+C;AAE/C,iCAAmC;AAE5B,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CACnC,wBAAC,iBAAU,kBAAC,KAAK,EAAC,4BAA4B,iBAC5C,yEAAoC,EACpC,uBAAC,uBAAQ,kBAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAC,WAAW,8BAE3B,KACA,CACd,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAED,8CAA8C;AACjC,QAAA,SAAS,GAAG,uBAAe,CAAA"}
1
+ {"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../../src/components/ErrorPage.tsx"],"names":[],"mappings":";;;;AAAA,uDAA+C;AAE/C,iCAAoD;AAE7C,MAAM,eAAe,GAA8B,CAAC,KAAK,EAAE,EAAE,CAAC,CACnE,wBAAC,iBAAU,kBAAC,KAAK,EAAC,4BAA4B,IAAK,KAAK,eACtD,yEAAoC,EACpC,uBAAC,uBAAQ,kBAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAC,WAAW,8BAE3B,KACA,CACd,CAAA;AAPY,QAAA,eAAe,mBAO3B;AAED,8CAA8C;AACjC,QAAA,SAAS,GAAG,uBAAe,CAAA"}
@@ -2,9 +2,11 @@ import { ContainerProps } from '@mui/material';
2
2
  import { FlexBoxProps } from '@xylabs/react-flexbox';
3
3
  import { ReactNode } from 'react';
4
4
  export interface WebAppPageProps extends FlexBoxProps {
5
- container?: ContainerProps['maxWidth'];
5
+ container?: ContainerProps['maxWidth'] | 'none';
6
6
  disableGutters?: boolean;
7
7
  breadcrumbs?: ReactNode;
8
+ disableBreadcrumbGutter?: boolean;
9
+ spacing?: string | number;
8
10
  }
9
11
  export declare const WebAppPage: React.FC<WebAppPageProps>;
10
12
  /** @deprecated use WebAppPagePage instead */
@@ -10,7 +10,7 @@ const react_shared_1 = require("@xylabs/react-shared");
10
10
  const react_helmet_1 = require("react-helmet");
11
11
  const react_router_dom_1 = require("react-router-dom");
12
12
  const WebAppPage = (_a) => {
13
- var { disableGutters, title, container, breadcrumbs, children } = _a, props = tslib_1.__rest(_a, ["disableGutters", "title", "container", "breadcrumbs", "children"]);
13
+ var { spacing = 1, disableBreadcrumbGutter, disableGutters, title, container, breadcrumbs, children } = _a, props = tslib_1.__rest(_a, ["spacing", "disableBreadcrumbGutter", "disableGutters", "title", "container", "breadcrumbs", "children"]);
14
14
  const userEvents = (0, react_pixel_1.useUserEvents)();
15
15
  const { pathname } = (0, react_router_dom_1.useLocation)();
16
16
  (0, react_shared_1.useAsyncEffect)(
@@ -18,8 +18,8 @@ const WebAppPage = (_a) => {
18
18
  () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
19
19
  yield (userEvents === null || userEvents === void 0 ? void 0 : userEvents.viewContent({ name: title !== null && title !== void 0 ? title : 'NodeBasePage', path: location.pathname }));
20
20
  }), [pathname, title, userEvents]);
21
- const Body = (props) => ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexGrowCol, Object.assign({ gap: 2, paddingY: 2, justifyContent: "flex-start", alignItems: "stretch" }, props, { children: [breadcrumbs, children] })));
22
- return ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexGrowCol, Object.assign({ alignItems: "stretch", justifyContent: "flex-start", minHeight: 0, overflow: "visible scroll" }, { children: [(0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, { title: title }), container ? ((0, jsx_runtime_1.jsx)(material_1.Container, Object.assign({ disableGutters: disableGutters, style: { alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }, maxWidth: container }, { children: (0, jsx_runtime_1.jsx)(Body, Object.assign({}, props)) }))) : ((0, jsx_runtime_1.jsx)(Body, Object.assign({ paddingX: disableGutters ? 0 : 1 }, props)))] })));
21
+ const Body = (props) => ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexGrowCol, Object.assign({ gap: 1, paddingY: spacing, justifyContent: "flex-start", alignItems: "stretch" }, props, { children: [(0, jsx_runtime_1.jsx)(react_flexbox_1.FlexRow, Object.assign({ justifyContent: "flex-start", marginX: disableBreadcrumbGutter ? 0 : spacing }, { children: breadcrumbs })), children] })));
22
+ return ((0, jsx_runtime_1.jsxs)(react_flexbox_1.FlexGrowCol, Object.assign({ alignItems: "stretch", justifyContent: "flex-start", minHeight: 0, maxWidth: "100vw", overflow: "visible scroll" }, { children: [(0, jsx_runtime_1.jsx)(react_helmet_1.Helmet, { title: title }), container && container !== 'none' ? ((0, jsx_runtime_1.jsx)(material_1.Container, Object.assign({ disableGutters: disableGutters, style: { alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }, maxWidth: container }, { children: (0, jsx_runtime_1.jsx)(Body, Object.assign({}, props)) }))) : ((0, jsx_runtime_1.jsx)(Body, Object.assign({ paddingX: disableGutters ? 0 : 1 }, props)))] })));
23
23
  };
24
24
  exports.WebAppPage = WebAppPage;
25
25
  /** @deprecated use WebAppPagePage instead */
@@ -1 +1 @@
1
- {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/components/Page.tsx"],"names":[],"mappings":";;;;;AAAA,4CAAyD;AACzD,yDAAiE;AACjE,qDAAmD;AACnD,uDAAqD;AAErD,+CAAqC;AACrC,uDAA8C;AAOvC,MAAM,UAAU,GAA8B,CAAC,EAAqE,EAAE,EAAE;QAAzE,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAAnE,mEAAqE,CAAF;IACvH,MAAM,UAAU,GAAG,IAAA,2BAAa,GAAE,CAAA;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,8BAAW,GAAE,CAAA;IAElC,IAAA,6BAAc;IACZ,uDAAuD;IACvD,GAAS,EAAE;QACT,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA;IAC3F,CAAC,CAAA,EACD,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAC9B,CAAA;IAED,MAAM,IAAI,GAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAC9C,wBAAC,2BAAW,kBAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,IAAK,KAAK,eACzF,WAAW,EACX,QAAQ,KACG,CACf,CAAA;IAED,OAAO,CACL,wBAAC,2BAAW,kBAAC,UAAU,EAAC,SAAS,EAAC,cAAc,EAAC,YAAY,EAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAC,gBAAgB,iBACnG,uBAAC,qBAAM,IAAC,KAAK,EAAE,KAAK,GAAI,EACvB,SAAS,CAAC,CAAC,CAAC,CACX,uBAAC,oBAAS,kBACR,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EACrH,QAAQ,EAAE,SAAS,gBAEnB,uBAAC,IAAI,oBAAK,KAAK,EAAI,IACT,CACb,CAAC,CAAC,CAAC,CACF,uBAAC,IAAI,kBAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAM,KAAK,EAAI,CACtD,KACW,CACf,CAAA;AACH,CAAC,CAAA;AAnCY,QAAA,UAAU,cAmCtB;AAED,6CAA6C;AAChC,QAAA,QAAQ,GAAG,kBAAU,CAAA"}
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/components/Page.tsx"],"names":[],"mappings":";;;;;AAAA,4CAAyD;AACzD,yDAA0E;AAC1E,qDAAmD;AACnD,uDAAqD;AAErD,+CAAqC;AACrC,uDAA8C;AASvC,MAAM,UAAU,GAA8B,CAAC,EAA2G,EAAE,EAAE;QAA/G,EAAE,OAAO,GAAG,CAAC,EAAE,uBAAuB,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAAzG,yGAA2G,CAAF;IAC7J,MAAM,UAAU,GAAG,IAAA,2BAAa,GAAE,CAAA;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,8BAAW,GAAE,CAAA;IAElC,IAAA,6BAAc;IACZ,uDAAuD;IACvD,GAAS,EAAE;QACT,MAAM,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAA;IAC3F,CAAC,CAAA,EACD,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAC9B,CAAA;IAED,MAAM,IAAI,GAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAC9C,wBAAC,2BAAW,kBAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,IAAK,KAAK,eAChG,uBAAC,uBAAO,kBAAC,cAAc,EAAC,YAAY,EAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,gBAChF,WAAW,IACJ,EACT,QAAQ,KACG,CACf,CAAA;IAED,OAAO,CACL,wBAAC,2BAAW,kBAAC,UAAU,EAAC,SAAS,EAAC,cAAc,EAAC,YAAY,EAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAC,OAAO,EAAC,QAAQ,EAAC,gBAAgB,iBACpH,uBAAC,qBAAM,IAAC,KAAK,EAAE,KAAK,GAAI,EACvB,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,CACnC,uBAAC,oBAAS,kBACR,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,YAAY,EAAE,EACrH,QAAQ,EAAE,SAAS,gBAEnB,uBAAC,IAAI,oBAAK,KAAK,EAAI,IACT,CACb,CAAC,CAAC,CAAC,CACF,uBAAC,IAAI,kBAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAM,KAAK,EAAI,CACtD,KACW,CACf,CAAA;AACH,CAAC,CAAA;AArCY,QAAA,UAAU,cAqCtB;AAED,6CAA6C;AAChC,QAAA,QAAQ,GAAG,kBAAU,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { AxiosError } from 'axios';
2
+ import { PropsWithChildren } from 'react';
3
+ export interface HandleItemDetailLoadingProps<T> {
4
+ apiError: AxiosError | undefined;
5
+ notFound: boolean;
6
+ searchResult: T | undefined;
7
+ }
8
+ export declare function ResultLoader<T>(props: PropsWithChildren<HandleItemDetailLoadingProps<T>>): JSX.Element;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResultLoader = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_flexbox_1 = require("@xylabs/react-flexbox");
6
+ const NotFoundPage_1 = require("./NotFoundPage");
7
+ function ResultLoader(props) {
8
+ const { notFound, apiError, searchResult, children } = props;
9
+ if (notFound) {
10
+ return (0, jsx_runtime_1.jsx)(NotFoundPage_1.NotFound, {});
11
+ }
12
+ // Defer error handling to the children
13
+ if (apiError) {
14
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
15
+ }
16
+ if (searchResult === undefined) {
17
+ return (0, jsx_runtime_1.jsx)(react_flexbox_1.FlexGrowRow, { busy: true, minHeight: "50px" });
18
+ }
19
+ else {
20
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: children });
21
+ }
22
+ }
23
+ exports.ResultLoader = ResultLoader;
24
+ //# sourceMappingURL=ResultLoader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResultLoader.js","sourceRoot":"","sources":["../../../src/components/ResultLoader.tsx"],"names":[],"mappings":";;;;AAAA,yDAAmD;AAInD,iDAAyC;AAQzC,SAAgB,YAAY,CAAI,KAAyD;IACvF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAC5D,IAAI,QAAQ,EAAE;QACZ,OAAO,uBAAC,uBAAQ,KAAG,CAAA;KACpB;IACD,uCAAuC;IACvC,IAAI,QAAQ,EAAE;QACZ,OAAO,2DAAG,QAAQ,GAAI,CAAA;KACvB;IACD,IAAI,YAAY,KAAK,SAAS,EAAE;QAC9B,OAAO,uBAAC,2BAAW,IAAC,IAAI,QAAC,SAAS,EAAC,MAAM,GAAG,CAAA;KAC7C;SAAM;QACL,OAAO,2DAAG,QAAQ,GAAI,CAAA;KACvB;AACH,CAAC;AAdD,oCAcC"}
@@ -2,3 +2,4 @@ export * from './Chrome';
2
2
  export * from './ErrorPage';
3
3
  export * from './NotFoundPage';
4
4
  export * from './Page';
5
+ export * from './ResultLoader';
@@ -5,4 +5,5 @@ tslib_1.__exportStar(require("./Chrome"), exports);
5
5
  tslib_1.__exportStar(require("./ErrorPage"), exports);
6
6
  tslib_1.__exportStar(require("./NotFoundPage"), exports);
7
7
  tslib_1.__exportStar(require("./Page"), exports);
8
+ tslib_1.__exportStar(require("./ResultLoader"), exports);
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,sDAA2B;AAC3B,yDAA8B;AAC9B,iDAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,sDAA2B;AAC3B,yDAA8B;AAC9B,iDAAsB;AACtB,yDAA8B"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { WebAppNavigationType } from '@xyo-network/react-app-settings';
3
+ export interface AppSettingsContextProps {
4
+ darkMode?: boolean;
5
+ developerMode?: boolean;
6
+ enableDarkMode?: (value: boolean) => void;
7
+ enableDeveloperMode?: (value: boolean) => void;
8
+ changeNavigationType?: (value: WebAppNavigationType) => void;
9
+ navigationType?: WebAppNavigationType;
10
+ }
11
+ export declare const AppSettingsContext: import("react").Context<AppSettingsContextProps>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppSettingsContext = void 0;
4
+ const react_1 = require("react");
5
+ const appSettingDefault_1 = require("./appSettingDefault");
6
+ exports.AppSettingsContext = (0, react_1.createContext)((0, appSettingDefault_1.appSettingDefault)());
7
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Context.ts"],"names":[],"mappings":";;;AACA,iCAAqC;AAErC,2DAAuD;AAW1C,QAAA,kBAAkB,GAAG,IAAA,qBAAa,EAA0B,IAAA,qCAAiB,GAAE,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { WithChildren } from '@xylabs/react-shared';
2
+ import { ProviderProps } from 'react';
3
+ import { AppSettingsContextProps } from './Context';
4
+ import { AppSettingsStorage } from './Storage';
5
+ export interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {
6
+ storage?: AppSettingsStorage;
7
+ }
8
+ export declare const AppSettingsProvider: React.FC<WithChildren<AppSettingsProviderProps>>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppSettingsProvider = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const Context_1 = require("./Context");
8
+ const Storage_1 = require("./Storage");
9
+ const AppSettingsProvider = (_a) => {
10
+ var { storage = new Storage_1.AppSettingsStorage(), value, children } = _a, props = tslib_1.__rest(_a, ["storage", "value", "children"]);
11
+ const [developerMode, setDeveloperMode] = (0, react_1.useState)(storage.developerMode);
12
+ const [darkMode, setDarkMode] = (0, react_1.useState)(storage.darkMode);
13
+ const [navigationType, setNaviagtionType] = (0, react_1.useState)(storage.navigationType);
14
+ const enableDeveloperMode = (value) => {
15
+ storage.developerMode = value;
16
+ setDeveloperMode(storage.developerMode);
17
+ };
18
+ const enableDarkMode = (value) => {
19
+ storage.darkMode = value;
20
+ setDarkMode(storage.darkMode);
21
+ };
22
+ const changeNavigationType = (value) => {
23
+ storage.navigationType = value;
24
+ setNaviagtionType(value);
25
+ };
26
+ return ((0, jsx_runtime_1.jsx)(Context_1.AppSettingsContext.Provider, Object.assign({ value: Object.assign({ changeNavigationType,
27
+ darkMode,
28
+ developerMode,
29
+ enableDarkMode,
30
+ enableDeveloperMode,
31
+ navigationType }, value) }, props, { children: children })));
32
+ };
33
+ exports.AppSettingsProvider = AppSettingsProvider;
34
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Provider.tsx"],"names":[],"mappings":";;;;;AAEA,iCAA+C;AAE/C,uCAAuE;AACvE,uCAA8C;AAMvC,MAAM,mBAAmB,GAAqD,CAAC,EAAiE,EAAE,EAAE;QAArE,EAAE,OAAO,GAAG,IAAI,4BAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,OAAY,EAAP,KAAK,sBAA/D,gCAAiE,CAAF;IACnJ,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,IAAA,gBAAQ,EAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAE5E,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7C,OAAO,CAAC,aAAa,GAAG,KAAK,CAAA;QAC7B,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE;QACxC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAA;QACxB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,KAA2B,EAAE,EAAE;QAC3D,OAAO,CAAC,cAAc,GAAG,KAAK,CAAA;QAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,OAAO,CACL,uBAAC,4BAAkB,CAAC,QAAQ,kBAC1B,KAAK,kBACH,oBAAoB;YACpB,QAAQ;YACR,aAAa;YACb,cAAc;YACd,mBAAmB;YACnB,cAAc,IAEX,KAAK,KAEN,KAAK,cAER,QAAQ,IACmB,CAC/B,CAAA;AACH,CAAC,CAAA;AArCY,QAAA,mBAAmB,uBAqC/B"}
@@ -0,0 +1,5 @@
1
+ export declare enum AppSettingSlug {
2
+ DarkMode = "darkmode",
3
+ Developer = "developer",
4
+ NavigationType = "navgiationType"
5
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppSettingSlug = void 0;
4
+ var AppSettingSlug;
5
+ (function (AppSettingSlug) {
6
+ AppSettingSlug["DarkMode"] = "darkmode";
7
+ AppSettingSlug["Developer"] = "developer";
8
+ AppSettingSlug["NavigationType"] = "navgiationType";
9
+ })(AppSettingSlug = exports.AppSettingSlug || (exports.AppSettingSlug = {}));
10
+ //# sourceMappingURL=Slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slug.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Slug.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,mDAAiC,CAAA;AACnC,CAAC,EAJW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAIzB"}
@@ -0,0 +1,11 @@
1
+ import { WebAppNavigationType } from '@xyo-network/react-app-settings';
2
+ import { AppSettingsStorageBase } from './StorageBase';
3
+ export declare class AppSettingsStorage extends AppSettingsStorageBase {
4
+ constructor(prefix?: string, defaults?: Record<string, unknown>);
5
+ get darkMode(): boolean;
6
+ set darkMode(value: boolean);
7
+ get developerMode(): boolean;
8
+ set developerMode(value: boolean);
9
+ get navigationType(): WebAppNavigationType;
10
+ set navigationType(value: WebAppNavigationType);
11
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppSettingsStorage = void 0;
4
+ const appSettingDefault_1 = require("./appSettingDefault");
5
+ const Slug_1 = require("./Slug");
6
+ const StorageBase_1 = require("./StorageBase");
7
+ class AppSettingsStorage extends StorageBase_1.AppSettingsStorageBase {
8
+ constructor(prefix = 'AppSettings', defaults) {
9
+ super(prefix, Object.assign(Object.assign({}, (0, appSettingDefault_1.appSettingDefault)()), defaults));
10
+ }
11
+ get darkMode() {
12
+ return this.getBoolean(Slug_1.AppSettingSlug.DarkMode);
13
+ }
14
+ set darkMode(value) {
15
+ this.setBoolean(Slug_1.AppSettingSlug.DarkMode, value);
16
+ }
17
+ get developerMode() {
18
+ return this.getBoolean(Slug_1.AppSettingSlug.Developer);
19
+ }
20
+ set developerMode(value) {
21
+ this.setBoolean(Slug_1.AppSettingSlug.Developer, value);
22
+ }
23
+ get navigationType() {
24
+ return this.getString(Slug_1.AppSettingSlug.NavigationType);
25
+ }
26
+ set navigationType(value) {
27
+ this.setString(Slug_1.AppSettingSlug.NavigationType, value);
28
+ }
29
+ }
30
+ exports.AppSettingsStorage = AppSettingsStorage;
31
+ //# sourceMappingURL=Storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Storage.ts"],"names":[],"mappings":";;;AAEA,2DAAuD;AACvD,iCAAuC;AACvC,+CAAsD;AAEtD,MAAa,kBAAmB,SAAQ,oCAAsB;IAC5D,YAAY,MAAM,GAAG,aAAa,EAAE,QAAkC;QACpE,KAAK,CAAC,MAAM,kCAAO,IAAA,qCAAiB,GAAE,GAAK,QAAQ,EAAG,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACzB,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,CAAC,UAAU,CAAC,qBAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,cAAc,CAAyB,CAAA;IAC9E,CAAC;IAED,IAAI,cAAc,CAAC,KAA2B;QAC5C,IAAI,CAAC,SAAS,CAAC,qBAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;CACF;AA5BD,gDA4BC"}
@@ -0,0 +1,15 @@
1
+ export declare class AppSettingsStorageBase {
2
+ private prefix;
3
+ private defaults;
4
+ constructor(prefix?: string, defaults?: Record<string, unknown>);
5
+ getBoolean(name: string): boolean;
6
+ setBoolean(name: string, value: boolean): void;
7
+ setNumber(name: string, value: number): void;
8
+ getNumber(name: string): number;
9
+ getString(name: string): string;
10
+ setString(name: string, value: string): void;
11
+ getStringArray(name: string): string[];
12
+ setStringArray(name: string, value: string[]): void;
13
+ getObject<T>(name: string): T;
14
+ setObject<T>(name: string, value: T): void;
15
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppSettingsStorageBase = void 0;
4
+ const sdk_js_1 = require("@xylabs/sdk-js");
5
+ const react_shared_1 = require("@xyo-network/react-shared");
6
+ class AppSettingsStorageBase {
7
+ constructor(prefix = 'AppSettings', defaults) {
8
+ this.prefix = prefix;
9
+ this.defaults = defaults !== null && defaults !== void 0 ? defaults : {};
10
+ }
11
+ getBoolean(name) {
12
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
13
+ if (!storedValue) {
14
+ (0, sdk_js_1.assertEx)(typeof this.defaults[name] === 'boolean', 'Default value is not boolean');
15
+ const defaultValue = this.defaults[name];
16
+ (0, sdk_js_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
17
+ return defaultValue;
18
+ }
19
+ return storedValue !== 'false';
20
+ }
21
+ setBoolean(name, value) {
22
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
23
+ }
24
+ setNumber(name, value) {
25
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
26
+ }
27
+ getNumber(name) {
28
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
29
+ if (!storedValue) {
30
+ (0, sdk_js_1.assertEx)(typeof this.defaults[name] === 'boolean', 'Default value is not boolean');
31
+ const defaultValue = this.defaults[name];
32
+ (0, sdk_js_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
33
+ return defaultValue;
34
+ }
35
+ return parseFloat(storedValue);
36
+ }
37
+ getString(name) {
38
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
39
+ if (!storedValue) {
40
+ (0, react_shared_1.assertDefinedEx)(typeof this.defaults[name] === 'string', 'Default value is not string');
41
+ const defaultValue = this.defaults[name];
42
+ (0, sdk_js_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
43
+ return defaultValue;
44
+ }
45
+ return storedValue;
46
+ }
47
+ setString(name, value) {
48
+ localStorage.setItem(`${this.prefix}|${name}`, value);
49
+ }
50
+ getStringArray(name) {
51
+ var _a;
52
+ const storedValue = (_a = localStorage.getItem(`${this.prefix}|${name}`)) === null || _a === void 0 ? void 0 : _a.split(',');
53
+ if (!storedValue) {
54
+ (0, react_shared_1.assertDefinedEx)(Array.isArray(this.defaults[name]), 'Default value is not array');
55
+ const defaultValue = this.defaults[name];
56
+ (0, sdk_js_1.assertEx)(defaultValue !== undefined, `Missing Default for ${name}`);
57
+ return defaultValue;
58
+ }
59
+ return storedValue;
60
+ }
61
+ setStringArray(name, value) {
62
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(','));
63
+ }
64
+ getObject(name) {
65
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
66
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
67
+ if (!parsedStoredValue) {
68
+ (0, sdk_js_1.assertEx)(typeof this.defaults[name] === 'object', 'Default value is not object');
69
+ return (0, sdk_js_1.assertEx)(this.defaults[name], `Missing Default for ${name}`);
70
+ }
71
+ return parsedStoredValue;
72
+ }
73
+ setObject(name, value) {
74
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
75
+ }
76
+ }
77
+ exports.AppSettingsStorageBase = AppSettingsStorageBase;
78
+ //# sourceMappingURL=StorageBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageBase.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/StorageBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const appSettingDefault: () => Record<string, unknown>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appSettingDefault = void 0;
4
+ const Slug_1 = require("./Slug");
5
+ const appSettingDefault = () => {
6
+ return {
7
+ [Slug_1.AppSettingSlug.DarkMode]: false,
8
+ [Slug_1.AppSettingSlug.Developer]: false,
9
+ [Slug_1.AppSettingSlug.NavigationType]: 'menu',
10
+ };
11
+ };
12
+ exports.appSettingDefault = appSettingDefault;
13
+ //# sourceMappingURL=appSettingDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appSettingDefault.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/appSettingDefault.ts"],"names":[],"mappings":";;;AAAA,iCAAuC;AAEhC,MAAM,iBAAiB,GAAG,GAA4B,EAAE;IAC7D,OAAO;QACL,CAAC,qBAAc,CAAC,QAAQ,CAAC,EAAE,KAAK;QAChC,CAAC,qBAAc,CAAC,SAAS,CAAC,EAAE,KAAK;QACjC,CAAC,qBAAc,CAAC,cAAc,CAAC,EAAE,MAAM;KACxC,CAAA;AACH,CAAC,CAAA;AANY,QAAA,iBAAiB,qBAM7B"}
@@ -0,0 +1,6 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './Slug';
4
+ export * from './Storage';
5
+ export * from './StorageBase';
6
+ export * from './useAppSettings';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./Context"), exports);
5
+ tslib_1.__exportStar(require("./Provider"), exports);
6
+ tslib_1.__exportStar(require("./Slug"), exports);
7
+ tslib_1.__exportStar(require("./Storage"), exports);
8
+ tslib_1.__exportStar(require("./StorageBase"), exports);
9
+ tslib_1.__exportStar(require("./useAppSettings"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,qDAA0B;AAC1B,iDAAsB;AACtB,oDAAyB;AACzB,wDAA6B;AAC7B,2DAAgC"}
@@ -0,0 +1 @@
1
+ export declare const useAppSettings: () => import("./Context").AppSettingsContextProps;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useAppSettings = void 0;
4
+ const react_1 = require("react");
5
+ const Context_1 = require("./Context");
6
+ const useAppSettings = () => {
7
+ return (0, react_1.useContext)(Context_1.AppSettingsContext);
8
+ };
9
+ exports.useAppSettings = useAppSettings;
10
+ //# sourceMappingURL=useAppSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppSettings.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/useAppSettings.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAElC,uCAA8C;AAEvC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,IAAA,kBAAU,EAAC,4BAAkB,CAAC,CAAA;AACvC,CAAC,CAAA;AAFY,QAAA,cAAc,kBAE1B"}
@@ -0,0 +1 @@
1
+ export * from './AppSettings';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./AppSettings"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { WebAppNavigationType } from '@xyo-network/react-app-settings';
3
+ export interface AppSettingsContextProps {
4
+ darkMode?: boolean;
5
+ developerMode?: boolean;
6
+ enableDarkMode?: (value: boolean) => void;
7
+ enableDeveloperMode?: (value: boolean) => void;
8
+ changeNavigationType?: (value: WebAppNavigationType) => void;
9
+ navigationType?: WebAppNavigationType;
10
+ }
11
+ export declare const AppSettingsContext: import("react").Context<AppSettingsContextProps>;
@@ -0,0 +1,4 @@
1
+ import { createContext } from 'react';
2
+ import { appSettingDefault } from './appSettingDefault';
3
+ export const AppSettingsContext = createContext(appSettingDefault());
4
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAWvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAA0B,iBAAiB,EAAE,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { WithChildren } from '@xylabs/react-shared';
2
+ import { ProviderProps } from 'react';
3
+ import { AppSettingsContextProps } from './Context';
4
+ import { AppSettingsStorage } from './Storage';
5
+ export interface AppSettingsProviderProps<T extends AppSettingsContextProps = AppSettingsContextProps> extends ProviderProps<T> {
6
+ storage?: AppSettingsStorage;
7
+ }
8
+ export declare const AppSettingsProvider: React.FC<WithChildren<AppSettingsProviderProps>>;
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { AppSettingsContext } from './Context';
4
+ import { AppSettingsStorage } from './Storage';
5
+ export const AppSettingsProvider = ({ storage = new AppSettingsStorage(), value, children, ...props }) => {
6
+ const [developerMode, setDeveloperMode] = useState(storage.developerMode);
7
+ const [darkMode, setDarkMode] = useState(storage.darkMode);
8
+ const [navigationType, setNaviagtionType] = useState(storage.navigationType);
9
+ const enableDeveloperMode = (value) => {
10
+ storage.developerMode = value;
11
+ setDeveloperMode(storage.developerMode);
12
+ };
13
+ const enableDarkMode = (value) => {
14
+ storage.darkMode = value;
15
+ setDarkMode(storage.darkMode);
16
+ };
17
+ const changeNavigationType = (value) => {
18
+ storage.navigationType = value;
19
+ setNaviagtionType(value);
20
+ };
21
+ return (_jsx(AppSettingsContext.Provider, { value: {
22
+ changeNavigationType,
23
+ darkMode,
24
+ developerMode,
25
+ enableDarkMode,
26
+ enableDeveloperMode,
27
+ navigationType,
28
+ ...value,
29
+ }, ...props, children: children }));
30
+ };
31
+ //# sourceMappingURL=Provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Provider.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAiB,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE/C,OAAO,EAAE,kBAAkB,EAA2B,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAM9C,MAAM,CAAC,MAAM,mBAAmB,GAAqD,CAAC,EAAE,OAAO,GAAG,IAAI,kBAAkB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACzJ,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAE5E,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;QAC7C,OAAO,CAAC,aAAa,GAAG,KAAK,CAAA;QAC7B,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,EAAE;QACxC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAA;QACxB,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,KAA2B,EAAE,EAAE;QAC3D,OAAO,CAAC,cAAc,GAAG,KAAK,CAAA;QAC9B,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAC1B,KAAK,EAAE;YACL,oBAAoB;YACpB,QAAQ;YACR,aAAa;YACb,cAAc;YACd,mBAAmB;YACnB,cAAc;YAEd,GAAG,KAAK;SACT,KACG,KAAK,YAER,QAAQ,GACmB,CAC/B,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ export declare enum AppSettingSlug {
2
+ DarkMode = "darkmode",
3
+ Developer = "developer",
4
+ NavigationType = "navgiationType"
5
+ }
@@ -0,0 +1,7 @@
1
+ export var AppSettingSlug;
2
+ (function (AppSettingSlug) {
3
+ AppSettingSlug["DarkMode"] = "darkmode";
4
+ AppSettingSlug["Developer"] = "developer";
5
+ AppSettingSlug["NavigationType"] = "navgiationType";
6
+ })(AppSettingSlug || (AppSettingSlug = {}));
7
+ //# sourceMappingURL=Slug.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slug.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Slug.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,yCAAuB,CAAA;IACvB,mDAAiC,CAAA;AACnC,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
@@ -0,0 +1,11 @@
1
+ import { WebAppNavigationType } from '@xyo-network/react-app-settings';
2
+ import { AppSettingsStorageBase } from './StorageBase';
3
+ export declare class AppSettingsStorage extends AppSettingsStorageBase {
4
+ constructor(prefix?: string, defaults?: Record<string, unknown>);
5
+ get darkMode(): boolean;
6
+ set darkMode(value: boolean);
7
+ get developerMode(): boolean;
8
+ set developerMode(value: boolean);
9
+ get navigationType(): WebAppNavigationType;
10
+ set navigationType(value: WebAppNavigationType);
11
+ }
@@ -0,0 +1,27 @@
1
+ import { appSettingDefault } from './appSettingDefault';
2
+ import { AppSettingSlug } from './Slug';
3
+ import { AppSettingsStorageBase } from './StorageBase';
4
+ export class AppSettingsStorage extends AppSettingsStorageBase {
5
+ constructor(prefix = 'AppSettings', defaults) {
6
+ super(prefix, { ...appSettingDefault(), ...defaults });
7
+ }
8
+ get darkMode() {
9
+ return this.getBoolean(AppSettingSlug.DarkMode);
10
+ }
11
+ set darkMode(value) {
12
+ this.setBoolean(AppSettingSlug.DarkMode, value);
13
+ }
14
+ get developerMode() {
15
+ return this.getBoolean(AppSettingSlug.Developer);
16
+ }
17
+ set developerMode(value) {
18
+ this.setBoolean(AppSettingSlug.Developer, value);
19
+ }
20
+ get navigationType() {
21
+ return this.getString(AppSettingSlug.NavigationType);
22
+ }
23
+ set navigationType(value) {
24
+ this.setString(AppSettingSlug.NavigationType, value);
25
+ }
26
+ }
27
+ //# sourceMappingURL=Storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Storage.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/Storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEtD,MAAM,OAAO,kBAAmB,SAAQ,sBAAsB;IAC5D,YAAY,MAAM,GAAG,aAAa,EAAE,QAAkC;QACpE,KAAK,CAAC,MAAM,EAAE,EAAE,GAAG,iBAAiB,EAAE,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,QAAQ,CAAC,KAAc;QACzB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,aAAa,CAAC,KAAc;QAC9B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,CAAyB,CAAA;IAC9E,CAAC;IAED,IAAI,cAAc,CAAC,KAA2B;QAC5C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACtD,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ export declare class AppSettingsStorageBase {
2
+ private prefix;
3
+ private defaults;
4
+ constructor(prefix?: string, defaults?: Record<string, unknown>);
5
+ getBoolean(name: string): boolean;
6
+ setBoolean(name: string, value: boolean): void;
7
+ setNumber(name: string, value: number): void;
8
+ getNumber(name: string): number;
9
+ getString(name: string): string;
10
+ setString(name: string, value: string): void;
11
+ getStringArray(name: string): string[];
12
+ setStringArray(name: string, value: string[]): void;
13
+ getObject<T>(name: string): T;
14
+ setObject<T>(name: string, value: T): void;
15
+ }
@@ -0,0 +1,73 @@
1
+ import { assertEx } from '@xylabs/sdk-js';
2
+ import { assertDefinedEx } from '@xyo-network/react-shared';
3
+ export class AppSettingsStorageBase {
4
+ constructor(prefix = 'AppSettings', defaults) {
5
+ this.prefix = prefix;
6
+ this.defaults = defaults ?? {};
7
+ }
8
+ getBoolean(name) {
9
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
10
+ if (!storedValue) {
11
+ assertEx(typeof this.defaults[name] === 'boolean', 'Default value is not boolean');
12
+ const defaultValue = this.defaults[name];
13
+ assertEx(defaultValue !== undefined, `Missing Default for ${name}`);
14
+ return defaultValue;
15
+ }
16
+ return storedValue !== 'false';
17
+ }
18
+ setBoolean(name, value) {
19
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
20
+ }
21
+ setNumber(name, value) {
22
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
23
+ }
24
+ getNumber(name) {
25
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
26
+ if (!storedValue) {
27
+ assertEx(typeof this.defaults[name] === 'boolean', 'Default value is not boolean');
28
+ const defaultValue = this.defaults[name];
29
+ assertEx(defaultValue !== undefined, `Missing Default for ${name}`);
30
+ return defaultValue;
31
+ }
32
+ return parseFloat(storedValue);
33
+ }
34
+ getString(name) {
35
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
36
+ if (!storedValue) {
37
+ assertDefinedEx(typeof this.defaults[name] === 'string', 'Default value is not string');
38
+ const defaultValue = this.defaults[name];
39
+ assertEx(defaultValue !== undefined, `Missing Default for ${name}`);
40
+ return defaultValue;
41
+ }
42
+ return storedValue;
43
+ }
44
+ setString(name, value) {
45
+ localStorage.setItem(`${this.prefix}|${name}`, value);
46
+ }
47
+ getStringArray(name) {
48
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`)?.split(',');
49
+ if (!storedValue) {
50
+ assertDefinedEx(Array.isArray(this.defaults[name]), 'Default value is not array');
51
+ const defaultValue = this.defaults[name];
52
+ assertEx(defaultValue !== undefined, `Missing Default for ${name}`);
53
+ return defaultValue;
54
+ }
55
+ return storedValue;
56
+ }
57
+ setStringArray(name, value) {
58
+ localStorage.setItem(`${this.prefix}|${name}`, value.join(','));
59
+ }
60
+ getObject(name) {
61
+ const storedValue = localStorage.getItem(`${this.prefix}|${name}`);
62
+ const parsedStoredValue = storedValue ? JSON.parse(storedValue) : null;
63
+ if (!parsedStoredValue) {
64
+ assertEx(typeof this.defaults[name] === 'object', 'Default value is not object');
65
+ return assertEx(this.defaults[name], `Missing Default for ${name}`);
66
+ }
67
+ return parsedStoredValue;
68
+ }
69
+ setObject(name, value) {
70
+ localStorage.setItem(`${this.prefix}|${name}`, JSON.stringify(value));
71
+ }
72
+ }
73
+ //# sourceMappingURL=StorageBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageBase.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/StorageBase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const appSettingDefault: () => Record<string, unknown>;
@@ -0,0 +1,9 @@
1
+ import { AppSettingSlug } from './Slug';
2
+ export const appSettingDefault = () => {
3
+ return {
4
+ [AppSettingSlug.DarkMode]: false,
5
+ [AppSettingSlug.Developer]: false,
6
+ [AppSettingSlug.NavigationType]: 'menu',
7
+ };
8
+ };
9
+ //# sourceMappingURL=appSettingDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appSettingDefault.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/appSettingDefault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAA;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAA4B,EAAE;IAC7D,OAAO;QACL,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,KAAK;QAChC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK;QACjC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,MAAM;KACxC,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './Slug';
4
+ export * from './Storage';
5
+ export * from './StorageBase';
6
+ export * from './useAppSettings';
@@ -0,0 +1,7 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './Slug';
4
+ export * from './Storage';
5
+ export * from './StorageBase';
6
+ export * from './useAppSettings';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const useAppSettings: () => import("./Context").AppSettingsContextProps;
@@ -0,0 +1,6 @@
1
+ import { useContext } from 'react';
2
+ import { AppSettingsContext } from './Context';
3
+ export const useAppSettings = () => {
4
+ return useContext(AppSettingsContext);
5
+ };
6
+ //# sourceMappingURL=useAppSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppSettings.js","sourceRoot":"","sources":["../../../../src/contexts/AppSettings/useAppSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAE9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,OAAO,UAAU,CAAC,kBAAkB,CAAC,CAAA;AACvC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './AppSettings';
@@ -0,0 +1,2 @@
1
+ export * from './AppSettings';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
package/package.json CHANGED
@@ -12,16 +12,18 @@
12
12
  "dependencies": {
13
13
  "@emotion/react": "^11.9.3",
14
14
  "@emotion/styled": "^11.9.3",
15
- "@mui/material": "^5.8.6",
16
- "@xylabs/react-button": "^2.14.4",
17
- "@xylabs/react-flexbox": "^2.14.4",
18
- "@xylabs/react-pixel": "^2.14.4",
19
- "@xylabs/react-shared": "^2.14.4",
15
+ "@mui/material": "^5.8.7",
16
+ "@xylabs/react-button": "^2.14.5",
17
+ "@xylabs/react-flexbox": "^2.14.5",
18
+ "@xylabs/react-link": "^2.14.5",
19
+ "@xylabs/react-pixel": "^2.14.5",
20
+ "@xylabs/react-shared": "^2.14.5",
20
21
  "@xylabs/sdk-js": "^2.5.9",
21
- "@xyo-network/react-app-settings": "^2.26.8",
22
- "@xyo-network/react-appbar": "^2.26.8",
23
- "@xyo-network/react-footer": "^2.26.8",
24
- "@xyo-network/react-shared": "^2.26.8",
22
+ "@xyo-network/react-app-settings": "^2.26.9",
23
+ "@xyo-network/react-appbar": "^2.26.9",
24
+ "@xyo-network/react-footer": "^2.26.9",
25
+ "@xyo-network/react-shared": "^2.26.9",
26
+ "axios": "^0.27.2",
25
27
  "react": "^18.2.0",
26
28
  "react-dom": "^18.2.0",
27
29
  "react-helmet": "^6.1.0",
@@ -30,11 +32,10 @@
30
32
  },
31
33
  "description": "Common React library for all XYO projects that use React",
32
34
  "devDependencies": {
33
- "@babel/core": "^7.18.5",
34
- "@babel/preset-env": "^7.18.2",
35
+ "@babel/core": "^7.18.6",
36
+ "@babel/preset-env": "^7.18.6",
35
37
  "@storybook/react": "^6.5.9",
36
38
  "@types/react-helmet": "^6.1.5",
37
- "@xylabs/react-common": "^2.14.4",
38
39
  "@xylabs/tsconfig": "^1.0.14"
39
40
  },
40
41
  "browser": "dist/esm/index.js",
@@ -86,6 +87,6 @@
86
87
  },
87
88
  "sideEffects": false,
88
89
  "types": "dist/esm/index.d.ts",
89
- "version": "2.26.8",
90
+ "version": "2.26.9",
90
91
  "packageManager": "yarn@3.1.1"
91
92
  }
@@ -1,8 +1,8 @@
1
1
  /* eslint-disable import/no-internal-modules */
2
2
  import { Breadcrumbs, List } from '@mui/material'
3
3
  import { ComponentMeta, ComponentStory } from '@storybook/react'
4
- import { LinkEx } from '@xylabs/react-common'
5
4
  import { FlexCol, FlexRow } from '@xylabs/react-flexbox'
5
+ import { LinkEx } from '@xylabs/react-link'
6
6
  import { SiteMenuListItem } from '@xyo-network/react-appbar'
7
7
  import { BrowserRouter } from 'react-router-dom'
8
8