@acorex/platform 19.1.3 → 19.1.4

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 (145) hide show
  1. package/common/index.d.ts +1 -0
  2. package/common/lib/app/application.types.d.ts +2 -2
  3. package/common/lib/file-storage/file-storage.service.d.ts +13 -0
  4. package/common/lib/file-storage/file-storage.types.d.ts +143 -0
  5. package/common/lib/file-storage/index.d.ts +2 -0
  6. package/common/lib/filters/filters.types.d.ts +2 -1
  7. package/common/lib/settings/setting-definition.provider.d.ts +12 -5
  8. package/common/lib/settings/setting.builder.d.ts +4 -3
  9. package/common/lib/settings/settings.provider.d.ts +2 -7
  10. package/common/lib/settings/settings.service.d.ts +19 -7
  11. package/common/lib/settings/settings.types.d.ts +15 -2
  12. package/core/utils/highlighter.d.ts +1 -1
  13. package/fesm2022/acorex-platform-common.mjs +194 -74
  14. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-core.mjs +2 -2
  16. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-builder.mjs +245 -444
  18. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-layout-designer.mjs +13 -13
  20. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-layout-entity.mjs +59 -54
  22. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-layout-filters.mjs +82 -5
  24. package/fesm2022/acorex-platform-layout-filters.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-layout-setting.mjs +73 -91
  26. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-layouts.mjs +3 -4
  28. package/fesm2022/acorex-platform-layouts.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-K9B_-q_K.mjs +108 -0
  30. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-K9B_-q_K.mjs.map +1 -0
  31. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DAmHq1bt.mjs +369 -0
  32. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DAmHq1bt.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Cd2gxLZt.mjs +87 -0
  34. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Cd2gxLZt.mjs.map +1 -0
  35. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-6sZdw013.mjs +130 -0
  36. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-6sZdw013.mjs.map +1 -0
  37. package/fesm2022/acorex-platform-themes-default-setting-page.component-BYpCgHZb.mjs +74 -0
  38. package/fesm2022/acorex-platform-themes-default-setting-page.component-BYpCgHZb.mjs.map +1 -0
  39. package/fesm2022/acorex-platform-themes-default-setting-view.component-CdmIphX1.mjs +73 -0
  40. package/fesm2022/acorex-platform-themes-default-setting-view.component-CdmIphX1.mjs.map +1 -0
  41. package/fesm2022/acorex-platform-themes-default.mjs +20 -20
  42. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  43. package/fesm2022/acorex-platform-themes-shared.mjs +288 -81
  44. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  45. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-05nKV-UV.mjs → acorex-platform-widgets-checkbox-widget-column.component-jeZBOEhl.mjs} +18 -14
  46. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-jeZBOEhl.mjs.map +1 -0
  47. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-B_Gec5Qf.mjs → acorex-platform-widgets-checkbox-widget-designer.component-RCi5IJOR.mjs} +4 -4
  48. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-B_Gec5Qf.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-RCi5IJOR.mjs.map} +1 -1
  49. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-DU1niJES.mjs +64 -0
  50. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-DU1niJES.mjs.map +1 -0
  51. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-B2g0ct24.mjs → acorex-platform-widgets-color-box-widget-designer.component-CWhbgmDV.mjs} +4 -4
  52. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-CWhbgmDV.mjs.map +1 -0
  53. package/fesm2022/acorex-platform-widgets.mjs +1309 -334
  54. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  55. package/fesm2022/acorex-platform-workflow.mjs +9 -3
  56. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  57. package/layout/builder/lib/builder/builder.module.d.ts +6 -7
  58. package/layout/builder/lib/builder/builder.service.d.ts +9 -10
  59. package/layout/builder/lib/builder/context-store.service.d.ts +33 -0
  60. package/layout/builder/lib/builder/index.d.ts +4 -2
  61. package/layout/builder/lib/builder/widget-catalog.d.ts +1 -1
  62. package/layout/builder/lib/builder/widget-container.component.d.ts +34 -9
  63. package/layout/builder/lib/builder/widget-groups.d.ts +1 -0
  64. package/layout/builder/lib/builder/widget-map.d.ts +43 -0
  65. package/layout/builder/lib/builder/{widget-renderer.component.directive.d.ts → widget-renderer.directive.d.ts} +26 -0
  66. package/layout/builder/lib/builder/widget-status.types.d.ts +14 -0
  67. package/layout/builder/lib/builder/widget.types.d.ts +41 -55
  68. package/layout/designer/lib/preview/preview-viewer.component.d.ts +2 -2
  69. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +2 -2
  70. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +7 -2
  71. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +0 -1
  72. package/layout/filters/lib/filters.viewmodel.d.ts +13 -3
  73. package/layout/setting/lib/convert-setting-data.d.ts +0 -20
  74. package/layout/setting/lib/setting.viewmodel.d.ts +65 -4
  75. package/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.d.ts +15 -5
  76. package/package.json +15 -15
  77. package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +15 -5
  78. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +15 -5
  79. package/themes/default/lib/layouts/entity-layouts/entity-master-create-view/entity-master-create-view.component.d.ts +2 -1
  80. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +17 -6
  81. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/list-view-option-filters/list-view-option-filters.component.d.ts +6 -3
  82. package/themes/default/lib/layouts/entity-layouts/entity-master-modify-view/entity-master-modify-view.component.d.ts +2 -1
  83. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +15 -5
  84. package/themes/default/lib/layouts/filters-layout/simple-filter-builder/filters-view.component.d.ts +6 -5
  85. package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +15 -5
  86. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +15 -5
  87. package/themes/default/lib/layouts/setting-layout/setting-page/setting-page.component.d.ts +0 -47
  88. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +19 -5
  89. package/themes/shared/index.d.ts +3 -1
  90. package/themes/shared/lib/components/theme-slot.component.d.ts +23 -13
  91. package/themes/shared/lib/palette.provider.d.ts +9 -0
  92. package/themes/shared/lib/setting.keys.d.ts +7 -2
  93. package/themes/shared/lib/setting.provider.d.ts +1 -0
  94. package/themes/shared/lib/shared.module.d.ts +2 -1
  95. package/themes/shared/lib/{services/theme.service.d.ts → theme.service.d.ts} +16 -24
  96. package/themes/shared/lib/theme.types.d.ts +25 -0
  97. package/themes/shared/lib/widgets/theme-color-selection/index.d.ts +2 -0
  98. package/themes/shared/lib/widgets/theme-color-selection/theme-color-selection-widget-edit.component.d.ts +6 -0
  99. package/themes/shared/lib/widgets/theme-color-selection/theme-color-selection-widget.config.d.ts +7 -0
  100. package/widgets/lib/properties/layout.props.d.ts +1 -0
  101. package/widgets/lib/widgets/advance/avatar/avatar-widget-column.component.d.ts +6 -0
  102. package/widgets/lib/widgets/advance/avatar/avatar-widget-designer.component.d.ts +6 -0
  103. package/widgets/lib/widgets/advance/avatar/avatar-widget-edit.component.d.ts +18 -0
  104. package/widgets/lib/widgets/advance/avatar/avatar-widget-print.component.d.ts +6 -0
  105. package/widgets/lib/widgets/advance/avatar/avatar-widget-view.component.d.ts +6 -0
  106. package/widgets/lib/widgets/advance/avatar/avatar-widget.config.d.ts +7 -0
  107. package/widgets/lib/widgets/advance/avatar/index.d.ts +6 -0
  108. package/widgets/lib/widgets/advance/map/map-box-widget-edit.component.d.ts +9 -5
  109. package/widgets/lib/widgets/advance/map/map-box-widget-view.component.d.ts +6 -4
  110. package/widgets/lib/widgets/editors/number/number-box-widget-edit.component.d.ts +1 -7
  111. package/widgets/lib/widgets/editors/toggle/toggle-widget-edit.component.d.ts +0 -2
  112. package/widgets/lib/widgets/filters/operations/operations.component.d.ts +9 -0
  113. package/widgets/lib/widgets/filters/string-filter/index.d.ts +2 -0
  114. package/widgets/lib/widgets/filters/string-filter/string-filter-widget-edit.component.d.ts +11 -0
  115. package/widgets/lib/widgets/filters/string-filter/string-filter-widget.config.d.ts +7 -0
  116. package/widgets/lib/widgets/index.d.ts +5 -1
  117. package/widgets/lib/widgets/property-editors/border/border-widget-editor.component.d.ts +29 -7
  118. package/widgets/lib/widgets/property-editors/border/index.d.ts +0 -1
  119. package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget-editor.component.d.ts +31 -0
  120. package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget.config.d.ts +7 -0
  121. package/widgets/lib/widgets/property-editors/flex-options/flex-options-widget.type.d.ts +15 -0
  122. package/widgets/lib/widgets/property-editors/flex-options/index.d.ts +3 -0
  123. package/widgets/lib/widgets/property-editors/property-editor-helper.d.ts +72 -0
  124. package/widgets/lib/widgets/property-editors/property-editor.type.d.ts +35 -0
  125. package/widgets/lib/widgets/property-editors/spacing/index.d.ts +0 -1
  126. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-editor.component.d.ts +11 -9
  127. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CSyR4pYp.mjs +0 -108
  128. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-CSyR4pYp.mjs.map +0 -1
  129. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-xHWp2Lk-.mjs +0 -368
  130. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-xHWp2Lk-.mjs.map +0 -1
  131. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-n7mYNduJ.mjs +0 -87
  132. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-n7mYNduJ.mjs.map +0 -1
  133. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DjyYU0Gy.mjs +0 -130
  134. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DjyYU0Gy.mjs.map +0 -1
  135. package/fesm2022/acorex-platform-themes-default-setting-page.component-6Dd8MGqr.mjs +0 -78
  136. package/fesm2022/acorex-platform-themes-default-setting-page.component-6Dd8MGqr.mjs.map +0 -1
  137. package/fesm2022/acorex-platform-themes-default-setting-view.component-BgiMClew.mjs +0 -58
  138. package/fesm2022/acorex-platform-themes-default-setting-view.component-BgiMClew.mjs.map +0 -1
  139. package/fesm2022/acorex-platform-widgets-checkbox-widget-column.component-05nKV-UV.mjs.map +0 -1
  140. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BkWcZ4K9.mjs +0 -72
  141. package/fesm2022/acorex-platform-widgets-checkbox-widget-view.component-BkWcZ4K9.mjs.map +0 -1
  142. package/fesm2022/acorex-platform-widgets-color-box-widget-designer.component-B2g0ct24.mjs.map +0 -1
  143. package/layout/builder/lib/builder/widget-renderer.component.d.ts +0 -48
  144. package/widgets/lib/widgets/property-editors/border/border-widget-type.d.ts +0 -18
  145. package/widgets/lib/widgets/property-editors/spacing/spacing-widget-type.d.ts +0 -16
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, viewChild, contentChild, computed, inject, NgModule } from '@angular/core';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, viewChild, contentChild, computed, InjectionToken, inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@acorex/components/button';
@@ -8,13 +8,18 @@ import * as i3 from '@acorex/components/decorators';
8
8
  import { AXDecoratorModule } from '@acorex/components/decorators';
9
9
  import * as i4 from '@acorex/components/dropdown';
10
10
  import { AXDropdownModule } from '@acorex/components/dropdown';
11
- import * as i1$1 from '@acorex/platform/common';
12
- import { AXPSettingValueProviderService, AXP_SETTING_DEFINITION_PROVIDER, AXPComponentSlotModule } from '@acorex/platform/common';
11
+ import * as i1$2 from '@acorex/platform/common';
12
+ import { AXPSettingScope, AXPSettingValueProviderService, AXP_SETTING_DEFINITION_PROVIDER, AXPComponentSlotModule } from '@acorex/platform/common';
13
13
  import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
14
- import { timer } from 'rxjs';
14
+ import { timer, filter } from 'rxjs';
15
15
  import * as i5 from '@acorex/core/translation';
16
16
  import { AXTranslationModule } from '@acorex/core/translation';
17
- import { objectKeyValueTransforms } from '@acorex/platform/layout/builder';
17
+ import * as i2$1 from '@acorex/platform/layout/builder';
18
+ import { objectKeyValueTransforms, AXPWidgetsCatalog, AXPWidgetComponent, AXP_WIDGETS_LAYOUT_GROUP, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
19
+ import { FormsModule } from '@angular/forms';
20
+ import * as i1$1 from '@acorex/cdk/selection';
21
+ import { AXSelectionModule } from '@acorex/cdk/selection';
22
+ import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';
18
23
 
19
24
  class AXPThemeLayoutBlockComponent {
20
25
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -304,17 +309,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
304
309
 
305
310
  var AXPThemeLayoutSetting;
306
311
  (function (AXPThemeLayoutSetting) {
307
- AXPThemeLayoutSetting["ThemeVariant"] = "layout:theme:variant";
308
- AXPThemeLayoutSetting["ThemeSideMenu"] = "layout:theme:sidemenu";
312
+ AXPThemeLayoutSetting["Name"] = "layout:theme:name";
313
+ AXPThemeLayoutSetting["Layout"] = "layout:theme:layout";
314
+ AXPThemeLayoutSetting["Font"] = "layout:theme:font:family";
315
+ AXPThemeLayoutSetting["FontSize"] = "layout:theme:font:size";
316
+ AXPThemeLayoutSetting["Palette"] = "layout:theme:palette";
317
+ AXPThemeLayoutSetting["Mode"] = "layout:theme:mode";
318
+ AXPThemeLayoutSetting["SideMenuStatus"] = "layout:theme:sidemenu";
309
319
  })(AXPThemeLayoutSetting || (AXPThemeLayoutSetting = {}));
310
320
 
311
321
  // Theme Enum
312
- var AXPThemeVariant;
313
- (function (AXPThemeVariant) {
314
- AXPThemeVariant["Light"] = "light";
315
- AXPThemeVariant["Dark"] = "dark";
316
- AXPThemeVariant["System"] = "system";
317
- })(AXPThemeVariant || (AXPThemeVariant = {}));
322
+ var AXPThemeMode;
323
+ (function (AXPThemeMode) {
324
+ AXPThemeMode["Light"] = "light";
325
+ AXPThemeMode["Dark"] = "dark";
326
+ AXPThemeMode["System"] = "system";
327
+ })(AXPThemeMode || (AXPThemeMode = {}));
318
328
  // Screen Size Enum
319
329
  var AXPScreenSize;
320
330
  (function (AXPScreenSize) {
@@ -335,12 +345,31 @@ var AXPSideMenuState;
335
345
  AXPSideMenuState["Opened"] = "opened";
336
346
  AXPSideMenuState["Closed"] = "closed";
337
347
  })(AXPSideMenuState || (AXPSideMenuState = {}));
348
+
349
+ const AXP_THEME_PALETTE_PROVIDER = new InjectionToken('AXP_THEME_PALETTE_PROVIDER', {
350
+ providedIn: 'root',
351
+ factory: () => {
352
+ return new AXPThemePaletteProviderDefault();
353
+ }
354
+ });
355
+ class AXPThemePaletteProviderDefault {
356
+ getList() {
357
+ return Promise.resolve([
358
+ {
359
+ name: 'default',
360
+ title: 'Default',
361
+ path: '/assets/themes/palletes/default.css',
362
+ colors: []
363
+ },
364
+ ]);
365
+ }
366
+ }
367
+
338
368
  // ThemeStore - Manages theme settings, system changes, and loading states
339
369
  const AXPLayoutThemeService = signalStore({ providedIn: 'root' },
340
370
  // Initial State
341
371
  withState(() => {
342
- const initialTheme = AXPThemeVariant.System;
343
- const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
372
+ const isSystemDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
344
373
  // Helper function to get the initial screen size
345
374
  const getScreenSize = () => {
346
375
  const width = window.innerWidth;
@@ -366,8 +395,13 @@ withState(() => {
366
395
  return 'ontouchstart' in window || navigator.maxTouchPoints > 0;
367
396
  };
368
397
  const state = {
369
- currentTheme: initialTheme,
370
- systemTheme: (systemPrefersDark ? AXPThemeVariant.Dark : AXPThemeVariant.Light),
398
+ currentMode: AXPThemeMode.System,
399
+ currentPallete: 'default',
400
+ systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light),
401
+ font: {
402
+ family: 'system-ui',
403
+ size: 'medium'
404
+ },
371
405
  screenSize: getScreenSize(),
372
406
  deviceType: getDeviceType(),
373
407
  isTouchDevice: isTouchDevice(),
@@ -382,12 +416,12 @@ withState(() => {
382
416
  return state;
383
417
  }),
384
418
  // Computed Signals
385
- withComputed(({ currentTheme, systemTheme, screenSize, deviceType, isTouchDevice, sideMenuState, overlayLoading, navigationLoading }) => ({
386
- isDarkMode: computed(() => currentTheme() === AXPThemeVariant.Dark ||
387
- (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Dark)),
388
- isLightMode: computed(() => currentTheme() === AXPThemeVariant.Light ||
389
- (currentTheme() === AXPThemeVariant.System && systemTheme() === AXPThemeVariant.Light)),
390
- isSystemMode: computed(() => currentTheme() === AXPThemeVariant.System),
419
+ withComputed(({ currentMode: currentTheme, systemThemeMode: systemTheme, screenSize, deviceType, isTouchDevice, sideMenuState, overlayLoading, navigationLoading }) => ({
420
+ isDarkMode: computed(() => currentTheme() === AXPThemeMode.Dark ||
421
+ (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Dark)),
422
+ isLightMode: computed(() => currentTheme() === AXPThemeMode.Light ||
423
+ (currentTheme() === AXPThemeMode.System && systemTheme() === AXPThemeMode.Light)),
424
+ isSystemMode: computed(() => currentTheme() === AXPThemeMode.System),
391
425
  isSideMenuOpen: computed(() => sideMenuState() === AXPSideMenuState.Opened),
392
426
  isSmall: computed(() => screenSize() === AXPScreenSize.Small),
393
427
  isMedium: computed(() => screenSize() === AXPScreenSize.Medium),
@@ -400,22 +434,37 @@ withComputed(({ currentTheme, systemTheme, screenSize, deviceType, isTouchDevice
400
434
  isNavigationLoading: computed(() => navigationLoading()),
401
435
  })),
402
436
  // Methods for State Management
403
- withMethods((store, settingService = inject(AXPSettingValueProviderService)) => {
404
- const applySettings = async () => {
437
+ withMethods((store, settingService = inject(AXPSettingValueProviderService), pallets = inject(AXP_THEME_PALETTE_PROVIDER)) => {
438
+ const _applySettings = async () => {
405
439
  // Initialize theme and side menu setting from storage
406
- const settingTheme = (await settingService.get(AXPThemeLayoutSetting.ThemeVariant)) ?? AXPThemeVariant.Light;
407
- patchState(store, { currentTheme: settingTheme });
408
- const settingSideMenu = (await settingService.get(AXPThemeLayoutSetting.ThemeSideMenu)) ?? store.sideMenuState();
440
+ const settingThemeMode = (await settingService.get(AXPThemeLayoutSetting.Mode)) ?? AXPThemeMode.Light;
441
+ patchState(store, { currentMode: settingThemeMode });
442
+ //
443
+ const settingThemePallete = (await settingService.get(AXPThemeLayoutSetting.Palette)) ?? 'default';
444
+ patchState(store, { currentPallete: settingThemePallete });
445
+ //
446
+ const settingSideMenu = (await settingService.get(AXPThemeLayoutSetting.SideMenuStatus)) ?? store.sideMenuState();
409
447
  patchState(store, { sideMenuState: settingSideMenu });
410
- updateHtmlClass(store.isDarkMode());
448
+ //
449
+ const fontFamily = await settingService.get(AXPThemeLayoutSetting.Font);
450
+ const fontSize = await settingService.get(AXPThemeLayoutSetting.FontSize);
451
+ patchState(store, { font: { family: fontFamily, size: fontSize } });
452
+ //
453
+ await _updateHtmlClass();
411
454
  };
412
455
  // Update HTML class based on theme
413
- const updateHtmlClass = (dark) => {
456
+ const _updateHtmlClass = async () => {
414
457
  const html = document.getElementsByTagName('html')[0];
415
- dark ? html.classList.add('ax-dark') : html.classList.remove('ax-dark');
458
+ //
459
+ store.isDarkMode() ? html.classList.add('ax-dark') : html.classList.remove('ax-dark');
460
+ //
461
+ html.style.fontFamily = store.font().family;
462
+ html.style.fontSize = store.font().size;
463
+ //
464
+ await _applyThemePalette(store.currentPallete());
416
465
  };
417
466
  // Update screen size based on window width
418
- const updateScreenSize = () => {
467
+ const _updateScreenSize = () => {
419
468
  const width = window.innerWidth;
420
469
  let newScreenSize;
421
470
  if (width <= 600) {
@@ -431,33 +480,53 @@ withMethods((store, settingService = inject(AXPSettingValueProviderService)) =>
431
480
  patchState(store, { screenSize: newScreenSize });
432
481
  if (store.sideMenuState() !== AXPSideMenuState.Closed) {
433
482
  patchState(store, { sideMenuState: newScreenSize === AXPScreenSize.Small ? AXPSideMenuState.Closed : AXPSideMenuState.Opened });
434
- settingService.set(AXPThemeLayoutSetting.ThemeSideMenu, store.sideMenuState());
483
+ settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, store.sideMenuState());
435
484
  }
436
485
  }
437
486
  };
487
+ // Helper method to apply a cached theme palette
488
+ const _applyThemePalette = async (name) => {
489
+ const pallete = (await pallets.getList()).find(c => c.name == name);
490
+ if (!pallete) {
491
+ return;
492
+ }
493
+ // Remove all existing theme-related link elements
494
+ const existingLinks = document.querySelectorAll('link[data-theme]');
495
+ existingLinks.forEach(link => document.head.removeChild(link));
496
+ const link = document.createElement('link');
497
+ link.rel = 'stylesheet';
498
+ link.href = pallete.path;
499
+ link.setAttribute('data-theme', name);
500
+ document.head.appendChild(link);
501
+ // Wait for the CSS file to load
502
+ await new Promise((resolve, reject) => {
503
+ link.onload = () => resolve();
504
+ link.onerror = () => reject(new Error(`Failed to load CSS file: ${pallete.path}`));
505
+ });
506
+ };
438
507
  const minimumDisplayTime = 500; // milliseconds
439
508
  return {
440
509
  // Change theme and update HTML class
441
- changeTheme(theme) {
442
- settingService.set(AXPThemeLayoutSetting.ThemeVariant, theme);
443
- patchState(store, { currentTheme: theme });
444
- updateHtmlClass(store.isDarkMode());
510
+ changeThemeMode(theme) {
511
+ settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.Mode, theme);
512
+ patchState(store, { currentMode: theme });
513
+ _updateHtmlClass();
445
514
  },
446
515
  // Open side menu
447
516
  openSideMenu() {
448
517
  patchState(store, { sideMenuState: AXPSideMenuState.Opened });
449
- settingService.set(AXPThemeLayoutSetting.ThemeSideMenu, AXPSideMenuState.Opened);
518
+ settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);
450
519
  },
451
520
  // Close side menu
452
521
  closeSideMenu() {
453
522
  patchState(store, { sideMenuState: AXPSideMenuState.Closed });
454
- settingService.set(AXPThemeLayoutSetting.ThemeSideMenu, AXPSideMenuState.Closed);
523
+ settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);
455
524
  },
456
525
  // Toggle side menu state
457
526
  toggleSideMenu() {
458
527
  const newSideMenuState = store.sideMenuState() === AXPSideMenuState.Opened ? AXPSideMenuState.Closed : AXPSideMenuState.Opened;
459
528
  patchState(store, { sideMenuState: newSideMenuState });
460
- settingService.set(AXPThemeLayoutSetting.ThemeSideMenu, newSideMenuState);
529
+ settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);
461
530
  },
462
531
  // Set navigation loading state with a task counter
463
532
  setNavigationLoading(value) {
@@ -497,16 +566,15 @@ withMethods((store, settingService = inject(AXPSettingValueProviderService)) =>
497
566
  }
498
567
  }
499
568
  },
500
- // Apply the current theme to the HTML class
501
- _applyCurrentTheme() {
502
- updateHtmlClass(store.isDarkMode());
569
+ async loadSettings() {
570
+ await _applySettings();
503
571
  },
504
572
  // Set up event listener for system theme changes
505
573
  _setupSystemColorListener() {
506
574
  const mediaQueryList = window.matchMedia('(prefers-color-scheme: dark)');
507
575
  const listener = (e) => {
508
- patchState(store, { systemTheme: e.matches ? AXPThemeVariant.Dark : AXPThemeVariant.Light });
509
- updateHtmlClass(store.isDarkMode());
576
+ patchState(store, { systemThemeMode: e.matches ? AXPThemeMode.Dark : AXPThemeMode.Light });
577
+ _updateHtmlClass();
510
578
  };
511
579
  mediaQueryList.addEventListener('change', listener);
512
580
  return listener;
@@ -519,7 +587,7 @@ withMethods((store, settingService = inject(AXPSettingValueProviderService)) =>
519
587
  // Set up event listener for window resize
520
588
  _setupResizeListener() {
521
589
  const listener = () => {
522
- updateScreenSize();
590
+ _updateScreenSize();
523
591
  };
524
592
  window.addEventListener('resize', listener);
525
593
  return listener;
@@ -528,17 +596,15 @@ withMethods((store, settingService = inject(AXPSettingValueProviderService)) =>
528
596
  _removeResizeListener(listener) {
529
597
  window.removeEventListener('resize', listener);
530
598
  },
531
- async loadSettings() {
532
- applySettings();
533
- }
534
599
  };
535
600
  }),
536
601
  // Lifecycle Hooks
537
602
  withHooks((store, settingService = inject(AXPSettingValueProviderService)) => ({
538
603
  onInit() {
539
604
  //
540
- settingService.onChanged.subscribe(async (setting) => {
541
- if (setting.keys.includes(AXPThemeLayoutSetting.ThemeVariant)) {
605
+ settingService.onChanged.pipe(filter(c => c.scope == AXPSettingScope.User)).subscribe(async (changes) => {
606
+ const keys = Object.values(AXPThemeLayoutSetting);
607
+ if (changes.keys.some((key) => keys.includes(key))) {
542
608
  await store.loadSettings();
543
609
  }
544
610
  });
@@ -564,7 +630,7 @@ withHooks((store, settingService = inject(AXPSettingValueProviderService)) => ({
564
630
  class AXPThemeSlotComponent {
565
631
  constructor() {
566
632
  this.store = inject(AXPLayoutThemeService);
567
- this.variants = AXPThemeVariant;
633
+ this.variants = AXPThemeMode;
568
634
  }
569
635
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
570
636
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
@@ -581,7 +647,7 @@ class AXPThemeSlotComponent {
581
647
  <ax-dropdown-panel *translate="let t">
582
648
  <ax-button-item-list>
583
649
  <ax-button-item
584
- (onClick)="store.changeTheme(variants.Light)"
650
+ (onClick)="store.changeThemeMode(variants.Light)"
585
651
  [text]="(t('theme.light') | async)!"
586
652
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
587
653
  >
@@ -590,7 +656,7 @@ class AXPThemeSlotComponent {
590
656
  </ax-prefix>
591
657
  </ax-button-item>
592
658
  <ax-button-item
593
- (onClick)="store.changeTheme(variants.Dark)"
659
+ (onClick)="store.changeThemeMode(variants.Dark)"
594
660
  [text]="(t('theme.dark') | async)!"
595
661
  [selected]="!store.isSystemMode() && store.isDarkMode()"
596
662
  >
@@ -599,7 +665,7 @@ class AXPThemeSlotComponent {
599
665
  </ax-prefix>
600
666
  </ax-button-item>
601
667
  <ax-button-item
602
- (onClick)="store.changeTheme(variants.System)"
668
+ (onClick)="store.changeThemeMode(variants.System)"
603
669
  [text]="(t('theme.system') | async)!"
604
670
  [selected]="store.isSystemMode()"
605
671
  >
@@ -629,7 +695,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
629
695
  <ax-dropdown-panel *translate="let t">
630
696
  <ax-button-item-list>
631
697
  <ax-button-item
632
- (onClick)="store.changeTheme(variants.Light)"
698
+ (onClick)="store.changeThemeMode(variants.Light)"
633
699
  [text]="(t('theme.light') | async)!"
634
700
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
635
701
  >
@@ -638,7 +704,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
638
704
  </ax-prefix>
639
705
  </ax-button-item>
640
706
  <ax-button-item
641
- (onClick)="store.changeTheme(variants.Dark)"
707
+ (onClick)="store.changeThemeMode(variants.Dark)"
642
708
  [text]="(t('theme.dark') | async)!"
643
709
  [selected]="!store.isSystemMode() && store.isDarkMode()"
644
710
  >
@@ -647,7 +713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
647
713
  </ax-prefix>
648
714
  </ax-button-item>
649
715
  <ax-button-item
650
- (onClick)="store.changeTheme(variants.System)"
716
+ (onClick)="store.changeThemeMode(variants.System)"
651
717
  [text]="(t('theme.system') | async)!"
652
718
  [selected]="store.isSystemMode()"
653
719
  >
@@ -664,50 +730,181 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
664
730
  }] });
665
731
 
666
732
  class AXPThemeSettingProvider {
733
+ constructor() {
734
+ this.pallets = inject(AXP_THEME_PALETTE_PROVIDER);
735
+ }
667
736
  async provide(context) {
668
- context.addGroup('common-settings', 'General Settings', 'General application settings.', 'fa-solid fa-gear-complex')
669
- // General Settings Section
670
- .addSection('general', 'General', 'General configurations for the application.')
671
- .endSection()
672
- .endGroup();
673
- //
674
- context
675
- .group('common-settings')
676
- ?.section('general')
677
- ?.addSetting({
678
- key: AXPThemeLayoutSetting.ThemeVariant,
679
- title: 'Default Theme',
737
+ // Define the 'Appearance Settings' group
738
+ context.addGroup('appearance', 'Appearance Settings', 'Customize the overall look and feel of the application.', 'fa-solid fa-palette')
739
+ // Add the 'Brightness & Color' section
740
+ .addSection('color', 'Brightness & Color', 'Adjust the theme settings, including brightness, colors, and modes.')
741
+ // Add the 'Theme Mode' setting
742
+ .addSetting({
743
+ key: AXPThemeLayoutSetting.Mode,
744
+ title: 'Theme Mode',
680
745
  scope: 'U',
681
746
  isInherited: true,
682
- defaultValue: AXPThemeVariant.Light,
747
+ defaultValue: AXPThemeMode.Light,
683
748
  valueTransforms: objectKeyValueTransforms('id'),
684
749
  widget: {
685
- type: 'select-editor',
750
+ type: AXPWidgetsCatalog.select,
686
751
  options: {
687
- dataSource: Object.entries(AXPThemeVariant).map(([key, value]) => ({
752
+ dataSource: Object.entries(AXPThemeMode).map(([key, value]) => ({
688
753
  id: value,
689
754
  title: key.charAt(0).toUpperCase() + key.slice(1).toLowerCase(),
690
755
  })),
691
756
  },
692
757
  },
693
- description: 'Select the default theme for the application.',
694
- });
758
+ description: 'Switch between Light and Dark themes for the application.',
759
+ })
760
+ // Add the 'Palette' setting
761
+ .addSetting({
762
+ key: AXPThemeLayoutSetting.Palette,
763
+ title: 'Palette',
764
+ scope: 'U',
765
+ isInherited: true,
766
+ defaultValue: 'default',
767
+ valueTransforms: objectKeyValueTransforms('name'),
768
+ widget: {
769
+ type: AXPWidgetsCatalog.select,
770
+ options: {
771
+ valueField: 'name',
772
+ dataSource: await this.pallets.getList(),
773
+ },
774
+ },
775
+ description: 'Choose a color palette for the application interface.',
776
+ })
777
+ // End the 'Brightness & Color' section
778
+ .endSection()
779
+ // Add the 'Scale & Layout' section
780
+ .addSection('layout', 'Scale & Layout', 'Customize the application’s layout and scaling options.')
781
+ // Add the 'Font Style' setting
782
+ .addSetting({
783
+ key: AXPThemeLayoutSetting.Font,
784
+ title: 'Font Style',
785
+ scope: 'U',
786
+ isInherited: true,
787
+ defaultValue: 'system-ui',
788
+ valueTransforms: objectKeyValueTransforms('id'),
789
+ widget: {
790
+ type: 'select-editor',
791
+ options: {
792
+ dataSource: [
793
+ { id: 'system-ui', title: 'Default' },
794
+ { id: 'serif', title: 'Serif' },
795
+ { id: 'sans-serif', title: 'Sans-serif' },
796
+ { id: 'monospace', title: 'Monospace' },
797
+ { id: 'arial', title: 'Arial' },
798
+ { id: 'verdana', title: 'Verdana' },
799
+ { id: 'tahoma', title: 'Tahoma' },
800
+ { id: 'times-new-roman', title: 'Times New Roman' },
801
+ { id: 'georgia', title: 'Georgia' },
802
+ { id: 'helvetica', title: 'Helvetica' },
803
+ { id: 'calibri', title: 'Calibri' },
804
+ { id: 'cursive', title: 'Cursive' },
805
+ ],
806
+ },
807
+ },
808
+ description: 'Set the font style for application text.',
809
+ })
810
+ // Add the 'Font Size' setting
811
+ .addSetting({
812
+ key: AXPThemeLayoutSetting.FontSize,
813
+ title: 'Font Size',
814
+ scope: 'U',
815
+ isInherited: true,
816
+ defaultValue: 'medium',
817
+ valueTransforms: objectKeyValueTransforms('id'),
818
+ widget: {
819
+ type: 'select-editor',
820
+ options: {
821
+ dataSource: [
822
+ { id: 'small', title: 'Small' },
823
+ { id: 'medium', title: 'Medium' },
824
+ { id: 'large', title: 'Large' },
825
+ { id: 'x-large', title: 'Extra Large' },
826
+ ],
827
+ },
828
+ },
829
+ description: 'Adjust the font size for application text.',
830
+ })
831
+ // End the 'Scale & Layout' section
832
+ .endSection()
833
+ // End the 'Appearance Settings' group
834
+ .endGroup();
695
835
  }
696
836
  }
697
837
 
838
+ class AXPThemeColorSelectionWidgetEditComponent extends AXPWidgetComponent {
839
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeColorSelectionWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
840
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeColorSelectionWidgetEditComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
841
+ <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
842
+ <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
843
+ item 1
844
+ </div>
845
+ <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
846
+ item 1
847
+ </div>
848
+ </div>
849
+
850
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }, { kind: "directive", type: i1$1.AXSelectionGroupDirective, selector: "[axSelectionGroup]", inputs: ["multiple", "selectedKeys"], outputs: ["onSelectionChanged"], exportAs: ["axSelectionGroup"] }, { kind: "directive", type: i1$1.AXSelectionItemDirective, selector: "[axSelectionItem]", inputs: ["key"], outputs: ["onClick"], exportAs: ["axSelectionItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
851
+ }
852
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeColorSelectionWidgetEditComponent, decorators: [{
853
+ type: Component,
854
+ args: [{
855
+ template: `
856
+ <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
857
+ <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
858
+ item 1
859
+ </div>
860
+ <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
861
+ item 1
862
+ </div>
863
+ </div>
864
+
865
+ `,
866
+ standalone: true,
867
+ changeDetection: ChangeDetectionStrategy.OnPush,
868
+ imports: [CommonModule, FormsModule, AXSelectionModule],
869
+ }]
870
+ }] });
871
+
872
+ var themeColorSelectionWidgetEdit_component = /*#__PURE__*/Object.freeze({
873
+ __proto__: null,
874
+ AXPThemeColorSelectionWidgetEditComponent: AXPThemeColorSelectionWidgetEditComponent
875
+ });
876
+
877
+ const AXPThemeColorSelectionWidget = {
878
+ name: "theme-color-selection",
879
+ title: "Theme Color Selection",
880
+ icon: "fa-solid fa-square",
881
+ type: 'editor',
882
+ group: AXP_WIDGETS_LAYOUT_GROUP,
883
+ properties: [
884
+ AXP_NAME_PROPERTY,
885
+ AXP_DATA_PATH_PROPERTY,
886
+ AXP_DISABLED_PROPERTY,
887
+ ],
888
+ components: {
889
+ edit: {
890
+ component: () => Promise.resolve().then(function () { return themeColorSelectionWidgetEdit_component; }).then((c) => c.AXPThemeColorSelectionWidgetEditComponent),
891
+ },
892
+ }
893
+ };
894
+
698
895
  class AXPThemesSharedModule {
699
896
  constructor(appInitService, injector) {
700
897
  const service = injector.get(AXPLayoutThemeService);
701
898
  appInitService.registerTask({
702
- name: 'Settings',
703
- statusText: 'Loading Settings ...',
899
+ name: 'layout-theme',
900
+ statusText: 'Applying layout theme settings ...',
704
901
  run: async () => {
705
902
  await service.loadSettings();
706
903
  }
707
904
  });
708
905
  }
709
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, deps: [{ token: i1$1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
710
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, imports: [i1$1.AXPComponentSlotModule] }); }
906
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, deps: [{ token: i1$2.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
907
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, imports: [i1$2.AXPComponentSlotModule, i2$1.AXPLayoutBuilderModule] }); }
711
908
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, providers: [
712
909
  {
713
910
  provide: AXP_SETTING_DEFINITION_PROVIDER,
@@ -722,6 +919,11 @@ class AXPThemesSharedModule {
722
919
  component: AXPThemeSlotComponent,
723
920
  },
724
921
  ],
922
+ }),
923
+ AXPLayoutBuilderModule.forChild({
924
+ widgets: [
925
+ AXPThemeColorSelectionWidget
926
+ ]
725
927
  })] }); }
726
928
  }
727
929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, decorators: [{
@@ -737,6 +939,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
737
939
  },
738
940
  ],
739
941
  }),
942
+ AXPLayoutBuilderModule.forChild({
943
+ widgets: [
944
+ AXPThemeColorSelectionWidget
945
+ ]
946
+ })
740
947
  ],
741
948
  exports: [],
742
949
  declarations: [],
@@ -748,11 +955,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
748
955
  }
749
956
  ],
750
957
  }]
751
- }], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
958
+ }], ctorParameters: () => [{ type: i1$2.AXPAppStartUpService }, { type: i0.Injector }] });
752
959
 
753
960
  /**
754
961
  * Generated bundle index. Do not edit.
755
962
  */
756
963
 
757
- export { AXPDeviceType, AXPLayoutThemeService, AXPScreenSize, AXPSideMenuState, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionTemplateComponent, AXPThemeLayoutSideTemplateComponent, AXPThemeSlotComponent, AXPThemeVariant, AXPThemesSharedModule };
964
+ export { AXPDeviceType, AXPLayoutThemeService, AXPScreenSize, AXPSideMenuState, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutHeaderTemplateComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionTemplateComponent, AXPThemeLayoutSideTemplateComponent, AXPThemeMode, AXPThemePaletteProviderDefault, AXPThemeSlotComponent, AXPThemesSharedModule, AXP_THEME_PALETTE_PROVIDER };
758
965
  //# sourceMappingURL=acorex-platform-themes-shared.mjs.map