@xyo-network/react-app-settings 2.25.62

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 (133) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +69 -0
  3. package/babel.config.json +5 -0
  4. package/dist/cjs/WebAppNavigationType.d.ts +1 -0
  5. package/dist/cjs/WebAppNavigationType.js +3 -0
  6. package/dist/cjs/WebAppNavigationType.js.map +1 -0
  7. package/dist/cjs/components/Chrome.d.ts +10 -0
  8. package/dist/cjs/components/Chrome.js +18 -0
  9. package/dist/cjs/components/Chrome.js.map +1 -0
  10. package/dist/cjs/components/DarkModeIconButton.d.ts +3 -0
  11. package/dist/cjs/components/DarkModeIconButton.js +18 -0
  12. package/dist/cjs/components/DarkModeIconButton.js.map +1 -0
  13. package/dist/cjs/components/ErrorPage.d.ts +4 -0
  14. package/dist/cjs/components/ErrorPage.js +11 -0
  15. package/dist/cjs/components/ErrorPage.js.map +1 -0
  16. package/dist/cjs/components/NotFoundPage/NotFound.d.ts +4 -0
  17. package/dist/cjs/components/NotFoundPage/NotFound.js +11 -0
  18. package/dist/cjs/components/NotFoundPage/NotFound.js.map +1 -0
  19. package/dist/cjs/components/NotFoundPage/Page.d.ts +5 -0
  20. package/dist/cjs/components/NotFoundPage/Page.js +15 -0
  21. package/dist/cjs/components/NotFoundPage/Page.js.map +1 -0
  22. package/dist/cjs/components/NotFoundPage/index.d.ts +2 -0
  23. package/dist/cjs/components/NotFoundPage/index.js +6 -0
  24. package/dist/cjs/components/NotFoundPage/index.js.map +1 -0
  25. package/dist/cjs/components/Page.d.ts +13 -0
  26. package/dist/cjs/components/Page.js +27 -0
  27. package/dist/cjs/components/Page.js.map +1 -0
  28. package/dist/cjs/components/index.d.ts +1 -0
  29. package/dist/cjs/components/index.js +5 -0
  30. package/dist/cjs/components/index.js.map +1 -0
  31. package/dist/cjs/contexts/AppSettings/Context.d.ts +11 -0
  32. package/dist/cjs/contexts/AppSettings/Context.js +7 -0
  33. package/dist/cjs/contexts/AppSettings/Context.js.map +1 -0
  34. package/dist/cjs/contexts/AppSettings/Provider.d.ts +8 -0
  35. package/dist/cjs/contexts/AppSettings/Provider.js +34 -0
  36. package/dist/cjs/contexts/AppSettings/Provider.js.map +1 -0
  37. package/dist/cjs/contexts/AppSettings/Slug.d.ts +5 -0
  38. package/dist/cjs/contexts/AppSettings/Slug.js +10 -0
  39. package/dist/cjs/contexts/AppSettings/Slug.js.map +1 -0
  40. package/dist/cjs/contexts/AppSettings/Storage.d.ts +11 -0
  41. package/dist/cjs/contexts/AppSettings/Storage.js +31 -0
  42. package/dist/cjs/contexts/AppSettings/Storage.js.map +1 -0
  43. package/dist/cjs/contexts/AppSettings/StorageBase.d.ts +15 -0
  44. package/dist/cjs/contexts/AppSettings/StorageBase.js +78 -0
  45. package/dist/cjs/contexts/AppSettings/StorageBase.js.map +1 -0
  46. package/dist/cjs/contexts/AppSettings/appSettingDefault.d.ts +1 -0
  47. package/dist/cjs/contexts/AppSettings/appSettingDefault.js +13 -0
  48. package/dist/cjs/contexts/AppSettings/appSettingDefault.js.map +1 -0
  49. package/dist/cjs/contexts/AppSettings/index.d.ts +6 -0
  50. package/dist/cjs/contexts/AppSettings/index.js +10 -0
  51. package/dist/cjs/contexts/AppSettings/index.js.map +1 -0
  52. package/dist/cjs/contexts/AppSettings/useAppSettings.d.ts +1 -0
  53. package/dist/cjs/contexts/AppSettings/useAppSettings.js +10 -0
  54. package/dist/cjs/contexts/AppSettings/useAppSettings.js.map +1 -0
  55. package/dist/cjs/contexts/index.d.ts +1 -0
  56. package/dist/cjs/contexts/index.js +5 -0
  57. package/dist/cjs/contexts/index.js.map +1 -0
  58. package/dist/cjs/index.d.ts +3 -0
  59. package/dist/cjs/index.js +7 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/docs.json +7 -0
  62. package/dist/esm/WebAppNavigationType.d.ts +1 -0
  63. package/dist/esm/WebAppNavigationType.js +2 -0
  64. package/dist/esm/WebAppNavigationType.js.map +1 -0
  65. package/dist/esm/components/Chrome.d.ts +10 -0
  66. package/dist/esm/components/Chrome.js +12 -0
  67. package/dist/esm/components/Chrome.js.map +1 -0
  68. package/dist/esm/components/DarkModeIconButton.d.ts +3 -0
  69. package/dist/esm/components/DarkModeIconButton.js +13 -0
  70. package/dist/esm/components/DarkModeIconButton.js.map +1 -0
  71. package/dist/esm/components/ErrorPage.d.ts +4 -0
  72. package/dist/esm/components/ErrorPage.js +7 -0
  73. package/dist/esm/components/ErrorPage.js.map +1 -0
  74. package/dist/esm/components/NotFoundPage/NotFound.d.ts +4 -0
  75. package/dist/esm/components/NotFoundPage/NotFound.js +8 -0
  76. package/dist/esm/components/NotFoundPage/NotFound.js.map +1 -0
  77. package/dist/esm/components/NotFoundPage/Page.d.ts +5 -0
  78. package/dist/esm/components/NotFoundPage/Page.js +7 -0
  79. package/dist/esm/components/NotFoundPage/Page.js.map +1 -0
  80. package/dist/esm/components/NotFoundPage/index.d.ts +2 -0
  81. package/dist/esm/components/NotFoundPage/index.js +3 -0
  82. package/dist/esm/components/NotFoundPage/index.js.map +1 -0
  83. package/dist/esm/components/Page.d.ts +13 -0
  84. package/dist/esm/components/Page.js +21 -0
  85. package/dist/esm/components/Page.js.map +1 -0
  86. package/dist/esm/components/index.d.ts +1 -0
  87. package/dist/esm/components/index.js +2 -0
  88. package/dist/esm/components/index.js.map +1 -0
  89. package/dist/esm/contexts/AppSettings/Context.d.ts +11 -0
  90. package/dist/esm/contexts/AppSettings/Context.js +4 -0
  91. package/dist/esm/contexts/AppSettings/Context.js.map +1 -0
  92. package/dist/esm/contexts/AppSettings/Provider.d.ts +8 -0
  93. package/dist/esm/contexts/AppSettings/Provider.js +31 -0
  94. package/dist/esm/contexts/AppSettings/Provider.js.map +1 -0
  95. package/dist/esm/contexts/AppSettings/Slug.d.ts +5 -0
  96. package/dist/esm/contexts/AppSettings/Slug.js +7 -0
  97. package/dist/esm/contexts/AppSettings/Slug.js.map +1 -0
  98. package/dist/esm/contexts/AppSettings/Storage.d.ts +11 -0
  99. package/dist/esm/contexts/AppSettings/Storage.js +27 -0
  100. package/dist/esm/contexts/AppSettings/Storage.js.map +1 -0
  101. package/dist/esm/contexts/AppSettings/StorageBase.d.ts +15 -0
  102. package/dist/esm/contexts/AppSettings/StorageBase.js +73 -0
  103. package/dist/esm/contexts/AppSettings/StorageBase.js.map +1 -0
  104. package/dist/esm/contexts/AppSettings/appSettingDefault.d.ts +1 -0
  105. package/dist/esm/contexts/AppSettings/appSettingDefault.js +9 -0
  106. package/dist/esm/contexts/AppSettings/appSettingDefault.js.map +1 -0
  107. package/dist/esm/contexts/AppSettings/index.d.ts +6 -0
  108. package/dist/esm/contexts/AppSettings/index.js +7 -0
  109. package/dist/esm/contexts/AppSettings/index.js.map +1 -0
  110. package/dist/esm/contexts/AppSettings/useAppSettings.d.ts +1 -0
  111. package/dist/esm/contexts/AppSettings/useAppSettings.js +6 -0
  112. package/dist/esm/contexts/AppSettings/useAppSettings.js.map +1 -0
  113. package/dist/esm/contexts/index.d.ts +1 -0
  114. package/dist/esm/contexts/index.js +2 -0
  115. package/dist/esm/contexts/index.js.map +1 -0
  116. package/dist/esm/index.d.ts +3 -0
  117. package/dist/esm/index.js +4 -0
  118. package/dist/esm/index.js.map +1 -0
  119. package/package.json +87 -0
  120. package/src/WebAppNavigationType.ts +1 -0
  121. package/src/components/DarkModeIconButton.tsx +19 -0
  122. package/src/components/index.ts +1 -0
  123. package/src/contexts/AppSettings/Context.ts +15 -0
  124. package/src/contexts/AppSettings/Provider.tsx +49 -0
  125. package/src/contexts/AppSettings/Slug.ts +5 -0
  126. package/src/contexts/AppSettings/Storage.ts +34 -0
  127. package/src/contexts/AppSettings/StorageBase.ts +85 -0
  128. package/src/contexts/AppSettings/appSettingDefault.ts +9 -0
  129. package/src/contexts/AppSettings/index.ts +6 -0
  130. package/src/contexts/AppSettings/useAppSettings.ts +7 -0
  131. package/src/contexts/index.ts +1 -0
  132. package/src/index.ts +3 -0
  133. package/typedoc.json +18 -0
@@ -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,3 @@
1
+ export * from './components';
2
+ export * from './contexts';
3
+ export * from './WebAppNavigationType';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./components"), exports);
5
+ tslib_1.__exportStar(require("./contexts"), exports);
6
+ tslib_1.__exportStar(require("./WebAppNavigationType"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,qDAA0B;AAC1B,iEAAsC"}
package/dist/docs.json ADDED
@@ -0,0 +1,7 @@
1
+ {
2
+ "id": 0,
3
+ "name": "@xyo-network/react-app-settings",
4
+ "kind": 1,
5
+ "flags": {},
6
+ "originalName": ""
7
+ }
@@ -0,0 +1 @@
1
+ export declare type WebAppNavigationType = 'menu' | 'sidebar';
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebAppNavigationType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebAppNavigationType.js","sourceRoot":"","sources":["../../src/WebAppNavigationType.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { FlexBoxProps } from '@xylabs/react-flexbox';
2
+ import { ReactNode } from 'react';
3
+ export interface WebAppChromeProps extends FlexBoxProps {
4
+ appName: string;
5
+ footer?: ReactNode;
6
+ appbar?: ReactNode;
7
+ errorPage?: ReactNode;
8
+ footerElevation?: number;
9
+ }
10
+ export declare const WebAppChrome: React.FC<WebAppChromeProps>;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Paper } from '@mui/material';
3
+ import { FlexCol, FlexGrowCol } from '@xylabs/react-flexbox';
4
+ import { ApplicationAppBar } from '@xyo-network/react-appbar';
5
+ import { Footer } from '@xyo-network/react-footer';
6
+ import { ErrorBoundary } from '@xyo-network/react-shared';
7
+ import { Helmet } from 'react-helmet';
8
+ import { WebAppErrorPage } from './ErrorPage';
9
+ export const WebAppChrome = ({ footerElevation = 4, errorPage, appbar, footer, children, appName, ...props }) => {
10
+ return (_jsxs(FlexCol, { alignItems: "stretch", height: "100vh", ...props, children: [_jsx(Helmet, { defaultTitle: appName, titleTemplate: `%s | ${appName}`, children: _jsx("meta", { content: "website", property: "og:type" }) }), appbar ?? _jsx(ApplicationAppBar, {}), _jsx(FlexGrowCol, { overflow: "hidden", justifyContent: "flex-start", alignItems: "stretch", children: _jsx(ErrorBoundary, { fallback: errorPage ?? _jsx(WebAppErrorPage, {}), children: children }) }), _jsx(Paper, { elevation: footerElevation, square: true, children: footer ?? _jsx(Footer, { dynamicHeight: true }) })] }));
11
+ };
12
+ //# sourceMappingURL=Chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Chrome.js","sourceRoot":"","sources":["../../../src/components/Chrome.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAgB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAU7C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,eAAe,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC3I,OAAO,CACL,MAAC,OAAO,IAAC,UAAU,EAAC,SAAS,EAAC,MAAM,EAAC,OAAO,KAAK,KAAK,aACpD,KAAC,MAAM,IAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,OAAO,EAAE,YAC7D,eAAM,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,GAAG,GACtC,EACR,MAAM,IAAI,KAAC,iBAAiB,KAAG,EAChC,KAAC,WAAW,IAAC,QAAQ,EAAC,QAAQ,EAAC,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,YAC7E,KAAC,aAAa,IAAC,QAAQ,EAAE,SAAS,IAAI,KAAC,eAAe,KAAG,YAAG,QAAQ,GAAiB,GACzE,EACd,KAAC,KAAK,IAAC,SAAS,EAAE,eAAe,EAAE,MAAM,kBACtC,MAAM,IAAI,KAAC,MAAM,IAAC,aAAa,SAAG,GAC7B,IACA,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { IconButtonProps } from '@mui/material';
3
+ export declare const DarkModeIconButton: React.FC<IconButtonProps>;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import DarkModeRoundedIcon from '@mui/icons-material/DarkModeRounded';
3
+ import LightModeRoundedIcon from '@mui/icons-material/LightModeRounded';
4
+ import { IconButton } from '@mui/material';
5
+ import { useAppSettings } from '../contexts';
6
+ export const DarkModeIconButton = (props) => {
7
+ const { darkMode, enableDarkMode } = useAppSettings();
8
+ const handleDarkModeChange = () => {
9
+ enableDarkMode?.(!darkMode);
10
+ };
11
+ return (_jsx(IconButton, { onClick: handleDarkModeChange, ...props, children: darkMode ? _jsx(DarkModeRoundedIcon, {}) : _jsx(LightModeRoundedIcon, {}) }));
12
+ };
13
+ //# sourceMappingURL=DarkModeIconButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DarkModeIconButton.js","sourceRoot":"","sources":["../../../src/components/DarkModeIconButton.tsx"],"names":[],"mappings":";AAAA,OAAO,mBAAmB,MAAM,qCAAqC,CAAA;AACrE,OAAO,oBAAoB,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAA;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,CAAC,MAAM,kBAAkB,GAA8B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAAA;IAErD,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC,CAAA;IAED,OAAO,CACL,KAAC,UAAU,IAAC,OAAO,EAAE,oBAAoB,KAAM,KAAK,YACjD,QAAQ,CAAC,CAAC,CAAC,KAAC,mBAAmB,KAAG,CAAC,CAAC,CAAC,KAAC,oBAAoB,KAAG,GACnD,CACd,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare const WebAppErrorPage: () => JSX.Element;
3
+ /** @deprecated use WebAppErrorPage instead */
4
+ export declare const ErrorPage: () => JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ButtonEx } from '@xylabs/react-button';
3
+ import { WebAppPage } from './Page';
4
+ export const WebAppErrorPage = () => (_jsxs(WebAppPage, { title: "Oops! Something went wrong", children: [_jsx("h1", { children: "Oops! Something went wrong!" }), _jsx(ButtonEx, { href: "/", variant: "contained", children: "Homepage" })] }));
5
+ /** @deprecated use WebAppErrorPage instead */
6
+ export const ErrorPage = WebAppErrorPage;
7
+ //# sourceMappingURL=ErrorPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorPage.js","sourceRoot":"","sources":["../../../src/components/ErrorPage.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,CACnC,MAAC,UAAU,IAAC,KAAK,EAAC,4BAA4B,aAC5C,uDAAoC,EACpC,KAAC,QAAQ,IAAC,IAAI,EAAC,GAAG,EAAC,OAAO,EAAC,WAAW,yBAE3B,IACA,CACd,CAAA;AAED,8CAA8C;AAC9C,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAA"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { FlexBoxProps } from '@xylabs/react-flexbox';
3
+ declare const NotFound: React.FC<FlexBoxProps>;
4
+ export { NotFound };
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Typography } from '@mui/material';
3
+ import { FlexGrowCol } from '@xylabs/react-flexbox';
4
+ const NotFound = (props) => {
5
+ return (_jsxs(FlexGrowCol, { ...props, children: [_jsx(Typography, { variant: "h2", children: "Sorry!" }), _jsx(Typography, { marginY: 3, variant: "body2", children: "Can't find anything here" })] }));
6
+ };
7
+ export { NotFound };
8
+ //# sourceMappingURL=NotFound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFound.js","sourceRoot":"","sources":["../../../../src/components/NotFoundPage/NotFound.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAgB,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEjE,MAAM,QAAQ,GAA2B,CAAC,KAAK,EAAE,EAAE;IACjD,OAAO,CACL,MAAC,WAAW,OAAK,KAAK,aACpB,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,uBAAoB,EAC5C,KAAC,UAAU,IAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAC,OAAO,YACpC,0BAA0B,GAChB,IACD,CACf,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import { WebAppPageProps } from '../Page';
3
+ export declare const WebAppNotFoundPage: React.FC<WebAppPageProps>;
4
+ /** @deprecated use WebAppNotFoundPage instead */
5
+ export declare const NotFoundPage: import("react").FC<WebAppPageProps>;
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { WebAppPage } from '../Page';
3
+ import { NotFound } from './NotFound';
4
+ export const WebAppNotFoundPage = ({ title, ...props }) => (_jsx(WebAppPage, { title: title ?? 'Sorry! Page Not Found', ...props, children: _jsx(NotFound, {}) }));
5
+ /** @deprecated use WebAppNotFoundPage instead */
6
+ export const NotFoundPage = WebAppNotFoundPage;
7
+ //# sourceMappingURL=Page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../../src/components/NotFoundPage/Page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,MAAM,CAAC,MAAM,kBAAkB,GAA8B,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CACpF,KAAC,UAAU,IAAC,KAAK,EAAE,KAAK,IAAI,uBAAuB,KAAM,KAAK,YAC5D,KAAC,QAAQ,KAAG,GACD,CACd,CAAA;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './NotFound';
2
+ export * from './Page';
@@ -0,0 +1,3 @@
1
+ export * from './NotFound';
2
+ export * from './Page';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/NotFoundPage/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { ContainerProps } from '@mui/material';
2
+ import { FlexBoxProps } from '@xylabs/react-flexbox';
3
+ import { ReactNode } from 'react';
4
+ export interface WebAppPageProps extends FlexBoxProps {
5
+ container?: ContainerProps['maxWidth'];
6
+ disableGutters?: boolean;
7
+ breadcrumbs?: ReactNode;
8
+ disableBreadcrumbGutter?: boolean;
9
+ spacing?: string | number;
10
+ }
11
+ export declare const WebAppPage: React.FC<WebAppPageProps>;
12
+ /** @deprecated use WebAppPagePage instead */
13
+ export declare const FlexPage: import("react").FC<WebAppPageProps>;
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Container } from '@mui/material';
3
+ import { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox';
4
+ import { useUserEvents } from '@xylabs/react-pixel';
5
+ import { useAsyncEffect } from '@xylabs/react-shared';
6
+ import { Helmet } from 'react-helmet';
7
+ import { useLocation } from 'react-router-dom';
8
+ export const WebAppPage = ({ spacing = 1, disableBreadcrumbGutter, disableGutters, title, container, breadcrumbs, children, ...props }) => {
9
+ const userEvents = useUserEvents();
10
+ const { pathname } = useLocation();
11
+ useAsyncEffect(
12
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13
+ async () => {
14
+ await userEvents?.viewContent({ name: title ?? 'NodeBasePage', path: location.pathname });
15
+ }, [pathname, title, userEvents]);
16
+ const Body = (props) => (_jsxs(FlexGrowCol, { gap: 1, paddingY: spacing, justifyContent: "flex-start", alignItems: "stretch", ...props, children: [_jsx(FlexRow, { justifyContent: "flex-start", marginX: disableBreadcrumbGutter ? 0 : spacing, children: breadcrumbs }), children] }));
17
+ return (_jsxs(FlexGrowCol, { alignItems: "stretch", justifyContent: "flex-start", minHeight: 0, overflow: "visible scroll", children: [_jsx(Helmet, { title: title }), container ? (_jsx(Container, { disableGutters: disableGutters, style: { alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }, maxWidth: container, children: _jsx(Body, { ...props }) })) : (_jsx(Body, { paddingX: disableGutters ? 0 : 1, ...props }))] }));
18
+ };
19
+ /** @deprecated use WebAppPagePage instead */
20
+ export const FlexPage = WebAppPage;
21
+ //# sourceMappingURL=Page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.js","sourceRoot":"","sources":["../../../src/components/Page.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,MAAM,eAAe,CAAA;AACzD,OAAO,EAAgB,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAS9C,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,uBAAuB,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IACnK,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,CAAA;IAElC,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,MAAM,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,cAAc,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3F,CAAC,EACD,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAC9B,CAAA;IAED,MAAM,IAAI,GAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,CAC9C,MAAC,WAAW,IAAC,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAC,YAAY,EAAC,UAAU,EAAC,SAAS,KAAK,KAAK,aAChG,KAAC,OAAO,IAAC,cAAc,EAAC,YAAY,EAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,YAChF,WAAW,GACJ,EACT,QAAQ,IACG,CACf,CAAA;IAED,OAAO,CACL,MAAC,WAAW,IAAC,UAAU,EAAC,SAAS,EAAC,cAAc,EAAC,YAAY,EAAC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAC,gBAAgB,aACnG,KAAC,MAAM,IAAC,KAAK,EAAE,KAAK,GAAI,EACvB,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,SAAS,IACR,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,YAEnB,KAAC,IAAI,OAAK,KAAK,GAAI,GACT,CACb,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAM,KAAK,GAAI,CACtD,IACW,CACf,CAAA;AACH,CAAC,CAAA;AAED,6CAA6C;AAC7C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './DarkModeIconButton';
@@ -0,0 +1,2 @@
1
+ export * from './DarkModeIconButton';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { WebAppNavigationType } from '../../WebAppNavigationType';
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":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGrC,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":";AACA,OAAO,EAAiB,QAAQ,EAAE,MAAM,OAAO,CAAA;AAG/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 '../../WebAppNavigationType';
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":"AACA,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
+ }