@acorex/platform 20.0.7 → 20.0.9

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 (76) hide show
  1. package/fesm2022/acorex-platform-auth.mjs +19 -19
  2. package/fesm2022/acorex-platform-auth.mjs.map +1 -1
  3. package/fesm2022/acorex-platform-common.mjs +92 -92
  4. package/fesm2022/acorex-platform-common.mjs.map +1 -1
  5. package/fesm2022/acorex-platform-core.mjs +36 -36
  6. package/fesm2022/acorex-platform-core.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-domain.mjs +16 -16
  8. package/fesm2022/acorex-platform-domain.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-layout-builder.mjs +42 -40
  10. package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-layout-components.mjs +82 -82
  12. package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
  13. package/fesm2022/acorex-platform-layout-designer.mjs +72 -72
  14. package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-layout-entity.mjs +98 -97
  16. package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
  17. package/fesm2022/acorex-platform-layout-views.mjs +15 -15
  18. package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-native.mjs +7 -7
  20. package/fesm2022/acorex-platform-native.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-runtime.mjs +40 -40
  22. package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
  23. package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-DyVB3PZT.mjs → acorex-platform-themes-default-create-entity-view.component-B1cyUyXJ.mjs} +4 -4
  24. package/fesm2022/{acorex-platform-themes-default-create-entity-view.component-DyVB3PZT.mjs.map → acorex-platform-themes-default-create-entity-view.component-B1cyUyXJ.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-CsWVOu-r.mjs → acorex-platform-themes-default-entity-master-create-view.component-DJ_0-SyR.mjs} +4 -4
  26. package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-CsWVOu-r.mjs.map → acorex-platform-themes-default-entity-master-create-view.component-DJ_0-SyR.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DgyzWR29.mjs → acorex-platform-themes-default-entity-master-list-view.component-_-ol0LYC.mjs} +20 -20
  28. package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DgyzWR29.mjs.map → acorex-platform-themes-default-entity-master-list-view.component-_-ol0LYC.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-gJap_TBH.mjs → acorex-platform-themes-default-entity-master-modify-view.component-QQ4bFuiN.mjs} +4 -4
  30. package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-gJap_TBH.mjs.map → acorex-platform-themes-default-entity-master-modify-view.component-QQ4bFuiN.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BUNm9JV5.mjs → acorex-platform-themes-default-entity-master-single-view.component-CEfSqV8l.mjs} +7 -7
  32. package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-BUNm9JV5.mjs.map → acorex-platform-themes-default-entity-master-single-view.component-CEfSqV8l.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-themes-default-error-401.component-DP3msj3d.mjs → acorex-platform-themes-default-error-401.component-CA41DcvL.mjs} +4 -4
  34. package/fesm2022/{acorex-platform-themes-default-error-401.component-DP3msj3d.mjs.map → acorex-platform-themes-default-error-401.component-CA41DcvL.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-themes-default-error-404.component-uvBHGbHY.mjs → acorex-platform-themes-default-error-404.component-DHMnI_Ew.mjs} +4 -4
  36. package/fesm2022/{acorex-platform-themes-default-error-404.component-uvBHGbHY.mjs.map → acorex-platform-themes-default-error-404.component-DHMnI_Ew.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CdXIik4U.mjs → acorex-platform-themes-default-error-offline.component-BmPuSWfS.mjs} +4 -4
  38. package/fesm2022/{acorex-platform-themes-default-error-offline.component-CdXIik4U.mjs.map → acorex-platform-themes-default-error-offline.component-BmPuSWfS.mjs.map} +1 -1
  39. package/fesm2022/acorex-platform-themes-default.mjs +40 -40
  40. package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
  41. package/fesm2022/acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs.map +1 -1
  42. package/fesm2022/acorex-platform-themes-shared.mjs +583 -162
  43. package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
  44. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-CgUkYMwV.mjs → acorex-platform-widgets-button-widget-designer.component-dBuOCox2.mjs} +4 -4
  45. package/fesm2022/{acorex-platform-widgets-button-widget-designer.component-CgUkYMwV.mjs.map → acorex-platform-widgets-button-widget-designer.component-dBuOCox2.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-Dn0U56O7.mjs → acorex-platform-widgets-checkbox-widget-column.component-DAGnRXR6.mjs} +4 -4
  47. package/fesm2022/{acorex-platform-widgets-checkbox-widget-column.component-Dn0U56O7.mjs.map → acorex-platform-widgets-checkbox-widget-column.component-DAGnRXR6.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-BD0-kCi0.mjs → acorex-platform-widgets-checkbox-widget-designer.component-BSGnyPBn.mjs} +4 -4
  49. package/fesm2022/{acorex-platform-widgets-checkbox-widget-designer.component-BD0-kCi0.mjs.map → acorex-platform-widgets-checkbox-widget-designer.component-BSGnyPBn.mjs.map} +1 -1
  50. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-CzCWGDil.mjs → acorex-platform-widgets-checkbox-widget-view.component-C5V7UVN5.mjs} +4 -4
  51. package/fesm2022/{acorex-platform-widgets-checkbox-widget-view.component-CzCWGDil.mjs.map → acorex-platform-widgets-checkbox-widget-view.component-C5V7UVN5.mjs.map} +1 -1
  52. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-BSRAHIPQ.mjs → acorex-platform-widgets-color-box-widget-designer.component-BB3ylFBu.mjs} +4 -4
  53. package/fesm2022/{acorex-platform-widgets-color-box-widget-designer.component-BSRAHIPQ.mjs.map → acorex-platform-widgets-color-box-widget-designer.component-BB3ylFBu.mjs.map} +1 -1
  54. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-hyJf0xT2.mjs → acorex-platform-widgets-file-list-popup.component-B58wkY7i.mjs} +4 -4
  55. package/fesm2022/{acorex-platform-widgets-file-list-popup.component-hyJf0xT2.mjs.map → acorex-platform-widgets-file-list-popup.component-B58wkY7i.mjs.map} +1 -1
  56. package/fesm2022/{acorex-platform-widgets-file-rename-popup.component-BSm6Qew2.mjs → acorex-platform-widgets-file-rename-popup.component-BKkGU_y0.mjs} +7 -7
  57. package/fesm2022/{acorex-platform-widgets-file-rename-popup.component-BSm6Qew2.mjs.map → acorex-platform-widgets-file-rename-popup.component-BKkGU_y0.mjs.map} +1 -1
  58. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-Dlu4Tkou.mjs → acorex-platform-widgets-page-widget-designer.component-DFyDAEzN.mjs} +4 -4
  59. package/fesm2022/{acorex-platform-widgets-page-widget-designer.component-Dlu4Tkou.mjs.map → acorex-platform-widgets-page-widget-designer.component-DFyDAEzN.mjs.map} +1 -1
  60. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DB2IMaLw.mjs → acorex-platform-widgets-rich-text-popup.component-C1QnFtzt.mjs} +4 -4
  61. package/fesm2022/{acorex-platform-widgets-rich-text-popup.component-DB2IMaLw.mjs.map → acorex-platform-widgets-rich-text-popup.component-C1QnFtzt.mjs.map} +1 -1
  62. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CBOUSkL4.mjs → acorex-platform-widgets-tabular-data-edit-popup.component--QOiFzPo.mjs} +4 -4
  63. package/fesm2022/{acorex-platform-widgets-tabular-data-edit-popup.component-CBOUSkL4.mjs.map → acorex-platform-widgets-tabular-data-edit-popup.component--QOiFzPo.mjs.map} +1 -1
  64. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Dl5U2HFR.mjs → acorex-platform-widgets-tabular-data-view-popup.component-D-uJJ-tH.mjs} +4 -4
  65. package/fesm2022/{acorex-platform-widgets-tabular-data-view-popup.component-Dl5U2HFR.mjs.map → acorex-platform-widgets-tabular-data-view-popup.component-D-uJJ-tH.mjs.map} +1 -1
  66. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-CG_2APU3.mjs → acorex-platform-widgets-text-block-widget-designer.component-7C66MAeP.mjs} +4 -4
  67. package/fesm2022/{acorex-platform-widgets-text-block-widget-designer.component-CG_2APU3.mjs.map → acorex-platform-widgets-text-block-widget-designer.component-7C66MAeP.mjs.map} +1 -1
  68. package/fesm2022/acorex-platform-widgets.mjs +942 -976
  69. package/fesm2022/acorex-platform-widgets.mjs.map +1 -1
  70. package/fesm2022/acorex-platform-workflow.mjs +25 -25
  71. package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
  72. package/layout/builder/index.d.ts +2 -0
  73. package/package.json +5 -5
  74. package/widgets/index.d.ts +48 -46
  75. package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-CtCAgeH9.mjs +0 -21
  76. package/fesm2022/acorex-platform-widgets-contact-widget-filter.component-CtCAgeH9.mjs.map +0 -1
@@ -7,23 +7,29 @@ import { AXDropdownModule } from '@acorex/components/dropdown';
7
7
  import * as i1 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
9
  import * as i0 from '@angular/core';
10
- import { computed, inject, Component, InjectionToken, signal, effect, ChangeDetectionStrategy, Injector, NgModule } from '@angular/core';
10
+ import { computed, inject, Component, InjectionToken, signal, effect, ChangeDetectionStrategy, Injectable, Input, Injector, NgModule } from '@angular/core';
11
11
  import { AXPSettingService, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex/platform/common';
12
12
  import { signalStore, withState, withComputed, withMethods, patchState, withHooks } from '@ngrx/signals';
13
13
  import { timer, firstValueFrom, fromEvent, Subscription, filter } from 'rxjs';
14
14
  import { debounceTime } from 'rxjs/operators';
15
15
  import { HttpClient } from '@angular/common/http';
16
- import * as i1$1 from '@acorex/platform/core';
16
+ import * as i1$2 from '@acorex/platform/core';
17
17
  import { AXPPlatformScope } from '@acorex/platform/core';
18
18
  import * as i2$1 from '@acorex/core/translation';
19
19
  import { AXTranslationModule } from '@acorex/core/translation';
20
20
  import * as i3$1 from '@acorex/platform/layout/builder';
21
- import { AXPValueWidgetComponent, AXP_WIDGETS_LAYOUT_CATEGORY, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
21
+ import { AXPValueWidgetComponent, AXP_WIDGETS_LAYOUT_CATEGORY, AXPWidgetGroupEnum, AXPLayoutBuilderModule } from '@acorex/platform/layout/builder';
22
+ import * as i2$3 from '@acorex/platform/layout/components';
23
+ import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
22
24
  import { AXSelectionCdkModule } from '@acorex/cdk/selection';
23
25
  import { FormsModule } from '@angular/forms';
24
26
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY } from '@acorex/platform/widgets';
25
- import * as i2$2 from '@acorex/platform/layout/components';
26
- import { AXPComponentSlotModule } from '@acorex/platform/layout/components';
27
+ import { AXPopupService } from '@acorex/components/popup';
28
+ import * as i2$2 from '@acorex/components/button-group';
29
+ import { AXButtonGroupModule } from '@acorex/components/button-group';
30
+ import { AXBasePageComponent } from '@acorex/components/page';
31
+ import * as i1$1 from '@acorex/components/search-box';
32
+ import { AXSearchBoxModule } from '@acorex/components/search-box';
27
33
 
28
34
  var AXPThemeLayoutSetting;
29
35
  (function (AXPThemeLayoutSetting) {
@@ -396,8 +402,8 @@ class AXPThemeSlotComponent {
396
402
  this.store = inject(AXPLayoutThemeService);
397
403
  this.variants = AXPThemeMode;
398
404
  }
399
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemeSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
400
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.6", type: AXPThemeSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
405
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemeSlotComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
406
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.7", type: AXPThemeSlotComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
401
407
  <ax-button color="primary">
402
408
  <ax-icon
403
409
  class="fa-regular "
@@ -442,7 +448,7 @@ class AXPThemeSlotComponent {
442
448
  </ax-button>
443
449
  `, 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]" }] }); }
444
450
  }
445
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
451
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemeSlotComponent, decorators: [{
446
452
  type: Component,
447
453
  args: [{
448
454
  template: `
@@ -522,68 +528,54 @@ class AXPThemePaletteProviderDefault {
522
528
  }
523
529
  }
524
530
 
525
- class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent {
531
+ class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent {
526
532
  constructor() {
527
533
  super(...arguments);
528
- this.paletteService = inject(AXP_THEME_PALETTE_PROVIDER);
529
- this.palettes = signal([]);
530
- this.selectedPalette = signal(null);
534
+ this.sizes = signal(['small', 'medium', 'large', 'x-large']);
535
+ this.selectedSize = signal(null);
531
536
  this.#eff = effect(() => {
532
537
  if (this.getValue()) {
533
- this.selectedPalette.set(this.palettes().find((p) => p.name === this.getValue()) ??
534
- this.palettes().find((p) => p.name === 'default') ??
535
- this.palettes()[0]);
538
+ this.selectedSize.set(this.sizes().find((s) => s === this.getValue()) ?? this.sizes()[0]);
536
539
  }
537
540
  });
538
541
  }
539
542
  #eff;
540
- async ngOnInit() {
541
- super.ngOnInit();
542
- const palletsProviderInstance = await this.paletteService;
543
- this.palettes.set(await palletsProviderInstance.getList());
544
- }
545
- onPaletteClick(palette) {
546
- this.setValue(palette.name);
543
+ onSizeClick(size) {
544
+ this.setValue(size);
547
545
  }
548
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
549
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPThemePaletteChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
550
- @for (palette of palettes(); track palette.name) {
551
- <div (click)="onPaletteClick(palette)" [class.--selected]="palette.name === selectedPalette()?.name">
552
- <span>{{ palette.title }}</span>
546
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
547
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPFontSizeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
548
+ @for (size of sizes(); track size) {
549
+ <div (click)="onSizeClick(size)" [style.font-size]="size" [class.--selected]="size === selectedSize()">
553
550
  <div>
554
- <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
555
- <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
556
- <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
551
+ <span>{{ 'font-sizes.' + size | translate: { scope: 'layout' } | async }}</span>
557
552
  </div>
558
553
  </div>
559
554
  }
560
- `, 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: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
555
+ `, 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: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
561
556
  }
562
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, decorators: [{
557
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, decorators: [{
563
558
  type: Component,
564
559
  args: [{ template: `
565
- @for (palette of palettes(); track palette.name) {
566
- <div (click)="onPaletteClick(palette)" [class.--selected]="palette.name === selectedPalette()?.name">
567
- <span>{{ palette.title }}</span>
560
+ @for (size of sizes(); track size) {
561
+ <div (click)="onSizeClick(size)" [style.font-size]="size" [class.--selected]="size === selectedSize()">
568
562
  <div>
569
- <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
570
- <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
571
- <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
563
+ <span>{{ 'font-sizes.' + size | translate: { scope: 'layout' } | async }}</span>
572
564
  </div>
573
565
  </div>
574
566
  }
575
- `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, AXSelectionCdkModule], 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"] }]
567
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionCdkModule, 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"] }]
576
568
  }] });
577
569
 
578
- var themePaletteChooserWidget_component = /*#__PURE__*/Object.freeze({
570
+ var fontSizeChooserWidget_component = /*#__PURE__*/Object.freeze({
579
571
  __proto__: null,
580
- AXPThemePaletteChooserWidgetComponent: AXPThemePaletteChooserWidgetComponent
572
+ AXPFontSizeChooserWidgetComponent: AXPFontSizeChooserWidgetComponent
581
573
  });
582
574
 
583
- const AXPThemePaletteChooserWidget = {
584
- name: "theme-palette-chooser",
585
- title: "Theme Palette Chooser",
586
- icon: "fa-solid fa-square",
575
+ const AXPFontSizeChooserWidget = {
576
+ name: "font-size-chooser",
577
+ title: "Font Size Chooser",
578
+ icon: "fa-light fa-text-size",
587
579
  type: 'editor',
588
580
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
589
581
  properties: [
@@ -593,65 +585,81 @@ const AXPThemePaletteChooserWidget = {
593
585
  ],
594
586
  components: {
595
587
  edit: {
596
- component: () => Promise.resolve().then(function () { return themePaletteChooserWidget_component; }).then((c) => c.AXPThemePaletteChooserWidgetComponent),
588
+ component: () => Promise.resolve().then(function () { return fontSizeChooserWidget_component; }).then((c) => c.AXPFontSizeChooserWidgetComponent),
597
589
  },
598
590
  }
599
591
  };
600
592
 
601
- class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent {
593
+ class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent {
602
594
  constructor() {
603
595
  super(...arguments);
604
- this.modes = signal([
605
- { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },
606
- { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },
607
- { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },
596
+ this.fonts = signal([
597
+ { id: 'system-ui', title: 'Default' },
598
+ { id: 'serif', title: 'Serif' },
599
+ { id: 'sans-serif', title: 'Sans-serif' },
600
+ { id: 'monospace', title: 'Monospace' },
601
+ { id: 'arial', title: 'Arial' },
602
+ { id: 'verdana', title: 'Verdana' },
603
+ { id: 'tahoma', title: 'Tahoma' },
604
+ { id: 'times-new-roman', title: 'Times New Roman' },
605
+ { id: 'georgia', title: 'Georgia' },
606
+ { id: 'helvetica', title: 'Helvetica' },
607
+ { id: 'calibri', title: 'Calibri' },
608
+ { id: 'cursive', title: 'Cursive' },
609
+ { id: 'vazirmatn', title: 'Vazir وزیر' },
608
610
  ]);
609
- this.selectedMode = signal(null);
611
+ this.selectedFont = signal(null);
610
612
  this.#eff = effect(() => {
611
613
  if (this.getValue()) {
612
- this.selectedMode.set(this.modes().find((m) => m.id === this.getValue()) ?? this.modes()[0]);
614
+ this.selectedFont.set(this.fonts().find((f) => f.id === this.getValue()) ?? this.fonts()[0]);
613
615
  }
614
616
  });
615
617
  }
616
618
  #eff;
617
- onModeClick(mode) {
618
- this.setValue(mode.id);
619
+ onFontClick(font) {
620
+ this.setValue(font.id);
619
621
  }
620
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
621
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPThemeModeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
622
- @for (mode of modes(); track mode.id) {
623
- <div (click)="onModeClick(mode)" [class.--selected]="mode.id === selectedMode()?.id">
622
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
623
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPFontStyleChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
624
+ @for (font of fonts(); track font.id) {
625
+ <div
626
+ (click)="onFontClick(font)"
627
+ [class.--selected]="font.id === selectedFont()?.id"
628
+ [style.font-family]="font.id"
629
+ >
624
630
  <div>
625
- <i [class]="mode.icon"></i>
631
+ <span>{{ font.title }}</span>
626
632
  </div>
627
- <span>{{ 'theme-modes.' + mode.id | translate: { scope: 'layout' } | async }}</span>
628
633
  </div>
629
634
  }
630
- `, 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: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
635
+ `, 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: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
631
636
  }
632
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, decorators: [{
637
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, decorators: [{
633
638
  type: Component,
634
639
  args: [{ template: `
635
- @for (mode of modes(); track mode.id) {
636
- <div (click)="onModeClick(mode)" [class.--selected]="mode.id === selectedMode()?.id">
640
+ @for (font of fonts(); track font.id) {
641
+ <div
642
+ (click)="onFontClick(font)"
643
+ [class.--selected]="font.id === selectedFont()?.id"
644
+ [style.font-family]="font.id"
645
+ >
637
646
  <div>
638
- <i [class]="mode.icon"></i>
647
+ <span>{{ font.title }}</span>
639
648
  </div>
640
- <span>{{ 'theme-modes.' + mode.id | translate: { scope: 'layout' } | async }}</span>
641
649
  </div>
642
650
  }
643
- `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionCdkModule, 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"] }]
651
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, AXSelectionCdkModule], 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"] }]
644
652
  }] });
645
653
 
646
- var themeModeChooserWidget_component = /*#__PURE__*/Object.freeze({
654
+ var fontStyleChooserWidget_component = /*#__PURE__*/Object.freeze({
647
655
  __proto__: null,
648
- AXPThemeModeChooserWidgetComponent: AXPThemeModeChooserWidgetComponent
656
+ AXPFontStyleChooserWidgetComponent: AXPFontStyleChooserWidgetComponent
649
657
  });
650
658
 
651
- const AXPThemeModeChooserWidget = {
652
- name: "theme-mode-chooser",
653
- title: "Theme Mode Chooser",
654
- icon: "fa-solid fa-square",
659
+ const AXPFontStyleChooserWidget = {
660
+ name: "font-style-chooser",
661
+ title: "Font Style Chooser",
662
+ icon: "fa-light fa-font",
655
663
  type: 'editor',
656
664
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
657
665
  properties: [
@@ -661,11 +669,424 @@ const AXPThemeModeChooserWidget = {
661
669
  ],
662
670
  components: {
663
671
  edit: {
664
- component: () => Promise.resolve().then(function () { return themeModeChooserWidget_component; }).then((c) => c.AXPThemeModeChooserWidgetComponent),
672
+ component: () => Promise.resolve().then(function () { return fontStyleChooserWidget_component; }).then((c) => c.AXPFontStyleChooserWidgetComponent),
665
673
  },
666
674
  }
667
675
  };
668
676
 
677
+ class AXPIconProvider {
678
+ }
679
+ class AXPIconStyleProvider {
680
+ }
681
+ const DEFAULT_ICON_STYLES = [
682
+ { name: 'fa-solid', label: 'Solid' },
683
+ { name: 'fa-regular', label: 'Regular' },
684
+ ];
685
+ const DEFAULT_ICONS = [
686
+ { name: 'house', label: 'House', tags: ['home', 'building'], supportedStyle: ['fa-regular'] },
687
+ { name: 'magnifying-glass', label: 'Search', tags: ['find', 'zoom'], supportedStyle: ['fa-solid'] },
688
+ { name: 'user', label: 'User', tags: ['person', 'account'] },
689
+ { name: 'check', label: 'Check', tags: ['confirm', 'done'] },
690
+ { name: 'xmark', label: 'Close', tags: ['cancel', 'exit'] },
691
+ { name: 'star', label: 'Star', tags: ['favorite', 'rate'] },
692
+ { name: 'heart', label: 'Heart', tags: ['love', 'like'] },
693
+ { name: 'cloud', label: 'Cloud', tags: ['weather', 'sky'] },
694
+ { name: 'envelope', label: 'Envelope', tags: ['mail', 'message'] },
695
+ { name: 'folder', label: 'Folder', tags: ['directory', 'files'] },
696
+ { name: 'gear', label: 'Gear', tags: ['settings', 'options'] },
697
+ { name: 'camera', label: 'Camera', tags: ['photo', 'image'] },
698
+ { name: 'video', label: 'Video', tags: ['film', 'movie'] },
699
+ { name: 'music', label: 'Music', tags: ['sound', 'audio'] },
700
+ { name: 'file-lines', label: 'File', tags: ['document', 'text'] },
701
+ ];
702
+ class AXPIconProviderDefault extends AXPIconProvider {
703
+ async provide() {
704
+ return DEFAULT_ICONS;
705
+ }
706
+ }
707
+ class AXPIconStyleProviderDefault extends AXPIconStyleProvider {
708
+ async provide() {
709
+ return DEFAULT_ICON_STYLES;
710
+ }
711
+ }
712
+ const AXP_ICON_PROVIDER = new InjectionToken('AXP_ICON_PROVIDER');
713
+ const AXP_ICON_STYLE_PROVIDER = new InjectionToken('AXP_ICON_STYLE_PROVIDER');
714
+ class AXPIconChooserService {
715
+ constructor() {
716
+ this.defaultIconProvider = new AXPIconProviderDefault();
717
+ this.iconProviders = (() => {
718
+ const injected = inject(AXP_ICON_PROVIDER, { optional: true });
719
+ if (!injected) {
720
+ return [this.defaultIconProvider];
721
+ }
722
+ const providers = Array.isArray(injected) ? injected : [injected];
723
+ return [...providers, this.defaultIconProvider];
724
+ })();
725
+ this.defaultStyleProvider = new AXPIconStyleProviderDefault();
726
+ this.styleProviders = (() => {
727
+ const injected = inject(AXP_ICON_STYLE_PROVIDER, { optional: true });
728
+ if (!injected) {
729
+ return [this.defaultStyleProvider];
730
+ }
731
+ const providers = Array.isArray(injected) ? injected : [injected];
732
+ return [...providers, this.defaultStyleProvider];
733
+ })();
734
+ this.iconsCache = null;
735
+ this.stylesCache = null;
736
+ }
737
+ async getStyles() {
738
+ if (this.stylesCache) {
739
+ return this.stylesCache;
740
+ }
741
+ const allStyles = [];
742
+ for (const resolver of this.styleProviders) {
743
+ const result = await resolver.provide();
744
+ allStyles.push(...result);
745
+ }
746
+ const uniqueStyles = allStyles.filter((style, index, self) => index === self.findIndex((s) => s.name === style.name));
747
+ this.stylesCache = uniqueStyles;
748
+ return uniqueStyles;
749
+ }
750
+ async getIcons() {
751
+ if (this.iconsCache) {
752
+ return this.iconsCache;
753
+ }
754
+ const allIcons = [];
755
+ for (const resolver of this.iconProviders) {
756
+ const result = await resolver.provide();
757
+ allIcons.push(...result);
758
+ }
759
+ const uniqueIcons = allIcons.filter((icon, index, self) => index === self.findIndex((i) => i.name === icon.name));
760
+ this.iconsCache = uniqueIcons;
761
+ return uniqueIcons;
762
+ }
763
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
764
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserService }); }
765
+ }
766
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserService, decorators: [{
767
+ type: Injectable
768
+ }] });
769
+
770
+ class AXPIconChooserPopupComponent extends AXBasePageComponent {
771
+ constructor() {
772
+ super(...arguments);
773
+ this.icons = [];
774
+ this.filteredIcons = [];
775
+ this.searchQuery = '';
776
+ this.viewModes = [
777
+ { value: 'square', text: 'Square View', icon: 'fa-solid fa-border-all' },
778
+ {
779
+ value: 'rectangle',
780
+ text: 'Rectangle View',
781
+ icon: 'fa-solid fa-list',
782
+ },
783
+ ];
784
+ this.selectedViewMode = 'square';
785
+ this.iconTypes = [];
786
+ this.selectedIconType = 'fa-solid';
787
+ this.popupService = inject(AXPIconChooserService);
788
+ }
789
+ async ngOnInit() {
790
+ this.iconTypes = await this.popupService.getStyles();
791
+ this.icons = await this.popupService.getIcons();
792
+ this.applyFilters();
793
+ this.cdr.detectChanges();
794
+ }
795
+ handleSearch(event) {
796
+ this.searchQuery = event.value?.toLowerCase();
797
+ this.applyFilters();
798
+ }
799
+ handleViewModeChange(mode) {
800
+ this.selectedViewMode = mode.value;
801
+ }
802
+ handleIconTypeChange(type) {
803
+ this.selectedIconType = type.name;
804
+ this.applyFilters();
805
+ }
806
+ applyFilters() {
807
+ let result = this.icons;
808
+ if (this.searchQuery) {
809
+ result = result.filter((icon) => icon.label.toLowerCase().includes(this.searchQuery) ||
810
+ icon.tags?.some((tag) => tag.toLowerCase().includes(this.searchQuery)));
811
+ }
812
+ result = result.filter((icon) => {
813
+ if (!icon.supportedStyle || icon.supportedStyle.length === 0) {
814
+ return true;
815
+ }
816
+ return icon.supportedStyle.includes(this.selectedIconType);
817
+ });
818
+ this.filteredIcons = result;
819
+ }
820
+ selectIcon(icon) {
821
+ this.close(this.getIconClass(icon));
822
+ }
823
+ getIconClass(icon) {
824
+ return `${this.selectedIconType} fa-${icon.name}`;
825
+ }
826
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
827
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPIconChooserPopupComponent, isStandalone: true, selector: "ng-component", inputs: { value: "value" }, providers: [AXPIconChooserService], usesInheritance: true, ngImport: i0, template: `
828
+ <div class="ax-flex ax-flex-col ax-h-full ax-p-4 ax-gap-4 ax-bg-lightest">
829
+ <div class="ax-flex ax-justify-center">
830
+ <ax-search-box
831
+ class="ax-w-full md:ax-w-1/2"
832
+ (onValueChanged)="handleSearch($event)"
833
+ placeholder="Search for icons..."
834
+ ></ax-search-box>
835
+ </div>
836
+
837
+ <div class="ax-flex ax-justify-between ax-items-center ax-flex-wrap ax-gap-2">
838
+ <ax-button-group selection="single" look="outline">
839
+ @for (item of iconTypes; track item.name) {
840
+ <ax-button-group-item
841
+ [text]="item.label"
842
+ [selected]="item.name === selectedIconType"
843
+ (onClick)="handleIconTypeChange(item)"
844
+ >
845
+ </ax-button-group-item>
846
+ }
847
+ </ax-button-group>
848
+
849
+ <ax-button-group selection="single" look="outline">
850
+ @for (item of viewModes; track item.value) {
851
+ <ax-button-group-item
852
+ [title]="item.text"
853
+ [selected]="item.value === selectedViewMode"
854
+ (onClick)="handleViewModeChange(item)"
855
+ >
856
+ <ax-icon [class]="item.icon"></ax-icon>
857
+ </ax-button-group-item>
858
+ }
859
+ </ax-button-group>
860
+ </div>
861
+
862
+ <div class="ax-flex-1 ax-overflow-y-auto ax-pr-2">
863
+ <div
864
+ class="ax-grid ax-gap-4"
865
+ [ngClass]="
866
+ selectedViewMode === 'square'
867
+ ? 'ax-grid-cols-[repeat(auto-fill,minmax(6rem,1fr))]'
868
+ : 'ax-grid-cols-1 md:ax-grid-cols-2'
869
+ "
870
+ >
871
+ @for (icon of filteredIcons; track icon) {
872
+ <div
873
+ class="ax-p-4 ax-border ax-border-transparent ax-rounded-lg ax-flex ax-items-center ax-justify-center ax-gap-2 ax-cursor-pointer ax-transition-all ax-duration-200 ax-ease-in-out hover:ax-border-primary hover:ax-shadow-md"
874
+ [ngClass]="{
875
+ 'ax-flex-col': selectedViewMode === 'square',
876
+ 'ax-flex-row ax-justify-start': selectedViewMode === 'rectangle',
877
+ }"
878
+ (click)="selectIcon(icon)"
879
+ >
880
+ <i [class]="getIconClass(icon) + ' ax-text-3xl'"></i>
881
+ <span
882
+ class="ax-text-xs ax-w-full ax-overflow-hidden ax-text-ellipsis ax-whitespace-nowrap"
883
+ [ngClass]="{
884
+ 'ax-text-center': selectedViewMode === 'square',
885
+ 'ax-text-left': selectedViewMode === 'rectangle',
886
+ }"
887
+ >{{ icon.label }}</span
888
+ >
889
+ </div>
890
+ }
891
+ </div>
892
+ </div>
893
+ </div>
894
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i1$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "component", type: i2$2.AXButtonGroupComponent, selector: "ax-button-group", inputs: ["disabled", "color", "look", "selection"], outputs: ["onBlur", "onFocus", "lookChange", "colorChange", "disabledChange", "onClick", "selectionChange", "selectedButtonChange"] }, { kind: "component", type: i2$2.AXButtonGroupItemComponent, selector: "ax-button-group-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
895
+ }
896
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserPopupComponent, decorators: [{
897
+ type: Component,
898
+ args: [{
899
+ standalone: true,
900
+ template: `
901
+ <div class="ax-flex ax-flex-col ax-h-full ax-p-4 ax-gap-4 ax-bg-lightest">
902
+ <div class="ax-flex ax-justify-center">
903
+ <ax-search-box
904
+ class="ax-w-full md:ax-w-1/2"
905
+ (onValueChanged)="handleSearch($event)"
906
+ placeholder="Search for icons..."
907
+ ></ax-search-box>
908
+ </div>
909
+
910
+ <div class="ax-flex ax-justify-between ax-items-center ax-flex-wrap ax-gap-2">
911
+ <ax-button-group selection="single" look="outline">
912
+ @for (item of iconTypes; track item.name) {
913
+ <ax-button-group-item
914
+ [text]="item.label"
915
+ [selected]="item.name === selectedIconType"
916
+ (onClick)="handleIconTypeChange(item)"
917
+ >
918
+ </ax-button-group-item>
919
+ }
920
+ </ax-button-group>
921
+
922
+ <ax-button-group selection="single" look="outline">
923
+ @for (item of viewModes; track item.value) {
924
+ <ax-button-group-item
925
+ [title]="item.text"
926
+ [selected]="item.value === selectedViewMode"
927
+ (onClick)="handleViewModeChange(item)"
928
+ >
929
+ <ax-icon [class]="item.icon"></ax-icon>
930
+ </ax-button-group-item>
931
+ }
932
+ </ax-button-group>
933
+ </div>
934
+
935
+ <div class="ax-flex-1 ax-overflow-y-auto ax-pr-2">
936
+ <div
937
+ class="ax-grid ax-gap-4"
938
+ [ngClass]="
939
+ selectedViewMode === 'square'
940
+ ? 'ax-grid-cols-[repeat(auto-fill,minmax(6rem,1fr))]'
941
+ : 'ax-grid-cols-1 md:ax-grid-cols-2'
942
+ "
943
+ >
944
+ @for (icon of filteredIcons; track icon) {
945
+ <div
946
+ class="ax-p-4 ax-border ax-border-transparent ax-rounded-lg ax-flex ax-items-center ax-justify-center ax-gap-2 ax-cursor-pointer ax-transition-all ax-duration-200 ax-ease-in-out hover:ax-border-primary hover:ax-shadow-md"
947
+ [ngClass]="{
948
+ 'ax-flex-col': selectedViewMode === 'square',
949
+ 'ax-flex-row ax-justify-start': selectedViewMode === 'rectangle',
950
+ }"
951
+ (click)="selectIcon(icon)"
952
+ >
953
+ <i [class]="getIconClass(icon) + ' ax-text-3xl'"></i>
954
+ <span
955
+ class="ax-text-xs ax-w-full ax-overflow-hidden ax-text-ellipsis ax-whitespace-nowrap"
956
+ [ngClass]="{
957
+ 'ax-text-center': selectedViewMode === 'square',
958
+ 'ax-text-left': selectedViewMode === 'rectangle',
959
+ }"
960
+ >{{ icon.label }}</span
961
+ >
962
+ </div>
963
+ }
964
+ </div>
965
+ </div>
966
+ </div>
967
+ `,
968
+ imports: [AXSearchBoxModule, AXButtonGroupModule, CommonModule, AXDecoratorModule],
969
+ providers: [AXPIconChooserService],
970
+ changeDetection: ChangeDetectionStrategy.OnPush,
971
+ }]
972
+ }], propDecorators: { value: [{
973
+ type: Input
974
+ }] } });
975
+
976
+ class AXPIconChooserWidgetComponent extends AXPValueWidgetComponent {
977
+ constructor() {
978
+ super(...arguments);
979
+ this.popupService = inject(AXPopupService);
980
+ }
981
+ async openPopup() {
982
+ const result = await this.popupService.open(AXPIconChooserPopupComponent, {
983
+ title: 'Choose Icon',
984
+ size: 'md',
985
+ data: {
986
+ value: this.getValue(),
987
+ },
988
+ });
989
+ if (result?.data) {
990
+ this.setValue(result.data);
991
+ }
992
+ }
993
+ addIcon() {
994
+ if (!this.getValue()) {
995
+ this.openPopup();
996
+ }
997
+ }
998
+ deleteIcon() {
999
+ this.setValue(null);
1000
+ }
1001
+ editIcon() {
1002
+ this.openPopup();
1003
+ }
1004
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1005
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPIconChooserWidgetComponent, isStandalone: true, selector: "ax-icon-chooser-widget", usesInheritance: true, ngImport: i0, template: `<div class="ax-p-4 ax-w-fit">
1006
+ <div
1007
+ class="ax-grid ax-grid-cols-[6rem_auto] ax-items-center ax-rounded-md ax-text-3xl ax-w-fit"
1008
+ [class.ax-border]="getValue()"
1009
+ >
1010
+ <!-- Left: Add or Selected Icon -->
1011
+ <div
1012
+ class="ax-grid ax-place-items-center ax-w-24 ax-h-24 "
1013
+ [class]="getValue() ? 'ax-border-e ax-cursor-default' : 'icon-container ax-cursor-pointer'"
1014
+ (click)="addIcon()"
1015
+ >
1016
+ <i [class]="getValue() || 'fa-solid fa-plus'"></i>
1017
+ </div>
1018
+
1019
+ <!-- Right: Edit & Delete (only if value exists) -->
1020
+ @if (getValue()) {
1021
+ <div class="ax-flex ax-flex-col ax-w-16 ax-text-2xl">
1022
+ <div class="ax-h-12 ax-grid ax-place-items-center ax-cursor-pointer hover:ax-bg-surface" (click)="editIcon()">
1023
+ <i class="fa-light fa-edit ax-text-primary-400"></i>
1024
+ </div>
1025
+ <div
1026
+ class="ax-h-12 ax-grid ax-place-items-center ax-cursor-pointer ax-border-t hover:ax-bg-surface"
1027
+ (click)="deleteIcon()"
1028
+ >
1029
+ <i class="fa-light fa-trash-can ax-text-danger-400"></i>
1030
+ </div>
1031
+ </div>
1032
+ }
1033
+ </div>
1034
+ </div> `, isInline: true, styles: [":host{display:block;height:100%}.icon-container{background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1035
+ }
1036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPIconChooserWidgetComponent, decorators: [{
1037
+ type: Component,
1038
+ args: [{ selector: 'ax-icon-chooser-widget', template: `<div class="ax-p-4 ax-w-fit">
1039
+ <div
1040
+ class="ax-grid ax-grid-cols-[6rem_auto] ax-items-center ax-rounded-md ax-text-3xl ax-w-fit"
1041
+ [class.ax-border]="getValue()"
1042
+ >
1043
+ <!-- Left: Add or Selected Icon -->
1044
+ <div
1045
+ class="ax-grid ax-place-items-center ax-w-24 ax-h-24 "
1046
+ [class]="getValue() ? 'ax-border-e ax-cursor-default' : 'icon-container ax-cursor-pointer'"
1047
+ (click)="addIcon()"
1048
+ >
1049
+ <i [class]="getValue() || 'fa-solid fa-plus'"></i>
1050
+ </div>
1051
+
1052
+ <!-- Right: Edit & Delete (only if value exists) -->
1053
+ @if (getValue()) {
1054
+ <div class="ax-flex ax-flex-col ax-w-16 ax-text-2xl">
1055
+ <div class="ax-h-12 ax-grid ax-place-items-center ax-cursor-pointer hover:ax-bg-surface" (click)="editIcon()">
1056
+ <i class="fa-light fa-edit ax-text-primary-400"></i>
1057
+ </div>
1058
+ <div
1059
+ class="ax-h-12 ax-grid ax-place-items-center ax-cursor-pointer ax-border-t hover:ax-bg-surface"
1060
+ (click)="deleteIcon()"
1061
+ >
1062
+ <i class="fa-light fa-trash-can ax-text-danger-400"></i>
1063
+ </div>
1064
+ </div>
1065
+ }
1066
+ </div>
1067
+ </div> `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [":host{display:block;height:100%}.icon-container{background-color:rgba(var(--ax-sys-color-primary-300),10%);background-image:linear-gradient(135deg,rgba(var(--ax-sys-color-primary-300),50%) 10%,transparent 0,transparent 50%,rgba(var(--ax-sys-color-primary-300),50%) 0,rgba(var(--ax-sys-color-primary-300),50%) 60%,transparent 0,transparent);background-size:7.5px 7.5px}\n"] }]
1068
+ }] });
1069
+
1070
+ var iconChooserWidget_component = /*#__PURE__*/Object.freeze({
1071
+ __proto__: null,
1072
+ AXPIconChooserWidgetComponent: AXPIconChooserWidgetComponent
1073
+ });
1074
+
1075
+ const AXPIconChooserWidget = {
1076
+ name: 'icon-chooser',
1077
+ title: 'Icon Chooser',
1078
+ icon: 'fa-solid fa-icons',
1079
+ type: 'editor',
1080
+ categories: AXP_WIDGETS_LAYOUT_CATEGORY,
1081
+ groups: [AXPWidgetGroupEnum.FormElement],
1082
+ properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
1083
+ components: {
1084
+ edit: {
1085
+ component: () => Promise.resolve().then(function () { return iconChooserWidget_component; }).then((c) => c.AXPIconChooserWidgetComponent),
1086
+ },
1087
+ },
1088
+ };
1089
+
669
1090
  class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent {
670
1091
  constructor() {
671
1092
  super(...arguments);
@@ -684,8 +1105,8 @@ class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent {
684
1105
  onOrientationClick(orientation) {
685
1106
  this.setValue(orientation.id);
686
1107
  }
687
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
688
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPMenuOrientationChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1108
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1109
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPMenuOrientationChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
689
1110
  @for (orientation of orientations(); track orientation.id) {
690
1111
  <div (click)="onOrientationClick(orientation)" [class.--selected]="orientation.id === selectedOrientation()?.id">
691
1112
  <div>
@@ -696,7 +1117,7 @@ class AXPMenuOrientationChooserWidgetComponent extends AXPValueWidgetComponent {
696
1117
  }
697
1118
  `, 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: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
698
1119
  }
699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, decorators: [{
1120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPMenuOrientationChooserWidgetComponent, decorators: [{
700
1121
  type: Component,
701
1122
  args: [{ template: `
702
1123
  @for (orientation of orientations(); track orientation.id) {
@@ -733,76 +1154,60 @@ const AXPMenuOrientationChooserWidget = {
733
1154
  }
734
1155
  };
735
1156
 
736
- class AXPFontStyleChooserWidgetComponent extends AXPValueWidgetComponent {
1157
+ class AXPThemeModeChooserWidgetComponent extends AXPValueWidgetComponent {
737
1158
  constructor() {
738
1159
  super(...arguments);
739
- this.fonts = signal([
740
- { id: 'system-ui', title: 'Default' },
741
- { id: 'serif', title: 'Serif' },
742
- { id: 'sans-serif', title: 'Sans-serif' },
743
- { id: 'monospace', title: 'Monospace' },
744
- { id: 'arial', title: 'Arial' },
745
- { id: 'verdana', title: 'Verdana' },
746
- { id: 'tahoma', title: 'Tahoma' },
747
- { id: 'times-new-roman', title: 'Times New Roman' },
748
- { id: 'georgia', title: 'Georgia' },
749
- { id: 'helvetica', title: 'Helvetica' },
750
- { id: 'calibri', title: 'Calibri' },
751
- { id: 'cursive', title: 'Cursive' },
752
- { id: 'vazirmatn', title: 'Vazir وزیر' },
1160
+ this.modes = signal([
1161
+ { id: AXPThemeMode.Light, icon: 'fa-light fa-brightness' },
1162
+ { id: AXPThemeMode.Dark, icon: 'fa-light fa-moon' },
1163
+ { id: AXPThemeMode.System, icon: 'fa-light fa-desktop' },
753
1164
  ]);
754
- this.selectedFont = signal(null);
1165
+ this.selectedMode = signal(null);
755
1166
  this.#eff = effect(() => {
756
1167
  if (this.getValue()) {
757
- this.selectedFont.set(this.fonts().find((f) => f.id === this.getValue()) ?? this.fonts()[0]);
1168
+ this.selectedMode.set(this.modes().find((m) => m.id === this.getValue()) ?? this.modes()[0]);
758
1169
  }
759
1170
  });
760
1171
  }
761
1172
  #eff;
762
- onFontClick(font) {
763
- this.setValue(font.id);
1173
+ onModeClick(mode) {
1174
+ this.setValue(mode.id);
764
1175
  }
765
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
766
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPFontStyleChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
767
- @for (font of fonts(); track font.id) {
768
- <div
769
- (click)="onFontClick(font)"
770
- [class.--selected]="font.id === selectedFont()?.id"
771
- [style.font-family]="font.id"
772
- >
1176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPThemeModeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1178
+ @for (mode of modes(); track mode.id) {
1179
+ <div (click)="onModeClick(mode)" [class.--selected]="mode.id === selectedMode()?.id">
773
1180
  <div>
774
- <span>{{ font.title }}</span>
1181
+ <i [class]="mode.icon"></i>
775
1182
  </div>
1183
+ <span>{{ 'theme-modes.' + mode.id | translate: { scope: 'layout' } | async }}</span>
776
1184
  </div>
777
1185
  }
778
- `, 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: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1186
+ `, 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: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
779
1187
  }
780
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPFontStyleChooserWidgetComponent, decorators: [{
1188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemeModeChooserWidgetComponent, decorators: [{
781
1189
  type: Component,
782
1190
  args: [{ template: `
783
- @for (font of fonts(); track font.id) {
784
- <div
785
- (click)="onFontClick(font)"
786
- [class.--selected]="font.id === selectedFont()?.id"
787
- [style.font-family]="font.id"
788
- >
1191
+ @for (mode of modes(); track mode.id) {
1192
+ <div (click)="onModeClick(mode)" [class.--selected]="mode.id === selectedMode()?.id">
789
1193
  <div>
790
- <span>{{ font.title }}</span>
1194
+ <i [class]="mode.icon"></i>
791
1195
  </div>
1196
+ <span>{{ 'theme-modes.' + mode.id | translate: { scope: 'layout' } | async }}</span>
792
1197
  </div>
793
1198
  }
794
- `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, AXSelectionCdkModule], 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"] }]
1199
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionCdkModule, 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"] }]
795
1200
  }] });
796
1201
 
797
- var fontStyleChooserWidget_component = /*#__PURE__*/Object.freeze({
1202
+ var themeModeChooserWidget_component = /*#__PURE__*/Object.freeze({
798
1203
  __proto__: null,
799
- AXPFontStyleChooserWidgetComponent: AXPFontStyleChooserWidgetComponent
1204
+ AXPThemeModeChooserWidgetComponent: AXPThemeModeChooserWidgetComponent
800
1205
  });
801
1206
 
802
- const AXPFontStyleChooserWidget = {
803
- name: "font-style-chooser",
804
- title: "Font Style Chooser",
805
- icon: "fa-light fa-font",
1207
+ const AXPThemeModeChooserWidget = {
1208
+ name: "theme-mode-chooser",
1209
+ title: "Theme Mode Chooser",
1210
+ icon: "fa-solid fa-square",
806
1211
  type: 'editor',
807
1212
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
808
1213
  properties: [
@@ -812,59 +1217,73 @@ const AXPFontStyleChooserWidget = {
812
1217
  ],
813
1218
  components: {
814
1219
  edit: {
815
- component: () => Promise.resolve().then(function () { return fontStyleChooserWidget_component; }).then((c) => c.AXPFontStyleChooserWidgetComponent),
1220
+ component: () => Promise.resolve().then(function () { return themeModeChooserWidget_component; }).then((c) => c.AXPThemeModeChooserWidgetComponent),
816
1221
  },
817
1222
  }
818
1223
  };
819
1224
 
820
- class AXPFontSizeChooserWidgetComponent extends AXPValueWidgetComponent {
1225
+ class AXPThemePaletteChooserWidgetComponent extends AXPValueWidgetComponent {
821
1226
  constructor() {
822
1227
  super(...arguments);
823
- this.sizes = signal(['small', 'medium', 'large', 'x-large']);
824
- this.selectedSize = signal(null);
1228
+ this.paletteService = inject(AXP_THEME_PALETTE_PROVIDER);
1229
+ this.palettes = signal([]);
1230
+ this.selectedPalette = signal(null);
825
1231
  this.#eff = effect(() => {
826
1232
  if (this.getValue()) {
827
- this.selectedSize.set(this.sizes().find((s) => s === this.getValue()) ?? this.sizes()[0]);
1233
+ this.selectedPalette.set(this.palettes().find((p) => p.name === this.getValue()) ??
1234
+ this.palettes().find((p) => p.name === 'default') ??
1235
+ this.palettes()[0]);
828
1236
  }
829
1237
  });
830
1238
  }
831
1239
  #eff;
832
- onSizeClick(size) {
833
- this.setValue(size);
1240
+ async ngOnInit() {
1241
+ super.ngOnInit();
1242
+ const palletsProviderInstance = await this.paletteService;
1243
+ this.palettes.set(await palletsProviderInstance.getList());
834
1244
  }
835
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
836
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: AXPFontSizeChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
837
- @for (size of sizes(); track size) {
838
- <div (click)="onSizeClick(size)" [style.font-size]="size" [class.--selected]="size === selectedSize()">
1245
+ onPaletteClick(palette) {
1246
+ this.setValue(palette.name);
1247
+ }
1248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.7", type: AXPThemePaletteChooserWidgetComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
1250
+ @for (palette of palettes(); track palette.name) {
1251
+ <div (click)="onPaletteClick(palette)" [class.--selected]="palette.name === selectedPalette()?.name">
1252
+ <span>{{ palette.title }}</span>
839
1253
  <div>
840
- <span>{{ 'font-sizes.' + size | translate: { scope: 'layout' } | async }}</span>
1254
+ <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
1255
+ <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
1256
+ <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
841
1257
  </div>
842
1258
  </div>
843
1259
  }
844
- `, 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: AXSelectionCdkModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i2$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1260
+ `, 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: FormsModule }, { kind: "ngmodule", type: AXSelectionCdkModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
845
1261
  }
846
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPFontSizeChooserWidgetComponent, decorators: [{
1262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemePaletteChooserWidgetComponent, decorators: [{
847
1263
  type: Component,
848
1264
  args: [{ template: `
849
- @for (size of sizes(); track size) {
850
- <div (click)="onSizeClick(size)" [style.font-size]="size" [class.--selected]="size === selectedSize()">
1265
+ @for (palette of palettes(); track palette.name) {
1266
+ <div (click)="onPaletteClick(palette)" [class.--selected]="palette.name === selectedPalette()?.name">
1267
+ <span>{{ palette.title }}</span>
851
1268
  <div>
852
- <span>{{ 'font-sizes.' + size | translate: { scope: 'layout' } | async }}</span>
1269
+ <div [style.background-color]="palette.colors.primary" class="ax-end-7 ax-z-[2]"></div>
1270
+ <div [style.background-color]="palette.colors.secondary" class="ax-end-3.5 ax-z-[1]"></div>
1271
+ <div [style.background-color]="palette.colors.accents[0]" class="ax-end-0 ax-z-0"></div>
853
1272
  </div>
854
1273
  </div>
855
1274
  }
856
- `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, FormsModule, AXSelectionCdkModule, 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"] }]
1275
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [FormsModule, AXSelectionCdkModule], 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"] }]
857
1276
  }] });
858
1277
 
859
- var fontSizeChooserWidget_component = /*#__PURE__*/Object.freeze({
1278
+ var themePaletteChooserWidget_component = /*#__PURE__*/Object.freeze({
860
1279
  __proto__: null,
861
- AXPFontSizeChooserWidgetComponent: AXPFontSizeChooserWidgetComponent
1280
+ AXPThemePaletteChooserWidgetComponent: AXPThemePaletteChooserWidgetComponent
862
1281
  });
863
1282
 
864
- const AXPFontSizeChooserWidget = {
865
- name: "font-size-chooser",
866
- title: "Font Size Chooser",
867
- icon: "fa-light fa-text-size",
1283
+ const AXPThemePaletteChooserWidget = {
1284
+ name: "theme-palette-chooser",
1285
+ title: "Theme Palette Chooser",
1286
+ icon: "fa-solid fa-square",
868
1287
  type: 'editor',
869
1288
  categories: AXP_WIDGETS_LAYOUT_CATEGORY,
870
1289
  properties: [
@@ -874,7 +1293,7 @@ const AXPFontSizeChooserWidget = {
874
1293
  ],
875
1294
  components: {
876
1295
  edit: {
877
- component: () => Promise.resolve().then(function () { return fontSizeChooserWidget_component; }).then((c) => c.AXPFontSizeChooserWidgetComponent),
1296
+ component: () => Promise.resolve().then(function () { return themePaletteChooserWidget_component; }).then((c) => c.AXPThemePaletteChooserWidgetComponent),
878
1297
  },
879
1298
  }
880
1299
  };
@@ -888,12 +1307,12 @@ class AXPThemesSharedModule {
888
1307
  priority: 100,
889
1308
  run: async () => {
890
1309
  await service.loadSettings();
891
- }
1310
+ },
892
1311
  });
893
1312
  }
894
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemesSharedModule, deps: [{ token: i1$1.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
895
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.6", ngImport: i0, type: AXPThemesSharedModule, imports: [i2$2.AXPComponentSlotModule, i3$1.AXPLayoutBuilderModule] }); }
896
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemesSharedModule, providers: [
1313
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemesSharedModule, deps: [{ token: i1$2.AXPAppStartUpService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.NgModule }); }
1314
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.7", ngImport: i0, type: AXPThemesSharedModule, imports: [i2$3.AXPComponentSlotModule, i3$1.AXPLayoutBuilderModule] }); }
1315
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemesSharedModule, providers: [
897
1316
  {
898
1317
  provide: AXP_SETTING_DEFINITION_PROVIDER,
899
1318
  useFactory: async () => {
@@ -901,8 +1320,8 @@ class AXPThemesSharedModule {
901
1320
  const provider = (await import('./acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs')).AXPThemeSettingProvider;
902
1321
  return new provider(injector);
903
1322
  },
904
- multi: true
905
- }
1323
+ multi: true,
1324
+ },
906
1325
  ], imports: [AXPComponentSlotModule.forRoot({
907
1326
  'root-header-end': [
908
1327
  {
@@ -918,11 +1337,12 @@ class AXPThemesSharedModule {
918
1337
  AXPThemeModeChooserWidget,
919
1338
  AXPMenuOrientationChooserWidget,
920
1339
  AXPFontSizeChooserWidget,
921
- AXPFontStyleChooserWidget
922
- ]
1340
+ AXPFontStyleChooserWidget,
1341
+ AXPIconChooserWidget,
1342
+ ],
923
1343
  })] }); }
924
1344
  }
925
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: AXPThemesSharedModule, decorators: [{
1345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.7", ngImport: i0, type: AXPThemesSharedModule, decorators: [{
926
1346
  type: NgModule,
927
1347
  args: [{
928
1348
  imports: [
@@ -941,9 +1361,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
941
1361
  AXPThemeModeChooserWidget,
942
1362
  AXPMenuOrientationChooserWidget,
943
1363
  AXPFontSizeChooserWidget,
944
- AXPFontStyleChooserWidget
945
- ]
946
- })
1364
+ AXPFontStyleChooserWidget,
1365
+ AXPIconChooserWidget,
1366
+ ],
1367
+ }),
947
1368
  ],
948
1369
  exports: [],
949
1370
  declarations: [],
@@ -955,11 +1376,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
955
1376
  const provider = (await import('./acorex-platform-themes-shared-settings.provider-CXiRmniv.mjs')).AXPThemeSettingProvider;
956
1377
  return new provider(injector);
957
1378
  },
958
- multi: true
959
- }
1379
+ multi: true,
1380
+ },
960
1381
  ],
961
1382
  }]
962
- }], ctorParameters: () => [{ type: i1$1.AXPAppStartUpService }, { type: i0.Injector }] });
1383
+ }], ctorParameters: () => [{ type: i1$2.AXPAppStartUpService }, { type: i0.Injector }] });
963
1384
 
964
1385
  /**
965
1386
  * Generated bundle index. Do not edit.