@acorex/platform 19.2.20 → 19.3.0-next.0

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 (193) hide show
  1. package/common/index.d.ts +1 -0
  2. package/common/lib/app/application.types.d.ts +13 -3
  3. package/common/lib/file-storage/file-storage.types.d.ts +20 -12
  4. package/common/lib/filters/filters.types.d.ts +5 -0
  5. package/common/lib/layout/menu/badge-helper.d.ts +7 -0
  6. package/common/lib/layout/menu/index.d.ts +1 -0
  7. package/common/lib/layout/menu/menu.types.d.ts +1 -0
  8. package/common/lib/layout/task-badge/index.d.ts +2 -0
  9. package/common/lib/layout/task-badge/task-badge.service.d.ts +11 -0
  10. package/common/lib/layout/task-badge/task-badge.type.d.ts +6 -0
  11. package/common/lib/settings/setting-definition.provider.d.ts +7 -5
  12. package/common/lib/settings/setting.builder.d.ts +8 -5
  13. package/common/lib/settings/settings.service.d.ts +6 -5
  14. package/common/lib/settings/settings.types.d.ts +6 -10
  15. package/core/lib/data/index.d.ts +1 -0
  16. package/core/lib/data/value-transformer.d.ts +6 -0
  17. package/core/lib/types/core.types.d.ts +18 -0
  18. package/{layout/entity/lib → core/lib/types}/data.types.d.ts +3 -1
  19. package/core/lib/types/element.types.d.ts +6 -0
  20. package/core/lib/types/index.d.ts +6 -0
  21. package/core/lib/{types.d.ts → types/interactive.types.d.ts} +5 -25
  22. package/core/lib/types/scope.types.d.ts +10 -0
  23. package/core/lib/types/validation.types.d.ts +7 -0
  24. package/core/lib/utils/index.d.ts +1 -0
  25. package/core/lib/utils/object-util.d.ts +3 -0
  26. package/fesm2022/acorex-platform-common.mjs +79 -35
  27. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  28. package/fesm2022/acorex-platform-core.mjs +151 -6
  29. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  30. package/fesm2022/acorex-platform-layout-builder.mjs +44 -55
  31. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-layout-designer.mjs +77 -35
  33. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-layout-entity.mjs +240 -414
  35. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  36. package/fesm2022/acorex-platform-layout-search.mjs +7 -26
  37. package/fesm2022/acorex-platform-layout-search.mjs.map +1 -1
  38. package/fesm2022/acorex-platform-layout-setting.mjs +211 -278
  39. package/fesm2022/acorex-platform-layout-setting.mjs.map +1 -1
  40. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-LKhN00ob.mjs → acorex-platform-themes-default-entity-master-create-view.component-3gmbdeJ_.mjs} +4 -3
  41. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-3gmbdeJ_.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DnEL7Ej-.mjs +741 -0
  43. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DnEL7Ej-.mjs.map +1 -0
  44. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-8DdICjNs.mjs +91 -0
  45. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-8DdICjNs.mjs.map +1 -0
  46. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DadBeY1I.mjs +164 -0
  47. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-DadBeY1I.mjs.map +1 -0
  48. package/fesm2022/{acorex-platform-themes-default-search-popup.component-BY3oQqbr.mjs → acorex-platform-themes-default-search-popup.component-BADEuoeJ.mjs} +9 -9
  49. package/fesm2022/{acorex-platform-themes-default-search-popup.component-BY3oQqbr.mjs.map → acorex-platform-themes-default-search-popup.component-BADEuoeJ.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cj73brIK.mjs +219 -0
  51. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cj73brIK.mjs.map +1 -0
  52. package/fesm2022/acorex-platform-themes-default-setting-view.component-rrAq6hg2.mjs +103 -0
  53. package/fesm2022/acorex-platform-themes-default-setting-view.component-rrAq6hg2.mjs.map +1 -0
  54. package/fesm2022/acorex-platform-themes-default.mjs +108 -64
  55. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  56. package/fesm2022/acorex-platform-themes-shared-setting.provider-CXiRmniv.mjs +168 -0
  57. package/fesm2022/acorex-platform-themes-shared-setting.provider-CXiRmniv.mjs.map +1 -0
  58. package/fesm2022/acorex-platform-themes-shared.mjs +495 -240
  59. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  60. package/fesm2022/acorex-platform-widgets.mjs +4100 -1480
  61. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  62. package/layout/builder/lib/builder/builder.service.d.ts +1 -1
  63. package/layout/builder/lib/builder/index.d.ts +2 -1
  64. package/layout/builder/lib/builder/widget-categories.d.ts +10 -0
  65. package/layout/builder/lib/builder/widget-group.types.d.ts +10 -0
  66. package/layout/builder/lib/builder/widget-map.d.ts +8 -1
  67. package/layout/builder/lib/builder/widget-status.types.d.ts +2 -0
  68. package/layout/builder/lib/builder/widget.types.d.ts +11 -27
  69. package/layout/designer/lib/designer/components/widget-picker/widget-picker.component.d.ts +7 -3
  70. package/layout/designer/lib/designer/components/widget-picker/widget-picker.service.d.ts +12 -0
  71. package/layout/designer/lib/designer/index.d.ts +1 -0
  72. package/layout/designer/lib/designer/shared/designer.service.d.ts +1 -0
  73. package/layout/designer/lib/property-viewer/widget-property-viewer.component.d.ts +2 -1
  74. package/layout/entity/lib/entity-data-seeder.d.ts +2 -2
  75. package/layout/entity/lib/entity-master-list.viewmodel.d.ts +4 -7
  76. package/layout/entity/lib/entity-storage-service.d.ts +39 -55
  77. package/layout/entity/lib/entity.types.d.ts +21 -0
  78. package/layout/entity/lib/index.d.ts +1 -2
  79. package/layout/entity/lib/widgets/lookup-widget/index.d.ts +0 -2
  80. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-column.component.d.ts +4 -0
  81. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-edit.component.d.ts +7 -9
  82. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.component.d.ts +5 -2
  83. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-selector.viewmodel.d.ts +11 -3
  84. package/layout/search/lib/search.viewmodel.d.ts +0 -2
  85. package/layout/setting/lib/setting.viewmodel.d.ts +45 -111
  86. package/package.json +5 -5
  87. package/themes/default/lib/layouts/base/base-page.component.d.ts +14 -5
  88. package/themes/default/lib/layouts/base/base-page.types.d.ts +6 -1
  89. package/themes/default/lib/layouts/base/page-layout/page-layout.component.d.ts +5 -4
  90. package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +2 -2
  91. package/themes/default/lib/layouts/entity-layouts/entity-category/entity-category.component.d.ts +16 -0
  92. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +2 -2
  93. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +10 -8
  94. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +12 -4
  95. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.d.ts +7 -0
  96. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/filters/entity-filter-toolbar.component.d.ts +48 -0
  97. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/views/entity-view-toolbar.component.d.ts +12 -0
  98. package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +2 -2
  99. package/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.d.ts +9 -3
  100. package/themes/default/lib/layouts/root-layout/components/side-menu/side-menu.component.d.ts +7 -1
  101. package/themes/default/lib/layouts/root-layout/horizontal/horizontal-layout.component.d.ts +2 -2
  102. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +2 -2
  103. package/themes/default/lib/layouts/root-layout/vertical/vertical-layout.component.d.ts +2 -2
  104. package/themes/default/lib/layouts/setting-layout/setting-page/setting-page.component.d.ts +61 -5
  105. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +68 -6
  106. package/themes/shared/index.d.ts +1 -0
  107. package/themes/shared/lib/components/badge/badge.directive.d.ts +14 -0
  108. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +4 -1
  109. package/themes/shared/lib/components/layout-elements/layout-side.component.d.ts +2 -2
  110. package/themes/shared/lib/components/slots/theme-slot.component.d.ts +2 -2
  111. package/themes/shared/lib/palette.provider.d.ts +1 -1
  112. package/themes/shared/lib/setting.keys.d.ts +2 -1
  113. package/themes/shared/lib/setting.provider.d.ts +4 -1
  114. package/themes/shared/lib/theme.service.d.ts +2 -2
  115. package/themes/shared/lib/theme.types.d.ts +11 -2
  116. package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.component.d.ts +10 -0
  117. package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.config.d.ts +7 -0
  118. package/themes/shared/lib/widgets/font-size-chooser/index.d.ts +2 -0
  119. package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.component.d.ts +15 -0
  120. package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.config.d.ts +7 -0
  121. package/themes/shared/lib/widgets/font-style-chooser/index.d.ts +2 -0
  122. package/themes/shared/lib/widgets/menu-orientation-chooser/index.d.ts +2 -0
  123. package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.d.ts +15 -0
  124. package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.d.ts +7 -0
  125. package/themes/shared/lib/widgets/theme-mode-chooser/index.d.ts +2 -0
  126. package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.d.ts +16 -0
  127. package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.d.ts +7 -0
  128. package/themes/shared/lib/widgets/theme-palette-chooser/index.d.ts +2 -0
  129. package/themes/shared/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.d.ts +13 -0
  130. package/themes/shared/lib/widgets/{theme-color-selection/theme-color-selection-widget.config.d.ts → theme-palette-chooser/theme-palette-chooser-widget.config.d.ts} +2 -2
  131. package/widgets/lib/properties/groups.d.ts +2 -0
  132. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +5 -5
  133. package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget.component.d.ts +52 -0
  134. package/widgets/lib/widgets/charts/bar-chart/bar-chart.type.d.ts +29 -11
  135. package/widgets/lib/widgets/charts/bar-chart/index.d.ts +1 -1
  136. package/widgets/lib/widgets/charts/chart.type.d.ts +3 -0
  137. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar-widget.component.d.ts +40 -0
  138. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar-widget.config.d.ts +7 -0
  139. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar.types.d.ts +50 -0
  140. package/widgets/lib/widgets/charts/clock-calendar/index.d.ts +3 -0
  141. package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget.component.d.ts +54 -0
  142. package/widgets/lib/widgets/charts/donut-chart/donut-chart.type.d.ts +31 -21
  143. package/widgets/lib/widgets/charts/donut-chart/index.d.ts +1 -1
  144. package/widgets/lib/widgets/charts/gauge-chart/{gauge-chart-widget-edit.component.d.ts → gauge-chart-widget.component.d.ts} +3 -3
  145. package/widgets/lib/widgets/charts/gauge-chart/gauge-chart.type.d.ts +26 -11
  146. package/widgets/lib/widgets/charts/gauge-chart/index.d.ts +2 -1
  147. package/widgets/lib/widgets/charts/shared/chart-base.component.d.ts +44 -0
  148. package/widgets/lib/widgets/charts/shared/chart-base.type.d.ts +37 -0
  149. package/widgets/lib/widgets/charts/sticky-note/index.d.ts +1 -1
  150. package/widgets/lib/widgets/charts/sticky-note/{sticky-note-widget-edit.component.d.ts → sticky-note-widget.component.d.ts} +3 -3
  151. package/widgets/lib/widgets/charts/weather/index.d.ts +4 -0
  152. package/widgets/lib/widgets/charts/weather/weather-services/index.d.ts +3 -0
  153. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.abstract.d.ts +174 -0
  154. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.key.d.ts +2 -0
  155. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.mock.service.d.ts +47 -0
  156. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.service.d.ts +48 -0
  157. package/widgets/lib/widgets/charts/weather/weather-widget.component.d.ts +109 -0
  158. package/widgets/lib/widgets/charts/weather/weather-widget.config.d.ts +14 -0
  159. package/widgets/lib/widgets/charts/weather/weather.module.d.ts +11 -0
  160. package/widgets/lib/widgets/editors/select/select-box-widget-column.component.d.ts +0 -1
  161. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +4 -1
  162. package/widgets/lib/widgets/editors/template-box/index.d.ts +6 -0
  163. package/widgets/lib/widgets/editors/template-box/template-box-widget-column.component.d.ts +10 -0
  164. package/widgets/lib/widgets/editors/template-box/template-box-widget-edit.component.d.ts +29 -0
  165. package/widgets/lib/widgets/editors/template-box/template-box-widget-filter.component.d.ts +6 -0
  166. package/widgets/lib/widgets/editors/template-box/template-box-widget-print.component.d.ts +10 -0
  167. package/widgets/lib/widgets/editors/template-box/template-box-widget-view.component.d.ts +11 -0
  168. package/widgets/lib/widgets/editors/template-box/template-box-widget.config.d.ts +7 -0
  169. package/widgets/lib/widgets/filters/select-filter/select-filter-widget-edit.component.d.ts +2 -5
  170. package/widgets/lib/widgets/index.d.ts +3 -0
  171. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-LKhN00ob.mjs.map +0 -1
  172. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BYUOmONk.mjs +0 -400
  173. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-BYUOmONk.mjs.map +0 -1
  174. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs +0 -91
  175. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs.map +0 -1
  176. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-9U774Tr7.mjs +0 -135
  177. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-9U774Tr7.mjs.map +0 -1
  178. package/fesm2022/acorex-platform-themes-default-setting-page.component-_IStMWcu.mjs +0 -74
  179. package/fesm2022/acorex-platform-themes-default-setting-page.component-_IStMWcu.mjs.map +0 -1
  180. package/fesm2022/acorex-platform-themes-default-setting-view.component-CeHpcfsc.mjs +0 -73
  181. package/fesm2022/acorex-platform-themes-default-setting-view.component-CeHpcfsc.mjs.map +0 -1
  182. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D_EkB2k8.mjs +0 -146
  183. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-D_EkB2k8.mjs.map +0 -1
  184. package/layout/builder/lib/builder/widget-groups.d.ts +0 -9
  185. package/layout/entity/lib/dexie-storage.service.d.ts +0 -16
  186. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.d.ts +0 -6
  187. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.d.ts +0 -6
  188. package/themes/default/lib/layouts/filters-layout/simple-filter-builder/filters-view.component.d.ts +0 -13
  189. package/themes/default/lib/pages/theme-palette-preview/theme-palette-preview.page.d.ts +0 -85
  190. package/themes/shared/lib/widgets/theme-color-selection/index.d.ts +0 -2
  191. package/themes/shared/lib/widgets/theme-color-selection/theme-color-selection-widget-edit.component.d.ts +0 -6
  192. package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget-edit.component.d.ts +0 -40
  193. package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget-edit.component.d.ts +0 -44
@@ -1,27 +1,67 @@
1
+ import { AXBadgeComponent } from '@acorex/components/badge';
2
+ import * as i1$1 from '@acorex/platform/common';
3
+ import { AXPTaskBadgeService, AXPSettingService, AXPComponentSlotModule, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';
4
+ import * as i0 from '@angular/core';
5
+ import { inject, input, computed, effect, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component, viewChild, contentChild, ElementRef, InjectionToken, signal, Injector, NgModule } from '@angular/core';
6
+ import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
1
7
  import * as i1 from '@angular/common';
2
8
  import { CommonModule } from '@angular/common';
3
- import * as i0 from '@angular/core';
4
- import { ChangeDetectionStrategy, ViewEncapsulation, Component, viewChild, contentChild, computed, InjectionToken, inject, NgModule } from '@angular/core';
5
9
  import * as i2 from '@acorex/components/button';
6
10
  import { AXButtonModule } from '@acorex/components/button';
7
11
  import * as i3 from '@acorex/components/decorators';
8
12
  import { AXDecoratorModule } from '@acorex/components/decorators';
9
13
  import * as i4 from '@acorex/components/dropdown';
10
14
  import { AXDropdownModule } from '@acorex/components/dropdown';
11
- import * as i1$2 from '@acorex/platform/common';
12
- import { AXPSettingScope, AXPSettingService, AXPComponentSlotModule, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';
13
15
  import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
14
- import { timer, firstValueFrom, filter } from 'rxjs';
16
+ import { timer, firstValueFrom, fromEvent, Subscription, filter } from 'rxjs';
17
+ import { debounceTime } from 'rxjs/operators';
15
18
  import { HttpClient } from '@angular/common/http';
16
- import * as i5 from '@acorex/core/translation';
19
+ import { AXPPlatformScope } from '@acorex/platform/core';
20
+ import * as i2$1 from '@acorex/core/translation';
17
21
  import { AXTranslationModule } from '@acorex/core/translation';
18
- import * as i2$1 from '@acorex/platform/layout/builder';
19
- import { AXPWidgetsCatalog, objectKeyValueTransforms, AXPWidgetComponent, AXP_WIDGETS_LAYOUT_GROUP, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
22
+ import * as i2$2 from '@acorex/platform/layout/builder';
23
+ import { AXPWidgetComponent, AXP_WIDGETS_LAYOUT_CATEGORY, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
20
24
  import { FormsModule } from '@angular/forms';
21
- import * as i1$1 from '@acorex/cdk/selection';
22
25
  import { AXSelectionModule } from '@acorex/cdk/selection';
23
26
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';
24
27
 
28
+ class AXPTaskBadgeDirective {
29
+ constructor() {
30
+ this.badgeService = inject(AXPTaskBadgeService);
31
+ this.host = inject(AXBadgeComponent); // assumes it's applied on <ax-badge>
32
+ this.hostElement = this.host.getHostElement();
33
+ this.badgeKey = input(undefined);
34
+ this.count = input(0, { alias: 'axp-task-badge' });
35
+ this.displayCount = computed(() => {
36
+ const value = this.count() || (this.badgeKey() && this.badgeService.getCount(this.badgeKey())());
37
+ return value ? value.toString() : '';
38
+ });
39
+ this.#eff = effect(() => {
40
+ this.setValueOfInputSignal(this.host.text, this.displayCount());
41
+ if (!this.displayCount()) {
42
+ this.hostElement.style.display = 'none';
43
+ }
44
+ else {
45
+ this.hostElement.style.removeProperty('display');
46
+ }
47
+ });
48
+ }
49
+ #eff;
50
+ setValueOfInputSignal(signal, value) {
51
+ const node = signal[SIGNAL];
52
+ signalSetFn(node, value);
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTaskBadgeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.3", type: AXPTaskBadgeDirective, isStandalone: true, selector: "[axp-task-badge]", inputs: { badgeKey: { classPropertyName: "badgeKey", publicName: "badgeKey", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "axp-task-badge", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPTaskBadgeDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[axp-task-badge]',
61
+ standalone: true,
62
+ }]
63
+ }] });
64
+
25
65
  class AXPThemeLayoutPagePrimaryActionsComponent {
26
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutPagePrimaryActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
27
67
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutPagePrimaryActionsComponent, isStandalone: true, selector: "axp-layout-actions-primary", ngImport: i0, template: `<ng-content select="ax-button,ax-dropdown-button"></ng-content>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
@@ -97,8 +137,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
97
137
  }] });
98
138
 
99
139
  class AXPThemeLayoutBlockComponent {
140
+ constructor() {
141
+ this.elementRef = inject(ElementRef);
142
+ this.hostElement = this.elementRef.nativeElement;
143
+ }
100
144
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutBlockComponent, isStandalone: true, selector: "\n\n axp-page-content, \n axp-page-footer,\n axp-page-header,\n axp-page-toolbar,\n\n axp-layout-content, \n axp-layout-page-content, \n\n axp-layout-sections,\n axp-layout-body,\n axp-layout-page-body,\n axp-layout-prefix,\n axp-layout-suffix,\n axp-layout-title, \n axp-layout-nav-button, \n axp-layout-description, \n axp-layout-title-bar,\n axp-layout-breadcrumbs,\n axp-layout-list-action,\n ", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
145
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutBlockComponent, isStandalone: true, selector: "\n\n axp-page-content, \n axp-page-footer,\n axp-page-header,\n axp-page-toolbar,\n\n axp-layout-content, \n axp-layout-page-content, \n\n axp-layout-sections,\n axp-layout-body,\n axp-layout-container,\n axp-layout-page-body,\n axp-layout-prefix,\n axp-layout-suffix,\n axp-layout-title-bar,\n axp-layout-title, \n axp-layout-title-actions, \n axp-layout-nav-button, \n axp-layout-description, \n axp-layout-breadcrumbs,\n axp-layout-list-action,\n ", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
102
146
  }
103
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutBlockComponent, decorators: [{
104
148
  type: Component,
@@ -116,13 +160,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
116
160
 
117
161
  axp-layout-sections,
118
162
  axp-layout-body,
163
+ axp-layout-container,
119
164
  axp-layout-page-body,
120
165
  axp-layout-prefix,
121
166
  axp-layout-suffix,
167
+ axp-layout-title-bar,
122
168
  axp-layout-title,
169
+ axp-layout-title-actions,
123
170
  axp-layout-nav-button,
124
171
  axp-layout-description,
125
- axp-layout-title-bar,
126
172
  axp-layout-breadcrumbs,
127
173
  axp-layout-list-action,
128
174
  `,
@@ -314,7 +360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
314
360
 
315
361
  class AXPThemeLayoutStartSideComponent {
316
362
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutStartSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
317
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutStartSideComponent, isStandalone: true, selector: "axp-layout-page-start-side", ngImport: i0, template: `
363
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutStartSideComponent, isStandalone: true, selector: "axp-layout-page-start-side, axp-layout-start-side", ngImport: i0, template: `
318
364
  <ng-content select="axp-layout-header"></ng-content>
319
365
  <ng-content select="axp-layout-content"></ng-content>
320
366
  <ng-content select="axp-layout-footer"></ng-content>
@@ -325,7 +371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
325
371
  args: [{
326
372
  imports: [CommonModule],
327
373
  standalone: true,
328
- selector: 'axp-layout-page-start-side',
374
+ selector: 'axp-layout-page-start-side, axp-layout-start-side',
329
375
  template: `
330
376
  <ng-content select="axp-layout-header"></ng-content>
331
377
  <ng-content select="axp-layout-content"></ng-content>
@@ -337,7 +383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
337
383
  }] });
338
384
  class AXPThemeLayoutEndSideComponent {
339
385
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutEndSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
340
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutEndSideComponent, isStandalone: true, selector: "axp-layout-page-end-side", ngImport: i0, template: `
386
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.3", type: AXPThemeLayoutEndSideComponent, isStandalone: true, selector: "axp-layout-page-end-side, axp-layout-end-side", ngImport: i0, template: `
341
387
  <ng-content select="axp-layout-header"></ng-content>
342
388
  <ng-content select="axp-layout-content"></ng-content>
343
389
  <ng-content select="axp-layout-footer"></ng-content>
@@ -348,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
348
394
  args: [{
349
395
  imports: [CommonModule],
350
396
  standalone: true,
351
- selector: 'axp-layout-page-end-side',
397
+ selector: 'axp-layout-page-end-side, axp-layout-end-side',
352
398
  template: `
353
399
  <ng-content select="axp-layout-header"></ng-content>
354
400
  <ng-content select="axp-layout-content"></ng-content>
@@ -393,7 +439,8 @@ var AXPThemeLayoutSetting;
393
439
  AXPThemeLayoutSetting["Mode"] = "layout:theme:mode";
394
440
  AXPThemeLayoutSetting["SideMenuStatus"] = "layout:theme:sidemenu:status";
395
441
  AXPThemeLayoutSetting["SideMenuWidth"] = "layout:theme:sidemenu:width";
396
- AXPThemeLayoutSetting["MenuOrientation"] = "layout:theme:menu:orientation";
442
+ AXPThemeLayoutSetting["MenuOrientation"] = "layout:theme:root-menu:direction";
443
+ AXPThemeLayoutSetting["MenuBadgeVisible"] = "layout:theme:root-menu:badge";
397
444
  })(AXPThemeLayoutSetting || (AXPThemeLayoutSetting = {}));
398
445
 
399
446
  // Theme Enum
@@ -430,25 +477,6 @@ var AXPMenuOrientation;
430
477
  AXPMenuOrientation["Horizontal"] = "horizontal";
431
478
  })(AXPMenuOrientation || (AXPMenuOrientation = {}));
432
479
 
433
- const AXP_THEME_PALETTE_PROVIDER = new InjectionToken('AXP_THEME_PALETTE_PROVIDER', {
434
- providedIn: 'root',
435
- factory: () => {
436
- return new AXPThemePaletteProviderDefault();
437
- },
438
- });
439
- class AXPThemePaletteProviderDefault {
440
- getList() {
441
- return Promise.resolve([
442
- {
443
- name: 'default',
444
- title: 'Default',
445
- path: '/assets/themes/palletes/default.css',
446
- colors: [],
447
- },
448
- ]);
449
- }
450
- }
451
-
452
480
  // ThemeStore - Manages theme settings, system changes, and loading states
453
481
  const AXPLayoutThemeService = signalStore({ providedIn: 'root' },
454
482
  // Initial State
@@ -480,7 +508,7 @@ withState(() => {
480
508
  };
481
509
  const state = {
482
510
  currentMode: AXPThemeMode.System,
483
- currentPallete: 'default',
511
+ currentPalette: 'default',
484
512
  systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light),
485
513
  font: {
486
514
  family: 'system-ui',
@@ -522,14 +550,14 @@ withComputed(({ currentMode: currentTheme, systemThemeMode: systemTheme, screenS
522
550
  isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),
523
551
  })),
524
552
  // Methods for State Management
525
- withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService), pallets = inject(AXP_THEME_PALETTE_PROVIDER)) => {
553
+ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService)) => {
526
554
  const _applySettings = async () => {
527
555
  // Initialize theme and side menu setting from storage
528
556
  const settingThemeMode = (await settingService.get(AXPThemeLayoutSetting.Mode)) ?? AXPThemeMode.Light;
529
557
  patchState(store, { currentMode: settingThemeMode });
530
558
  //
531
559
  const settingThemePallete = (await settingService.get(AXPThemeLayoutSetting.Palette)) ?? 'default';
532
- patchState(store, { currentPallete: settingThemePallete });
560
+ patchState(store, { currentPalette: settingThemePallete });
533
561
  //
534
562
  const settingSideMenu = (await settingService.get(AXPThemeLayoutSetting.SideMenuStatus)) ?? store.sideMenuState();
535
563
  patchState(store, { sideMenuState: settingSideMenu });
@@ -554,7 +582,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
554
582
  html.style.fontFamily = store.font().family;
555
583
  html.style.fontSize = store.font().size;
556
584
  //
557
- await _applyThemePalette(store.currentPallete());
585
+ await _applyThemePalette(store.currentPalette());
558
586
  };
559
587
  // Update screen size based on window width
560
588
  const _updateScreenSize = () => {
@@ -571,12 +599,10 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
571
599
  }
572
600
  if (newScreenSize !== store.screenSize()) {
573
601
  patchState(store, { screenSize: newScreenSize });
574
- if (store.sideMenuState() !== AXPSideMenuState.Closed) {
575
- patchState(store, { sideMenuState: newScreenSize === AXPScreenSize.Small ? AXPSideMenuState.Closed : AXPSideMenuState.Opened });
576
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, store.sideMenuState());
602
+ if (!store.isLarge()) {
603
+ patchState(store, { sideMenuState: AXPSideMenuState.Closed });
604
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, store.sideMenuState());
577
605
  }
578
- console.log('screenSize', newScreenSize);
579
- console.log('deviceType', store.deviceType());
580
606
  }
581
607
  };
582
608
  const _setOverlayLoading = async (value, delay = 0) => {
@@ -633,10 +659,8 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
633
659
  };
634
660
  // Helper method to apply a cached theme palette
635
661
  const _applyThemePalette = async (name) => {
636
- const pallete = (await pallets.getList()).find(c => c.name === name);
637
- if (!pallete) {
638
- return;
639
- }
662
+ // TODO: Get the path from the palette provider token
663
+ const path = `/assets/themes/palettes/css/${name}.css`;
640
664
  // Check if the current theme is already applied
641
665
  const existingStyle = document.querySelector(`style[data-theme="${name}"]`);
642
666
  if (existingStyle) {
@@ -645,7 +669,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
645
669
  _setNavigationLoading(true);
646
670
  try {
647
671
  // Fetch the CSS file via HttpClient
648
- const cssText = await firstValueFrom(http.get(pallete.path, { responseType: 'text' }));
672
+ const cssText = await firstValueFrom(http.get(path, { responseType: 'text' }));
649
673
  // Create a new <style> tag and apply the CSS
650
674
  const style = document.createElement('style');
651
675
  style.setAttribute('data-theme', name);
@@ -669,30 +693,30 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
669
693
  return {
670
694
  // Change theme and update HTML class
671
695
  changeThemeMode(theme) {
672
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.Mode, theme);
696
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);
673
697
  patchState(store, { currentMode: theme });
674
698
  _updateHtmlClass();
675
699
  },
676
700
  // Open side menu
677
701
  openSideMenu() {
678
702
  patchState(store, { sideMenuState: AXPSideMenuState.Opened });
679
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);
703
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);
680
704
  },
681
705
  // Close side menu
682
706
  closeSideMenu() {
683
707
  patchState(store, { sideMenuState: AXPSideMenuState.Closed });
684
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);
708
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);
685
709
  },
686
710
  // Set side menu width
687
711
  setSideMenuWidth(width) {
688
712
  patchState(store, { sideMenuWidth: width });
689
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);
713
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);
690
714
  },
691
715
  // Toggle side menu state
692
716
  toggleSideMenu() {
693
717
  const newSideMenuState = store.sideMenuState() === AXPSideMenuState.Opened ? AXPSideMenuState.Closed : AXPSideMenuState.Opened;
694
718
  patchState(store, { sideMenuState: newSideMenuState });
695
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);
719
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);
696
720
  },
697
721
  // Set navigation loading state with a task counter
698
722
  setNavigationLoading(value, delay) {
@@ -722,15 +746,19 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
722
746
  },
723
747
  // Set up event listener for window resize
724
748
  _setupResizeListener() {
725
- const listener = () => {
749
+ const subscription = fromEvent(window, 'resize')
750
+ .pipe(debounceTime(250) // 250ms debounce delay
751
+ )
752
+ .subscribe(() => {
726
753
  _updateScreenSize();
727
- };
728
- window.addEventListener('resize', listener);
729
- return listener;
754
+ });
755
+ return subscription;
730
756
  },
731
757
  // Remove event listener for window resize
732
- _removeResizeListener(listener) {
733
- window.removeEventListener('resize', listener);
758
+ _removeResizeListener(subscription) {
759
+ if (subscription) {
760
+ subscription.unsubscribe();
761
+ }
734
762
  },
735
763
  };
736
764
  }),
@@ -738,7 +766,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
738
766
  withHooks((store, settingService = inject(AXPSettingService)) => ({
739
767
  onInit() {
740
768
  //
741
- settingService.onChanged.pipe(filter(c => c.scope == AXPSettingScope.User)).subscribe(async (changes) => {
769
+ settingService.onChanged.pipe(filter(c => c.scope == AXPPlatformScope.User)).subscribe(async (changes) => {
742
770
  const keys = Object.values(AXPThemeLayoutSetting);
743
771
  if (changes.keys.some((key) => keys.includes(key))) {
744
772
  await store.loadSettings();
@@ -748,8 +776,8 @@ withHooks((store, settingService = inject(AXPSettingService)) => ({
748
776
  const listener = store._setupSystemColorListener();
749
777
  patchState(store, { _listener: listener });
750
778
  // Set up event listener for window resize
751
- const resizeListener = store._setupResizeListener();
752
- patchState(store, { _resizeListener: resizeListener });
779
+ const resizeSubscription = store._setupResizeListener();
780
+ patchState(store, { _resizeListener: resizeSubscription });
753
781
  },
754
782
  onDestroy() {
755
783
  // Clean up event listeners when store is destroyed
@@ -757,7 +785,7 @@ withHooks((store, settingService = inject(AXPSettingService)) => ({
757
785
  if (listener) {
758
786
  store._removeSystemColorListener(listener);
759
787
  }
760
- if (resizeListener) {
788
+ if (resizeListener instanceof Subscription) {
761
789
  store._removeResizeListener(resizeListener);
762
790
  }
763
791
  },
@@ -784,35 +812,35 @@ class AXPThemeSlotComponent {
784
812
  <ax-button-item-list>
785
813
  <ax-button-item
786
814
  (onClick)="store.changeThemeMode(variants.Light)"
787
- [text]="(t('theme.light') | async)!"
815
+ [text]="(t('theme-modes.light',{scope:'layout'}) | async)!"
788
816
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
789
817
  >
790
818
  <ax-prefix>
791
- <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
819
+ <ax-icon icon="fa-light fa-brightness"> </ax-icon>
792
820
  </ax-prefix>
793
821
  </ax-button-item>
794
822
  <ax-button-item
795
823
  (onClick)="store.changeThemeMode(variants.Dark)"
796
- [text]="(t('theme.dark') | async)!"
824
+ [text]="(t('theme-modes.dark',{scope:'layout'}) | async)!"
797
825
  [selected]="!store.isSystemMode() && store.isDarkMode()"
798
826
  >
799
827
  <ax-prefix>
800
- <ax-icon icon="fa-solid fa-moon"> </ax-icon>
828
+ <ax-icon icon="fa-light fa-moon"> </ax-icon>
801
829
  </ax-prefix>
802
830
  </ax-button-item>
803
831
  <ax-button-item
804
832
  (onClick)="store.changeThemeMode(variants.System)"
805
- [text]="(t('theme.system') | async)!"
833
+ [text]="(t('theme-modes.system',{scope:'layout'}) | async)!"
806
834
  [selected]="store.isSystemMode()"
807
835
  >
808
836
  <ax-prefix>
809
- <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
837
+ <ax-icon icon="fa-light fa-desktop"> </ax-icon>
810
838
  </ax-prefix>
811
839
  </ax-button-item>
812
840
  </ax-button-item-list>
813
841
  </ax-dropdown-panel>
814
842
  </ax-button>
815
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }] }); }
843
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i2$1.AXTranslatorDirective, selector: "[translate]" }] }); }
816
844
  }
817
845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
818
846
  type: Component,
@@ -832,29 +860,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
832
860
  <ax-button-item-list>
833
861
  <ax-button-item
834
862
  (onClick)="store.changeThemeMode(variants.Light)"
835
- [text]="(t('theme.light') | async)!"
863
+ [text]="(t('theme-modes.light',{scope:'layout'}) | async)!"
836
864
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
837
865
  >
838
866
  <ax-prefix>
839
- <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
867
+ <ax-icon icon="fa-light fa-brightness"> </ax-icon>
840
868
  </ax-prefix>
841
869
  </ax-button-item>
842
870
  <ax-button-item
843
871
  (onClick)="store.changeThemeMode(variants.Dark)"
844
- [text]="(t('theme.dark') | async)!"
872
+ [text]="(t('theme-modes.dark',{scope:'layout'}) | async)!"
845
873
  [selected]="!store.isSystemMode() && store.isDarkMode()"
846
874
  >
847
875
  <ax-prefix>
848
- <ax-icon icon="fa-solid fa-moon"> </ax-icon>
876
+ <ax-icon icon="fa-light fa-moon"> </ax-icon>
849
877
  </ax-prefix>
850
878
  </ax-button-item>
851
879
  <ax-button-item
852
880
  (onClick)="store.changeThemeMode(variants.System)"
853
- [text]="(t('theme.system') | async)!"
881
+ [text]="(t('theme-modes.system',{scope:'layout'}) | async)!"
854
882
  [selected]="store.isSystemMode()"
855
883
  >
856
884
  <ax-prefix>
857
- <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
885
+ <ax-icon icon="fa-light fa-desktop"> </ax-icon>
858
886
  </ax-prefix>
859
887
  </ax-button-item>
860
888
  </ax-button-item-list>
@@ -865,177 +893,238 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
865
893
  }]
866
894
  }] });
867
895
 
868
- class AXPThemeSettingProvider {
869
- constructor() {
870
- this.pallets = inject(AXP_THEME_PALETTE_PROVIDER);
871
- }
872
- async provide(context) {
873
- // Define the 'Appearance Settings' group
874
- context.addGroup('appearance', 'Appearance Settings', 'Customize the overall look and feel of the application.', 'fa-light fa-palette')
875
- // Add the 'Brightness & Color' section
876
- .addSection('color', 'Brightness & Color', 'Adjust the theme settings, including brightness, colors, and modes.')
877
- // Add the 'Theme Mode' setting
878
- .addSetting({
879
- key: AXPThemeLayoutSetting.Mode,
880
- title: 'Theme Mode',
881
- scope: 'U',
882
- isInherited: true,
883
- defaultValue: AXPThemeMode.Light,
884
- valueTransforms: objectKeyValueTransforms('id'),
885
- widget: {
886
- type: AXPWidgetsCatalog.select,
887
- options: {
888
- dataSource: Object.entries(AXPThemeMode).map(([key, value]) => ({
889
- id: value,
890
- title: key.charAt(0).toUpperCase() + key.slice(1).toLowerCase(),
891
- })),
892
- },
893
- },
894
- description: 'Switch between Light and Dark themes for the application.',
895
- })
896
- // Add the 'Palette' setting
897
- .addSetting({
898
- key: AXPThemeLayoutSetting.Palette,
899
- title: 'Palette',
900
- scope: 'U',
901
- isInherited: true,
902
- defaultValue: 'default',
903
- valueTransforms: objectKeyValueTransforms('name'),
904
- widget: {
905
- type: AXPWidgetsCatalog.select,
906
- options: {
907
- valueField: 'name',
908
- dataSource: await this.pallets.getList(),
909
- },
910
- },
911
- description: 'Choose a color palette for the application interface.',
912
- })
913
- // End the 'Brightness & Color' section
914
- .endSection()
915
- // Add the 'Scale & Layout' section
916
- .addSection('layout', 'Scale & Layout', 'Customize the application’s layout and scaling options.')
917
- // Add the 'Menu Orientation' setting
918
- .addSetting({
919
- key: AXPThemeLayoutSetting.MenuOrientation,
920
- title: 'Menu Orientation',
921
- scope: 'U',
922
- isInherited: true,
923
- defaultValue: 'vertical',
924
- valueTransforms: objectKeyValueTransforms('id'),
925
- widget: {
926
- type: 'select-editor',
927
- options: {
928
- dataSource: [
929
- { id: 'vertical', title: 'Vertical' },
930
- { id: 'horizontal', title: 'Horizontal' },
931
- ],
932
- },
933
- },
934
- description: 'Set the menu orientation for the application.',
935
- })
936
- // Add the 'Font Style' setting
937
- .addSetting({
938
- key: AXPThemeLayoutSetting.Font,
939
- title: 'Font Style',
940
- scope: 'U',
941
- isInherited: true,
942
- defaultValue: 'system-ui',
943
- valueTransforms: objectKeyValueTransforms('id'),
944
- widget: {
945
- type: 'select-editor',
946
- options: {
947
- dataSource: [
948
- { id: 'system-ui', title: 'Default' },
949
- { id: 'serif', title: 'Serif' },
950
- { id: 'sans-serif', title: 'Sans-serif' },
951
- { id: 'monospace', title: 'Monospace' },
952
- { id: 'arial', title: 'Arial' },
953
- { id: 'verdana', title: 'Verdana' },
954
- { id: 'tahoma', title: 'Tahoma' },
955
- { id: 'times-new-roman', title: 'Times New Roman' },
956
- { id: 'georgia', title: 'Georgia' },
957
- { id: 'helvetica', title: 'Helvetica' },
958
- { id: 'calibri', title: 'Calibri' },
959
- { id: 'cursive', title: 'Cursive' },
960
- ],
961
- },
962
- },
963
- description: 'Set the font style for application text.',
964
- })
965
- // Add the 'Font Size' setting
966
- .addSetting({
967
- key: AXPThemeLayoutSetting.FontSize,
968
- title: 'Font Size',
969
- scope: 'U',
970
- isInherited: true,
971
- defaultValue: 'medium',
972
- valueTransforms: objectKeyValueTransforms('id'),
973
- widget: {
974
- type: 'select-editor',
975
- options: {
976
- dataSource: [
977
- { id: 'small', title: 'Small' },
978
- { id: 'medium', title: 'Medium' },
979
- { id: 'large', title: 'Large' },
980
- { id: 'x-large', title: 'Extra Large' },
981
- ],
896
+ const AXP_THEME_PALETTE_PROVIDER = new InjectionToken('AXP_THEME_PALETTE_PROVIDER', {
897
+ providedIn: 'root',
898
+ factory: async () => {
899
+ return new AXPThemePaletteProviderDefault();
900
+ },
901
+ });
902
+ class AXPThemePaletteProviderDefault {
903
+ getList() {
904
+ return Promise.resolve([
905
+ {
906
+ name: 'default',
907
+ title: 'Default',
908
+ path: '/assets/themes/palletes/default.css',
909
+ colors: {
910
+ primary: '#113b53',
911
+ secondary: '#1a6ab1',
912
+ neutral: '#606c76',
913
+ success: '#2d9c67',
914
+ warning: '#e9a01b',
915
+ danger: '#c02f1d',
916
+ accents: ['#d6a7a6', '#a0897e', '#8bf4d9'],
917
+ dark: '#2a2d30',
918
+ light: '#ffffff',
982
919
  },
983
920
  },
984
- description: 'Adjust the font size for application text.',
985
- })
986
- // End the 'Scale & Layout' section
987
- .endSection()
988
- // End the 'Appearance Settings' group
989
- .endGroup();
921
+ ]);
990
922
  }
991
923
  }
992
924
 
993
- class AXPThemeColorSelectionWidgetEditComponent extends AXPWidgetComponent {
994
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeColorSelectionWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
995
- 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: `
996
- <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
997
- <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
998
- item 1
999
- </div>
1000
- <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
1001
- item 1
925
+ class AXPThemePaletteChooserWidgetComponent extends AXPWidgetComponent {
926
+ constructor() {
927
+ super(...arguments);
928
+ this.paletteService = inject(AXP_THEME_PALETTE_PROVIDER);
929
+ this.palettes = signal([]);
930
+ this.selectedPalette = signal(null);
931
+ this.#eff = effect(() => {
932
+ if (this.getValue()) {
933
+ this.selectedPalette.set(this.palettes().find(p => p.name === this.getValue()) ?? this.palettes().find(p => p.name === 'default') ?? this.palettes()[0]);
934
+ }
935
+ });
936
+ }
937
+ #eff;
938
+ async ngOnInit() {
939
+ super.ngOnInit();
940
+ const palletsProviderInstance = await this.paletteService;
941
+ this.palettes.set(await palletsProviderInstance.getList());
942
+ }
943
+ onPaletteClick(palette) {
944
+ this.setValue(palette.name);
945
+ }
946
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
947
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPThemePaletteChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
948
+ @for (palette of palettes(); track palette.name) {
949
+ <div (click)="onPaletteClick(palette)"
950
+ [class.--selected]="palette.name === selectedPalette()?.name">
951
+ <span>{{ palette.title }}</span>
952
+ <div >
953
+ <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
954
+ <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
955
+ <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
1002
956
  </div>
1003
- </div>
1004
-
1005
- `, 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", "disable", "selectedKeys"], outputs: ["onSelectionChanged"], exportAs: ["axSelectionGroup"] }, { kind: "directive", type: i1$1.AXSelectionItemDirective, selector: "[axSelectionItem]", inputs: ["key"], outputs: ["onClick"], exportAs: ["axSelectionItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
957
+ </div>
958
+ }
959
+ `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{height:3rem;min-width:100%}@media (min-width: 768px){:host>div{min-width:16rem}}:host>div>div{position:relative;height:100%;width:fit-content}:host>div>div div{position:absolute;height:2rem;width:2rem;border-radius:9999px;border-width:1px;border-color:rgba(255,255,255,.5);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1006
960
  }
1007
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeColorSelectionWidgetEditComponent, decorators: [{
961
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, decorators: [{
1008
962
  type: Component,
1009
- args: [{
1010
- template: `
1011
- <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
1012
- <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
1013
- item 1
963
+ args: [{ template: `
964
+ @for (palette of palettes(); track palette.name) {
965
+ <div (click)="onPaletteClick(palette)"
966
+ [class.--selected]="palette.name === selectedPalette()?.name">
967
+ <span>{{ palette.title }}</span>
968
+ <div >
969
+ <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
970
+ <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
971
+ <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
1014
972
  </div>
1015
- <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
1016
- item 1
973
+ </div>
974
+ }
975
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionModule], styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{height:3rem;min-width:100%}@media (min-width: 768px){:host>div{min-width:16rem}}:host>div>div{position:relative;height:100%;width:fit-content}:host>div>div div{position:absolute;height:2rem;width:2rem;border-radius:9999px;border-width:1px;border-color:rgba(255,255,255,.5);--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}\n"] }]
976
+ }] });
977
+
978
+ var themePaletteChooserWidget_component = /*#__PURE__*/Object.freeze({
979
+ __proto__: null,
980
+ AXPThemePaletteChooserWidgetComponent: AXPThemePaletteChooserWidgetComponent
981
+ });
982
+
983
+ const AXPThemePaletteChooserWidget = {
984
+ name: "theme-palette-chooser",
985
+ title: "Theme Palette Chooser",
986
+ icon: "fa-solid fa-square",
987
+ type: 'editor',
988
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
989
+ properties: [
990
+ AXP_NAME_PROPERTY,
991
+ AXP_DATA_PATH_PROPERTY,
992
+ AXP_DISABLED_PROPERTY,
993
+ ],
994
+ components: {
995
+ edit: {
996
+ component: () => Promise.resolve().then(function () { return themePaletteChooserWidget_component; }).then((c) => c.AXPThemePaletteChooserWidgetComponent),
997
+ },
998
+ }
999
+ };
1000
+
1001
+ class AXPThemeModeChooserWidgetComponent extends AXPWidgetComponent {
1002
+ constructor() {
1003
+ super(...arguments);
1004
+ this.modes = signal([
1005
+ { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },
1006
+ { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },
1007
+ { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },
1008
+ ]);
1009
+ this.selectedMode = signal(null);
1010
+ this.#eff = effect(() => {
1011
+ if (this.getValue()) {
1012
+ this.selectedMode.set(this.modes().find(m => m.id === this.getValue()) ?? this.modes()[0]);
1013
+ }
1014
+ });
1015
+ }
1016
+ #eff;
1017
+ onModeClick(mode) {
1018
+ this.setValue(mode.id);
1019
+ }
1020
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1021
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPThemeModeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1022
+ @for (mode of modes(); track mode.id) {
1023
+ <div (click)="onModeClick(mode)"
1024
+ [class.--selected]="mode.id === selectedMode()?.id">
1025
+ <div>
1026
+ <i [class]="mode.icon"></i>
1017
1027
  </div>
1018
- </div>
1019
-
1020
- `,
1021
- standalone: true,
1022
- changeDetection: ChangeDetectionStrategy.OnPush,
1023
- imports: [CommonModule, FormsModule, AXSelectionModule],
1024
- }]
1028
+ <span>{{ ('theme-modes.' + mode.id) | translate: { scope: 'layout' } | async}}</span>
1029
+ </div>
1030
+ }
1031
+ `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1032
+ }
1033
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, decorators: [{
1034
+ type: Component,
1035
+ args: [{ template: `
1036
+ @for (mode of modes(); track mode.id) {
1037
+ <div (click)="onModeClick(mode)"
1038
+ [class.--selected]="mode.id === selectedMode()?.id">
1039
+ <div>
1040
+ <i [class]="mode.icon"></i>
1041
+ </div>
1042
+ <span>{{ ('theme-modes.' + mode.id) | translate: { scope: 'layout' } | async}}</span>
1043
+ </div>
1044
+ }
1045
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule], styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"] }]
1025
1046
  }] });
1026
1047
 
1027
- var themeColorSelectionWidgetEdit_component = /*#__PURE__*/Object.freeze({
1048
+ var themeModeChooserWidget_component = /*#__PURE__*/Object.freeze({
1028
1049
  __proto__: null,
1029
- AXPThemeColorSelectionWidgetEditComponent: AXPThemeColorSelectionWidgetEditComponent
1050
+ AXPThemeModeChooserWidgetComponent: AXPThemeModeChooserWidgetComponent
1030
1051
  });
1031
1052
 
1032
- const AXPThemeColorSelectionWidget = {
1033
- name: "theme-color-selection",
1034
- title: "Theme Color Selection",
1053
+ const AXPThemeModeChooserWidget = {
1054
+ name: "theme-mode-chooser",
1055
+ title: "Theme Mode Chooser",
1035
1056
  icon: "fa-solid fa-square",
1036
1057
  type: 'editor',
1037
- visible: false,
1038
- group: AXP_WIDGETS_LAYOUT_GROUP,
1058
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
1059
+ properties: [
1060
+ AXP_NAME_PROPERTY,
1061
+ AXP_DATA_PATH_PROPERTY,
1062
+ AXP_DISABLED_PROPERTY,
1063
+ ],
1064
+ components: {
1065
+ edit: {
1066
+ component: () => Promise.resolve().then(function () { return themeModeChooserWidget_component; }).then((c) => c.AXPThemeModeChooserWidgetComponent),
1067
+ },
1068
+ }
1069
+ };
1070
+
1071
+ class AXPMenuOrientationChooserWidgetComponent extends AXPWidgetComponent {
1072
+ constructor() {
1073
+ super(...arguments);
1074
+ this.orientations = signal([
1075
+ { id: 'vertical', icon: 'fa-regular fa-square-ellipsis-vertical' },
1076
+ { id: 'horizontal', icon: 'fa-regular fa-square-ellipsis' },
1077
+ ]);
1078
+ this.selectedOrientation = signal(null);
1079
+ this.#eff = effect(() => {
1080
+ if (this.getValue()) {
1081
+ this.selectedOrientation.set(this.orientations().find(o => o.id === this.getValue()) ?? this.orientations()[0]);
1082
+ }
1083
+ });
1084
+ }
1085
+ #eff;
1086
+ onOrientationClick(orientation) {
1087
+ this.setValue(orientation.id);
1088
+ }
1089
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1090
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPMenuOrientationChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1091
+ @for (orientation of orientations(); track orientation.id) {
1092
+ <div (click)="onOrientationClick(orientation)"
1093
+ [class.--selected]="orientation.id === selectedOrientation()?.id">
1094
+ <div>
1095
+ <i [class]="orientation.icon"></i>
1096
+ </div>
1097
+ <span>{{ ('menu-modes.' + orientation.id) | translate: { scope: 'layout' } | async}}</span>
1098
+ </div>
1099
+ }
1100
+ `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1101
+ }
1102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, decorators: [{
1103
+ type: Component,
1104
+ args: [{ template: `
1105
+ @for (orientation of orientations(); track orientation.id) {
1106
+ <div (click)="onOrientationClick(orientation)"
1107
+ [class.--selected]="orientation.id === selectedOrientation()?.id">
1108
+ <div>
1109
+ <i [class]="orientation.icon"></i>
1110
+ </div>
1111
+ <span>{{ ('menu-modes.' + orientation.id) | translate: { scope: 'layout' } | async}}</span>
1112
+ </div>
1113
+ }
1114
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule], styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}:host>div{padding-top:.25rem!important;padding-bottom:.25rem!important}\n"] }]
1115
+ }] });
1116
+
1117
+ var menuOrientationChooserWidget_component = /*#__PURE__*/Object.freeze({
1118
+ __proto__: null,
1119
+ AXPMenuOrientationChooserWidgetComponent: AXPMenuOrientationChooserWidgetComponent
1120
+ });
1121
+
1122
+ const AXPMenuOrientationChooserWidget = {
1123
+ name: "menu-orientation-chooser",
1124
+ title: "Menu Orientation Chooser",
1125
+ icon: "fa-light fa-bars-staggered",
1126
+ type: 'editor',
1127
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
1039
1128
  properties: [
1040
1129
  AXP_NAME_PROPERTY,
1041
1130
  AXP_DATA_PATH_PROPERTY,
@@ -1043,7 +1132,157 @@ const AXPThemeColorSelectionWidget = {
1043
1132
  ],
1044
1133
  components: {
1045
1134
  edit: {
1046
- component: () => Promise.resolve().then(function () { return themeColorSelectionWidgetEdit_component; }).then((c) => c.AXPThemeColorSelectionWidgetEditComponent),
1135
+ component: () => Promise.resolve().then(function () { return menuOrientationChooserWidget_component; }).then((c) => c.AXPMenuOrientationChooserWidgetComponent),
1136
+ },
1137
+ }
1138
+ };
1139
+
1140
+ class AXPFontStyleChooserWidgetComponent extends AXPWidgetComponent {
1141
+ constructor() {
1142
+ super(...arguments);
1143
+ this.fonts = signal([
1144
+ { id: 'system-ui', title: 'Default' },
1145
+ { id: 'serif', title: 'Serif' },
1146
+ { id: 'sans-serif', title: 'Sans-serif' },
1147
+ { id: 'monospace', title: 'Monospace' },
1148
+ { id: 'arial', title: 'Arial' },
1149
+ { id: 'verdana', title: 'Verdana' },
1150
+ { id: 'tahoma', title: 'Tahoma' },
1151
+ { id: 'times-new-roman', title: 'Times New Roman' },
1152
+ { id: 'georgia', title: 'Georgia' },
1153
+ { id: 'helvetica', title: 'Helvetica' },
1154
+ { id: 'calibri', title: 'Calibri' },
1155
+ { id: 'cursive', title: 'Cursive' },
1156
+ ]);
1157
+ this.selectedFont = signal(null);
1158
+ this.#eff = effect(() => {
1159
+ if (this.getValue()) {
1160
+ this.selectedFont.set(this.fonts().find(f => f.id === this.getValue()) ?? this.fonts()[0]);
1161
+ }
1162
+ });
1163
+ }
1164
+ #eff;
1165
+ onFontClick(font) {
1166
+ this.setValue(font.id);
1167
+ }
1168
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPFontStyleChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1170
+ @for (font of fonts(); track font.id) {
1171
+ <div (click)="onFontClick(font)"
1172
+ [class.--selected]="font.id === selectedFont()?.id"
1173
+ [style.font-family]="font.id">
1174
+ <div>
1175
+ <span >{{ font.title }}</span>
1176
+ </div>
1177
+ </div>
1178
+ }
1179
+ `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1180
+ }
1181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, decorators: [{
1182
+ type: Component,
1183
+ args: [{ template: `
1184
+ @for (font of fonts(); track font.id) {
1185
+ <div (click)="onFontClick(font)"
1186
+ [class.--selected]="font.id === selectedFont()?.id"
1187
+ [style.font-family]="font.id">
1188
+ <div>
1189
+ <span >{{ font.title }}</span>
1190
+ </div>
1191
+ </div>
1192
+ }
1193
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionModule], styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"] }]
1194
+ }] });
1195
+
1196
+ var fontStyleChooserWidget_component = /*#__PURE__*/Object.freeze({
1197
+ __proto__: null,
1198
+ AXPFontStyleChooserWidgetComponent: AXPFontStyleChooserWidgetComponent
1199
+ });
1200
+
1201
+ const AXPFontStyleChooserWidget = {
1202
+ name: "font-style-chooser",
1203
+ title: "Font Style Chooser",
1204
+ icon: "fa-light fa-font",
1205
+ type: 'editor',
1206
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
1207
+ properties: [
1208
+ AXP_NAME_PROPERTY,
1209
+ AXP_DATA_PATH_PROPERTY,
1210
+ AXP_DISABLED_PROPERTY,
1211
+ ],
1212
+ components: {
1213
+ edit: {
1214
+ component: () => Promise.resolve().then(function () { return fontStyleChooserWidget_component; }).then((c) => c.AXPFontStyleChooserWidgetComponent),
1215
+ },
1216
+ }
1217
+ };
1218
+
1219
+ class AXPFontSizeChooserWidgetComponent extends AXPWidgetComponent {
1220
+ constructor() {
1221
+ super(...arguments);
1222
+ this.sizes = signal([
1223
+ 'small',
1224
+ 'medium',
1225
+ 'large',
1226
+ 'x-large',
1227
+ ]);
1228
+ this.selectedSize = signal(null);
1229
+ this.#eff = effect(() => {
1230
+ if (this.getValue()) {
1231
+ this.selectedSize.set(this.sizes().find(s => s === this.getValue()) ?? this.sizes()[0]);
1232
+ }
1233
+ });
1234
+ }
1235
+ #eff;
1236
+ onSizeClick(size) {
1237
+ this.setValue(size);
1238
+ }
1239
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXPFontSizeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1241
+ @for (size of sizes(); track size) {
1242
+ <div (click)="onSizeClick(size)"
1243
+ [style.font-size]="size"
1244
+ [class.--selected]="size === selectedSize()">
1245
+ <div>
1246
+ <span >{{ ('font-sizes.' + size) | translate: { scope: 'layout' } | async}}</span>
1247
+ </div>
1248
+ </div>
1249
+ }
1250
+ `, isInline: true, styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: AXSelectionModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1251
+ }
1252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, decorators: [{
1253
+ type: Component,
1254
+ args: [{ template: `
1255
+ @for (size of sizes(); track size) {
1256
+ <div (click)="onSizeClick(size)"
1257
+ [style.font-size]="size"
1258
+ [class.--selected]="size === selectedSize()">
1259
+ <div>
1260
+ <span >{{ ('font-sizes.' + size) | translate: { scope: 'layout' } | async}}</span>
1261
+ </div>
1262
+ </div>
1263
+ }
1264
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionModule, AXTranslationModule], styles: [":host{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}:host>div{display:flex;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;gap:.5rem;border-radius:.5rem;padding:.5rem 1rem;background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host>div:is(.ax-dark *){background-color:rgb(var(--ax-sys-color-surface));color:rgb(var(--ax-sys-color-on-surface));border-color:rgb(var(--ax-sys-color-border-surface))}:host>div{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s;animation-duration:.2s}:host>div:hover{background-color:rgb(var(--ax-sys-color-dark-surface));color:rgb(var(--ax-sys-color-on-dark-surface));border-color:rgb(var(--ax-sys-color-border-dark-surface))}:host>div.--selected{background-color:rgb(var(--ax-sys-color-primary-lighter-surface));color:rgb(var(--ax-sys-color-on-primary-lighter-surface));border-color:rgb(var(--ax-sys-color-border-primary-lighter-surface))}:host>div>div{display:flex;align-items:center;justify-content:center}:host>div>div i{font-size:1.25rem;line-height:1.75rem}:host>div>span{font-size:.875rem;line-height:1.25rem;font-weight:600;line-height:1.625}\n"] }]
1265
+ }] });
1266
+
1267
+ var fontSizeChooserWidget_component = /*#__PURE__*/Object.freeze({
1268
+ __proto__: null,
1269
+ AXPFontSizeChooserWidgetComponent: AXPFontSizeChooserWidgetComponent
1270
+ });
1271
+
1272
+ const AXPFontSizeChooserWidget = {
1273
+ name: "font-size-chooser",
1274
+ title: "Font Size Chooser",
1275
+ icon: "fa-light fa-text-size",
1276
+ type: 'editor',
1277
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
1278
+ properties: [
1279
+ AXP_NAME_PROPERTY,
1280
+ AXP_DATA_PATH_PROPERTY,
1281
+ AXP_DISABLED_PROPERTY,
1282
+ ],
1283
+ components: {
1284
+ edit: {
1285
+ component: () => Promise.resolve().then(function () { return fontSizeChooserWidget_component; }).then((c) => c.AXPFontSizeChooserWidgetComponent),
1047
1286
  },
1048
1287
  }
1049
1288
  };
@@ -1059,12 +1298,16 @@ class AXPThemesSharedModule {
1059
1298
  }
1060
1299
  });
1061
1300
  }
1062
- 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 }); }
1063
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, imports: [i1$2.AXPComponentSlotModule, i2$1.AXPLayoutBuilderModule] }); }
1301
+ 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 }); }
1302
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, imports: [i1$1.AXPComponentSlotModule, i2$2.AXPLayoutBuilderModule] }); }
1064
1303
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, providers: [
1065
1304
  {
1066
1305
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1067
- useClass: AXPThemeSettingProvider,
1306
+ useFactory: async () => {
1307
+ const injector = inject(Injector);
1308
+ const provider = (await import('./acorex-platform-themes-shared-setting.provider-CXiRmniv.mjs')).AXPThemeSettingProvider;
1309
+ return new provider(injector);
1310
+ },
1068
1311
  multi: true
1069
1312
  }
1070
1313
  ], imports: [AXPComponentSlotModule.forRoot({
@@ -1078,7 +1321,11 @@ class AXPThemesSharedModule {
1078
1321
  }),
1079
1322
  AXPLayoutBuilderModule.forChild({
1080
1323
  widgets: [
1081
- AXPThemeColorSelectionWidget
1324
+ AXPThemePaletteChooserWidget,
1325
+ AXPThemeModeChooserWidget,
1326
+ AXPMenuOrientationChooserWidget,
1327
+ AXPFontSizeChooserWidget,
1328
+ AXPFontStyleChooserWidget
1082
1329
  ]
1083
1330
  })] }); }
1084
1331
  }
@@ -1097,7 +1344,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1097
1344
  }),
1098
1345
  AXPLayoutBuilderModule.forChild({
1099
1346
  widgets: [
1100
- AXPThemeColorSelectionWidget
1347
+ AXPThemePaletteChooserWidget,
1348
+ AXPThemeModeChooserWidget,
1349
+ AXPMenuOrientationChooserWidget,
1350
+ AXPFontSizeChooserWidget,
1351
+ AXPFontStyleChooserWidget
1101
1352
  ]
1102
1353
  })
1103
1354
  ],
@@ -1106,16 +1357,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1106
1357
  providers: [
1107
1358
  {
1108
1359
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1109
- useClass: AXPThemeSettingProvider,
1360
+ useFactory: async () => {
1361
+ const injector = inject(Injector);
1362
+ const provider = (await import('./acorex-platform-themes-shared-setting.provider-CXiRmniv.mjs')).AXPThemeSettingProvider;
1363
+ return new provider(injector);
1364
+ },
1110
1365
  multi: true
1111
1366
  }
1112
1367
  ],
1113
1368
  }]
1114
- }], ctorParameters: () => [{ type: i1$2.AXPAppStartUpService }, { type: i0.Injector }] });
1369
+ }], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
1115
1370
 
1116
1371
  /**
1117
1372
  * Generated bundle index. Do not edit.
1118
1373
  */
1119
1374
 
1120
- export { AXPDeviceType, AXPLayoutThemeService, AXPMenuOrientation, AXPScreenSize, AXPSideMenuState, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutSetting, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPThemeMode, AXPThemePaletteProviderDefault, AXPThemeSlotComponent, AXPThemesSharedModule, AXP_THEME_PALETTE_PROVIDER };
1375
+ export { AXPDeviceType, AXPLayoutThemeService, AXPMenuOrientation, AXPScreenSize, AXPSideMenuState, AXPTaskBadgeDirective, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutSetting, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPThemeMode, AXPThemePaletteProviderDefault, AXPThemeSlotComponent, AXPThemesSharedModule, AXP_THEME_PALETTE_PROVIDER };
1121
1376
  //# sourceMappingURL=acorex-platform-themes-shared.mjs.map