@acorex/platform 19.2.19 → 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 (197) 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/interactive.types.d.ts +44 -0
  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 +243 -415
  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-CGARdU4C.mjs → acorex-platform-themes-default-search-popup.component-BADEuoeJ.mjs} +9 -9
  49. package/fesm2022/{acorex-platform-themes-default-search-popup.component-CGARdU4C.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 +237 -73
  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 +502 -322
  59. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  60. package/fesm2022/acorex-platform-widgets.mjs +4109 -1487
  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 +1 -1
  87. package/themes/default/lib/layouts/base/base-page.component.d.ts +39 -13
  88. package/themes/default/lib/layouts/base/base-page.types.d.ts +15 -3
  89. package/themes/default/lib/layouts/base/index.d.ts +1 -0
  90. package/themes/default/lib/layouts/base/page-layout/index.d.ts +1 -0
  91. package/themes/default/lib/{pages/theme-palette-preview/theme-palette-preview.page.d.ts → layouts/base/page-layout/page-layout.component.d.ts} +13 -26
  92. package/themes/default/lib/layouts/base/simple-page/simple-page.layout.d.ts +2 -2
  93. package/themes/default/lib/layouts/entity-layouts/entity-category/entity-category.component.d.ts +16 -0
  94. package/themes/default/lib/layouts/entity-layouts/entity-detail-list-view/entity-detail-list-view.component.d.ts +2 -2
  95. package/themes/default/lib/layouts/entity-layouts/entity-master-list-view/entity-master-list-view.component.d.ts +10 -8
  96. package/themes/default/lib/layouts/entity-layouts/entity-master-single-view/entity-master-single-view.component.d.ts +12 -4
  97. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/entity-master-toolbar-view.component.d.ts +7 -0
  98. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/filters/entity-filter-toolbar.component.d.ts +48 -0
  99. package/themes/default/lib/layouts/entity-layouts/entity-master-toolbar-view/views/entity-view-toolbar.component.d.ts +12 -0
  100. package/themes/default/lib/layouts/root-layout/components/header/header.component.d.ts +2 -2
  101. package/themes/default/lib/layouts/root-layout/components/horizontal-menu/horizontal-menu.component.d.ts +9 -3
  102. package/themes/default/lib/layouts/root-layout/components/side-menu/side-menu.component.d.ts +7 -1
  103. package/themes/default/lib/layouts/root-layout/horizontal/horizontal-layout.component.d.ts +2 -2
  104. package/themes/default/lib/layouts/root-layout/root-layout.component.d.ts +2 -2
  105. package/themes/default/lib/layouts/root-layout/vertical/vertical-layout.component.d.ts +2 -2
  106. package/themes/default/lib/layouts/setting-layout/setting-page/setting-page.component.d.ts +61 -5
  107. package/themes/default/lib/layouts/setting-layout/setting-view/setting-view.component.d.ts +68 -6
  108. package/themes/shared/index.d.ts +1 -1
  109. package/themes/shared/lib/components/badge/badge.directive.d.ts +14 -0
  110. package/themes/shared/lib/components/layout-elements/layout-blocks.component.d.ts +4 -1
  111. package/themes/shared/lib/components/layout-elements/layout-side.component.d.ts +2 -2
  112. package/themes/shared/lib/components/slots/theme-slot.component.d.ts +2 -2
  113. package/themes/shared/lib/palette.provider.d.ts +1 -1
  114. package/themes/shared/lib/setting.keys.d.ts +2 -1
  115. package/themes/shared/lib/setting.provider.d.ts +4 -1
  116. package/themes/shared/lib/theme.service.d.ts +2 -2
  117. package/themes/shared/lib/theme.types.d.ts +11 -2
  118. package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.component.d.ts +10 -0
  119. package/themes/shared/lib/widgets/font-size-chooser/font-size-chooser-widget.config.d.ts +7 -0
  120. package/themes/shared/lib/widgets/font-size-chooser/index.d.ts +2 -0
  121. package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.component.d.ts +15 -0
  122. package/themes/shared/lib/widgets/font-style-chooser/font-style-chooser-widget.config.d.ts +7 -0
  123. package/themes/shared/lib/widgets/font-style-chooser/index.d.ts +2 -0
  124. package/themes/shared/lib/widgets/menu-orientation-chooser/index.d.ts +2 -0
  125. package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.component.d.ts +15 -0
  126. package/themes/shared/lib/widgets/menu-orientation-chooser/menu-orientation-chooser-widget.config.d.ts +7 -0
  127. package/themes/shared/lib/widgets/theme-mode-chooser/index.d.ts +2 -0
  128. package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.component.d.ts +16 -0
  129. package/themes/shared/lib/widgets/theme-mode-chooser/theme-mode-chooser-widget.config.d.ts +7 -0
  130. package/themes/shared/lib/widgets/theme-palette-chooser/index.d.ts +2 -0
  131. package/themes/shared/lib/widgets/theme-palette-chooser/theme-palette-chooser-widget.component.d.ts +13 -0
  132. 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
  133. package/widgets/lib/properties/groups.d.ts +2 -0
  134. package/widgets/lib/widgets/advance/file/file-box-widget-edit.component.d.ts +5 -5
  135. package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget.component.d.ts +52 -0
  136. package/widgets/lib/widgets/charts/bar-chart/bar-chart.type.d.ts +29 -11
  137. package/widgets/lib/widgets/charts/bar-chart/index.d.ts +1 -1
  138. package/widgets/lib/widgets/charts/chart.type.d.ts +3 -0
  139. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar-widget.component.d.ts +40 -0
  140. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar-widget.config.d.ts +7 -0
  141. package/widgets/lib/widgets/charts/clock-calendar/clock-calendar.types.d.ts +50 -0
  142. package/widgets/lib/widgets/charts/clock-calendar/index.d.ts +3 -0
  143. package/widgets/lib/widgets/charts/donut-chart/donut-chart-widget.component.d.ts +54 -0
  144. package/widgets/lib/widgets/charts/donut-chart/donut-chart.type.d.ts +31 -21
  145. package/widgets/lib/widgets/charts/donut-chart/index.d.ts +1 -1
  146. package/widgets/lib/widgets/charts/gauge-chart/{gauge-chart-widget-edit.component.d.ts → gauge-chart-widget.component.d.ts} +3 -3
  147. package/widgets/lib/widgets/charts/gauge-chart/gauge-chart.type.d.ts +26 -11
  148. package/widgets/lib/widgets/charts/gauge-chart/index.d.ts +2 -1
  149. package/widgets/lib/widgets/charts/shared/chart-base.component.d.ts +44 -0
  150. package/widgets/lib/widgets/charts/shared/chart-base.type.d.ts +37 -0
  151. package/widgets/lib/widgets/charts/sticky-note/index.d.ts +1 -1
  152. package/widgets/lib/widgets/charts/sticky-note/{sticky-note-widget-edit.component.d.ts → sticky-note-widget.component.d.ts} +3 -3
  153. package/widgets/lib/widgets/charts/weather/index.d.ts +4 -0
  154. package/widgets/lib/widgets/charts/weather/weather-services/index.d.ts +3 -0
  155. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.abstract.d.ts +174 -0
  156. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.key.d.ts +2 -0
  157. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.mock.service.d.ts +47 -0
  158. package/widgets/lib/widgets/charts/weather/weather-services/weather-api.service.d.ts +48 -0
  159. package/widgets/lib/widgets/charts/weather/weather-widget.component.d.ts +109 -0
  160. package/widgets/lib/widgets/charts/weather/weather-widget.config.d.ts +14 -0
  161. package/widgets/lib/widgets/charts/weather/weather.module.d.ts +11 -0
  162. package/widgets/lib/widgets/editors/select/select-box-widget-column.component.d.ts +0 -1
  163. package/widgets/lib/widgets/editors/select/select-box-widget-edit.component.d.ts +4 -1
  164. package/widgets/lib/widgets/editors/template-box/index.d.ts +6 -0
  165. package/widgets/lib/widgets/editors/template-box/template-box-widget-column.component.d.ts +10 -0
  166. package/widgets/lib/widgets/editors/template-box/template-box-widget-edit.component.d.ts +29 -0
  167. package/widgets/lib/widgets/editors/template-box/template-box-widget-filter.component.d.ts +6 -0
  168. package/widgets/lib/widgets/editors/template-box/template-box-widget-print.component.d.ts +10 -0
  169. package/widgets/lib/widgets/editors/template-box/template-box-widget-view.component.d.ts +11 -0
  170. package/widgets/lib/widgets/editors/template-box/template-box-widget.config.d.ts +7 -0
  171. package/widgets/lib/widgets/filters/select-filter/select-filter-widget-edit.component.d.ts +2 -5
  172. package/widgets/lib/widgets/index.d.ts +3 -0
  173. package/core/lib/types.d.ts +0 -57
  174. package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-LKhN00ob.mjs.map +0 -1
  175. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CdC4eF25.mjs +0 -400
  176. package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-CdC4eF25.mjs.map +0 -1
  177. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs +0 -91
  178. package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-B9TUh-2S.mjs.map +0 -1
  179. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ZfUaIxUa.mjs +0 -135
  180. package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-ZfUaIxUa.mjs.map +0 -1
  181. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cd2yaPEZ.mjs +0 -74
  182. package/fesm2022/acorex-platform-themes-default-setting-page.component-Cd2yaPEZ.mjs.map +0 -1
  183. package/fesm2022/acorex-platform-themes-default-setting-view.component-B3Aob67f.mjs +0 -73
  184. package/fesm2022/acorex-platform-themes-default-setting-view.component-B3Aob67f.mjs.map +0 -1
  185. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DqAngWCf.mjs +0 -146
  186. package/fesm2022/acorex-platform-themes-default-theme-palette-preview.page-DqAngWCf.mjs.map +0 -1
  187. package/layout/builder/lib/builder/widget-groups.d.ts +0 -9
  188. package/layout/entity/lib/dexie-storage.service.d.ts +0 -16
  189. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-filter.component.d.ts +0 -6
  190. package/layout/entity/lib/widgets/lookup-widget/lookup-widget-print.component.d.ts +0 -6
  191. package/themes/default/lib/layouts/filters-layout/simple-filter-builder/filters-view.component.d.ts +0 -13
  192. package/themes/shared/lib/components/drawer/drawer.directive.d.ts +0 -22
  193. package/themes/shared/lib/components/drawer/index.d.ts +0 -1
  194. package/themes/shared/lib/widgets/theme-color-selection/index.d.ts +0 -2
  195. package/themes/shared/lib/widgets/theme-color-selection/theme-color-selection-widget-edit.component.d.ts +0 -6
  196. package/widgets/lib/widgets/charts/bar-chart/bar-chart-widget-edit.component.d.ts +0 -40
  197. 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, input, signal, effect, Directive } 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,25 +137,38 @@ 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 axp-layout-content, \n axp-layout-page-content, \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,
105
149
  args: [{
106
150
  standalone: true,
107
151
  selector: `
152
+
153
+ axp-page-content,
154
+ axp-page-footer,
155
+ axp-page-header,
156
+ axp-page-toolbar,
157
+
108
158
  axp-layout-content,
109
159
  axp-layout-page-content,
160
+
110
161
  axp-layout-sections,
111
162
  axp-layout-body,
163
+ axp-layout-container,
112
164
  axp-layout-page-body,
113
165
  axp-layout-prefix,
114
166
  axp-layout-suffix,
167
+ axp-layout-title-bar,
115
168
  axp-layout-title,
169
+ axp-layout-title-actions,
116
170
  axp-layout-nav-button,
117
171
  axp-layout-description,
118
- axp-layout-title-bar,
119
172
  axp-layout-breadcrumbs,
120
173
  axp-layout-list-action,
121
174
  `,
@@ -307,7 +360,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
307
360
 
308
361
  class AXPThemeLayoutStartSideComponent {
309
362
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutStartSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
310
- 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: `
311
364
  <ng-content select="axp-layout-header"></ng-content>
312
365
  <ng-content select="axp-layout-content"></ng-content>
313
366
  <ng-content select="axp-layout-footer"></ng-content>
@@ -318,7 +371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
318
371
  args: [{
319
372
  imports: [CommonModule],
320
373
  standalone: true,
321
- selector: 'axp-layout-page-start-side',
374
+ selector: 'axp-layout-page-start-side, axp-layout-start-side',
322
375
  template: `
323
376
  <ng-content select="axp-layout-header"></ng-content>
324
377
  <ng-content select="axp-layout-content"></ng-content>
@@ -330,7 +383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
330
383
  }] });
331
384
  class AXPThemeLayoutEndSideComponent {
332
385
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeLayoutEndSideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
333
- 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: `
334
387
  <ng-content select="axp-layout-header"></ng-content>
335
388
  <ng-content select="axp-layout-content"></ng-content>
336
389
  <ng-content select="axp-layout-footer"></ng-content>
@@ -341,7 +394,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
341
394
  args: [{
342
395
  imports: [CommonModule],
343
396
  standalone: true,
344
- selector: 'axp-layout-page-end-side',
397
+ selector: 'axp-layout-page-end-side, axp-layout-end-side',
345
398
  template: `
346
399
  <ng-content select="axp-layout-header"></ng-content>
347
400
  <ng-content select="axp-layout-content"></ng-content>
@@ -386,7 +439,8 @@ var AXPThemeLayoutSetting;
386
439
  AXPThemeLayoutSetting["Mode"] = "layout:theme:mode";
387
440
  AXPThemeLayoutSetting["SideMenuStatus"] = "layout:theme:sidemenu:status";
388
441
  AXPThemeLayoutSetting["SideMenuWidth"] = "layout:theme:sidemenu:width";
389
- AXPThemeLayoutSetting["MenuOrientation"] = "layout:theme:menu:orientation";
442
+ AXPThemeLayoutSetting["MenuOrientation"] = "layout:theme:root-menu:direction";
443
+ AXPThemeLayoutSetting["MenuBadgeVisible"] = "layout:theme:root-menu:badge";
390
444
  })(AXPThemeLayoutSetting || (AXPThemeLayoutSetting = {}));
391
445
 
392
446
  // Theme Enum
@@ -423,25 +477,6 @@ var AXPMenuOrientation;
423
477
  AXPMenuOrientation["Horizontal"] = "horizontal";
424
478
  })(AXPMenuOrientation || (AXPMenuOrientation = {}));
425
479
 
426
- const AXP_THEME_PALETTE_PROVIDER = new InjectionToken('AXP_THEME_PALETTE_PROVIDER', {
427
- providedIn: 'root',
428
- factory: () => {
429
- return new AXPThemePaletteProviderDefault();
430
- },
431
- });
432
- class AXPThemePaletteProviderDefault {
433
- getList() {
434
- return Promise.resolve([
435
- {
436
- name: 'default',
437
- title: 'Default',
438
- path: '/assets/themes/palletes/default.css',
439
- colors: [],
440
- },
441
- ]);
442
- }
443
- }
444
-
445
480
  // ThemeStore - Manages theme settings, system changes, and loading states
446
481
  const AXPLayoutThemeService = signalStore({ providedIn: 'root' },
447
482
  // Initial State
@@ -473,7 +508,7 @@ withState(() => {
473
508
  };
474
509
  const state = {
475
510
  currentMode: AXPThemeMode.System,
476
- currentPallete: 'default',
511
+ currentPalette: 'default',
477
512
  systemThemeMode: (isSystemDark ? AXPThemeMode.Dark : AXPThemeMode.Light),
478
513
  font: {
479
514
  family: 'system-ui',
@@ -515,14 +550,14 @@ withComputed(({ currentMode: currentTheme, systemThemeMode: systemTheme, screenS
515
550
  isMenuHorizontal: computed(() => menuOrientation() === AXPMenuOrientation.Horizontal),
516
551
  })),
517
552
  // Methods for State Management
518
- withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService), pallets = inject(AXP_THEME_PALETTE_PROVIDER)) => {
553
+ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettingService)) => {
519
554
  const _applySettings = async () => {
520
555
  // Initialize theme and side menu setting from storage
521
556
  const settingThemeMode = (await settingService.get(AXPThemeLayoutSetting.Mode)) ?? AXPThemeMode.Light;
522
557
  patchState(store, { currentMode: settingThemeMode });
523
558
  //
524
559
  const settingThemePallete = (await settingService.get(AXPThemeLayoutSetting.Palette)) ?? 'default';
525
- patchState(store, { currentPallete: settingThemePallete });
560
+ patchState(store, { currentPalette: settingThemePallete });
526
561
  //
527
562
  const settingSideMenu = (await settingService.get(AXPThemeLayoutSetting.SideMenuStatus)) ?? store.sideMenuState();
528
563
  patchState(store, { sideMenuState: settingSideMenu });
@@ -547,7 +582,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
547
582
  html.style.fontFamily = store.font().family;
548
583
  html.style.fontSize = store.font().size;
549
584
  //
550
- await _applyThemePalette(store.currentPallete());
585
+ await _applyThemePalette(store.currentPalette());
551
586
  };
552
587
  // Update screen size based on window width
553
588
  const _updateScreenSize = () => {
@@ -564,12 +599,10 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
564
599
  }
565
600
  if (newScreenSize !== store.screenSize()) {
566
601
  patchState(store, { screenSize: newScreenSize });
567
- if (store.sideMenuState() !== AXPSideMenuState.Closed) {
568
- patchState(store, { sideMenuState: newScreenSize === AXPScreenSize.Small ? AXPSideMenuState.Closed : AXPSideMenuState.Opened });
569
- 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());
570
605
  }
571
- console.log('screenSize', newScreenSize);
572
- console.log('deviceType', store.deviceType());
573
606
  }
574
607
  };
575
608
  const _setOverlayLoading = async (value, delay = 0) => {
@@ -626,10 +659,8 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
626
659
  };
627
660
  // Helper method to apply a cached theme palette
628
661
  const _applyThemePalette = async (name) => {
629
- const pallete = (await pallets.getList()).find(c => c.name === name);
630
- if (!pallete) {
631
- return;
632
- }
662
+ // TODO: Get the path from the palette provider token
663
+ const path = `/assets/themes/palettes/css/${name}.css`;
633
664
  // Check if the current theme is already applied
634
665
  const existingStyle = document.querySelector(`style[data-theme="${name}"]`);
635
666
  if (existingStyle) {
@@ -638,7 +669,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
638
669
  _setNavigationLoading(true);
639
670
  try {
640
671
  // Fetch the CSS file via HttpClient
641
- const cssText = await firstValueFrom(http.get(pallete.path, { responseType: 'text' }));
672
+ const cssText = await firstValueFrom(http.get(path, { responseType: 'text' }));
642
673
  // Create a new <style> tag and apply the CSS
643
674
  const style = document.createElement('style');
644
675
  style.setAttribute('data-theme', name);
@@ -662,30 +693,30 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
662
693
  return {
663
694
  // Change theme and update HTML class
664
695
  changeThemeMode(theme) {
665
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.Mode, theme);
696
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.Mode, theme);
666
697
  patchState(store, { currentMode: theme });
667
698
  _updateHtmlClass();
668
699
  },
669
700
  // Open side menu
670
701
  openSideMenu() {
671
702
  patchState(store, { sideMenuState: AXPSideMenuState.Opened });
672
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);
703
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Opened);
673
704
  },
674
705
  // Close side menu
675
706
  closeSideMenu() {
676
707
  patchState(store, { sideMenuState: AXPSideMenuState.Closed });
677
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);
708
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, AXPSideMenuState.Closed);
678
709
  },
679
710
  // Set side menu width
680
711
  setSideMenuWidth(width) {
681
712
  patchState(store, { sideMenuWidth: width });
682
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);
713
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuWidth, width);
683
714
  },
684
715
  // Toggle side menu state
685
716
  toggleSideMenu() {
686
717
  const newSideMenuState = store.sideMenuState() === AXPSideMenuState.Opened ? AXPSideMenuState.Closed : AXPSideMenuState.Opened;
687
718
  patchState(store, { sideMenuState: newSideMenuState });
688
- settingService.scope(AXPSettingScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);
719
+ settingService.scope(AXPPlatformScope.User).set(AXPThemeLayoutSetting.SideMenuStatus, newSideMenuState);
689
720
  },
690
721
  // Set navigation loading state with a task counter
691
722
  setNavigationLoading(value, delay) {
@@ -715,15 +746,19 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
715
746
  },
716
747
  // Set up event listener for window resize
717
748
  _setupResizeListener() {
718
- const listener = () => {
749
+ const subscription = fromEvent(window, 'resize')
750
+ .pipe(debounceTime(250) // 250ms debounce delay
751
+ )
752
+ .subscribe(() => {
719
753
  _updateScreenSize();
720
- };
721
- window.addEventListener('resize', listener);
722
- return listener;
754
+ });
755
+ return subscription;
723
756
  },
724
757
  // Remove event listener for window resize
725
- _removeResizeListener(listener) {
726
- window.removeEventListener('resize', listener);
758
+ _removeResizeListener(subscription) {
759
+ if (subscription) {
760
+ subscription.unsubscribe();
761
+ }
727
762
  },
728
763
  };
729
764
  }),
@@ -731,7 +766,7 @@ withMethods((store, http = inject(HttpClient), settingService = inject(AXPSettin
731
766
  withHooks((store, settingService = inject(AXPSettingService)) => ({
732
767
  onInit() {
733
768
  //
734
- 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) => {
735
770
  const keys = Object.values(AXPThemeLayoutSetting);
736
771
  if (changes.keys.some((key) => keys.includes(key))) {
737
772
  await store.loadSettings();
@@ -741,8 +776,8 @@ withHooks((store, settingService = inject(AXPSettingService)) => ({
741
776
  const listener = store._setupSystemColorListener();
742
777
  patchState(store, { _listener: listener });
743
778
  // Set up event listener for window resize
744
- const resizeListener = store._setupResizeListener();
745
- patchState(store, { _resizeListener: resizeListener });
779
+ const resizeSubscription = store._setupResizeListener();
780
+ patchState(store, { _resizeListener: resizeSubscription });
746
781
  },
747
782
  onDestroy() {
748
783
  // Clean up event listeners when store is destroyed
@@ -750,7 +785,7 @@ withHooks((store, settingService = inject(AXPSettingService)) => ({
750
785
  if (listener) {
751
786
  store._removeSystemColorListener(listener);
752
787
  }
753
- if (resizeListener) {
788
+ if (resizeListener instanceof Subscription) {
754
789
  store._removeResizeListener(resizeListener);
755
790
  }
756
791
  },
@@ -777,35 +812,35 @@ class AXPThemeSlotComponent {
777
812
  <ax-button-item-list>
778
813
  <ax-button-item
779
814
  (onClick)="store.changeThemeMode(variants.Light)"
780
- [text]="(t('theme.light') | async)!"
815
+ [text]="(t('theme-modes.light',{scope:'layout'}) | async)!"
781
816
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
782
817
  >
783
818
  <ax-prefix>
784
- <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
819
+ <ax-icon icon="fa-light fa-brightness"> </ax-icon>
785
820
  </ax-prefix>
786
821
  </ax-button-item>
787
822
  <ax-button-item
788
823
  (onClick)="store.changeThemeMode(variants.Dark)"
789
- [text]="(t('theme.dark') | async)!"
824
+ [text]="(t('theme-modes.dark',{scope:'layout'}) | async)!"
790
825
  [selected]="!store.isSystemMode() && store.isDarkMode()"
791
826
  >
792
827
  <ax-prefix>
793
- <ax-icon icon="fa-solid fa-moon"> </ax-icon>
828
+ <ax-icon icon="fa-light fa-moon"> </ax-icon>
794
829
  </ax-prefix>
795
830
  </ax-button-item>
796
831
  <ax-button-item
797
832
  (onClick)="store.changeThemeMode(variants.System)"
798
- [text]="(t('theme.system') | async)!"
833
+ [text]="(t('theme-modes.system',{scope:'layout'}) | async)!"
799
834
  [selected]="store.isSystemMode()"
800
835
  >
801
836
  <ax-prefix>
802
- <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
837
+ <ax-icon icon="fa-light fa-desktop"> </ax-icon>
803
838
  </ax-prefix>
804
839
  </ax-button-item>
805
840
  </ax-button-item-list>
806
841
  </ax-dropdown-panel>
807
842
  </ax-button>
808
- `, 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]" }] }); }
809
844
  }
810
845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
811
846
  type: Component,
@@ -825,29 +860,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
825
860
  <ax-button-item-list>
826
861
  <ax-button-item
827
862
  (onClick)="store.changeThemeMode(variants.Light)"
828
- [text]="(t('theme.light') | async)!"
863
+ [text]="(t('theme-modes.light',{scope:'layout'}) | async)!"
829
864
  [selected]="!store.isSystemMode() && !store.isDarkMode()"
830
865
  >
831
866
  <ax-prefix>
832
- <ax-icon icon="fa-solid fa-brightness"> </ax-icon>
867
+ <ax-icon icon="fa-light fa-brightness"> </ax-icon>
833
868
  </ax-prefix>
834
869
  </ax-button-item>
835
870
  <ax-button-item
836
871
  (onClick)="store.changeThemeMode(variants.Dark)"
837
- [text]="(t('theme.dark') | async)!"
872
+ [text]="(t('theme-modes.dark',{scope:'layout'}) | async)!"
838
873
  [selected]="!store.isSystemMode() && store.isDarkMode()"
839
874
  >
840
875
  <ax-prefix>
841
- <ax-icon icon="fa-solid fa-moon"> </ax-icon>
876
+ <ax-icon icon="fa-light fa-moon"> </ax-icon>
842
877
  </ax-prefix>
843
878
  </ax-button-item>
844
879
  <ax-button-item
845
880
  (onClick)="store.changeThemeMode(variants.System)"
846
- [text]="(t('theme.system') | async)!"
881
+ [text]="(t('theme-modes.system',{scope:'layout'}) | async)!"
847
882
  [selected]="store.isSystemMode()"
848
883
  >
849
884
  <ax-prefix>
850
- <ax-icon icon="fa-solid fa-desktop"> </ax-icon>
885
+ <ax-icon icon="fa-light fa-desktop"> </ax-icon>
851
886
  </ax-prefix>
852
887
  </ax-button-item>
853
888
  </ax-button-item-list>
@@ -858,177 +893,238 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
858
893
  }]
859
894
  }] });
860
895
 
861
- class AXPThemeSettingProvider {
862
- constructor() {
863
- this.pallets = inject(AXP_THEME_PALETTE_PROVIDER);
864
- }
865
- async provide(context) {
866
- // Define the 'Appearance Settings' group
867
- context.addGroup('appearance', 'Appearance Settings', 'Customize the overall look and feel of the application.', 'fa-light fa-palette')
868
- // Add the 'Brightness & Color' section
869
- .addSection('color', 'Brightness & Color', 'Adjust the theme settings, including brightness, colors, and modes.')
870
- // Add the 'Theme Mode' setting
871
- .addSetting({
872
- key: AXPThemeLayoutSetting.Mode,
873
- title: 'Theme Mode',
874
- scope: 'U',
875
- isInherited: true,
876
- defaultValue: AXPThemeMode.Light,
877
- valueTransforms: objectKeyValueTransforms('id'),
878
- widget: {
879
- type: AXPWidgetsCatalog.select,
880
- options: {
881
- dataSource: Object.entries(AXPThemeMode).map(([key, value]) => ({
882
- id: value,
883
- title: key.charAt(0).toUpperCase() + key.slice(1).toLowerCase(),
884
- })),
885
- },
886
- },
887
- description: 'Switch between Light and Dark themes for the application.',
888
- })
889
- // Add the 'Palette' setting
890
- .addSetting({
891
- key: AXPThemeLayoutSetting.Palette,
892
- title: 'Palette',
893
- scope: 'U',
894
- isInherited: true,
895
- defaultValue: 'default',
896
- valueTransforms: objectKeyValueTransforms('name'),
897
- widget: {
898
- type: AXPWidgetsCatalog.select,
899
- options: {
900
- valueField: 'name',
901
- dataSource: await this.pallets.getList(),
902
- },
903
- },
904
- description: 'Choose a color palette for the application interface.',
905
- })
906
- // End the 'Brightness & Color' section
907
- .endSection()
908
- // Add the 'Scale & Layout' section
909
- .addSection('layout', 'Scale & Layout', 'Customize the application’s layout and scaling options.')
910
- // Add the 'Menu Orientation' setting
911
- .addSetting({
912
- key: AXPThemeLayoutSetting.MenuOrientation,
913
- title: 'Menu Orientation',
914
- scope: 'U',
915
- isInherited: true,
916
- defaultValue: 'vertical',
917
- valueTransforms: objectKeyValueTransforms('id'),
918
- widget: {
919
- type: 'select-editor',
920
- options: {
921
- dataSource: [
922
- { id: 'vertical', title: 'Vertical' },
923
- { id: 'horizontal', title: 'Horizontal' },
924
- ],
925
- },
926
- },
927
- description: 'Set the menu orientation for the application.',
928
- })
929
- // Add the 'Font Style' setting
930
- .addSetting({
931
- key: AXPThemeLayoutSetting.Font,
932
- title: 'Font Style',
933
- scope: 'U',
934
- isInherited: true,
935
- defaultValue: 'system-ui',
936
- valueTransforms: objectKeyValueTransforms('id'),
937
- widget: {
938
- type: 'select-editor',
939
- options: {
940
- dataSource: [
941
- { id: 'system-ui', title: 'Default' },
942
- { id: 'serif', title: 'Serif' },
943
- { id: 'sans-serif', title: 'Sans-serif' },
944
- { id: 'monospace', title: 'Monospace' },
945
- { id: 'arial', title: 'Arial' },
946
- { id: 'verdana', title: 'Verdana' },
947
- { id: 'tahoma', title: 'Tahoma' },
948
- { id: 'times-new-roman', title: 'Times New Roman' },
949
- { id: 'georgia', title: 'Georgia' },
950
- { id: 'helvetica', title: 'Helvetica' },
951
- { id: 'calibri', title: 'Calibri' },
952
- { id: 'cursive', title: 'Cursive' },
953
- ],
954
- },
955
- },
956
- description: 'Set the font style for application text.',
957
- })
958
- // Add the 'Font Size' setting
959
- .addSetting({
960
- key: AXPThemeLayoutSetting.FontSize,
961
- title: 'Font Size',
962
- scope: 'U',
963
- isInherited: true,
964
- defaultValue: 'medium',
965
- valueTransforms: objectKeyValueTransforms('id'),
966
- widget: {
967
- type: 'select-editor',
968
- options: {
969
- dataSource: [
970
- { id: 'small', title: 'Small' },
971
- { id: 'medium', title: 'Medium' },
972
- { id: 'large', title: 'Large' },
973
- { id: 'x-large', title: 'Extra Large' },
974
- ],
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',
975
919
  },
976
920
  },
977
- description: 'Adjust the font size for application text.',
978
- })
979
- // End the 'Scale & Layout' section
980
- .endSection()
981
- // End the 'Appearance Settings' group
982
- .endGroup();
921
+ ]);
983
922
  }
984
923
  }
985
924
 
986
- class AXPThemeColorSelectionWidgetEditComponent extends AXPWidgetComponent {
987
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemeColorSelectionWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
988
- 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: `
989
- <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
990
- <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
991
- item 1
992
- </div>
993
- <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
994
- 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>
995
956
  </div>
996
- </div>
997
-
998
- `, 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 }); }
999
960
  }
1000
- 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: [{
1001
962
  type: Component,
1002
- args: [{
1003
- template: `
1004
- <div axSelectionGroup [multiple]="false" [selectedKeys]="'1'" >
1005
- <div axSelectionItem #a="axSelectionItem" key="1" [class.ax-text-primary-500]="a.isActive()">
1006
- 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>
1007
972
  </div>
1008
- <div axSelectionItem #b="axSelectionItem" key="2" [class.ax-text-primary-500]="b.isActive()">
1009
- 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>
1010
1027
  </div>
1011
- </div>
1012
-
1013
- `,
1014
- standalone: true,
1015
- changeDetection: ChangeDetectionStrategy.OnPush,
1016
- imports: [CommonModule, FormsModule, AXSelectionModule],
1017
- }]
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"] }]
1018
1046
  }] });
1019
1047
 
1020
- var themeColorSelectionWidgetEdit_component = /*#__PURE__*/Object.freeze({
1048
+ var themeModeChooserWidget_component = /*#__PURE__*/Object.freeze({
1021
1049
  __proto__: null,
1022
- AXPThemeColorSelectionWidgetEditComponent: AXPThemeColorSelectionWidgetEditComponent
1050
+ AXPThemeModeChooserWidgetComponent: AXPThemeModeChooserWidgetComponent
1023
1051
  });
1024
1052
 
1025
- const AXPThemeColorSelectionWidget = {
1026
- name: "theme-color-selection",
1027
- title: "Theme Color Selection",
1053
+ const AXPThemeModeChooserWidget = {
1054
+ name: "theme-mode-chooser",
1055
+ title: "Theme Mode Chooser",
1028
1056
  icon: "fa-solid fa-square",
1029
1057
  type: 'editor',
1030
- visible: false,
1031
- 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,
1032
1128
  properties: [
1033
1129
  AXP_NAME_PROPERTY,
1034
1130
  AXP_DATA_PATH_PROPERTY,
@@ -1036,7 +1132,157 @@ const AXPThemeColorSelectionWidget = {
1036
1132
  ],
1037
1133
  components: {
1038
1134
  edit: {
1039
- 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),
1040
1286
  },
1041
1287
  }
1042
1288
  };
@@ -1052,12 +1298,16 @@ class AXPThemesSharedModule {
1052
1298
  }
1053
1299
  });
1054
1300
  }
1055
- 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 }); }
1056
- 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] }); }
1057
1303
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPThemesSharedModule, providers: [
1058
1304
  {
1059
1305
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1060
- 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
+ },
1061
1311
  multi: true
1062
1312
  }
1063
1313
  ], imports: [AXPComponentSlotModule.forRoot({
@@ -1071,7 +1321,11 @@ class AXPThemesSharedModule {
1071
1321
  }),
1072
1322
  AXPLayoutBuilderModule.forChild({
1073
1323
  widgets: [
1074
- AXPThemeColorSelectionWidget
1324
+ AXPThemePaletteChooserWidget,
1325
+ AXPThemeModeChooserWidget,
1326
+ AXPMenuOrientationChooserWidget,
1327
+ AXPFontSizeChooserWidget,
1328
+ AXPFontStyleChooserWidget
1075
1329
  ]
1076
1330
  })] }); }
1077
1331
  }
@@ -1090,7 +1344,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1090
1344
  }),
1091
1345
  AXPLayoutBuilderModule.forChild({
1092
1346
  widgets: [
1093
- AXPThemeColorSelectionWidget
1347
+ AXPThemePaletteChooserWidget,
1348
+ AXPThemeModeChooserWidget,
1349
+ AXPMenuOrientationChooserWidget,
1350
+ AXPFontSizeChooserWidget,
1351
+ AXPFontStyleChooserWidget
1094
1352
  ]
1095
1353
  })
1096
1354
  ],
@@ -1099,98 +1357,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
1099
1357
  providers: [
1100
1358
  {
1101
1359
  provide: AXP_SETTING_DEFINITION_PROVIDER,
1102
- 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
+ },
1103
1365
  multi: true
1104
1366
  }
1105
1367
  ],
1106
1368
  }]
1107
- }], ctorParameters: () => [{ type: i1$2.AXPAppStartUpService }, { type: i0.Injector }] });
1108
-
1109
- class AXPDrawerDirective {
1110
- #effect;
1111
- constructor(el, renderer) {
1112
- this.el = el;
1113
- this.renderer = renderer;
1114
- this.opened = input(false);
1115
- this._opened = signal(false);
1116
- this.#effect = effect(() => {
1117
- this._opened.set(this.opened());
1118
- });
1119
- this.isOpen = computed(() => this._opened());
1120
- this.position = input('start');
1121
- this.mode = input('overlay');
1122
- this.width = input('300px');
1123
- }
1124
- ngOnInit() {
1125
- // Set initial styles
1126
- this.renderer.setStyle(this.el.nativeElement, 'position', 'absolute');
1127
- this.renderer.setStyle(this.el.nativeElement, 'top', '0');
1128
- this.renderer.setStyle(this.el.nativeElement, 'bottom', '0');
1129
- this.renderer.setStyle(this.el.nativeElement, 'height', '100%');
1130
- this.renderer.setStyle(this.el.nativeElement, 'transition', 'transform 0.3s ease-in-out');
1131
- // Setup effects for reactive updates
1132
- effect(() => {
1133
- const position = this.position();
1134
- const width = this.width();
1135
- const isOpen = this.isOpen();
1136
- const mode = this.mode();
1137
- // Set width
1138
- this.renderer.setStyle(this.el.nativeElement, 'width', width);
1139
- // Set position
1140
- if (position === 'start') {
1141
- this.renderer.setStyle(this.el.nativeElement, 'left', '0');
1142
- this.renderer.setStyle(this.el.nativeElement, 'right', null);
1143
- this.renderer.setStyle(this.el.nativeElement, 'transform', isOpen ? 'translateX(0)' : `translateX(-100%)`);
1144
- }
1145
- else {
1146
- this.renderer.setStyle(this.el.nativeElement, 'right', '0');
1147
- this.renderer.setStyle(this.el.nativeElement, 'left', null);
1148
- this.renderer.setStyle(this.el.nativeElement, 'transform', isOpen ? 'translateX(0)' : `translateX(100%)`);
1149
- }
1150
- // Handle push mode
1151
- if (mode === 'push') {
1152
- const container = this.el.nativeElement.parentElement;
1153
- if (container) {
1154
- const translateX = isOpen ? (position === 'start' ? width : `-${width}`) : '0';
1155
- this.renderer.setStyle(container, 'transition', 'transform 0.3s ease-in-out');
1156
- this.renderer.setStyle(container, 'transform', `translateX(${translateX})`);
1157
- }
1158
- }
1159
- });
1160
- }
1161
- toggle() {
1162
- this._opened.set(!this._opened());
1163
- }
1164
- open() {
1165
- this._opened.set(true);
1166
- }
1167
- close() {
1168
- this._opened.set(false);
1169
- }
1170
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPDrawerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
1171
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.3", type: AXPDrawerDirective, isStandalone: true, selector: "[axpDrawer]", inputs: { opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.axp-drawer": "true", "class.axp-drawer-opened": "isOpen()", "class.axp-drawer-closed": "!isOpen()", "class.axp-drawer-overlay": "mode() === \"overlay\"", "class.axp-drawer-push": "mode() === \"push\"", "class.axp-drawer-start": "position() === \"start\"", "class.axp-drawer-end": "position() === \"end\"" } }, exportAs: ["axpDrawer"], ngImport: i0 }); }
1172
- }
1173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPDrawerDirective, decorators: [{
1174
- type: Directive,
1175
- args: [{
1176
- selector: '[axpDrawer]',
1177
- standalone: true,
1178
- host: {
1179
- '[class.axp-drawer]': 'true',
1180
- '[class.axp-drawer-opened]': 'isOpen()',
1181
- '[class.axp-drawer-closed]': '!isOpen()',
1182
- '[class.axp-drawer-overlay]': 'mode() === "overlay"',
1183
- '[class.axp-drawer-push]': 'mode() === "push"',
1184
- '[class.axp-drawer-start]': 'position() === "start"',
1185
- '[class.axp-drawer-end]': 'position() === "end"',
1186
- },
1187
- exportAs: 'axpDrawer'
1188
- }]
1189
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
1369
+ }], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
1190
1370
 
1191
1371
  /**
1192
1372
  * Generated bundle index. Do not edit.
1193
1373
  */
1194
1374
 
1195
- export { AXPDeviceType, AXPDrawerDirective, 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 };
1196
1376
  //# sourceMappingURL=acorex-platform-themes-shared.mjs.map