@dashadmin/dash-app-common 1.3.24 → 1.3.26

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 (165) hide show
  1. package/dist/DashApp.js +176 -1
  2. package/dist/DashAppLoader.js +348 -3
  3. package/dist/DashDefaultResources.js +10 -1
  4. package/dist/components/DashDefaultPrivateApp.js +150 -1
  5. package/dist/components/DashDefaultPrivateResources.js +10 -1
  6. package/dist/components/DashDefaultPublicApp.js +20 -1
  7. package/dist/components/DashResourceLoader.js +245 -1
  8. package/dist/defaults/extensions/bootstrap/DashDefaultErrorBoundary.js +78 -1
  9. package/dist/defaults/extensions/bootstrap/dashDefaultInitializeApp.js +59 -1
  10. package/dist/defaults/extensions/bootstrap/index.js +24 -1
  11. package/dist/defaults/extensions/components/DashDefaultLoader.js +43 -2
  12. package/dist/defaults/extensions/components/dashDefaultAutoAdminComponents.js +67 -1
  13. package/dist/defaults/extensions/components/dashDefaultNotification.js +28 -1
  14. package/dist/defaults/extensions/components/dashDefaultStaticComponents.js +15 -1
  15. package/dist/defaults/extensions/components/index.js +13 -1
  16. package/dist/defaults/extensions/electron/dashDefaultIpcListeners.js +38 -1
  17. package/dist/defaults/extensions/electron/index.js +5 -1
  18. package/dist/defaults/extensions/hooks/index.js +12 -1
  19. package/dist/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.js +17 -1
  20. package/dist/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.js +51 -1
  21. package/dist/defaults/extensions/hooks/useDashDefaultLazyResources.js +19 -1
  22. package/dist/defaults/extensions/hooks/useDashDefaultMountTracker.js +22 -1
  23. package/dist/defaults/extensions/hooks/useDashDefaultRoutePath.js +17 -1
  24. package/dist/defaults/extensions/i18n/dashDefaultI18nProvider.js +44 -1
  25. package/dist/defaults/extensions/i18n/dashDefaultTranslations.js +87 -1
  26. package/dist/defaults/extensions/i18n/index.js +24 -1
  27. package/dist/defaults/extensions/index.js +190 -1
  28. package/dist/defaults/extensions/layout/dashDefaultDomainAppLayout.js +58 -1
  29. package/dist/defaults/extensions/layout/index.js +12 -1
  30. package/dist/defaults/extensions/managers/DashDefaultWSMessagesManager.js +84 -1
  31. package/dist/defaults/extensions/managers/index.js +5 -1
  32. package/dist/defaults/extensions/providers/dashDefaultAuthProvider.js +220 -1
  33. package/dist/defaults/extensions/providers/dashDefaultDataProvider.js +395 -1
  34. package/dist/defaults/extensions/providers/index.js +24 -1
  35. package/dist/defaults/extensions/router/DashDefaultLanding.js +46 -1
  36. package/dist/defaults/extensions/router/dashDefaultPrivateRoutes.js +38 -1
  37. package/dist/defaults/extensions/router/dashDefaultPublicRoutes.js +65 -1
  38. package/dist/defaults/extensions/router/dashDefaultRouter.js +39 -1
  39. package/dist/defaults/extensions/router/dashDefaultSharedRoutes.js +40 -1
  40. package/dist/defaults/extensions/router/index.js +12 -1
  41. package/dist/defaults/extensions/state/dashDefaultAppCommon.js +57 -1
  42. package/dist/defaults/extensions/state/dashDefaultAppSettings.js +38 -1
  43. package/dist/defaults/extensions/state/dashDefaultInitialAppState.js +31 -1
  44. package/dist/defaults/extensions/state/dashDefaultLayoutSettings.js +48 -1
  45. package/dist/defaults/extensions/state/dashDefaultQueryClient.js +58 -1
  46. package/dist/defaults/extensions/state/dashDefaultResourcesIcons.js +24 -1
  47. package/dist/defaults/extensions/state/index.js +29 -1
  48. package/dist/defaults/extensions/styles/index.js +2 -1
  49. package/dist/defaults/extensions/theme/dashDefaultThemeOptions.js +74 -1
  50. package/dist/defaults/extensions/theme/index.js +6 -1
  51. package/dist/defaults/extensions/utils/IPCMessageBrokerContext.js +12 -1
  52. package/dist/defaults/extensions/utils/dashDefaultAuthProviderUtils.js +29 -1
  53. package/dist/defaults/extensions/utils/dashDefaultDataProviderUtils.js +37 -1
  54. package/dist/defaults/extensions/utils/dashDefaultNotificationsProcessor.js +149 -1
  55. package/dist/defaults/extensions/utils/index.js +44 -1
  56. package/dist/defaults/filters/demo/dashDefaultDemoFilters.js +36 -1
  57. package/dist/defaults/filters/demo/index.js +4 -1
  58. package/dist/defaults/filters/index.js +5 -1
  59. package/dist/defaults/index.js +14 -1
  60. package/dist/defaults/pages/Account/DashDefaultRegister.js +282 -1
  61. package/dist/defaults/pages/Account/DashDefaultSignUp.js +420 -1
  62. package/dist/defaults/pages/Account/DashDefaultSignUpSuccess.js +101 -1
  63. package/dist/defaults/pages/Account/index.js +8 -1
  64. package/dist/defaults/pages/DashDefaultLogin.js +218 -1
  65. package/dist/defaults/pages/Misc/DashDefaultNotFound.js +74 -1
  66. package/dist/defaults/pages/Misc/DashDefaultServerError.js +79 -1
  67. package/dist/defaults/pages/Misc/DashDefaultUnauthorized.js +90 -1
  68. package/dist/defaults/pages/Misc/index.js +8 -1
  69. package/dist/defaults/pages/Static/DashDefaultPrivacyPage.js +48 -1
  70. package/dist/defaults/pages/Static/DashDefaultStaticPage.js +55 -1
  71. package/dist/defaults/pages/Static/DashDefaultTermsPage.js +52 -1
  72. package/dist/defaults/pages/Static/index.js +8 -1
  73. package/dist/defaults/pages/index.js +25 -1
  74. package/dist/defaults/schemas/dashDefaultSchema.js +14 -1
  75. package/dist/defaults/schemas/demo/dashDefaultTodoSchema.js +24 -1
  76. package/dist/defaults/schemas/demo/index.js +4 -1
  77. package/dist/defaults/schemas/index.js +7 -1
  78. package/dist/filters/demo/todoFilters.js +36 -1
  79. package/dist/index.js +56 -5975
  80. package/dist/resources/demo/todoResource.js +58 -1
  81. package/dist/schemas/defaultSchema.js +14 -1
  82. package/dist/schemas/demo/todoSchema.js +24 -1
  83. package/package.json +132 -77
  84. package/src/DashApp.tsx +294 -0
  85. package/src/DashAppLoader.tsx +717 -0
  86. package/src/DashDefaultResources.tsx +10 -0
  87. package/src/components/DashDefaultPrivateApp.tsx +358 -0
  88. package/src/components/DashDefaultPrivateResources.tsx +10 -0
  89. package/src/components/DashDefaultPublicApp.tsx +40 -0
  90. package/src/components/DashResourceLoader.tsx +564 -0
  91. package/src/defaults/extensions/bootstrap/DashDefaultErrorBoundary.tsx +113 -0
  92. package/src/defaults/extensions/bootstrap/dashDefaultInitializeApp.ts +81 -0
  93. package/src/defaults/extensions/bootstrap/index.ts +32 -0
  94. package/src/defaults/extensions/components/DashDefaultLoader.tsx +59 -0
  95. package/src/defaults/extensions/components/dashDefaultAutoAdminComponents.tsx +49 -0
  96. package/src/defaults/extensions/components/dashDefaultNotification.tsx +37 -0
  97. package/src/defaults/extensions/components/dashDefaultStaticComponents.tsx +34 -0
  98. package/src/defaults/extensions/components/index.ts +17 -0
  99. package/src/defaults/extensions/electron/dashDefaultIpcListeners.ts +62 -0
  100. package/src/defaults/extensions/electron/index.ts +7 -0
  101. package/src/defaults/extensions/hooks/index.ts +11 -0
  102. package/src/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.ts +25 -0
  103. package/src/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.ts +38 -0
  104. package/src/defaults/extensions/hooks/useDashDefaultLazyResources.ts +29 -0
  105. package/src/defaults/extensions/hooks/useDashDefaultMountTracker.ts +28 -0
  106. package/src/defaults/extensions/hooks/useDashDefaultRoutePath.ts +27 -0
  107. package/src/defaults/extensions/i18n/dashDefaultI18nProvider.ts +66 -0
  108. package/src/defaults/extensions/i18n/dashDefaultTranslations.ts +82 -0
  109. package/src/defaults/extensions/i18n/index.ts +22 -0
  110. package/src/defaults/extensions/index.ts +177 -0
  111. package/src/defaults/extensions/layout/dashDefaultDomainAppLayout.tsx +126 -0
  112. package/src/defaults/extensions/layout/index.ts +12 -0
  113. package/src/defaults/extensions/managers/DashDefaultWSMessagesManager.tsx +99 -0
  114. package/src/defaults/extensions/managers/index.ts +7 -0
  115. package/src/defaults/extensions/providers/dashDefaultAuthProvider.ts +256 -0
  116. package/src/defaults/extensions/providers/dashDefaultDataProvider.ts +513 -0
  117. package/src/defaults/extensions/providers/index.ts +25 -0
  118. package/src/defaults/extensions/router/DashDefaultLanding.tsx +51 -0
  119. package/src/defaults/extensions/router/dashDefaultPrivateRoutes.tsx +50 -0
  120. package/src/defaults/extensions/router/dashDefaultPublicRoutes.tsx +86 -0
  121. package/src/defaults/extensions/router/dashDefaultRouter.tsx +54 -0
  122. package/src/defaults/extensions/router/dashDefaultSharedRoutes.tsx +56 -0
  123. package/src/defaults/extensions/router/index.ts +13 -0
  124. package/src/defaults/extensions/state/dashDefaultAppCommon.ts +54 -0
  125. package/src/defaults/extensions/state/dashDefaultAppSettings.ts +29 -0
  126. package/src/defaults/extensions/state/dashDefaultInitialAppState.ts +75 -0
  127. package/src/defaults/extensions/state/dashDefaultLayoutSettings.ts +59 -0
  128. package/src/defaults/extensions/state/dashDefaultQueryClient.ts +59 -0
  129. package/src/defaults/extensions/state/dashDefaultResourcesIcons.tsx +23 -0
  130. package/src/defaults/extensions/state/index.ts +29 -0
  131. package/src/defaults/extensions/styles/index.ts +17 -0
  132. package/src/defaults/extensions/theme/dashDefaultThemeOptions.ts +89 -0
  133. package/src/defaults/extensions/theme/index.ts +7 -0
  134. package/src/defaults/extensions/utils/IPCMessageBrokerContext.tsx +22 -0
  135. package/src/defaults/extensions/utils/dashDefaultAuthProviderUtils.ts +36 -0
  136. package/src/defaults/extensions/utils/dashDefaultDataProviderUtils.ts +46 -0
  137. package/src/defaults/extensions/utils/dashDefaultNotificationsProcessor.tsx +208 -0
  138. package/src/defaults/extensions/utils/index.ts +42 -0
  139. package/src/defaults/filters/demo/dashDefaultDemoFilters.tsx +50 -0
  140. package/src/defaults/filters/demo/index.ts +6 -0
  141. package/src/defaults/filters/index.ts +11 -0
  142. package/src/defaults/index.ts +27 -0
  143. package/src/defaults/pages/Account/DashDefaultRegister.tsx +281 -0
  144. package/src/defaults/pages/Account/DashDefaultSignUp.tsx +492 -0
  145. package/src/defaults/pages/Account/DashDefaultSignUpSuccess.tsx +113 -0
  146. package/src/defaults/pages/Account/index.ts +8 -0
  147. package/src/defaults/pages/DashDefaultLogin.tsx +224 -0
  148. package/src/defaults/pages/Misc/DashDefaultNotFound.tsx +96 -0
  149. package/src/defaults/pages/Misc/DashDefaultServerError.tsx +102 -0
  150. package/src/defaults/pages/Misc/DashDefaultUnauthorized.tsx +116 -0
  151. package/src/defaults/pages/Misc/index.ts +8 -0
  152. package/src/defaults/pages/Static/DashDefaultPrivacyPage.tsx +85 -0
  153. package/src/defaults/pages/Static/DashDefaultStaticPage.tsx +75 -0
  154. package/src/defaults/pages/Static/DashDefaultTermsPage.tsx +69 -0
  155. package/src/defaults/pages/Static/index.ts +8 -0
  156. package/src/defaults/pages/index.ts +28 -0
  157. package/src/defaults/schemas/dashDefaultSchema.tsx +25 -0
  158. package/src/defaults/schemas/demo/dashDefaultTodoSchema.tsx +39 -0
  159. package/src/defaults/schemas/demo/index.ts +6 -0
  160. package/src/defaults/schemas/index.ts +14 -0
  161. package/src/filters/demo/todoFilters.tsx +39 -0
  162. package/src/index.ts +131 -0
  163. package/src/resources/demo/todoResource.tsx +68 -0
  164. package/src/schemas/defaultSchema.tsx +14 -0
  165. package/src/schemas/demo/todoSchema.tsx +27 -0
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Dash Default Auth Provider Utilities
3
+ *
4
+ * Dash default authentication utilities.
5
+ * Uses the base utilities from dash-utils with default configuration.
6
+ */
7
+ import { AuthPersistenceService, syncLocalStorageToDeviceStore } from 'dash-auth';
8
+ import {
9
+ createLogoutFromStorage,
10
+ isUserAuthenticated,
11
+ getCurrentUser,
12
+ getAuthToken
13
+ } from 'dash-utils';
14
+ import { removeCookie } from 'dash-admin/src/utils/cookies';
15
+
16
+ /**
17
+ * Dash default logout function
18
+ * Configured with AuthPersistenceService and cookie removal
19
+ */
20
+ export const dashDefaultLogoutFromStorage = createLogoutFromStorage({
21
+ clearAuthPersistence: () => AuthPersistenceService.clearAuth(),
22
+ syncToDeviceStore: syncLocalStorageToDeviceStore,
23
+ removeCookies: (names) => names.forEach(name => removeCookie(name))
24
+ });
25
+
26
+ // Re-export utility functions from dash-utils with DashDefault prefix
27
+ export const dashDefaultIsAuthenticated = isUserAuthenticated;
28
+ export const dashDefaultGetCurrentUser = getCurrentUser;
29
+ export const dashDefaultGetToken = getAuthToken;
30
+
31
+ export default {
32
+ dashDefaultLogoutFromStorage,
33
+ dashDefaultIsAuthenticated,
34
+ dashDefaultGetCurrentUser,
35
+ dashDefaultGetToken
36
+ };
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Dash Default Data Provider Utilities
3
+ *
4
+ * Dash default data provider utilities.
5
+ * Re-exports from dash-utils with default types.
6
+ */
7
+ import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
8
+ import {
9
+ setResourceConfigs as setConfigs,
10
+ getResourceConfig as getConfig,
11
+ processPostData as processData,
12
+ processFormData,
13
+ buildQueryString,
14
+ isFormDataResource
15
+ } from 'dash-utils';
16
+
17
+ // Type-safe wrappers for the app's resource config type
18
+ export const dashDefaultSetResourceConfigs = (configs: IDashAutoAdminResourceConfig[]): void => {
19
+ setConfigs(configs as any);
20
+ };
21
+
22
+ export const dashDefaultGetResourceConfig = (resource: string): IDashAutoAdminResourceConfig | undefined => {
23
+ return getConfig(resource) as IDashAutoAdminResourceConfig | undefined;
24
+ };
25
+
26
+ export const dashDefaultProcessPostData = (
27
+ resource: string,
28
+ data: Record<string, any>,
29
+ operation: 'create' | 'update' | 'getList' | 'import'
30
+ ): Record<string, any> => {
31
+ return processData(resource, data, operation);
32
+ };
33
+
34
+ // Re-export other utilities with DashDefault prefix
35
+ export const dashDefaultProcessFormData = processFormData;
36
+ export const dashDefaultBuildQueryString = buildQueryString;
37
+ export const dashDefaultIsFormDataResource = isFormDataResource;
38
+
39
+ export default {
40
+ dashDefaultGetResourceConfig,
41
+ dashDefaultSetResourceConfigs,
42
+ dashDefaultProcessPostData,
43
+ dashDefaultProcessFormData,
44
+ dashDefaultBuildQueryString,
45
+ dashDefaultIsFormDataResource
46
+ };
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Dash Default Notifications Processor
3
+ *
4
+ * Dash default notification processing utilities.
5
+ */
6
+
7
+ // Audio context for better browser compatibility
8
+ let audioContext: AudioContext | null = null;
9
+
10
+ // Re-export from dash-utils for backward compatibility
11
+ export { requestNotificationPermission as requestDashDefaultNotificationPermission } from 'dash-utils';
12
+
13
+ // Digital watch alarm configuration
14
+ const ALARM_DURATION_SECONDS = 10;
15
+ const ALARM_FREQUENCY_HIGH = 4000; // High frequency like digital watch
16
+ const ALARM_FREQUENCY_LOW = 2500; // Alternating low frequency
17
+ const BEEP_DURATION_MS = 100; // Short beeps
18
+ const BEEP_GAP_MS = 50; // Gap between beeps
19
+ const BEEP_PATTERN_GAP_MS = 300; // Gap between beep patterns
20
+
21
+ const initializeAudio = async (): Promise<boolean> => {
22
+ try {
23
+ // Initialize AudioContext if not already done
24
+ if (!audioContext) {
25
+ audioContext = new (window.AudioContext || (window as any).webkitAudioContext)();
26
+ }
27
+
28
+ // Resume audio context if suspended (required by some browsers)
29
+ if (audioContext.state === 'suspended') {
30
+ await audioContext.resume();
31
+ }
32
+
33
+ return true;
34
+ } catch (error) {
35
+ console.error('Failed to initialize audio context:', error);
36
+ return false;
37
+ }
38
+ };
39
+
40
+ /**
41
+ * Play a single beep at specified frequency using oscillator (more reliable than buffer)
42
+ */
43
+ const playOscillatorBeep = (frequency: number, durationMs: number): Promise<void> => {
44
+ return new Promise((resolve) => {
45
+ if (!audioContext) {
46
+ resolve();
47
+ return;
48
+ }
49
+
50
+ try {
51
+ const oscillator = audioContext.createOscillator();
52
+ const gainNode = audioContext.createGain();
53
+
54
+ oscillator.connect(gainNode);
55
+ gainNode.connect(audioContext.destination);
56
+
57
+ oscillator.type = 'square'; // Square wave for that classic digital watch sound
58
+ oscillator.frequency.setValueAtTime(frequency, audioContext.currentTime);
59
+
60
+ // Quick attack, sustain, quick release for sharp beep
61
+ const now = audioContext.currentTime;
62
+ gainNode.gain.setValueAtTime(0, now);
63
+ gainNode.gain.linearRampToValueAtTime(0.4, now + 0.005); // 5ms attack
64
+ gainNode.gain.setValueAtTime(0.4, now + (durationMs / 1000) - 0.01);
65
+ gainNode.gain.linearRampToValueAtTime(0, now + (durationMs / 1000)); // 10ms release
66
+
67
+ oscillator.start(now);
68
+ oscillator.stop(now + (durationMs / 1000));
69
+
70
+ oscillator.onended = () => resolve();
71
+ } catch (error) {
72
+ console.error('Failed to play oscillator beep:', error);
73
+ resolve();
74
+ }
75
+ });
76
+ };
77
+
78
+ /**
79
+ * Play a digital watch alarm pattern: beep-beep-beep (pause) beep-beep-beep
80
+ * Alternates between high and low frequencies
81
+ */
82
+ const playAlarmPattern = async (useHighFreq: boolean): Promise<void> => {
83
+ const freq = useHighFreq ? ALARM_FREQUENCY_HIGH : ALARM_FREQUENCY_LOW;
84
+
85
+ // Play 3 quick beeps
86
+ for (let i = 0; i < 3; i++) {
87
+ await playOscillatorBeep(freq, BEEP_DURATION_MS);
88
+ if (i < 2) {
89
+ await new Promise(r => setTimeout(r, BEEP_GAP_MS));
90
+ }
91
+ }
92
+ };
93
+
94
+ /**
95
+ * Play the full digital watch alarm sequence for specified duration
96
+ * Returns a Promise that resolves when alarm completes
97
+ * @param durationSeconds - Duration in seconds (default: 10)
98
+ * @param settings - Optional alarm settings to override defaults
99
+ */
100
+ export interface AlarmSettings {
101
+ alarmDurationSeconds?: number;
102
+ alarmFrequencyHigh?: number;
103
+ alarmFrequencyLow?: number;
104
+ beepDurationMs?: number;
105
+ beepGapMs?: number;
106
+ beepPatternGapMs?: number;
107
+ }
108
+
109
+ export const playDashDefaultDigitalWatchAlarm = async (
110
+ durationSeconds?: number,
111
+ settings?: AlarmSettings
112
+ ): Promise<void> => {
113
+ // Use provided settings or defaults
114
+ const duration = durationSeconds ?? settings?.alarmDurationSeconds ?? ALARM_DURATION_SECONDS;
115
+ const frequencyHigh = settings?.alarmFrequencyHigh ?? ALARM_FREQUENCY_HIGH;
116
+ const frequencyLow = settings?.alarmFrequencyLow ?? ALARM_FREQUENCY_LOW;
117
+ const beepDuration = settings?.beepDurationMs ?? BEEP_DURATION_MS;
118
+ const beepGap = settings?.beepGapMs ?? BEEP_GAP_MS;
119
+ const patternGap = settings?.beepPatternGapMs ?? BEEP_PATTERN_GAP_MS;
120
+
121
+ console.log(`🔔 Starting digital watch alarm for ${duration} seconds...`);
122
+
123
+ const initialized = await initializeAudio();
124
+ if (!initialized) {
125
+ console.error('Failed to initialize audio for alarm');
126
+ return;
127
+ }
128
+
129
+ const startTime = Date.now();
130
+ const endTime = startTime + (duration * 1000);
131
+ let patternCount = 0;
132
+
133
+ // Custom playAlarmPattern that uses provided settings
134
+ const playPatternWithSettings = async (useHighFreq: boolean): Promise<void> => {
135
+ const freq = useHighFreq ? frequencyHigh : frequencyLow;
136
+
137
+ // Play 3 quick beeps
138
+ for (let i = 0; i < 3; i++) {
139
+ await playOscillatorBeep(freq, beepDuration);
140
+ if (i < 2 && beepGap > 0) {
141
+ await new Promise(r => setTimeout(r, beepGap));
142
+ }
143
+ }
144
+ };
145
+
146
+ while (Date.now() < endTime) {
147
+ // Alternate between high and low frequency patterns
148
+ const useHighFreq = patternCount % 2 === 0;
149
+ await playPatternWithSettings(useHighFreq);
150
+
151
+ patternCount++;
152
+
153
+ // Check if we still have time for another pattern
154
+ if (Date.now() < endTime && patternGap > 0) {
155
+ await new Promise(r => setTimeout(r, patternGap));
156
+ }
157
+ }
158
+
159
+ console.log(`🔔 Digital watch alarm completed (${patternCount} patterns played)`);
160
+ };
161
+
162
+ /**
163
+ * Legacy single beep for backwards compatibility
164
+ */
165
+ export const playDashDefaultNotificationSound = async (): Promise<void> => {
166
+ await playOscillatorBeep(ALARM_FREQUENCY_HIGH, BEEP_DURATION_MS);
167
+ };
168
+
169
+ export const processDashDefaultNotification = async (notification: any): Promise<{ alarmCompleted: boolean }> => {
170
+
171
+ let marketplace = notification?.data?.marketplace?.system_marketplace?.name || "STORE" ;
172
+ const isConfirmedStatus = notification?.data?.new === "CONFIRMED";
173
+ let play = false;
174
+
175
+ // Play alarm sound, if notification is assistance request or order is confirmed.
176
+
177
+ if (notification?.notificationPayload?.class === "MallStoreAssistanceNotification") {
178
+ play = true;
179
+
180
+ }
181
+
182
+ if (isConfirmedStatus) {
183
+ play = true;
184
+ }
185
+
186
+ if (play) {
187
+
188
+ console.log("🚨 Playing digital watch alarm for new order...");
189
+
190
+ // Play the digital watch alarm for 10 seconds
191
+ // This returns a Promise that resolves when alarm is complete
192
+ await playDashDefaultDigitalWatchAlarm(ALARM_DURATION_SECONDS);
193
+
194
+ console.log("✅ Alarm sequence completed - TTS can now play");
195
+
196
+ // Also show a browser notification if permissions allow
197
+ if ('Notification' in window && Notification.permission === 'granted') {
198
+ new Notification(`Nueva Orden de ${marketplace}`, {
199
+ body: notification?.data?.message || 'Nueva orden recibida',
200
+ icon: 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f6a8.png', // Alarm icon emoji
201
+ });
202
+ }
203
+
204
+ return { alarmCompleted: true };
205
+ }
206
+
207
+ return { alarmCompleted: false };
208
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Utils Extensions Index
3
+ *
4
+ * Utility functions and contexts.
5
+ */
6
+
7
+ // Auth Provider Utils
8
+ export {
9
+ dashDefaultLogoutFromStorage,
10
+ dashDefaultIsAuthenticated,
11
+ dashDefaultGetCurrentUser,
12
+ dashDefaultGetToken
13
+ } from './dashDefaultAuthProviderUtils';
14
+
15
+ // Data Provider Utils
16
+ export {
17
+ dashDefaultGetResourceConfig,
18
+ dashDefaultSetResourceConfigs,
19
+ dashDefaultProcessPostData,
20
+ dashDefaultProcessFormData,
21
+ dashDefaultBuildQueryString,
22
+ dashDefaultIsFormDataResource
23
+ } from './dashDefaultDataProviderUtils';
24
+
25
+ // IPC Message Broker
26
+ export {
27
+ DashIPCMessageBrokerContext,
28
+ DashIPCMessageBrokerProvider,
29
+ useDashIPCMessageBroker,
30
+ type DashLogMessage,
31
+ type DashSubprocessOutput,
32
+ type DashIPCMessageBrokerContextType,
33
+ type DashIPCMessageBrokerConfig
34
+ } from './IPCMessageBrokerContext';
35
+
36
+ // Notifications Processor
37
+ export {
38
+ processDashDefaultNotification,
39
+ playDashDefaultNotificationSound,
40
+ playDashDefaultDigitalWatchAlarm,
41
+ requestDashDefaultNotificationPermission
42
+ } from './dashDefaultNotificationsProcessor';
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Dash Default Demo Filters
3
+ *
4
+ * Example filter configurations for demonstration purposes.
5
+ * These filters showcase different filter types and configurations.
6
+ */
7
+ import React from "react";
8
+ import { SelectInput } from "react-admin";
9
+ import IReferenceFilter from "dash-auto-admin/src/interfaces/IReferenceFilter";
10
+
11
+ /**
12
+ * Dash default demo filters for resource lists
13
+ *
14
+ * Demonstrates:
15
+ * - Text filters (name, description)
16
+ * - Select filters with static options (status)
17
+ */
18
+ const dashDefaultDemoFilters: IReferenceFilter[] = [
19
+ {
20
+ id: 'name',
21
+ label: 'Name',
22
+ source: 'name',
23
+ alwaysOn: true,
24
+ reference: null,
25
+ optionText: null,
26
+ },
27
+ {
28
+ id: 'description',
29
+ label: 'Description',
30
+ source: 'description',
31
+ alwaysOn: true,
32
+ reference: null,
33
+ optionText: null,
34
+ },
35
+ {
36
+ id: 'status',
37
+ label: 'Status',
38
+ source: 'status',
39
+ reference: [
40
+ { id: 'active', name: 'Active' },
41
+ { id: 'inactive', name: 'Inactive' },
42
+ { id: 'pending', name: 'Pending' },
43
+ ],
44
+ optionText: 'status',
45
+ alwaysOn: true,
46
+ referenceComponent: SelectInput,
47
+ }
48
+ ];
49
+
50
+ export default dashDefaultDemoFilters;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Demo Filters Module
3
+ *
4
+ * Exports demo filter configurations.
5
+ */
6
+ export { default as dashDefaultDemoFilters } from './dashDefaultDemoFilters';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Default Filters Index
3
+ *
4
+ * Default filter configurations for resource lists.
5
+ * These filters provide common filtering patterns that can be
6
+ * customized or extended for specific resources.
7
+ */
8
+
9
+ // Demo filters
10
+ export * from './demo';
11
+ export { default as dashDefaultDemoFilters } from './demo/dashDefaultDemoFilters';
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Defaults Index
3
+ *
4
+ * Exports all default components, routes, extensions, pages, filters, and schemas
5
+ * for the dash-app-common package. This provides a complete zero-config solution
6
+ * that can be customized or extended by applications.
7
+ */
8
+
9
+ // Default routes (from extensions/router)
10
+ export { dashDefaultPublicRoutes as defaultPublicRoutes } from './extensions/router/dashDefaultPublicRoutes';
11
+ export { dashDefaultPrivateRoutes as defaultPrivateRoutes } from './extensions/router/dashDefaultPrivateRoutes';
12
+
13
+ // Default app components
14
+ export { default as DashDefaultPublicApp } from '../components/DashDefaultPublicApp';
15
+ export { default as DashDefaultPrivateApp } from '../components/DashDefaultPrivateApp';
16
+
17
+ // Extensions
18
+ export * from './extensions';
19
+
20
+ // Pages
21
+ export * from './pages';
22
+
23
+ // Filters
24
+ export * from './filters';
25
+
26
+ // Schemas
27
+ export * from './schemas';