@praxisui/core 8.0.0-beta.31 → 8.0.0-beta.33

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.
@@ -10,7 +10,7 @@ import { Router, ActivatedRoute } from '@angular/router';
10
10
  import * as i1$1 from '@angular/forms';
11
11
  import { Validators, FormGroup, FormControl, FormArray, FormsModule } from '@angular/forms';
12
12
  import { MatSnackBar } from '@angular/material/snack-bar';
13
- import * as i2$1 from '@angular/material/icon';
13
+ import * as i3$1 from '@angular/material/icon';
14
14
  import { MatIconRegistry, MatIconModule } from '@angular/material/icon';
15
15
  import * as i2 from '@angular/material/button';
16
16
  import { MatButtonModule } from '@angular/material/button';
@@ -27,24 +27,24 @@ import { MatTooltipModule } from '@angular/material/tooltip';
27
27
  import { DomSanitizer } from '@angular/platform-browser';
28
28
  import * as i4$1 from '@angular/material/menu';
29
29
  import { MatMenuModule } from '@angular/material/menu';
30
- import * as i3$1 from '@angular/material/card';
30
+ import * as i2$1 from '@angular/material/card';
31
31
  import { MatCardModule } from '@angular/material/card';
32
32
  import * as i8 from '@angular/material/chips';
33
33
  import { MatChipsModule } from '@angular/material/chips';
34
34
  import * as i1$3 from '@angular/material/dialog';
35
35
  import { MAT_DIALOG_DATA, MatDialogModule, MatDialog } from '@angular/material/dialog';
36
- import * as i2$2 from '@angular/material/tabs';
36
+ import * as i1$4 from '@angular/material/tabs';
37
37
  import { MatTabsModule } from '@angular/material/tabs';
38
38
 
39
39
  class PraxisCore {
40
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCore, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisCore, isStandalone: true, selector: "praxis-praxis-core", ngImport: i0, template: `
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCore, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.14", type: PraxisCore, isStandalone: true, selector: "praxis-praxis-core", ngImport: i0, template: `
42
42
  <p>
43
43
  praxis-core works!
44
44
  </p>
45
45
  `, isInline: true, styles: [""] });
46
46
  }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCore, decorators: [{
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCore, decorators: [{
48
48
  type: Component,
49
49
  args: [{ selector: 'praxis-praxis-core', imports: [], template: `
50
50
  <p>
@@ -2241,10 +2241,10 @@ class SchemaNormalizerService {
2241
2241
  }
2242
2242
  return undefined;
2243
2243
  }
2244
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2245
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, providedIn: 'root' });
2244
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SchemaNormalizerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2245
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SchemaNormalizerService, providedIn: 'root' });
2246
2246
  }
2247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaNormalizerService, decorators: [{
2247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SchemaNormalizerService, decorators: [{
2248
2248
  type: Injectable,
2249
2249
  args: [{ providedIn: 'root' }]
2250
2250
  }] });
@@ -2293,10 +2293,10 @@ class LocalStorageConfigService {
2293
2293
  return false;
2294
2294
  }
2295
2295
  }
2296
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2297
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageConfigService, providedIn: 'root' });
2296
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2297
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageConfigService, providedIn: 'root' });
2298
2298
  }
2299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageConfigService, decorators: [{
2299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageConfigService, decorators: [{
2300
2300
  type: Injectable,
2301
2301
  args: [{ providedIn: 'root' }]
2302
2302
  }] });
@@ -2329,10 +2329,10 @@ class LocalStorageAsyncAdapter {
2329
2329
  return of(void 0);
2330
2330
  });
2331
2331
  }
2332
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageAsyncAdapter, deps: [{ token: LocalStorageConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
2333
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageAsyncAdapter, providedIn: 'root' });
2332
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageAsyncAdapter, deps: [{ token: LocalStorageConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
2333
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageAsyncAdapter, providedIn: 'root' });
2334
2334
  }
2335
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalStorageAsyncAdapter, decorators: [{
2335
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalStorageAsyncAdapter, decorators: [{
2336
2336
  type: Injectable,
2337
2337
  args: [{ providedIn: 'root' }]
2338
2338
  }], ctorParameters: () => [{ type: LocalStorageConfigService }] });
@@ -2420,10 +2420,10 @@ class RemoteConfigStorage {
2420
2420
  },
2421
2421
  });
2422
2422
  }
2423
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: RemoteConfigStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2424
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: RemoteConfigStorage, providedIn: 'root' });
2423
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RemoteConfigStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2424
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RemoteConfigStorage, providedIn: 'root' });
2425
2425
  }
2426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: RemoteConfigStorage, decorators: [{
2426
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RemoteConfigStorage, decorators: [{
2427
2427
  type: Injectable,
2428
2428
  args: [{ providedIn: 'root' }]
2429
2429
  }] });
@@ -2752,10 +2752,10 @@ class ApiConfigStorage {
2752
2752
  return undefined;
2753
2753
  return etag.startsWith('"') ? etag : `"${etag}"`;
2754
2754
  }
2755
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ApiConfigStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2756
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ApiConfigStorage, providedIn: 'root' });
2755
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ApiConfigStorage, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2756
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ApiConfigStorage, providedIn: 'root' });
2757
2757
  }
2758
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ApiConfigStorage, decorators: [{
2758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ApiConfigStorage, decorators: [{
2759
2759
  type: Injectable,
2760
2760
  args: [{ providedIn: 'root' }]
2761
2761
  }], ctorParameters: () => [] });
@@ -3034,10 +3034,10 @@ class GlobalConfigService {
3034
3034
  return undefined;
3035
3035
  return snapshot?.schemaPrefs;
3036
3036
  }
3037
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3038
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalConfigService, providedIn: 'root' });
3037
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3038
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalConfigService, providedIn: 'root' });
3039
3039
  }
3040
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalConfigService, decorators: [{
3040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalConfigService, decorators: [{
3041
3041
  type: Injectable,
3042
3042
  args: [{ providedIn: 'root' }]
3043
3043
  }], ctorParameters: () => [] });
@@ -4737,10 +4737,10 @@ class GenericCrudService {
4737
4737
  }
4738
4738
  return { data: raw };
4739
4739
  }
4740
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GenericCrudService, deps: [{ token: i1.HttpClient }, { token: SchemaNormalizerService }, { token: GlobalConfigService }, { token: API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
4741
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GenericCrudService, providedIn: null });
4740
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GenericCrudService, deps: [{ token: i1.HttpClient }, { token: SchemaNormalizerService }, { token: GlobalConfigService }, { token: API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
4741
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GenericCrudService, providedIn: null });
4742
4742
  }
4743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GenericCrudService, decorators: [{
4743
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GenericCrudService, decorators: [{
4744
4744
  type: Injectable,
4745
4745
  args: [{
4746
4746
  providedIn: null,
@@ -5478,10 +5478,10 @@ class TableConfigService {
5478
5478
  hasLazyLoading: (config.performance?.lazyLoading?.threshold ?? 0) > 0
5479
5479
  };
5480
5480
  }
5481
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TableConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5482
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TableConfigService, providedIn: 'root' });
5481
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TableConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5482
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TableConfigService, providedIn: 'root' });
5483
5483
  }
5484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TableConfigService, decorators: [{
5484
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TableConfigService, decorators: [{
5485
5485
  type: Injectable,
5486
5486
  args: [{
5487
5487
  providedIn: 'root'
@@ -5762,10 +5762,10 @@ class PraxisI18nService {
5762
5762
  }
5763
5763
  return String(value);
5764
5764
  }
5765
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, deps: [{ token: PRAXIS_I18N_CONFIG, optional: true }, { token: PRAXIS_I18N_TRANSLATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
5766
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, providedIn: 'root' });
5765
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisI18nService, deps: [{ token: PRAXIS_I18N_CONFIG, optional: true }, { token: PRAXIS_I18N_TRANSLATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
5766
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisI18nService, providedIn: 'root' });
5767
5767
  }
5768
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisI18nService, decorators: [{
5768
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisI18nService, decorators: [{
5769
5769
  type: Injectable,
5770
5770
  args: [{ providedIn: 'root' }]
5771
5771
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -6059,10 +6059,10 @@ class ComponentMetadataRegistry {
6059
6059
  normalizeComponentType(type) {
6060
6060
  return this.componentTypeAliases[type] ?? type;
6061
6061
  }
6062
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentMetadataRegistry, deps: [{ token: PraxisI18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
6063
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentMetadataRegistry, providedIn: 'root' });
6062
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentMetadataRegistry, deps: [{ token: PraxisI18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
6063
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentMetadataRegistry, providedIn: 'root' });
6064
6064
  }
6065
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentMetadataRegistry, decorators: [{
6065
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentMetadataRegistry, decorators: [{
6066
6066
  type: Injectable,
6067
6067
  args: [{ providedIn: 'root' }]
6068
6068
  }], ctorParameters: () => [{ type: PraxisI18nService, decorators: [{
@@ -6236,10 +6236,10 @@ class SurfaceBindingRuntimeService {
6236
6236
  clone(value) {
6237
6237
  return value == null ? value : JSON.parse(JSON.stringify(value));
6238
6238
  }
6239
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SurfaceBindingRuntimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6240
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SurfaceBindingRuntimeService, providedIn: 'root' });
6239
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SurfaceBindingRuntimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6240
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SurfaceBindingRuntimeService, providedIn: 'root' });
6241
6241
  }
6242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SurfaceBindingRuntimeService, decorators: [{
6242
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SurfaceBindingRuntimeService, decorators: [{
6243
6243
  type: Injectable,
6244
6244
  args: [{ providedIn: 'root' }]
6245
6245
  }] });
@@ -7014,10 +7014,10 @@ class GlobalActionService {
7014
7014
  return '';
7015
7015
  return `#${encodeURIComponent(raw.replace(/^#/, ''))}`;
7016
7016
  }
7017
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalActionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7018
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalActionService, providedIn: 'root' });
7017
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalActionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7018
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalActionService, providedIn: 'root' });
7019
7019
  }
7020
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: GlobalActionService, decorators: [{
7020
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: GlobalActionService, decorators: [{
7021
7021
  type: Injectable,
7022
7022
  args: [{ providedIn: 'root' }]
7023
7023
  }], ctorParameters: () => [] });
@@ -7036,10 +7036,10 @@ class LocalConnectionStorage {
7036
7036
  clearConnection(key) {
7037
7037
  return this.storage.clearConfig(key);
7038
7038
  }
7039
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalConnectionStorage, deps: [{ token: ASYNC_CONFIG_STORAGE }], target: i0.ɵɵFactoryTarget.Injectable });
7040
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalConnectionStorage, providedIn: 'root' });
7039
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalConnectionStorage, deps: [{ token: ASYNC_CONFIG_STORAGE }], target: i0.ɵɵFactoryTarget.Injectable });
7040
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalConnectionStorage, providedIn: 'root' });
7041
7041
  }
7042
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LocalConnectionStorage, decorators: [{
7042
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LocalConnectionStorage, decorators: [{
7043
7043
  type: Injectable,
7044
7044
  args: [{ providedIn: 'root' }]
7045
7045
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -7184,10 +7184,10 @@ class OverlayDeciderService {
7184
7184
  });
7185
7185
  }
7186
7186
  }
7187
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: OverlayDeciderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7188
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: OverlayDeciderService, providedIn: 'root' });
7187
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: OverlayDeciderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
7188
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: OverlayDeciderService, providedIn: 'root' });
7189
7189
  }
7190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: OverlayDeciderService, decorators: [{
7190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: OverlayDeciderService, decorators: [{
7191
7191
  type: Injectable,
7192
7192
  args: [{ providedIn: 'root' }]
7193
7193
  }] });
@@ -7878,10 +7878,10 @@ class PraxisJsonLogicService {
7878
7878
  isTopLevelExpressionObject(value) {
7879
7879
  return !!value && typeof value === 'object' && !Array.isArray(value);
7880
7880
  }
7881
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisJsonLogicService, deps: [{ token: PRAXIS_JSON_LOGIC_OPERATORS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
7882
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisJsonLogicService, providedIn: 'root' });
7881
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisJsonLogicService, deps: [{ token: PRAXIS_JSON_LOGIC_OPERATORS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
7882
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisJsonLogicService, providedIn: 'root' });
7883
7883
  }
7884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisJsonLogicService, decorators: [{
7884
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisJsonLogicService, decorators: [{
7885
7885
  type: Injectable,
7886
7886
  args: [{ providedIn: 'root' }]
7887
7887
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -9957,10 +9957,10 @@ class DynamicFormService {
9957
9957
  });
9958
9958
  return root;
9959
9959
  }
9960
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9961
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormService, providedIn: 'root' });
9960
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9961
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormService, providedIn: 'root' });
9962
9962
  }
9963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicFormService, decorators: [{
9963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicFormService, decorators: [{
9964
9964
  type: Injectable,
9965
9965
  args: [{ providedIn: 'root' }]
9966
9966
  }] });
@@ -9988,10 +9988,10 @@ class ErrorMessageService {
9988
9988
  }
9989
9989
  return error?.message || 'Falha ao salvar. Tente novamente.';
9990
9990
  }
9991
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9992
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorMessageService, providedIn: 'root' });
9991
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ErrorMessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
9992
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ErrorMessageService, providedIn: 'root' });
9993
9993
  }
9994
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ErrorMessageService, decorators: [{
9994
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ErrorMessageService, decorators: [{
9995
9995
  type: Injectable,
9996
9996
  args: [{ providedIn: 'root' }]
9997
9997
  }] });
@@ -10148,10 +10148,10 @@ class ComponentKeyService {
10148
10148
  return cleaned;
10149
10149
  return cleaned.slice(0, 32);
10150
10150
  }
10151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentKeyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10152
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentKeyService, providedIn: 'root' });
10151
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentKeyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10152
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentKeyService, providedIn: 'root' });
10153
10153
  }
10154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ComponentKeyService, decorators: [{
10154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ComponentKeyService, decorators: [{
10155
10155
  type: Injectable,
10156
10156
  args: [{ providedIn: 'root' }]
10157
10157
  }] });
@@ -10296,10 +10296,10 @@ class TelemetryService {
10296
10296
  // Telemetry failures should be ignored.
10297
10297
  }
10298
10298
  }
10299
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TelemetryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10300
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TelemetryService, providedIn: 'root' });
10299
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TelemetryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10300
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TelemetryService, providedIn: 'root' });
10301
10301
  }
10302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: TelemetryService, decorators: [{
10302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TelemetryService, decorators: [{
10303
10303
  type: Injectable,
10304
10304
  args: [{ providedIn: 'root' }]
10305
10305
  }] });
@@ -10515,10 +10515,10 @@ class PraxisCollectionExportService {
10515
10515
  }
10516
10516
  throw new Error(`PraxisCollectionExportService requires a collection export provider for "${request.format}" exports.`);
10517
10517
  }
10518
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCollectionExportService, deps: [{ token: PRAXIS_COLLECTION_EXPORT_PROVIDER, optional: true }, { token: PRAXIS_EXPORT_SECURITY_POLICY }], target: i0.ɵɵFactoryTarget.Injectable });
10519
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCollectionExportService, providedIn: 'root' });
10518
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCollectionExportService, deps: [{ token: PRAXIS_COLLECTION_EXPORT_PROVIDER, optional: true }, { token: PRAXIS_EXPORT_SECURITY_POLICY }], target: i0.ɵɵFactoryTarget.Injectable });
10519
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCollectionExportService, providedIn: 'root' });
10520
10520
  }
10521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisCollectionExportService, decorators: [{
10521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisCollectionExportService, decorators: [{
10522
10522
  type: Injectable,
10523
10523
  args: [{
10524
10524
  providedIn: 'root',
@@ -10720,10 +10720,10 @@ class PraxisHttpCollectionExportProvider {
10720
10720
  }
10721
10721
  return request.fileName;
10722
10722
  }
10723
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHttpCollectionExportProvider, deps: [{ token: i1.HttpClient }, { token: API_URL, optional: true }, { token: PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
10724
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHttpCollectionExportProvider });
10723
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisHttpCollectionExportProvider, deps: [{ token: i1.HttpClient }, { token: API_URL, optional: true }, { token: PRAXIS_COLLECTION_EXPORT_HTTP_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
10724
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisHttpCollectionExportProvider });
10725
10725
  }
10726
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHttpCollectionExportProvider, decorators: [{
10726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisHttpCollectionExportProvider, decorators: [{
10727
10727
  type: Injectable
10728
10728
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
10729
10729
  type: Optional
@@ -10786,10 +10786,10 @@ class FieldSelectorRegistry {
10786
10786
  return '';
10787
10787
  return String(value).trim().toLowerCase();
10788
10788
  }
10789
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldSelectorRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10790
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldSelectorRegistry, providedIn: 'root' });
10789
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FieldSelectorRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10790
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FieldSelectorRegistry, providedIn: 'root' });
10791
10791
  }
10792
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FieldSelectorRegistry, decorators: [{
10792
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FieldSelectorRegistry, decorators: [{
10793
10793
  type: Injectable,
10794
10794
  args: [{ providedIn: 'root' }]
10795
10795
  }], ctorParameters: () => [] });
@@ -10828,10 +10828,10 @@ class LoadingOrchestrator {
10828
10828
  const { componentType, componentId, routeKey } = ctx.scope;
10829
10829
  return `${routeKey ?? 'no-route'}::${componentType}::${componentId}::${ctx.phase}`;
10830
10830
  }
10831
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoadingOrchestrator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10832
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoadingOrchestrator, providedIn: 'root' });
10831
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoadingOrchestrator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
10832
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoadingOrchestrator, providedIn: 'root' });
10833
10833
  }
10834
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoadingOrchestrator, decorators: [{
10834
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoadingOrchestrator, decorators: [{
10835
10835
  type: Injectable,
10836
10836
  args: [{ providedIn: 'root' }]
10837
10837
  }] });
@@ -10878,10 +10878,10 @@ class PraxisLoadingInterceptor {
10878
10878
  intercept(req, next) {
10879
10879
  return handlePraxisLoadingRequest(req, (nextReq) => next.handle(nextReq), this.orchestrator, this.renderer);
10880
10880
  }
10881
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLoadingInterceptor, deps: [{ token: LoadingOrchestrator }, { token: PRAXIS_LOADING_RENDERER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
10882
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLoadingInterceptor });
10881
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLoadingInterceptor, deps: [{ token: LoadingOrchestrator }, { token: PRAXIS_LOADING_RENDERER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
10882
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLoadingInterceptor });
10883
10883
  }
10884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLoadingInterceptor, decorators: [{
10884
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLoadingInterceptor, decorators: [{
10885
10885
  type: Injectable
10886
10886
  }], ctorParameters: () => [{ type: LoadingOrchestrator }, { type: undefined, decorators: [{
10887
10887
  type: Optional
@@ -11072,10 +11072,10 @@ class DefaultLoadingRenderer {
11072
11072
  return null;
11073
11073
  return document;
11074
11074
  }
11075
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DefaultLoadingRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11076
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DefaultLoadingRenderer });
11075
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DefaultLoadingRenderer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11076
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DefaultLoadingRenderer });
11077
11077
  }
11078
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DefaultLoadingRenderer, decorators: [{
11078
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DefaultLoadingRenderer, decorators: [{
11079
11079
  type: Injectable
11080
11080
  }] });
11081
11081
 
@@ -11182,10 +11182,10 @@ class PraxisLayerScaleStyleService {
11182
11182
  style.textContent = css;
11183
11183
  doc.head.appendChild(style);
11184
11184
  }
11185
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLayerScaleStyleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11186
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLayerScaleStyleService, providedIn: 'root' });
11185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLayerScaleStyleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11186
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLayerScaleStyleService, providedIn: 'root' });
11187
11187
  }
11188
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLayerScaleStyleService, decorators: [{
11188
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLayerScaleStyleService, decorators: [{
11189
11189
  type: Injectable,
11190
11190
  args: [{ providedIn: 'root' }]
11191
11191
  }], ctorParameters: () => [] });
@@ -11325,10 +11325,10 @@ class ResourceDiscoveryService {
11325
11325
  isRestApiResponse(source) {
11326
11326
  return 'data' in source;
11327
11327
  }
11328
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceDiscoveryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11329
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceDiscoveryService, providedIn: 'any' });
11328
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceDiscoveryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11329
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceDiscoveryService, providedIn: 'any' });
11330
11330
  }
11331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceDiscoveryService, decorators: [{
11331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceDiscoveryService, decorators: [{
11332
11332
  type: Injectable,
11333
11333
  args: [{ providedIn: 'any' }]
11334
11334
  }] });
@@ -11423,10 +11423,10 @@ class DomainCatalogService {
11423
11423
  const payload = release['payload'];
11424
11424
  return payload?.['resourceKey'] === resourceKey;
11425
11425
  }
11426
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainCatalogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11427
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainCatalogService, providedIn: 'any' });
11426
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainCatalogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11427
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainCatalogService, providedIn: 'any' });
11428
11428
  }
11429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainCatalogService, decorators: [{
11429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainCatalogService, decorators: [{
11430
11430
  type: Injectable,
11431
11431
  args: [{ providedIn: 'any' }]
11432
11432
  }] });
@@ -11489,10 +11489,10 @@ class DomainKnowledgeService {
11489
11489
  }
11490
11490
  return merged;
11491
11491
  }
11492
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainKnowledgeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11493
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainKnowledgeService, providedIn: 'any' });
11492
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainKnowledgeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11493
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainKnowledgeService, providedIn: 'any' });
11494
11494
  }
11495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainKnowledgeService, decorators: [{
11495
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainKnowledgeService, decorators: [{
11496
11496
  type: Injectable,
11497
11497
  args: [{ providedIn: 'any' }]
11498
11498
  }] });
@@ -11571,10 +11571,10 @@ class DomainRuleService {
11571
11571
  }
11572
11572
  return merged;
11573
11573
  }
11574
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainRuleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11575
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainRuleService, providedIn: 'any' });
11574
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainRuleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11575
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainRuleService, providedIn: 'any' });
11576
11576
  }
11577
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DomainRuleService, decorators: [{
11577
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DomainRuleService, decorators: [{
11578
11578
  type: Injectable,
11579
11579
  args: [{ providedIn: 'any' }]
11580
11580
  }] });
@@ -11753,10 +11753,10 @@ class ResourceActionOpenAdapterService {
11753
11753
  clone(value) {
11754
11754
  return value == null ? value : JSON.parse(JSON.stringify(value));
11755
11755
  }
11756
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceActionOpenAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11757
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceActionOpenAdapterService, providedIn: 'any' });
11756
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceActionOpenAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11757
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceActionOpenAdapterService, providedIn: 'any' });
11758
11758
  }
11759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceActionOpenAdapterService, decorators: [{
11759
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceActionOpenAdapterService, decorators: [{
11760
11760
  type: Injectable,
11761
11761
  args: [{ providedIn: 'any' }]
11762
11762
  }] });
@@ -11887,10 +11887,10 @@ class ResourceSurfaceOpenAdapterService {
11887
11887
  clone(value) {
11888
11888
  return value == null ? value : JSON.parse(JSON.stringify(value));
11889
11889
  }
11890
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceSurfaceOpenAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11891
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceSurfaceOpenAdapterService, providedIn: 'any' });
11890
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceSurfaceOpenAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11891
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceSurfaceOpenAdapterService, providedIn: 'any' });
11892
11892
  }
11893
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceSurfaceOpenAdapterService, decorators: [{
11893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceSurfaceOpenAdapterService, decorators: [{
11894
11894
  type: Injectable,
11895
11895
  args: [{ providedIn: 'any' }]
11896
11896
  }] });
@@ -12224,10 +12224,10 @@ class CrudOperationResolutionService {
12224
12224
  ...(request.apiUrlEntry ? { apiUrlEntry: request.apiUrlEntry } : {}),
12225
12225
  };
12226
12226
  }
12227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CrudOperationResolutionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12228
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CrudOperationResolutionService, providedIn: 'any' });
12227
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CrudOperationResolutionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12228
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CrudOperationResolutionService, providedIn: 'any' });
12229
12229
  }
12230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: CrudOperationResolutionService, decorators: [{
12230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CrudOperationResolutionService, decorators: [{
12231
12231
  type: Injectable,
12232
12232
  args: [{ providedIn: 'any' }]
12233
12233
  }] });
@@ -12339,10 +12339,10 @@ class AnalyticsPresentationResolver {
12339
12339
  const normalized = (families ?? DEFAULT_FAMILIES).filter(Boolean);
12340
12340
  return normalized.length ? normalized : [...DEFAULT_FAMILIES];
12341
12341
  }
12342
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsPresentationResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12343
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsPresentationResolver, providedIn: 'root' });
12342
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsPresentationResolver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12343
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsPresentationResolver, providedIn: 'root' });
12344
12344
  }
12345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsPresentationResolver, decorators: [{
12345
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsPresentationResolver, decorators: [{
12346
12346
  type: Injectable,
12347
12347
  args: [{ providedIn: 'root' }]
12348
12348
  }] });
@@ -12553,10 +12553,10 @@ class AnalyticsSchemaContractService {
12553
12553
  ? value
12554
12554
  : null;
12555
12555
  }
12556
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsSchemaContractService, deps: [{ token: API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
12557
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsSchemaContractService, providedIn: 'root' });
12556
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsSchemaContractService, deps: [{ token: API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
12557
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsSchemaContractService, providedIn: 'root' });
12558
12558
  }
12559
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsSchemaContractService, decorators: [{
12559
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsSchemaContractService, decorators: [{
12560
12560
  type: Injectable,
12561
12561
  args: [{ providedIn: 'root' }]
12562
12562
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -12693,10 +12693,10 @@ class AnalyticsStatsRequestBuilderService {
12693
12693
  ...(projection.bindings.secondaryMetrics ?? []),
12694
12694
  ];
12695
12695
  }
12696
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsStatsRequestBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12697
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsStatsRequestBuilderService, providedIn: 'root' });
12696
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsStatsRequestBuilderService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12697
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsStatsRequestBuilderService, providedIn: 'root' });
12698
12698
  }
12699
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: AnalyticsStatsRequestBuilderService, decorators: [{
12699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsStatsRequestBuilderService, decorators: [{
12700
12700
  type: Injectable,
12701
12701
  args: [{ providedIn: 'root' }]
12702
12702
  }] });
@@ -13275,10 +13275,10 @@ class LoggerService {
13275
13275
  }
13276
13276
  return sanitized;
13277
13277
  }
13278
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoggerService, deps: [{ token: PRAXIS_LOGGER_CONFIG }, { token: PRAXIS_LOGGER_SINKS }], target: i0.ɵɵFactoryTarget.Injectable });
13279
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoggerService, providedIn: 'root' });
13278
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoggerService, deps: [{ token: PRAXIS_LOGGER_CONFIG }, { token: PRAXIS_LOGGER_SINKS }], target: i0.ɵɵFactoryTarget.Injectable });
13279
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoggerService, providedIn: 'root' });
13280
13280
  }
13281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: LoggerService, decorators: [{
13281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: LoggerService, decorators: [{
13282
13282
  type: Injectable,
13283
13283
  args: [{ providedIn: 'root' }]
13284
13284
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -13330,10 +13330,10 @@ class PraxisGlobalErrorHandler {
13330
13330
  // Final fallback: ignore.
13331
13331
  }
13332
13332
  }
13333
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisGlobalErrorHandler, deps: [{ token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
13334
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisGlobalErrorHandler });
13333
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisGlobalErrorHandler, deps: [{ token: LoggerService }], target: i0.ɵɵFactoryTarget.Injectable });
13334
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisGlobalErrorHandler });
13335
13335
  }
13336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisGlobalErrorHandler, decorators: [{
13336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisGlobalErrorHandler, decorators: [{
13337
13337
  type: Injectable
13338
13338
  }], ctorParameters: () => [{ type: LoggerService }] });
13339
13339
 
@@ -13788,10 +13788,10 @@ class ObservabilityDashboardService {
13788
13788
  now() {
13789
13789
  return this.options.nowProvider ? this.options.nowProvider() : Date.now();
13790
13790
  }
13791
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ObservabilityDashboardService, deps: [{ token: PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS }, { token: TelemetryService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
13792
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ObservabilityDashboardService, providedIn: 'root' });
13791
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ObservabilityDashboardService, deps: [{ token: PRAXIS_OBSERVABILITY_DASHBOARD_OPTIONS }, { token: TelemetryService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
13792
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ObservabilityDashboardService, providedIn: 'root' });
13793
13793
  }
13794
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ObservabilityDashboardService, decorators: [{
13794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ObservabilityDashboardService, decorators: [{
13795
13795
  type: Injectable,
13796
13796
  args: [{ providedIn: 'root' }]
13797
13797
  }], ctorParameters: () => [{ type: undefined, decorators: [{
@@ -19075,8 +19075,8 @@ class SurfaceOpenActionEditorComponent {
19075
19075
  .map((value) => String(value || '').trim())
19076
19076
  .filter(Boolean)));
19077
19077
  }
19078
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SurfaceOpenActionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19079
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: SurfaceOpenActionEditorComponent, isStandalone: true, selector: "praxis-surface-open-action-editor", inputs: { value: "value", hostKind: "hostKind" }, outputs: { valueChange: "valueChange" }, providers: [providePraxisI18nConfig(SURFACE_OPEN_I18N_CONFIG)], usesOnChanges: true, ngImport: i0, template: `
19078
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SurfaceOpenActionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19079
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SurfaceOpenActionEditorComponent, isStandalone: true, selector: "praxis-surface-open-action-editor", inputs: { value: "value", hostKind: "hostKind" }, outputs: { valueChange: "valueChange" }, providers: [providePraxisI18nConfig(SURFACE_OPEN_I18N_CONFIG)], usesOnChanges: true, ngImport: i0, template: `
19080
19080
  <div class="surface-editor">
19081
19081
  <div class="surface-section">
19082
19082
  <div class="surface-section-title">{{ t('editor.presets.title', 'Presets') }}</div>
@@ -19419,12 +19419,11 @@ class SurfaceOpenActionEditorComponent {
19419
19419
  </mat-form-field>
19420
19420
  </div>
19421
19421
  </div>
19422
- `, isInline: true, styles: [".surface-editor{display:grid;gap:16px}.surface-section{padding:12px 14px;border:1px dashed var(--md-sys-color-outline-variant, rgba(0, 0, 0, .18));border-radius:10px;background:var(--md-sys-color-surface-container-lowest, #fff)}.surface-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.surface-section-title{font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant, #5f6368);margin-bottom:10px}.surface-section-header .surface-section-title{margin-bottom:0}.surface-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}.surface-preset-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.surface-span-2{grid-column:span 2}.surface-span-all{width:100%}.surface-component-meta{display:grid;gap:4px}.surface-component-title{font-weight:600}.surface-component-description,.surface-empty{color:var(--md-sys-color-on-surface-variant, #5f6368);font-size:12px}.surface-bindings{display:grid;gap:12px}.surface-binding-row{display:grid;grid-template-columns:minmax(200px,1.2fr) minmax(220px,1.4fr) minmax(140px,.8fr) minmax(180px,1fr) auto;gap:12px;align-items:start}mat-form-field{width:100%}@media(max-width:960px){.surface-binding-row{grid-template-columns:minmax(0,1fr)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
19422
+ `, isInline: true, styles: [".surface-editor{display:grid;gap:16px}.surface-section{padding:12px 14px;border:1px dashed var(--md-sys-color-outline-variant, rgba(0, 0, 0, .18));border-radius:10px;background:var(--md-sys-color-surface-container-lowest, #fff)}.surface-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.surface-section-title{font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant, #5f6368);margin-bottom:10px}.surface-section-header .surface-section-title{margin-bottom:0}.surface-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}.surface-preset-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.surface-span-2{grid-column:span 2}.surface-span-all{width:100%}.surface-component-meta{display:grid;gap:4px}.surface-component-title{font-weight:600}.surface-component-description,.surface-empty{color:var(--md-sys-color-on-surface-variant, #5f6368);font-size:12px}.surface-bindings{display:grid;gap:12px}.surface-binding-row{display:grid;grid-template-columns:minmax(200px,1.2fr) minmax(220px,1.4fr) minmax(140px,.8fr) minmax(180px,1fr) auto;gap:12px;align-items:start}mat-form-field{width:100%}@media(max-width:960px){.surface-binding-row{grid-template-columns:minmax(0,1fr)}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
19423
19423
  }
19424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SurfaceOpenActionEditorComponent, decorators: [{
19424
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SurfaceOpenActionEditorComponent, decorators: [{
19425
19425
  type: Component,
19426
19426
  args: [{ selector: 'praxis-surface-open-action-editor', standalone: true, providers: [providePraxisI18nConfig(SURFACE_OPEN_I18N_CONFIG)], imports: [
19427
- CommonModule,
19428
19427
  FormsModule,
19429
19428
  MatButtonModule,
19430
19429
  MatFormFieldModule,
@@ -19432,7 +19431,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
19432
19431
  MatInputModule,
19433
19432
  MatSelectModule,
19434
19433
  MatSlideToggleModule,
19435
- MatTooltipModule,
19434
+ MatTooltipModule
19436
19435
  ], template: `
19437
19436
  <div class="surface-editor">
19438
19437
  <div class="surface-section">
@@ -22183,36 +22182,43 @@ class PraxisFooterLinksComponent {
22183
22182
  .map((link) => normalizeEditorialLink(link))
22184
22183
  .filter((link) => !!link);
22185
22184
  }
22186
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22187
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisFooterLinksComponent, isStandalone: true, selector: "praxis-footer-links", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", brandText: "brandText", secondaryText: "secondaryText", links: "links", layout: "layout", appearance: "appearance" }, host: { attributes: { "role": "contentinfo" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null" }, classAttribute: "praxis-footer-links" }, ngImport: i0, template: `
22185
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisFooterLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisFooterLinksComponent, isStandalone: true, selector: "praxis-footer-links", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", brandText: "brandText", secondaryText: "secondaryText", links: "links", layout: "layout", appearance: "appearance" }, host: { attributes: { "role": "contentinfo" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null" }, classAttribute: "praxis-footer-links" }, ngImport: i0, template: `
22188
22187
  <footer
22189
22188
  class="pfl-shell"
22190
22189
  [class.pfl-stacked]="layout === 'stacked'"
22191
22190
  [class.pfl-plain]="appearance === 'plain'"
22192
22191
  [class.pfl-surface]="appearance === 'surface'"
22193
- >
22194
- <div class="pfl-brand" *ngIf="brandText || secondaryText">
22195
- <strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
22196
- <span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
22197
- </div>
22198
-
22192
+ >
22193
+ @if (brandText || secondaryText) {
22194
+ <div class="pfl-brand">
22195
+ @if (brandText) {
22196
+ <strong class="pfl-brand-text">{{ brandText }}</strong>
22197
+ }
22198
+ @if (secondaryText) {
22199
+ <span class="pfl-secondary-text">{{ secondaryText }}</span>
22200
+ }
22201
+ </div>
22202
+ }
22203
+
22199
22204
  <nav class="pfl-nav" aria-label="Links institucionais">
22200
- <a
22201
- *ngFor="let link of normalizedLinks"
22202
- class="pfl-link"
22203
- [href]="link.href"
22204
- [attr.target]="link.target || null"
22205
- [attr.rel]="link.rel || null"
22206
- >
22207
- {{ link.label }}
22208
- </a>
22205
+ @for (link of normalizedLinks; track link) {
22206
+ <a
22207
+ class="pfl-link"
22208
+ [href]="link.href"
22209
+ [attr.target]="link.target || null"
22210
+ [attr.rel]="link.rel || null"
22211
+ >
22212
+ {{ link.label }}
22213
+ </a>
22214
+ }
22209
22215
  </nav>
22210
22216
  </footer>
22211
- `, isInline: true, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22217
+ `, isInline: true, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22212
22218
  }
22213
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisFooterLinksComponent, decorators: [{
22219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisFooterLinksComponent, decorators: [{
22214
22220
  type: Component,
22215
- args: [{ selector: 'praxis-footer-links', standalone: true, imports: [CommonModule], host: {
22221
+ args: [{ selector: 'praxis-footer-links', standalone: true, imports: [], host: {
22216
22222
  'class': 'praxis-footer-links',
22217
22223
  '[attr.data-instance-id]': 'instanceId || null',
22218
22224
  '[attr.data-analytics-id]': 'analyticsId || null',
@@ -22224,25 +22230,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22224
22230
  [class.pfl-stacked]="layout === 'stacked'"
22225
22231
  [class.pfl-plain]="appearance === 'plain'"
22226
22232
  [class.pfl-surface]="appearance === 'surface'"
22227
- >
22228
- <div class="pfl-brand" *ngIf="brandText || secondaryText">
22229
- <strong class="pfl-brand-text" *ngIf="brandText">{{ brandText }}</strong>
22230
- <span class="pfl-secondary-text" *ngIf="secondaryText">{{ secondaryText }}</span>
22231
- </div>
22232
-
22233
+ >
22234
+ @if (brandText || secondaryText) {
22235
+ <div class="pfl-brand">
22236
+ @if (brandText) {
22237
+ <strong class="pfl-brand-text">{{ brandText }}</strong>
22238
+ }
22239
+ @if (secondaryText) {
22240
+ <span class="pfl-secondary-text">{{ secondaryText }}</span>
22241
+ }
22242
+ </div>
22243
+ }
22244
+
22233
22245
  <nav class="pfl-nav" aria-label="Links institucionais">
22234
- <a
22235
- *ngFor="let link of normalizedLinks"
22236
- class="pfl-link"
22237
- [href]="link.href"
22238
- [attr.target]="link.target || null"
22239
- [attr.rel]="link.rel || null"
22240
- >
22241
- {{ link.label }}
22242
- </a>
22246
+ @for (link of normalizedLinks; track link) {
22247
+ <a
22248
+ class="pfl-link"
22249
+ [href]="link.href"
22250
+ [attr.target]="link.target || null"
22251
+ [attr.rel]="link.rel || null"
22252
+ >
22253
+ {{ link.label }}
22254
+ </a>
22255
+ }
22243
22256
  </nav>
22244
22257
  </footer>
22245
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"] }]
22258
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 78%, transparent);--pfl-brand-color: var(--md-sys-color-on-surface);--pfl-secondary-color: var(--md-sys-color-on-surface-variant);--pfl-link-color: var(--md-sys-color-primary);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--pfl-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 90%, transparent);--pfl-link-color: color-mix(in srgb, var(--md-sys-color-primary) 86%, white);--pfl-surface-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 96%, transparent)}.pfl-shell{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;padding:16px 4px 4px;border-top:1px solid var(--pfl-border)}.pfl-stacked{flex-direction:column;align-items:flex-start}.pfl-plain{padding-top:6px;border-top:0}.pfl-surface{padding:16px 18px;border-top:0;border-radius:18px;background:var(--pfl-surface-bg)}.pfl-brand{display:grid;gap:4px}.pfl-brand-text{color:var(--pfl-brand-color);font-size:.92rem;font-weight:700}.pfl-secondary-text{color:var(--pfl-secondary-color);font-size:.8rem;line-height:1.5}.pfl-nav{display:flex;flex-wrap:wrap;gap:10px 16px}.pfl-link{color:var(--pfl-link-color);font-size:.84rem;line-height:1.5;text-decoration:underline;text-underline-offset:2px}@media(max-width:720px){.pfl-shell{flex-direction:column;align-items:flex-start}}\n"] }]
22246
22259
  }], propDecorators: { instanceId: [{
22247
22260
  type: Input
22248
22261
  }], analyticsId: [{
@@ -22308,63 +22321,83 @@ class PraxisHeroBannerComponent {
22308
22321
  appearance = 'card';
22309
22322
  brandText;
22310
22323
  titleAccent;
22311
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22312
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisHeroBannerComponent, isStandalone: true, selector: "praxis-hero-banner", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", description: "description", imageUrl: "imageUrl", imageAlt: "imageAlt", badges: "badges", metaItems: "metaItems", variant: "variant", appearance: "appearance", brandText: "brandText", titleAccent: "titleAccent" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null", "attr.data-variant": "variant" }, classAttribute: "praxis-hero-banner" }, ngImport: i0, template: `
22324
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisHeroBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22325
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisHeroBannerComponent, isStandalone: true, selector: "praxis-hero-banner", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", description: "description", imageUrl: "imageUrl", imageAlt: "imageAlt", badges: "badges", metaItems: "metaItems", variant: "variant", appearance: "appearance", brandText: "brandText", titleAccent: "titleAccent" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null", "attr.data-variant": "variant" }, classAttribute: "praxis-hero-banner" }, ngImport: i0, template: `
22313
22326
  <section
22314
22327
  class="phb-shell"
22315
22328
  [class.phb-event]="variant === 'event'"
22316
22329
  [class.phb-institutional]="variant === 'institutional'"
22317
22330
  [class.phb-flat]="appearance === 'flat'"
22318
- >
22331
+ >
22319
22332
  <div class="phb-copy">
22320
- <p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
22321
-
22322
- <div class="phb-badges" *ngIf="badges?.length">
22323
- <span
22324
- class="phb-badge"
22325
- *ngFor="let badge of badges"
22326
- [class.phb-badge-highlight]="badge.tone === 'highlight'"
22327
- [class.phb-badge-muted]="badge.tone === 'muted'"
22328
- [class.phb-badge-warning]="badge.tone === 'warning'"
22329
- >
22330
- {{ badge.label }}
22331
- </span>
22332
- </div>
22333
-
22333
+ @if (brandText) {
22334
+ <p class="phb-brand">{{ brandText }}</p>
22335
+ }
22336
+
22337
+ @if (badges?.length) {
22338
+ <div class="phb-badges">
22339
+ @for (badge of badges; track badge) {
22340
+ <span
22341
+ class="phb-badge"
22342
+ [class.phb-badge-highlight]="badge.tone === 'highlight'"
22343
+ [class.phb-badge-muted]="badge.tone === 'muted'"
22344
+ [class.phb-badge-warning]="badge.tone === 'warning'"
22345
+ >
22346
+ {{ badge.label }}
22347
+ </span>
22348
+ }
22349
+ </div>
22350
+ }
22351
+
22334
22352
  <div class="phb-text">
22335
- <p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
22336
- <h2 class="phb-title" *ngIf="title || titleAccent">
22337
- <span *ngIf="title">{{ title }}</span>
22338
- <span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
22339
- </h2>
22340
- <p class="phb-description" *ngIf="description">{{ description }}</p>
22353
+ @if (subtitle) {
22354
+ <p class="phb-subtitle">{{ subtitle }}</p>
22355
+ }
22356
+ @if (title || titleAccent) {
22357
+ <h2 class="phb-title">
22358
+ @if (title) {
22359
+ <span>{{ title }}</span>
22360
+ }
22361
+ @if (titleAccent) {
22362
+ <span class="phb-title-accent">{{ titleAccent }}</span>
22363
+ }
22364
+ </h2>
22365
+ }
22366
+ @if (description) {
22367
+ <p class="phb-description">{{ description }}</p>
22368
+ }
22341
22369
  </div>
22342
-
22343
- <dl class="phb-meta" *ngIf="metaItems?.length">
22344
- <div class="phb-meta-item" *ngFor="let item of metaItems">
22345
- <dt>{{ item.label }}</dt>
22346
- <dd>{{ item.value }}</dd>
22347
- </div>
22348
- </dl>
22349
- </div>
22350
-
22351
- <div class="phb-visual" *ngIf="imageUrl; else noImage">
22352
- <img class="phb-image" [src]="imageUrl" [alt]="imageAlt || title || subtitle || 'Imagem do destaque'" />
22370
+
22371
+ @if (metaItems?.length) {
22372
+ <dl class="phb-meta">
22373
+ @for (item of metaItems; track item) {
22374
+ <div class="phb-meta-item">
22375
+ <dt>{{ item.label }}</dt>
22376
+ <dd>{{ item.value }}</dd>
22377
+ </div>
22378
+ }
22379
+ </dl>
22380
+ }
22353
22381
  </div>
22354
-
22355
- <ng-template #noImage>
22382
+
22383
+ @if (imageUrl) {
22384
+ <div class="phb-visual">
22385
+ <img class="phb-image" [src]="imageUrl" [alt]="imageAlt || title || subtitle || 'Imagem do destaque'" />
22386
+ </div>
22387
+ } @else {
22356
22388
  <div class="phb-visual phb-visual-fallback" aria-hidden="true">
22357
22389
  <div class="phb-orb phb-orb-a"></div>
22358
22390
  <div class="phb-orb phb-orb-b"></div>
22359
22391
  <div class="phb-grid"></div>
22360
22392
  </div>
22361
- </ng-template>
22393
+ }
22394
+
22362
22395
  </section>
22363
- `, isInline: true, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22396
+ `, isInline: true, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22364
22397
  }
22365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisHeroBannerComponent, decorators: [{
22398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisHeroBannerComponent, decorators: [{
22366
22399
  type: Component,
22367
- args: [{ selector: 'praxis-hero-banner', standalone: true, imports: [CommonModule], host: {
22400
+ args: [{ selector: 'praxis-hero-banner', standalone: true, imports: [], host: {
22368
22401
  'class': 'praxis-hero-banner',
22369
22402
  '[attr.data-instance-id]': 'instanceId || null',
22370
22403
  '[attr.data-analytics-id]': 'analyticsId || null',
@@ -22377,52 +22410,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22377
22410
  [class.phb-event]="variant === 'event'"
22378
22411
  [class.phb-institutional]="variant === 'institutional'"
22379
22412
  [class.phb-flat]="appearance === 'flat'"
22380
- >
22413
+ >
22381
22414
  <div class="phb-copy">
22382
- <p class="phb-brand" *ngIf="brandText">{{ brandText }}</p>
22383
-
22384
- <div class="phb-badges" *ngIf="badges?.length">
22385
- <span
22386
- class="phb-badge"
22387
- *ngFor="let badge of badges"
22388
- [class.phb-badge-highlight]="badge.tone === 'highlight'"
22389
- [class.phb-badge-muted]="badge.tone === 'muted'"
22390
- [class.phb-badge-warning]="badge.tone === 'warning'"
22391
- >
22392
- {{ badge.label }}
22393
- </span>
22394
- </div>
22395
-
22415
+ @if (brandText) {
22416
+ <p class="phb-brand">{{ brandText }}</p>
22417
+ }
22418
+
22419
+ @if (badges?.length) {
22420
+ <div class="phb-badges">
22421
+ @for (badge of badges; track badge) {
22422
+ <span
22423
+ class="phb-badge"
22424
+ [class.phb-badge-highlight]="badge.tone === 'highlight'"
22425
+ [class.phb-badge-muted]="badge.tone === 'muted'"
22426
+ [class.phb-badge-warning]="badge.tone === 'warning'"
22427
+ >
22428
+ {{ badge.label }}
22429
+ </span>
22430
+ }
22431
+ </div>
22432
+ }
22433
+
22396
22434
  <div class="phb-text">
22397
- <p class="phb-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
22398
- <h2 class="phb-title" *ngIf="title || titleAccent">
22399
- <span *ngIf="title">{{ title }}</span>
22400
- <span class="phb-title-accent" *ngIf="titleAccent">{{ titleAccent }}</span>
22401
- </h2>
22402
- <p class="phb-description" *ngIf="description">{{ description }}</p>
22435
+ @if (subtitle) {
22436
+ <p class="phb-subtitle">{{ subtitle }}</p>
22437
+ }
22438
+ @if (title || titleAccent) {
22439
+ <h2 class="phb-title">
22440
+ @if (title) {
22441
+ <span>{{ title }}</span>
22442
+ }
22443
+ @if (titleAccent) {
22444
+ <span class="phb-title-accent">{{ titleAccent }}</span>
22445
+ }
22446
+ </h2>
22447
+ }
22448
+ @if (description) {
22449
+ <p class="phb-description">{{ description }}</p>
22450
+ }
22403
22451
  </div>
22404
-
22405
- <dl class="phb-meta" *ngIf="metaItems?.length">
22406
- <div class="phb-meta-item" *ngFor="let item of metaItems">
22407
- <dt>{{ item.label }}</dt>
22408
- <dd>{{ item.value }}</dd>
22409
- </div>
22410
- </dl>
22411
- </div>
22412
-
22413
- <div class="phb-visual" *ngIf="imageUrl; else noImage">
22414
- <img class="phb-image" [src]="imageUrl" [alt]="imageAlt || title || subtitle || 'Imagem do destaque'" />
22452
+
22453
+ @if (metaItems?.length) {
22454
+ <dl class="phb-meta">
22455
+ @for (item of metaItems; track item) {
22456
+ <div class="phb-meta-item">
22457
+ <dt>{{ item.label }}</dt>
22458
+ <dd>{{ item.value }}</dd>
22459
+ </div>
22460
+ }
22461
+ </dl>
22462
+ }
22415
22463
  </div>
22416
-
22417
- <ng-template #noImage>
22464
+
22465
+ @if (imageUrl) {
22466
+ <div class="phb-visual">
22467
+ <img class="phb-image" [src]="imageUrl" [alt]="imageAlt || title || subtitle || 'Imagem do destaque'" />
22468
+ </div>
22469
+ } @else {
22418
22470
  <div class="phb-visual phb-visual-fallback" aria-hidden="true">
22419
22471
  <div class="phb-orb phb-orb-a"></div>
22420
22472
  <div class="phb-orb phb-orb-b"></div>
22421
22473
  <div class="phb-grid"></div>
22422
22474
  </div>
22423
- </ng-template>
22475
+ }
22476
+
22424
22477
  </section>
22425
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"] }]
22478
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-shell-shadow: 0 24px 60px color-mix(in srgb, var(--md-sys-color-shadow, #000) 10%, transparent);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 14%, transparent), transparent 38%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 92%, var(--md-sys-color-primary-container) 8%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container) 4%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .24), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 45%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .2), transparent 34%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 18%, var(--md-sys-color-surface-container-lowest) 82%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 24%, var(--md-sys-color-surface-container-low) 76%) 48%, color-mix(in srgb, var(--md-sys-color-surface) 94%, var(--md-sys-color-secondary-container) 6%) 100% );--phb-brand-color: color-mix(in srgb, var(--md-sys-color-primary) 68%, var(--md-sys-color-on-surface) 32%);--phb-subtitle-color: color-mix(in srgb, var(--md-sys-color-primary) 52%, var(--md-sys-color-on-surface) 48%);--phb-title-color: var(--md-sys-color-on-surface);--phb-description-color: var(--md-sys-color-on-surface-variant);--phb-badge-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 78%, transparent);--phb-badge-color: var(--md-sys-color-on-surface);--phb-badge-highlight-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 78%, transparent);--phb-badge-highlight-color: var(--md-sys-color-on-primary-container);--phb-badge-muted-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent);--phb-badge-muted-color: var(--md-sys-color-on-surface-variant);--phb-badge-warning-bg: color-mix(in srgb, var(--md-sys-color-error-container) 74%, transparent);--phb-badge-warning-color: var(--md-sys-color-on-error-container);--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 72%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 48%, transparent);--phb-meta-label-color: var(--md-sys-color-on-surface-variant);--phb-meta-value-color: var(--md-sys-color-on-surface);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 90%, var(--md-sys-color-primary) 10%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, var(--md-sys-color-primary-container) 12%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 24%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 18%, var(--md-sys-color-surface-container-high) 82%), color-mix(in srgb, var(--md-sys-color-primary-container) 18%, var(--md-sys-color-surface-container-low) 82%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-bright, var(--md-sys-color-surface-container-high)) 68%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 22%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 12%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--phb-shell-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--phb-shell-shadow: 0 22px 54px rgba(0, 0, 0, .28);--phb-shell-bg: radial-gradient(circle at top right, color-mix(in srgb, var(--md-sys-color-primary) 16%, transparent), transparent 40%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 90%, var(--md-sys-color-primary-container) 10%) 0%, color-mix(in srgb, var(--md-sys-color-surface-container-low) 84%, var(--md-sys-color-primary-container) 16%) 54%, color-mix(in srgb, var(--md-sys-color-surface) 92%, var(--md-sys-color-primary-container) 8%) 100% );--phb-event-bg: radial-gradient(circle at top right, rgba(255, 184, 77, .18), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-primary-container) 22%, var(--md-sys-color-surface-container-low) 78%) 45%, color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-primary-container) 10%) 100% );--phb-institutional-bg: radial-gradient(circle at top right, rgba(17, 94, 89, .16), transparent 36%), linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-secondary-container) 16%, var(--md-sys-color-surface-container-lowest) 84%) 0%, color-mix(in srgb, var(--md-sys-color-secondary-container) 20%, var(--md-sys-color-surface-container-low) 80%) 48%, color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-secondary-container) 8%) 100% );--phb-meta-bg: color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 70%, transparent);--phb-meta-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 60%, transparent);--phb-visual-bg: linear-gradient( 160deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, var(--md-sys-color-primary) 12%), color-mix(in srgb, var(--md-sys-color-surface-container) 82%, var(--md-sys-color-primary-container) 18%) );--phb-visual-fallback: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-high) 22%, transparent), color-mix(in srgb, var(--md-sys-color-surface-container-lowest) 8%, transparent) ), linear-gradient( 145deg, color-mix(in srgb, var(--md-sys-color-primary) 22%, var(--md-sys-color-surface-container-high) 78%), color-mix(in srgb, var(--md-sys-color-primary-container) 24%, var(--md-sys-color-surface-container-low) 76%) );--phb-orb-a-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 34%, transparent);--phb-orb-b-bg: color-mix(in srgb, var(--md-sys-color-primary) 26%, transparent);--phb-grid-line: color-mix(in srgb, var(--md-sys-color-on-surface) 10%, transparent)}.phb-shell{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(240px,.95fr);gap:22px;align-items:stretch;padding:22px;border-radius:28px;overflow:hidden;background:var(--phb-shell-bg);border:1px solid var(--phb-shell-border);box-shadow:var(--phb-shell-shadow)}.phb-event{background:var(--phb-event-bg)}.phb-institutional{background:var(--phb-institutional-bg)}.phb-copy{display:grid;gap:18px;min-width:0}.phb-brand{margin:0;color:var(--phb-brand-color);font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.phb-badges{display:flex;flex-wrap:wrap;gap:8px}.phb-badge{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;background:var(--phb-badge-bg);color:var(--phb-badge-color);font-size:.76rem;font-weight:700;letter-spacing:.02em}.phb-badge-highlight{background:var(--phb-badge-highlight-bg);color:var(--phb-badge-highlight-color)}.phb-badge-muted{background:var(--phb-badge-muted-bg);color:var(--phb-badge-muted-color)}.phb-badge-warning{background:var(--phb-badge-warning-bg);color:var(--phb-badge-warning-color)}.phb-text{display:grid;gap:8px}.phb-subtitle{margin:0;color:var(--phb-subtitle-color);font-size:.9rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-title{margin:0;color:var(--phb-title-color);font-size:clamp(1.6rem,2.2vw,2.5rem);line-height:1.08;letter-spacing:-.03em}.phb-title-accent{display:inline;margin-left:.18em;background:linear-gradient(90deg,#4285f4,#6ea8ff 28%,#a142f4 62%,#ea4335);-webkit-background-clip:text;background-clip:text;color:transparent}.phb-description{margin:0;max-width:56ch;color:var(--phb-description-color);font-size:.98rem;line-height:1.65}.phb-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.phb-meta-item{display:grid;gap:4px;padding:12px 14px;border-radius:16px;background:var(--phb-meta-bg);border:1px solid var(--phb-meta-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.phb-meta-item dt{margin:0;color:var(--phb-meta-label-color);font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.phb-meta-item dd{margin:0;color:var(--phb-meta-value-color);font-size:.92rem;line-height:1.45}.phb-visual{position:relative;min-height:220px;border-radius:22px;overflow:hidden;background:var(--phb-visual-bg)}.phb-image{display:block;width:100%;height:100%;object-fit:cover}.phb-visual-fallback{background:var(--phb-visual-fallback)}.phb-flat{padding:0 0 18px;border:0;border-radius:0;box-shadow:none;background:transparent;grid-template-columns:minmax(0,1.15fr) minmax(220px,.85fr);gap:18px}.phb-flat .phb-brand{color:var(--md-sys-color-primary)}.phb-flat .phb-badges{order:3}.phb-flat .phb-meta{grid-template-columns:1fr;gap:6px}.phb-flat .phb-meta-item{padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.phb-flat .phb-meta-item dt,.phb-flat .phb-meta-item dd{display:inline}.phb-flat .phb-meta-item dt{margin-right:6px}.phb-flat .phb-visual{min-height:190px;border-radius:26px}.phb-orb{position:absolute;border-radius:999px;filter:blur(2px)}.phb-orb-a{inset:24px auto auto 20px;width:86px;height:86px;background:var(--phb-orb-a-bg)}.phb-orb-b{inset:auto 16px 18px auto;width:132px;height:132px;background:var(--phb-orb-b-bg)}.phb-grid{position:absolute;inset:0;background-image:linear-gradient(var(--phb-grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--phb-grid-line) 1px,transparent 1px);background-size:24px 24px;opacity:.5}@media(max-width:900px){.phb-shell{grid-template-columns:1fr;padding:18px}.phb-visual{order:-1;min-height:180px}}\n"] }]
22426
22479
  }], propDecorators: { instanceId: [{
22427
22480
  type: Input
22428
22481
  }], analyticsId: [{
@@ -22569,10 +22622,10 @@ class PraxisIconDirective {
22569
22622
  }
22570
22623
  catch { }
22571
22624
  }
22572
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisIconDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
22573
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: PraxisIconDirective, isStandalone: true, selector: "mat-icon[praxisIcon]", inputs: { icon: ["praxisIcon", "icon"] }, usesOnChanges: true, ngImport: i0 });
22625
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisIconDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
22626
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: PraxisIconDirective, isStandalone: true, selector: "mat-icon[praxisIcon]", inputs: { icon: ["praxisIcon", "icon"] }, usesOnChanges: true, ngImport: i0 });
22574
22627
  }
22575
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisIconDirective, decorators: [{
22628
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisIconDirective, decorators: [{
22576
22629
  type: Directive,
22577
22630
  args: [{ selector: 'mat-icon[praxisIcon]', standalone: true }]
22578
22631
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { icon: [{
@@ -22599,29 +22652,37 @@ class PraxisRichTextBlockComponent {
22599
22652
  : renderEditorialPlain(this.content);
22600
22653
  return this.sanitizer.sanitize(SecurityContext.HTML, html) ?? '';
22601
22654
  }
22602
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22603
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisRichTextBlockComponent, isStandalone: true, selector: "praxis-rich-text-block", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", icon: "icon", variant: "variant", appearance: "appearance", contentFormat: "contentFormat", content: "content" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.data-variant": "variant", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-rich-text-block" }, ngImport: i0, template: `
22655
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichTextBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22656
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisRichTextBlockComponent, isStandalone: true, selector: "praxis-rich-text-block", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", icon: "icon", variant: "variant", appearance: "appearance", contentFormat: "contentFormat", content: "content" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.data-variant": "variant", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-rich-text-block" }, ngImport: i0, template: `
22604
22657
  <section
22605
22658
  class="prt-block"
22606
22659
  [class.prt-block-emphasis]="variant === 'emphasis'"
22607
22660
  [class.prt-block-subtle]="variant === 'subtle'"
22608
22661
  [class.prt-block-plain]="appearance === 'plain'"
22609
- >
22610
- <header class="prt-head" *ngIf="icon || title || subtitle">
22611
- <mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
22612
- <div class="prt-title-wrap">
22613
- <h3 class="prt-title" *ngIf="title">{{ title }}</h3>
22614
- <p class="prt-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
22615
- </div>
22616
- </header>
22617
-
22662
+ >
22663
+ @if (icon || title || subtitle) {
22664
+ <header class="prt-head">
22665
+ @if (icon) {
22666
+ <mat-icon class="prt-icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
22667
+ }
22668
+ <div class="prt-title-wrap">
22669
+ @if (title) {
22670
+ <h3 class="prt-title">{{ title }}</h3>
22671
+ }
22672
+ @if (subtitle) {
22673
+ <p class="prt-subtitle">{{ subtitle }}</p>
22674
+ }
22675
+ </div>
22676
+ </header>
22677
+ }
22678
+
22618
22679
  <div class="prt-content" [innerHTML]="renderedContent"></div>
22619
22680
  </section>
22620
- `, isInline: true, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22681
+ `, isInline: true, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22621
22682
  }
22622
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisRichTextBlockComponent, decorators: [{
22683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisRichTextBlockComponent, decorators: [{
22623
22684
  type: Component,
22624
- args: [{ selector: 'praxis-rich-text-block', standalone: true, imports: [CommonModule, MatIconModule, PraxisIconDirective], host: {
22685
+ args: [{ selector: 'praxis-rich-text-block', standalone: true, imports: [MatIconModule, PraxisIconDirective], host: {
22625
22686
  'class': 'praxis-rich-text-block',
22626
22687
  '[attr.data-instance-id]': 'instanceId || null',
22627
22688
  '[attr.data-analytics-id]': 'analyticsId || null',
@@ -22634,18 +22695,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22634
22695
  [class.prt-block-emphasis]="variant === 'emphasis'"
22635
22696
  [class.prt-block-subtle]="variant === 'subtle'"
22636
22697
  [class.prt-block-plain]="appearance === 'plain'"
22637
- >
22638
- <header class="prt-head" *ngIf="icon || title || subtitle">
22639
- <mat-icon class="prt-icon" *ngIf="icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
22640
- <div class="prt-title-wrap">
22641
- <h3 class="prt-title" *ngIf="title">{{ title }}</h3>
22642
- <p class="prt-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
22643
- </div>
22644
- </header>
22645
-
22698
+ >
22699
+ @if (icon || title || subtitle) {
22700
+ <header class="prt-head">
22701
+ @if (icon) {
22702
+ <mat-icon class="prt-icon" aria-hidden="true" [praxisIcon]="icon"></mat-icon>
22703
+ }
22704
+ <div class="prt-title-wrap">
22705
+ @if (title) {
22706
+ <h3 class="prt-title">{{ title }}</h3>
22707
+ }
22708
+ @if (subtitle) {
22709
+ <p class="prt-subtitle">{{ subtitle }}</p>
22710
+ }
22711
+ </div>
22712
+ </header>
22713
+ }
22714
+
22646
22715
  <div class="prt-content" [innerHTML]="renderedContent"></div>
22647
22716
  </section>
22648
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"] }]
22717
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 72%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-surface-container-lowest) 4%), color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 32%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 36%, var(--md-sys-color-surface) 64%), color-mix(in srgb, var(--md-sys-color-surface) 96%, var(--md-sys-color-primary-container) 4%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 82%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 64%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-highest) 82%, transparent)}:host-context(.mdc-theme-dark),:host-context(.theme-dark){--prt-border: color-mix(in srgb, var(--md-sys-color-outline-variant) 84%, transparent);--prt-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-surface-container-low) 92%, var(--md-sys-color-surface) 8%), color-mix(in srgb, var(--md-sys-color-surface-container) 90%, var(--md-sys-color-surface-container-high) 10%) );--prt-emphasis-border: color-mix(in srgb, var(--md-sys-color-primary) 42%, var(--md-sys-color-outline-variant));--prt-emphasis-bg: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary-container) 28%, var(--md-sys-color-surface-container-low) 72%), color-mix(in srgb, var(--md-sys-color-surface-container) 92%, var(--md-sys-color-primary-container) 8%) );--prt-subtle-bg: color-mix(in srgb, var(--md-sys-color-surface-container-low) 88%, transparent);--prt-icon-bg: color-mix(in srgb, var(--md-sys-color-primary-container) 42%, transparent);--prt-code-bg: color-mix(in srgb, var(--md-sys-color-surface-container-high) 88%, transparent)}.prt-block{display:grid;gap:12px;padding:16px 18px;border-radius:16px;border:1px solid var(--prt-border);background:var(--prt-bg);color:var(--md-sys-color-on-surface)}.prt-block-emphasis{border-color:var(--prt-emphasis-border);background:var(--prt-emphasis-bg)}.prt-block-subtle{background:var(--prt-subtle-bg);border-style:dashed}.prt-block-plain{padding:0;border:0;border-radius:0;background:transparent}.prt-head{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.prt-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:12px;background:var(--prt-icon-bg);color:var(--md-sys-color-primary);font-size:20px;line-height:1}.prt-title-wrap{display:grid;gap:4px}.prt-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.prt-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.86rem;line-height:1.4}.prt-content{color:var(--md-sys-color-on-surface);font-size:.94rem;line-height:1.6}.prt-content :where(p,ul){margin:0}.prt-content :where(p+p,p+ul,ul+p,ul+ul){margin-top:10px}.prt-content ul{padding-left:18px}.prt-content a{color:var(--md-sys-color-primary);text-decoration:underline;text-underline-offset:2px}.prt-content strong{font-weight:700}.prt-content em{font-style:italic}.prt-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em;padding:.1em .35em;border-radius:6px;background:var(--prt-code-bg)}.prt-block-plain .prt-icon{width:32px;height:32px;border-radius:10px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 80%,transparent)}.prt-block-plain .prt-content{font-size:.92rem}\n"] }]
22649
22718
  }], propDecorators: { instanceId: [{
22650
22719
  type: Input
22651
22720
  }], analyticsId: [{
@@ -22790,14 +22859,14 @@ class PraxisLegalNoticeComponent {
22790
22859
  return 'default';
22791
22860
  }
22792
22861
  }
22793
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22794
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisLegalNoticeComponent, isStandalone: true, selector: "praxis-legal-notice", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", contentFormat: "contentFormat", content: "content", severity: "severity", appearance: "appearance", links: "links" }, host: { attributes: { "role": "note" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || title || \"Aviso legal\"" }, classAttribute: "praxis-legal-notice" }, ngImport: i0, template: `
22862
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLegalNoticeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22863
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisLegalNoticeComponent, isStandalone: true, selector: "praxis-legal-notice", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", contentFormat: "contentFormat", content: "content", severity: "severity", appearance: "appearance", links: "links" }, host: { attributes: { "role": "note" }, properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || title || \"Aviso legal\"" }, classAttribute: "praxis-legal-notice" }, ngImport: i0, template: `
22795
22864
  <section
22796
22865
  class="pln-shell"
22797
22866
  [class.pln-warning]="severity === 'warning'"
22798
22867
  [class.pln-muted]="severity === 'muted'"
22799
22868
  [class.pln-plain]="appearance === 'plain'"
22800
- >
22869
+ >
22801
22870
  <praxis-rich-text-block
22802
22871
  [instanceId]="instanceId"
22803
22872
  [analyticsId]="analyticsId"
@@ -22810,24 +22879,27 @@ class PraxisLegalNoticeComponent {
22810
22879
  [contentFormat]="contentFormat"
22811
22880
  [content]="content"
22812
22881
  ></praxis-rich-text-block>
22813
-
22814
- <nav class="pln-links" *ngIf="normalizedLinks.length" aria-label="Links do aviso legal">
22815
- <a
22816
- *ngFor="let link of normalizedLinks"
22817
- class="pln-link"
22818
- [href]="link.href"
22819
- [attr.target]="link.target || null"
22820
- [attr.rel]="link.rel || null"
22821
- >
22822
- {{ link.label }}
22823
- </a>
22824
- </nav>
22882
+
22883
+ @if (normalizedLinks.length) {
22884
+ <nav class="pln-links" aria-label="Links do aviso legal">
22885
+ @for (link of normalizedLinks; track link) {
22886
+ <a
22887
+ class="pln-link"
22888
+ [href]="link.href"
22889
+ [attr.target]="link.target || null"
22890
+ [attr.rel]="link.rel || null"
22891
+ >
22892
+ {{ link.label }}
22893
+ </a>
22894
+ }
22895
+ </nav>
22896
+ }
22825
22897
  </section>
22826
- `, isInline: true, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PraxisRichTextBlockComponent, selector: "praxis-rich-text-block", inputs: ["instanceId", "analyticsId", "ariaLabel", "title", "subtitle", "icon", "variant", "appearance", "contentFormat", "content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22898
+ `, isInline: true, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"], dependencies: [{ kind: "component", type: PraxisRichTextBlockComponent, selector: "praxis-rich-text-block", inputs: ["instanceId", "analyticsId", "ariaLabel", "title", "subtitle", "icon", "variant", "appearance", "contentFormat", "content"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22827
22899
  }
22828
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisLegalNoticeComponent, decorators: [{
22900
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisLegalNoticeComponent, decorators: [{
22829
22901
  type: Component,
22830
- args: [{ selector: 'praxis-legal-notice', standalone: true, imports: [CommonModule, PraxisRichTextBlockComponent], host: {
22902
+ args: [{ selector: 'praxis-legal-notice', standalone: true, imports: [PraxisRichTextBlockComponent], host: {
22831
22903
  'class': 'praxis-legal-notice',
22832
22904
  '[attr.data-instance-id]': 'instanceId || null',
22833
22905
  '[attr.data-analytics-id]': 'analyticsId || null',
@@ -22839,7 +22911,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22839
22911
  [class.pln-warning]="severity === 'warning'"
22840
22912
  [class.pln-muted]="severity === 'muted'"
22841
22913
  [class.pln-plain]="appearance === 'plain'"
22842
- >
22914
+ >
22843
22915
  <praxis-rich-text-block
22844
22916
  [instanceId]="instanceId"
22845
22917
  [analyticsId]="analyticsId"
@@ -22852,20 +22924,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
22852
22924
  [contentFormat]="contentFormat"
22853
22925
  [content]="content"
22854
22926
  ></praxis-rich-text-block>
22855
-
22856
- <nav class="pln-links" *ngIf="normalizedLinks.length" aria-label="Links do aviso legal">
22857
- <a
22858
- *ngFor="let link of normalizedLinks"
22859
- class="pln-link"
22860
- [href]="link.href"
22861
- [attr.target]="link.target || null"
22862
- [attr.rel]="link.rel || null"
22863
- >
22864
- {{ link.label }}
22865
- </a>
22866
- </nav>
22927
+
22928
+ @if (normalizedLinks.length) {
22929
+ <nav class="pln-links" aria-label="Links do aviso legal">
22930
+ @for (link of normalizedLinks; track link) {
22931
+ <a
22932
+ class="pln-link"
22933
+ [href]="link.href"
22934
+ [attr.target]="link.target || null"
22935
+ [attr.rel]="link.rel || null"
22936
+ >
22937
+ {{ link.label }}
22938
+ </a>
22939
+ }
22940
+ </nav>
22941
+ }
22867
22942
  </section>
22868
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"] }]
22943
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pln-shell{display:grid;gap:10px}.pln-shell .praxis-rich-text-block .prt-block,.pln-shell .prt-block{border-left:4px solid color-mix(in srgb,var(--md-sys-color-primary) 56%,transparent)}.pln-warning .praxis-rich-text-block .prt-block,.pln-warning .prt-block{border-left-color:var(--md-sys-color-error)}.pln-muted .praxis-rich-text-block .prt-block,.pln-muted .prt-block{border-left-color:color-mix(in srgb,var(--md-sys-color-outline) 58%,transparent)}.pln-plain .praxis-rich-text-block .prt-block,.pln-plain .prt-block{border-left:0}.pln-links{display:flex;flex-wrap:wrap;gap:8px 12px;padding-left:18px}.pln-plain .pln-links{padding-left:0;padding-top:2px}.pln-link{color:var(--md-sys-color-primary);font-size:.84rem;line-height:1.4;text-decoration:underline;text-underline-offset:2px}:host-context(.mdc-theme-dark) .pln-link,:host-context(.theme-dark) .pln-link{color:color-mix(in srgb,var(--md-sys-color-primary) 86%,white)}\n"] }]
22869
22944
  }], propDecorators: { instanceId: [{
22870
22945
  type: Input
22871
22946
  }], analyticsId: [{
@@ -22990,34 +23065,45 @@ class PraxisUserContextSummaryComponent {
22990
23065
  }
22991
23066
  return field.fallback || '-';
22992
23067
  }
22993
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
22994
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisUserContextSummaryComponent, isStandalone: true, selector: "praxis-user-context-summary", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", appearance: "appearance", source: "source", context: "context", fields: "fields", actionId: "actionId", actionLabel: "actionLabel" }, outputs: { actionTriggered: "actionTriggered" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-user-context-summary" }, ngImport: i0, template: `
23068
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisUserContextSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23069
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisUserContextSummaryComponent, isStandalone: true, selector: "praxis-user-context-summary", inputs: { instanceId: "instanceId", analyticsId: "analyticsId", ariaLabel: "ariaLabel", title: "title", subtitle: "subtitle", appearance: "appearance", source: "source", context: "context", fields: "fields", actionId: "actionId", actionLabel: "actionLabel" }, outputs: { actionTriggered: "actionTriggered" }, host: { properties: { "attr.data-instance-id": "instanceId || null", "attr.data-analytics-id": "analyticsId || null", "attr.aria-label": "ariaLabel || null", "attr.role": "ariaLabel ? \"region\" : null" }, classAttribute: "praxis-user-context-summary" }, ngImport: i0, template: `
22995
23070
  <section class="pux-card" [class.pux-plain]="appearance === 'plain'">
22996
- <header class="pux-head" *ngIf="title || subtitle">
22997
- <h3 class="pux-title" *ngIf="title">{{ title }}</h3>
22998
- <p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
22999
- </header>
23000
-
23001
- <dl class="pux-grid" *ngIf="resolvedFields.length; else emptyState">
23002
- <div class="pux-item" *ngFor="let field of resolvedFields">
23003
- <dt>{{ field.label }}</dt>
23004
- <dd>{{ field.value }}</dd>
23005
- </div>
23006
- </dl>
23007
-
23008
- <ng-template #emptyState>
23071
+ @if (title || subtitle) {
23072
+ <header class="pux-head">
23073
+ @if (title) {
23074
+ <h3 class="pux-title">{{ title }}</h3>
23075
+ }
23076
+ @if (subtitle) {
23077
+ <p class="pux-subtitle">{{ subtitle }}</p>
23078
+ }
23079
+ </header>
23080
+ }
23081
+
23082
+ @if (resolvedFields.length) {
23083
+ <dl class="pux-grid">
23084
+ @for (field of resolvedFields; track field) {
23085
+ <div class="pux-item">
23086
+ <dt>{{ field.label }}</dt>
23087
+ <dd>{{ field.value }}</dd>
23088
+ </div>
23089
+ }
23090
+ </dl>
23091
+ } @else {
23009
23092
  <p class="pux-empty">Nenhum contexto disponivel.</p>
23010
- </ng-template>
23011
-
23012
- <div class="pux-actions" *ngIf="actionLabel">
23013
- <button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
23014
- </div>
23093
+ }
23094
+
23095
+
23096
+ @if (actionLabel) {
23097
+ <div class="pux-actions">
23098
+ <button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
23099
+ </div>
23100
+ }
23015
23101
  </section>
23016
- `, isInline: true, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23102
+ `, isInline: true, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23017
23103
  }
23018
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisUserContextSummaryComponent, decorators: [{
23104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisUserContextSummaryComponent, decorators: [{
23019
23105
  type: Component,
23020
- args: [{ selector: 'praxis-user-context-summary', standalone: true, imports: [CommonModule], host: {
23106
+ args: [{ selector: 'praxis-user-context-summary', standalone: true, imports: [], host: {
23021
23107
  'class': 'praxis-user-context-summary',
23022
23108
  '[attr.data-instance-id]': 'instanceId || null',
23023
23109
  '[attr.data-analytics-id]': 'analyticsId || null',
@@ -23025,27 +23111,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
23025
23111
  '[attr.role]': 'ariaLabel ? "region" : null',
23026
23112
  }, template: `
23027
23113
  <section class="pux-card" [class.pux-plain]="appearance === 'plain'">
23028
- <header class="pux-head" *ngIf="title || subtitle">
23029
- <h3 class="pux-title" *ngIf="title">{{ title }}</h3>
23030
- <p class="pux-subtitle" *ngIf="subtitle">{{ subtitle }}</p>
23031
- </header>
23032
-
23033
- <dl class="pux-grid" *ngIf="resolvedFields.length; else emptyState">
23034
- <div class="pux-item" *ngFor="let field of resolvedFields">
23035
- <dt>{{ field.label }}</dt>
23036
- <dd>{{ field.value }}</dd>
23037
- </div>
23038
- </dl>
23039
-
23040
- <ng-template #emptyState>
23114
+ @if (title || subtitle) {
23115
+ <header class="pux-head">
23116
+ @if (title) {
23117
+ <h3 class="pux-title">{{ title }}</h3>
23118
+ }
23119
+ @if (subtitle) {
23120
+ <p class="pux-subtitle">{{ subtitle }}</p>
23121
+ }
23122
+ </header>
23123
+ }
23124
+
23125
+ @if (resolvedFields.length) {
23126
+ <dl class="pux-grid">
23127
+ @for (field of resolvedFields; track field) {
23128
+ <div class="pux-item">
23129
+ <dt>{{ field.label }}</dt>
23130
+ <dd>{{ field.value }}</dd>
23131
+ </div>
23132
+ }
23133
+ </dl>
23134
+ } @else {
23041
23135
  <p class="pux-empty">Nenhum contexto disponivel.</p>
23042
- </ng-template>
23043
-
23044
- <div class="pux-actions" *ngIf="actionLabel">
23045
- <button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
23046
- </div>
23136
+ }
23137
+
23138
+
23139
+ @if (actionLabel) {
23140
+ <div class="pux-actions">
23141
+ <button type="button" class="pux-action" (click)="emitAction()">{{ actionLabel }}</button>
23142
+ </div>
23143
+ }
23047
23144
  </section>
23048
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"] }]
23145
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}.pux-card{display:grid;gap:14px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 78%,transparent);background:linear-gradient(180deg,#fffffffa,#f4f8fcfa)}.pux-head{display:grid;gap:4px}.pux-title{margin:0;color:var(--md-sys-color-on-surface);font-size:.98rem;font-weight:700}.pux-subtitle{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem;line-height:1.5}.pux-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin:0}.pux-item{display:grid;gap:4px;padding:12px 14px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(66,93,135,.1)}.pux-item dt{margin:0;color:#5d7186;font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.pux-item dd{margin:0;color:#17314f;font-size:.92rem;line-height:1.45}.pux-actions{display:flex;justify-content:flex-start}.pux-action{min-height:36px;padding:0 14px;border:1px solid rgba(33,88,201,.18);border-radius:999px;background:#2060d214;color:#1e55b8;font:inherit;font-size:.84rem;font-weight:700;cursor:pointer}.pux-empty{margin:0;color:var(--md-sys-color-on-surface-variant);font-size:.84rem}.pux-plain{gap:10px;padding:8px 0 4px;border:0;border-radius:0;background:transparent}.pux-plain .pux-grid{grid-template-columns:1fr;gap:6px}.pux-plain .pux-item{padding:12px 14px;border-radius:14px;background:#ffffff8f;border:1px solid rgba(66,93,135,.08)}.pux-plain .pux-actions{margin-top:2px}\n"] }]
23049
23146
  }], propDecorators: { instanceId: [{
23050
23147
  type: Input
23051
23148
  }], analyticsId: [{
@@ -23607,10 +23704,10 @@ class DynamicWidgetLoaderDirective {
23607
23704
  }
23608
23705
  return value;
23609
23706
  }
23610
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetLoaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23611
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.17", type: DynamicWidgetLoaderDirective, isStandalone: true, selector: "[dynamicWidgetLoader]", inputs: { widget: ["dynamicWidgetLoader", "widget"], ownerWidgetKey: "ownerWidgetKey", context: "context", strictValidation: "strictValidation", autoWireOutputs: "autoWireOutputs" }, outputs: { widgetEvent: "widgetEvent", widgetDiagnostic: "widgetDiagnostic" }, exportAs: ["dynamicWidgetLoader"], usesOnChanges: true, ngImport: i0 });
23707
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetLoaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
23708
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: DynamicWidgetLoaderDirective, isStandalone: true, selector: "[dynamicWidgetLoader]", inputs: { widget: ["dynamicWidgetLoader", "widget"], ownerWidgetKey: "ownerWidgetKey", context: "context", strictValidation: "strictValidation", autoWireOutputs: "autoWireOutputs" }, outputs: { widgetEvent: "widgetEvent", widgetDiagnostic: "widgetDiagnostic" }, exportAs: ["dynamicWidgetLoader"], usesOnChanges: true, ngImport: i0 });
23612
23709
  }
23613
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetLoaderDirective, decorators: [{
23710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetLoaderDirective, decorators: [{
23614
23711
  type: Directive,
23615
23712
  args: [{
23616
23713
  selector: '[dynamicWidgetLoader]',
@@ -23931,280 +24028,292 @@ class WidgetShellComponent {
23931
24028
  t(key, fallback) {
23932
24029
  return this.i18n.t(key, undefined, fallback, WIDGET_SHELL_I18N_NAMESPACE);
23933
24030
  }
23934
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
23935
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: WidgetShellComponent, isStandalone: true, selector: "praxis-widget-shell", inputs: { shell: "shell", context: "context", dragSurfaceEnabled: "dragSurfaceEnabled", dragSurfaceLabel: "dragSurfaceLabel" }, outputs: { action: "action", dragSurfacePointerDown: "dragSurfacePointerDown", dragSurfaceKeydown: "dragSurfaceKeydown" }, host: { properties: { "class.pdx-widget-shell-collapsed": "this.hostCollapsed" } }, providers: [providePraxisI18nConfig(WIDGET_SHELL_I18N_CONFIG)], queries: [{ propertyName: "loader", first: true, predicate: DynamicWidgetLoaderDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
24031
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
24032
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: WidgetShellComponent, isStandalone: true, selector: "praxis-widget-shell", inputs: { shell: "shell", context: "context", dragSurfaceEnabled: "dragSurfaceEnabled", dragSurfaceLabel: "dragSurfaceLabel" }, outputs: { action: "action", dragSurfacePointerDown: "dragSurfacePointerDown", dragSurfaceKeydown: "dragSurfaceKeydown" }, host: { properties: { "class.pdx-widget-shell-collapsed": "this.hostCollapsed" } }, providers: [providePraxisI18nConfig(WIDGET_SHELL_I18N_CONFIG)], queries: [{ propertyName: "loader", first: true, predicate: DynamicWidgetLoaderDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
23936
24033
  <section
23937
- class="pdx-shell"
23938
- [class.no-shell]="!shellEnabled"
23939
- [class.dashboard]="shellEnabled"
23940
- [class.collapsed]="collapsed"
23941
- [class.expanded]="expanded"
23942
- [class.fullscreen]="fullscreen"
23943
- [class.body-fill]="shell?.bodyLayout === 'fill'"
23944
- [class.body-scroll]="shell?.bodyLayout === 'scroll'"
23945
- [style.--pdx-shell-card-bg]="appearance?.card?.background || null"
23946
- [style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
23947
- [style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
23948
- [style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
23949
- [style.--pdx-shell-header-bg]="appearance?.header?.background || null"
23950
- [style.--pdx-shell-header-border]="appearance?.header?.borderColor || null"
23951
- [style.--pdx-shell-title-color]="appearance?.header?.titleColor || null"
23952
- [style.--pdx-shell-subtitle-color]="appearance?.header?.subtitleColor || null"
23953
- [style.--pdx-shell-icon-color]="appearance?.header?.iconColor || null"
23954
- [style.--pdx-shell-body-bg]="appearance?.body?.background || null"
23955
- [style.--pdx-shell-body-color]="appearance?.body?.textColor || null"
23956
- [style.--pdx-shell-body-padding]="appearance?.body?.padding || null"
23957
- [style.--pdx-shell-title-size]="appearance?.typography?.titleSize || null"
23958
- [style.--pdx-shell-title-weight]="appearance?.typography?.titleWeight || null"
23959
- [style.--pdx-shell-subtitle-size]="appearance?.typography?.subtitleSize || null"
23960
- (click)="stopIfExpanded($event)"
23961
- >
23962
- @if (showHeader) {
23963
- <header
23964
- class="pdx-shell-header"
23965
- [class.pdx-shell-header--drag-enabled]="dragSurfaceInteractive"
23966
- [attr.aria-label]="dragSurfaceInteractive ? dragSurfaceLabel : null"
23967
- [attr.tabindex]="dragSurfaceInteractive ? 0 : null"
23968
- (pointerdown)="onHeaderPointerDown($event)"
23969
- (keydown)="onHeaderKeydown($event)"
23970
- >
23971
- <div class="pdx-shell-title">
23972
- @if (shell?.icon) {
23973
- <mat-icon [praxisIcon]="shell?.icon"></mat-icon>
23974
- }
23975
- <div class="pdx-shell-text">
23976
- <div class="pdx-shell-title-text">{{ shell?.title }}</div>
23977
- @if (shell?.subtitle) {
23978
- <div class="pdx-shell-subtitle">{{ shell?.subtitle }}</div>
23979
- }
23980
- </div>
23981
- </div>
23982
- <div class="pdx-shell-actions">
23983
- @if (!expanded && !fullscreen) {
23984
- @for (action of visibleHeaderActions; track action.id) {
23985
- <ng-container>
23986
- <button
23987
- *ngIf="action.variant !== 'icon'"
23988
- [disabled]="action.disabled"
23989
- [matTooltip]="action.tooltip || ''"
23990
- matTooltipPosition="below"
23991
- [ngClass]="action.variant === 'outlined' ? 'pdx-action-outlined' : 'pdx-action-text'"
23992
- mat-button
23993
- type="button"
23994
- (click)="onAction(action, $event)"
23995
- >
23996
- <mat-icon *ngIf="action.icon" [praxisIcon]="action.icon"></mat-icon>
23997
- <span class="pdx-action-label">{{ action.label }}</span>
23998
- </button>
23999
- <button
24000
- *ngIf="action.variant === 'icon'"
24001
- mat-icon-button
24002
- [disabled]="action.disabled"
24003
- [matTooltip]="action.tooltip || action.label || ''"
24004
- matTooltipPosition="below"
24005
- [attr.aria-label]="action.label || action.tooltip || action.id"
24006
- type="button"
24007
- (click)="onAction(action, $event)"
24008
- >
24009
- <mat-icon *ngIf="action.icon" [praxisIcon]="action.icon"></mat-icon>
24010
- </button>
24011
- </ng-container>
24012
- }
24013
- @if (overflowHeaderActions.length) {
24014
- <button
24015
- mat-icon-button
24016
- type="button"
24017
- [matTooltip]="moreActionsLabel()"
24018
- matTooltipPosition="below"
24019
- [attr.aria-label]="moreActionsLabel()"
24020
- [matMenuTriggerFor]="overflowMenu"
24021
- (click)="$event.stopPropagation()"
24022
- >
24023
- <mat-icon praxisIcon="ms:more_horiz"></mat-icon>
24024
- </button>
24025
- }
24026
- }
24027
- @if (windowActions.length) {
24028
- <div class="pdx-shell-window-actions">
24029
- @for (action of windowActions; track action.id) {
24030
- <button
24031
- mat-icon-button
24032
- [disabled]="action.disabled"
24033
- [matTooltip]="action.tooltip || action.label || ''"
24034
- matTooltipPosition="below"
24035
- [attr.aria-label]="action.label || action.tooltip || action.id"
24036
- type="button"
24037
- (click)="onAction(action, $event)"
24034
+ class="pdx-shell"
24035
+ [class.no-shell]="!shellEnabled"
24036
+ [class.dashboard]="shellEnabled"
24037
+ [class.collapsed]="collapsed"
24038
+ [class.expanded]="expanded"
24039
+ [class.fullscreen]="fullscreen"
24040
+ [class.body-fill]="shell?.bodyLayout === 'fill'"
24041
+ [class.body-scroll]="shell?.bodyLayout === 'scroll'"
24042
+ [style.--pdx-shell-card-bg]="appearance?.card?.background || null"
24043
+ [style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
24044
+ [style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
24045
+ [style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
24046
+ [style.--pdx-shell-header-bg]="appearance?.header?.background || null"
24047
+ [style.--pdx-shell-header-border]="appearance?.header?.borderColor || null"
24048
+ [style.--pdx-shell-title-color]="appearance?.header?.titleColor || null"
24049
+ [style.--pdx-shell-subtitle-color]="appearance?.header?.subtitleColor || null"
24050
+ [style.--pdx-shell-icon-color]="appearance?.header?.iconColor || null"
24051
+ [style.--pdx-shell-body-bg]="appearance?.body?.background || null"
24052
+ [style.--pdx-shell-body-color]="appearance?.body?.textColor || null"
24053
+ [style.--pdx-shell-body-padding]="appearance?.body?.padding || null"
24054
+ [style.--pdx-shell-title-size]="appearance?.typography?.titleSize || null"
24055
+ [style.--pdx-shell-title-weight]="appearance?.typography?.titleWeight || null"
24056
+ [style.--pdx-shell-subtitle-size]="appearance?.typography?.subtitleSize || null"
24057
+ (click)="stopIfExpanded($event)"
24058
+ >
24059
+ @if (showHeader) {
24060
+ <header
24061
+ class="pdx-shell-header"
24062
+ [class.pdx-shell-header--drag-enabled]="dragSurfaceInteractive"
24063
+ [attr.aria-label]="dragSurfaceInteractive ? dragSurfaceLabel : null"
24064
+ [attr.tabindex]="dragSurfaceInteractive ? 0 : null"
24065
+ (pointerdown)="onHeaderPointerDown($event)"
24066
+ (keydown)="onHeaderKeydown($event)"
24038
24067
  >
24039
- @if (action.icon) {
24040
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
24068
+ <div class="pdx-shell-title">
24069
+ @if (shell?.icon) {
24070
+ <mat-icon [praxisIcon]="shell?.icon"></mat-icon>
24041
24071
  }
24042
- </button>
24043
- }
24044
- </div>
24045
- }
24072
+ <div class="pdx-shell-text">
24073
+ <div class="pdx-shell-title-text">{{ shell?.title }}</div>
24074
+ @if (shell?.subtitle) {
24075
+ <div class="pdx-shell-subtitle">{{ shell?.subtitle }}</div>
24076
+ }
24077
+ </div>
24078
+ </div>
24079
+ <div class="pdx-shell-actions">
24080
+ @if (!expanded && !fullscreen) {
24081
+ @for (action of visibleHeaderActions; track action.id) {
24082
+ <ng-container>
24083
+ @if (action.variant !== 'icon') {
24084
+ <button
24085
+ [disabled]="action.disabled"
24086
+ [matTooltip]="action.tooltip || ''"
24087
+ matTooltipPosition="below"
24088
+ [ngClass]="action.variant === 'outlined' ? 'pdx-action-outlined' : 'pdx-action-text'"
24089
+ mat-button
24090
+ type="button"
24091
+ (click)="onAction(action, $event)"
24092
+ >
24093
+ @if (action.icon) {
24094
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24095
+ }
24096
+ <span class="pdx-action-label">{{ action.label }}</span>
24097
+ </button>
24098
+ }
24099
+ @if (action.variant === 'icon') {
24100
+ <button
24101
+ mat-icon-button
24102
+ [disabled]="action.disabled"
24103
+ [matTooltip]="action.tooltip || action.label || ''"
24104
+ matTooltipPosition="below"
24105
+ [attr.aria-label]="action.label || action.tooltip || action.id"
24106
+ type="button"
24107
+ (click)="onAction(action, $event)"
24108
+ >
24109
+ @if (action.icon) {
24110
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24111
+ }
24112
+ </button>
24113
+ }
24114
+ </ng-container>
24115
+ }
24116
+ @if (overflowHeaderActions.length) {
24117
+ <button
24118
+ mat-icon-button
24119
+ type="button"
24120
+ [matTooltip]="moreActionsLabel()"
24121
+ matTooltipPosition="below"
24122
+ [attr.aria-label]="moreActionsLabel()"
24123
+ [matMenuTriggerFor]="overflowMenu"
24124
+ (click)="$event.stopPropagation()"
24125
+ >
24126
+ <mat-icon praxisIcon="ms:more_horiz"></mat-icon>
24127
+ </button>
24128
+ }
24129
+ }
24130
+ @if (windowActions.length) {
24131
+ <div class="pdx-shell-window-actions">
24132
+ @for (action of windowActions; track action.id) {
24133
+ <button
24134
+ mat-icon-button
24135
+ [disabled]="action.disabled"
24136
+ [matTooltip]="action.tooltip || action.label || ''"
24137
+ matTooltipPosition="below"
24138
+ [attr.aria-label]="action.label || action.tooltip || action.id"
24139
+ type="button"
24140
+ (click)="onAction(action, $event)"
24141
+ >
24142
+ @if (action.icon) {
24143
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24144
+ }
24145
+ </button>
24146
+ }
24147
+ </div>
24148
+ }
24149
+ </div>
24150
+ <mat-menu #overflowMenu="matMenu">
24151
+ @for (action of overflowHeaderActions; track action.id) {
24152
+ <button
24153
+ mat-menu-item
24154
+ (click)="onAction(action, $event)"
24155
+ >
24156
+ @if (action.icon) {
24157
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24158
+ }
24159
+ <span>{{ action.label || action.id }}</span>
24160
+ </button>
24161
+ }
24162
+ </mat-menu>
24163
+ </header>
24164
+ }
24165
+ <div class="pdx-shell-body" [class.hidden]="collapsed">
24166
+ <ng-content></ng-content>
24046
24167
  </div>
24047
- <mat-menu #overflowMenu="matMenu">
24048
- @for (action of overflowHeaderActions; track action.id) {
24049
- <button
24050
- mat-menu-item
24051
- (click)="onAction(action, $event)"
24052
- >
24053
- @if (action.icon) {
24054
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
24055
- }
24056
- <span>{{ action.label || action.id }}</span>
24057
- </button>
24058
- }
24059
- </mat-menu>
24060
- </header>
24168
+ </section>
24169
+ @if (expanded || fullscreen) {
24170
+ <div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
24061
24171
  }
24062
- <div class="pdx-shell-body" [class.hidden]="collapsed">
24063
- <ng-content></ng-content>
24064
- </div>
24065
- </section>
24066
- @if (expanded || fullscreen) {
24067
- <div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
24068
- }
24069
- `, isInline: true, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var(--pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:10px;padding:8px 10px 7px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:4px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 8px 10px 10px 10px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill .pdx-shell-body,.pdx-shell.body-scroll .pdx-shell-body,.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed .pdx-shell-body{display:none}.pdx-shell.body-fill .pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll .pdx-shell-body{overflow:auto}.pdx-shell.body-fill .pdx-shell-body>*,.pdx-shell.body-scroll .pdx-shell-body>*,.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24172
+ `, isInline: true, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var(--pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:10px;padding:8px 10px 7px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:4px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 8px 10px 10px 10px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill .pdx-shell-body,.pdx-shell.body-scroll .pdx-shell-body,.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed .pdx-shell-body{display:none}.pdx-shell.body-fill .pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll .pdx-shell-body{overflow:auto}.pdx-shell.body-fill .pdx-shell-body>*,.pdx-shell.body-scroll .pdx-shell-body>*,.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
24070
24173
  }
24071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetShellComponent, decorators: [{
24174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetShellComponent, decorators: [{
24072
24175
  type: Component,
24073
24176
  args: [{ selector: 'praxis-widget-shell', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule, MatMenuModule, MatTooltipModule, PraxisIconDirective], providers: [providePraxisI18nConfig(WIDGET_SHELL_I18N_CONFIG)], template: `
24074
24177
  <section
24075
- class="pdx-shell"
24076
- [class.no-shell]="!shellEnabled"
24077
- [class.dashboard]="shellEnabled"
24078
- [class.collapsed]="collapsed"
24079
- [class.expanded]="expanded"
24080
- [class.fullscreen]="fullscreen"
24081
- [class.body-fill]="shell?.bodyLayout === 'fill'"
24082
- [class.body-scroll]="shell?.bodyLayout === 'scroll'"
24083
- [style.--pdx-shell-card-bg]="appearance?.card?.background || null"
24084
- [style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
24085
- [style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
24086
- [style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
24087
- [style.--pdx-shell-header-bg]="appearance?.header?.background || null"
24088
- [style.--pdx-shell-header-border]="appearance?.header?.borderColor || null"
24089
- [style.--pdx-shell-title-color]="appearance?.header?.titleColor || null"
24090
- [style.--pdx-shell-subtitle-color]="appearance?.header?.subtitleColor || null"
24091
- [style.--pdx-shell-icon-color]="appearance?.header?.iconColor || null"
24092
- [style.--pdx-shell-body-bg]="appearance?.body?.background || null"
24093
- [style.--pdx-shell-body-color]="appearance?.body?.textColor || null"
24094
- [style.--pdx-shell-body-padding]="appearance?.body?.padding || null"
24095
- [style.--pdx-shell-title-size]="appearance?.typography?.titleSize || null"
24096
- [style.--pdx-shell-title-weight]="appearance?.typography?.titleWeight || null"
24097
- [style.--pdx-shell-subtitle-size]="appearance?.typography?.subtitleSize || null"
24098
- (click)="stopIfExpanded($event)"
24099
- >
24100
- @if (showHeader) {
24101
- <header
24102
- class="pdx-shell-header"
24103
- [class.pdx-shell-header--drag-enabled]="dragSurfaceInteractive"
24104
- [attr.aria-label]="dragSurfaceInteractive ? dragSurfaceLabel : null"
24105
- [attr.tabindex]="dragSurfaceInteractive ? 0 : null"
24106
- (pointerdown)="onHeaderPointerDown($event)"
24107
- (keydown)="onHeaderKeydown($event)"
24108
- >
24109
- <div class="pdx-shell-title">
24110
- @if (shell?.icon) {
24111
- <mat-icon [praxisIcon]="shell?.icon"></mat-icon>
24112
- }
24113
- <div class="pdx-shell-text">
24114
- <div class="pdx-shell-title-text">{{ shell?.title }}</div>
24115
- @if (shell?.subtitle) {
24116
- <div class="pdx-shell-subtitle">{{ shell?.subtitle }}</div>
24117
- }
24118
- </div>
24119
- </div>
24120
- <div class="pdx-shell-actions">
24121
- @if (!expanded && !fullscreen) {
24122
- @for (action of visibleHeaderActions; track action.id) {
24123
- <ng-container>
24124
- <button
24125
- *ngIf="action.variant !== 'icon'"
24126
- [disabled]="action.disabled"
24127
- [matTooltip]="action.tooltip || ''"
24128
- matTooltipPosition="below"
24129
- [ngClass]="action.variant === 'outlined' ? 'pdx-action-outlined' : 'pdx-action-text'"
24130
- mat-button
24131
- type="button"
24132
- (click)="onAction(action, $event)"
24133
- >
24134
- <mat-icon *ngIf="action.icon" [praxisIcon]="action.icon"></mat-icon>
24135
- <span class="pdx-action-label">{{ action.label }}</span>
24136
- </button>
24137
- <button
24138
- *ngIf="action.variant === 'icon'"
24139
- mat-icon-button
24140
- [disabled]="action.disabled"
24141
- [matTooltip]="action.tooltip || action.label || ''"
24142
- matTooltipPosition="below"
24143
- [attr.aria-label]="action.label || action.tooltip || action.id"
24144
- type="button"
24145
- (click)="onAction(action, $event)"
24146
- >
24147
- <mat-icon *ngIf="action.icon" [praxisIcon]="action.icon"></mat-icon>
24148
- </button>
24149
- </ng-container>
24150
- }
24151
- @if (overflowHeaderActions.length) {
24152
- <button
24153
- mat-icon-button
24154
- type="button"
24155
- [matTooltip]="moreActionsLabel()"
24156
- matTooltipPosition="below"
24157
- [attr.aria-label]="moreActionsLabel()"
24158
- [matMenuTriggerFor]="overflowMenu"
24159
- (click)="$event.stopPropagation()"
24160
- >
24161
- <mat-icon praxisIcon="ms:more_horiz"></mat-icon>
24162
- </button>
24163
- }
24164
- }
24165
- @if (windowActions.length) {
24166
- <div class="pdx-shell-window-actions">
24167
- @for (action of windowActions; track action.id) {
24168
- <button
24169
- mat-icon-button
24170
- [disabled]="action.disabled"
24171
- [matTooltip]="action.tooltip || action.label || ''"
24172
- matTooltipPosition="below"
24173
- [attr.aria-label]="action.label || action.tooltip || action.id"
24174
- type="button"
24175
- (click)="onAction(action, $event)"
24178
+ class="pdx-shell"
24179
+ [class.no-shell]="!shellEnabled"
24180
+ [class.dashboard]="shellEnabled"
24181
+ [class.collapsed]="collapsed"
24182
+ [class.expanded]="expanded"
24183
+ [class.fullscreen]="fullscreen"
24184
+ [class.body-fill]="shell?.bodyLayout === 'fill'"
24185
+ [class.body-scroll]="shell?.bodyLayout === 'scroll'"
24186
+ [style.--pdx-shell-card-bg]="appearance?.card?.background || null"
24187
+ [style.--pdx-shell-card-border]="appearance?.card?.borderColor || null"
24188
+ [style.--pdx-shell-card-radius]="appearance?.card?.borderRadius || null"
24189
+ [style.--pdx-shell-card-shadow]="appearance?.card?.shadow || null"
24190
+ [style.--pdx-shell-header-bg]="appearance?.header?.background || null"
24191
+ [style.--pdx-shell-header-border]="appearance?.header?.borderColor || null"
24192
+ [style.--pdx-shell-title-color]="appearance?.header?.titleColor || null"
24193
+ [style.--pdx-shell-subtitle-color]="appearance?.header?.subtitleColor || null"
24194
+ [style.--pdx-shell-icon-color]="appearance?.header?.iconColor || null"
24195
+ [style.--pdx-shell-body-bg]="appearance?.body?.background || null"
24196
+ [style.--pdx-shell-body-color]="appearance?.body?.textColor || null"
24197
+ [style.--pdx-shell-body-padding]="appearance?.body?.padding || null"
24198
+ [style.--pdx-shell-title-size]="appearance?.typography?.titleSize || null"
24199
+ [style.--pdx-shell-title-weight]="appearance?.typography?.titleWeight || null"
24200
+ [style.--pdx-shell-subtitle-size]="appearance?.typography?.subtitleSize || null"
24201
+ (click)="stopIfExpanded($event)"
24202
+ >
24203
+ @if (showHeader) {
24204
+ <header
24205
+ class="pdx-shell-header"
24206
+ [class.pdx-shell-header--drag-enabled]="dragSurfaceInteractive"
24207
+ [attr.aria-label]="dragSurfaceInteractive ? dragSurfaceLabel : null"
24208
+ [attr.tabindex]="dragSurfaceInteractive ? 0 : null"
24209
+ (pointerdown)="onHeaderPointerDown($event)"
24210
+ (keydown)="onHeaderKeydown($event)"
24176
24211
  >
24177
- @if (action.icon) {
24178
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
24212
+ <div class="pdx-shell-title">
24213
+ @if (shell?.icon) {
24214
+ <mat-icon [praxisIcon]="shell?.icon"></mat-icon>
24179
24215
  }
24180
- </button>
24181
- }
24182
- </div>
24183
- }
24216
+ <div class="pdx-shell-text">
24217
+ <div class="pdx-shell-title-text">{{ shell?.title }}</div>
24218
+ @if (shell?.subtitle) {
24219
+ <div class="pdx-shell-subtitle">{{ shell?.subtitle }}</div>
24220
+ }
24221
+ </div>
24222
+ </div>
24223
+ <div class="pdx-shell-actions">
24224
+ @if (!expanded && !fullscreen) {
24225
+ @for (action of visibleHeaderActions; track action.id) {
24226
+ <ng-container>
24227
+ @if (action.variant !== 'icon') {
24228
+ <button
24229
+ [disabled]="action.disabled"
24230
+ [matTooltip]="action.tooltip || ''"
24231
+ matTooltipPosition="below"
24232
+ [ngClass]="action.variant === 'outlined' ? 'pdx-action-outlined' : 'pdx-action-text'"
24233
+ mat-button
24234
+ type="button"
24235
+ (click)="onAction(action, $event)"
24236
+ >
24237
+ @if (action.icon) {
24238
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24239
+ }
24240
+ <span class="pdx-action-label">{{ action.label }}</span>
24241
+ </button>
24242
+ }
24243
+ @if (action.variant === 'icon') {
24244
+ <button
24245
+ mat-icon-button
24246
+ [disabled]="action.disabled"
24247
+ [matTooltip]="action.tooltip || action.label || ''"
24248
+ matTooltipPosition="below"
24249
+ [attr.aria-label]="action.label || action.tooltip || action.id"
24250
+ type="button"
24251
+ (click)="onAction(action, $event)"
24252
+ >
24253
+ @if (action.icon) {
24254
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24255
+ }
24256
+ </button>
24257
+ }
24258
+ </ng-container>
24259
+ }
24260
+ @if (overflowHeaderActions.length) {
24261
+ <button
24262
+ mat-icon-button
24263
+ type="button"
24264
+ [matTooltip]="moreActionsLabel()"
24265
+ matTooltipPosition="below"
24266
+ [attr.aria-label]="moreActionsLabel()"
24267
+ [matMenuTriggerFor]="overflowMenu"
24268
+ (click)="$event.stopPropagation()"
24269
+ >
24270
+ <mat-icon praxisIcon="ms:more_horiz"></mat-icon>
24271
+ </button>
24272
+ }
24273
+ }
24274
+ @if (windowActions.length) {
24275
+ <div class="pdx-shell-window-actions">
24276
+ @for (action of windowActions; track action.id) {
24277
+ <button
24278
+ mat-icon-button
24279
+ [disabled]="action.disabled"
24280
+ [matTooltip]="action.tooltip || action.label || ''"
24281
+ matTooltipPosition="below"
24282
+ [attr.aria-label]="action.label || action.tooltip || action.id"
24283
+ type="button"
24284
+ (click)="onAction(action, $event)"
24285
+ >
24286
+ @if (action.icon) {
24287
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24288
+ }
24289
+ </button>
24290
+ }
24291
+ </div>
24292
+ }
24293
+ </div>
24294
+ <mat-menu #overflowMenu="matMenu">
24295
+ @for (action of overflowHeaderActions; track action.id) {
24296
+ <button
24297
+ mat-menu-item
24298
+ (click)="onAction(action, $event)"
24299
+ >
24300
+ @if (action.icon) {
24301
+ <mat-icon [praxisIcon]="action.icon"></mat-icon>
24302
+ }
24303
+ <span>{{ action.label || action.id }}</span>
24304
+ </button>
24305
+ }
24306
+ </mat-menu>
24307
+ </header>
24308
+ }
24309
+ <div class="pdx-shell-body" [class.hidden]="collapsed">
24310
+ <ng-content></ng-content>
24184
24311
  </div>
24185
- <mat-menu #overflowMenu="matMenu">
24186
- @for (action of overflowHeaderActions; track action.id) {
24187
- <button
24188
- mat-menu-item
24189
- (click)="onAction(action, $event)"
24190
- >
24191
- @if (action.icon) {
24192
- <mat-icon [praxisIcon]="action.icon"></mat-icon>
24193
- }
24194
- <span>{{ action.label || action.id }}</span>
24195
- </button>
24196
- }
24197
- </mat-menu>
24198
- </header>
24312
+ </section>
24313
+ @if (expanded || fullscreen) {
24314
+ <div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
24199
24315
  }
24200
- <div class="pdx-shell-body" [class.hidden]="collapsed">
24201
- <ng-content></ng-content>
24202
- </div>
24203
- </section>
24204
- @if (expanded || fullscreen) {
24205
- <div class="pdx-shell-backdrop" (click)="closeOverlay()"></div>
24206
- }
24207
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var(--pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:10px;padding:8px 10px 7px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:4px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 8px 10px 10px 10px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill .pdx-shell-body,.pdx-shell.body-scroll .pdx-shell-body,.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed .pdx-shell-body{display:none}.pdx-shell.body-fill .pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll .pdx-shell-body{overflow:auto}.pdx-shell.body-fill .pdx-shell-body>*,.pdx-shell.body-scroll .pdx-shell-body>*,.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
24316
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;height:100%}:host(.pdx-widget-shell-collapsed){height:auto}.pdx-shell{position:relative;height:100%;display:flex;flex-direction:column}.pdx-shell.no-shell{background:transparent;border:none;border-radius:0;box-shadow:none}.pdx-shell.dashboard{background:var(--pdx-shell-card-bg, var(--pdx-dashboard-card-bg, var(--md-sys-color-surface-container-low)));border:1px solid var(--pdx-shell-card-border, var(--pdx-dashboard-card-border, var(--md-sys-color-outline-variant)));border-radius:var(--pdx-shell-card-radius, 12px);box-shadow:var(--pdx-shell-card-shadow, 0 4px 12px rgba(15, 23, 42, .06));overflow:hidden}.pdx-shell-header{display:flex;align-items:center;gap:10px;padding:8px 10px 7px;border-bottom:1px solid var(--pdx-shell-header-border, var(--md-sys-color-outline-variant));background:var(--pdx-shell-header-bg, var(--md-sys-color-surface-container))}.pdx-shell-header--drag-enabled{cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.pdx-shell-header--drag-enabled:active{cursor:grabbing}.pdx-shell-header--drag-enabled:focus-visible{outline:2px solid color-mix(in srgb,var(--md-sys-color-primary) 72%,white 28%);outline-offset:-2px}.pdx-shell-title{display:flex;align-items:center;gap:8px;min-width:0;flex:1;color:var(--pdx-shell-title-color, inherit)}.pdx-shell-title mat-icon{color:var(--pdx-shell-icon-color, currentColor)}.pdx-shell-text{min-width:0}.pdx-shell-title-text{font-weight:var(--pdx-shell-title-weight, 600);font-size:var(--pdx-shell-title-size, 13px);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-subtitle{font-size:var(--pdx-shell-subtitle-size, 11px);opacity:.75;color:var(--pdx-shell-subtitle-color, currentColor);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pdx-shell-actions,.pdx-shell-window-actions{display:flex;align-items:center;gap:4px}.pdx-shell-window-actions{margin-left:auto}.pdx-action-outlined{border:1px solid var(--md-sys-color-outline-variant);border-radius:999px;padding:0 10px}.pdx-action-text{padding:0 8px}.pdx-action-label{font-size:12px;font-weight:500}.pdx-shell-body{flex:1;min-height:0;padding:var(--pdx-shell-body-padding, 8px 10px 10px 10px);background:var(--pdx-shell-body-bg, transparent);color:var(--pdx-shell-body-color, inherit)}.pdx-shell.no-shell .pdx-shell-body{padding:0}.pdx-shell-body.hidden{display:none}.pdx-shell.collapsed{height:auto}.pdx-shell.collapsed .pdx-shell-header{border-bottom-color:transparent}.pdx-shell.body-fill .pdx-shell-body,.pdx-shell.body-scroll .pdx-shell-body,.pdx-shell.expanded .pdx-shell-body,.pdx-shell.fullscreen .pdx-shell-body{overflow:auto;display:flex;flex-direction:column;min-height:0}.pdx-shell.collapsed .pdx-shell-body{display:none}.pdx-shell.body-fill .pdx-shell-body{overflow:hidden}.pdx-shell.body-scroll .pdx-shell-body{overflow:auto}.pdx-shell.body-fill .pdx-shell-body>*,.pdx-shell.body-scroll .pdx-shell-body>*,.pdx-shell.expanded .pdx-shell-body>*,.pdx-shell.fullscreen .pdx-shell-body>*{flex:1 1 auto;min-height:0;width:100%}.pdx-shell.expanded{position:fixed;top:10vh;left:50%;width:min(920px,92vw);height:min(640px,82vh);transform:translate(-50%);z-index:var(--praxis-layer-widget-shell-expanded, 1290);box-shadow:var(--mat-elevation-level8)}.pdx-shell.fullscreen{position:fixed;inset:0;width:auto;height:auto;transform:none;border-radius:0;z-index:var(--praxis-layer-widget-shell-fullscreen, 1291);box-shadow:var(--mat-elevation-level8)}.pdx-shell-backdrop{position:fixed;inset:0;z-index:var(--praxis-layer-widget-shell-backdrop, 1280);background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}\n"] }]
24208
24317
  }], propDecorators: { hostCollapsed: [{
24209
24318
  type: HostBinding,
24210
24319
  args: ['class.pdx-widget-shell-collapsed']
@@ -24573,10 +24682,10 @@ class ConnectionManagerService {
24573
24682
  }
24574
24683
  return out;
24575
24684
  }
24576
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConnectionManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
24577
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConnectionManagerService, providedIn: 'root' });
24685
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ConnectionManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
24686
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ConnectionManagerService, providedIn: 'root' });
24578
24687
  }
24579
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConnectionManagerService, decorators: [{
24688
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ConnectionManagerService, decorators: [{
24580
24689
  type: Injectable,
24581
24690
  args: [{ providedIn: 'root' }]
24582
24691
  }] });
@@ -25111,10 +25220,10 @@ class WidgetPageStateRuntimeService {
25111
25220
  return error;
25112
25221
  return 'Unknown runtime error';
25113
25222
  }
25114
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, deps: [{ token: PraxisJsonLogicService }], target: i0.ɵɵFactoryTarget.Injectable });
25115
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, providedIn: 'root' });
25223
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageStateRuntimeService, deps: [{ token: PraxisJsonLogicService }], target: i0.ɵɵFactoryTarget.Injectable });
25224
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageStateRuntimeService, providedIn: 'root' });
25116
25225
  }
25117
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: WidgetPageStateRuntimeService, decorators: [{
25226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: WidgetPageStateRuntimeService, decorators: [{
25118
25227
  type: Injectable,
25119
25228
  args: [{ providedIn: 'root' }]
25120
25229
  }], ctorParameters: () => [{ type: PraxisJsonLogicService }] });
@@ -27808,8 +27917,8 @@ class DynamicWidgetContextToolbarComponent {
27808
27917
  componentSettings = new EventEmitter();
27809
27918
  shellSettings = new EventEmitter();
27810
27919
  remove = new EventEmitter();
27811
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetContextToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27812
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: DynamicWidgetContextToolbarComponent, isStandalone: true, selector: "praxis-dynamic-widget-context-toolbar", inputs: { toolbarLabel: "toolbarLabel", contextLabel: "contextLabel", contextTooltip: "contextTooltip", showAssistant: "showAssistant", assistantLabel: "assistantLabel", assistantTooltip: "assistantTooltip", showComponentSettings: "showComponentSettings", componentSettingsLabel: "componentSettingsLabel", componentSettingsTooltip: "componentSettingsTooltip", showShellSettings: "showShellSettings", shellSettingsLabel: "shellSettingsLabel", shellSettingsTooltip: "shellSettingsTooltip", moreActionsLabel: "moreActionsLabel", removeLabel: "removeLabel" }, outputs: { assistant: "assistant", componentSettings: "componentSettings", shellSettings: "shellSettings", remove: "remove" }, ngImport: i0, template: `
27920
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetContextToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
27921
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DynamicWidgetContextToolbarComponent, isStandalone: true, selector: "praxis-dynamic-widget-context-toolbar", inputs: { toolbarLabel: "toolbarLabel", contextLabel: "contextLabel", contextTooltip: "contextTooltip", showAssistant: "showAssistant", assistantLabel: "assistantLabel", assistantTooltip: "assistantTooltip", showComponentSettings: "showComponentSettings", componentSettingsLabel: "componentSettingsLabel", componentSettingsTooltip: "componentSettingsTooltip", showShellSettings: "showShellSettings", shellSettingsLabel: "shellSettingsLabel", shellSettingsTooltip: "shellSettingsTooltip", moreActionsLabel: "moreActionsLabel", removeLabel: "removeLabel" }, outputs: { assistant: "assistant", componentSettings: "componentSettings", shellSettings: "shellSettings", remove: "remove" }, ngImport: i0, template: `
27813
27922
  <div
27814
27923
  class="pdx-widget-context-toolbar"
27815
27924
  [class.pdx-widget-context-toolbar--with-context]="!!contextLabel"
@@ -27881,17 +27990,16 @@ class DynamicWidgetContextToolbarComponent {
27881
27990
  </button>
27882
27991
  </mat-menu>
27883
27992
  </div>
27884
- `, isInline: true, styles: [".pdx-widget-context-toolbar{position:absolute;top:-19px;right:12px;z-index:4;display:inline-flex;align-items:center;gap:4px;min-height:34px;padding:2px 4px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 28%,var(--md-sys-color-outline-variant));border-radius:999px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 88%,transparent);box-shadow:0 10px 28px #0f172a38,0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pdx-widget-context-toolbar--with-context{border-radius:18px}.pdx-widget-context-toolbar__context{display:inline-flex;align-items:center;align-self:stretch;max-width:180px;padding:0 8px 0 10px;border-right:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 64%,transparent);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:700;letter-spacing:.01em;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdx-widget-context-toolbar button{--mdc-icon-button-state-layer-size: 30px;--mat-icon-button-state-layer-size: 30px;display:inline-grid;place-items:center;flex:0 0 auto;width:30px;height:30px;padding:0;line-height:1;vertical-align:middle}.pdx-widget-context-toolbar mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27993
+ `, isInline: true, styles: [".pdx-widget-context-toolbar{position:absolute;top:-19px;right:12px;z-index:4;display:inline-flex;align-items:center;gap:4px;min-height:34px;padding:2px 4px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 28%,var(--md-sys-color-outline-variant));border-radius:999px;background:color-mix(in srgb,var(--md-sys-color-surface-container-high) 88%,transparent);box-shadow:0 10px 28px #0f172a38,0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pdx-widget-context-toolbar--with-context{border-radius:18px}.pdx-widget-context-toolbar__context{display:inline-flex;align-items:center;align-self:stretch;max-width:180px;padding:0 8px 0 10px;border-right:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 64%,transparent);color:var(--md-sys-color-on-surface-variant);font-size:11px;font-weight:700;letter-spacing:.01em;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdx-widget-context-toolbar button{--mdc-icon-button-state-layer-size: 30px;--mat-icon-button-state-layer-size: 30px;display:inline-grid;place-items:center;flex:0 0 auto;width:30px;height:30px;padding:0;line-height:1;vertical-align:middle}.pdx-widget-context-toolbar mat-icon{width:18px;height:18px;font-size:18px;line-height:18px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i4$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i4$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27885
27994
  }
27886
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetContextToolbarComponent, decorators: [{
27995
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetContextToolbarComponent, decorators: [{
27887
27996
  type: Component,
27888
27997
  args: [{ selector: 'praxis-dynamic-widget-context-toolbar', standalone: true, imports: [
27889
- CommonModule,
27890
27998
  MatButtonModule,
27891
27999
  MatIconModule,
27892
28000
  MatMenuModule,
27893
28001
  MatTooltipModule,
27894
- PraxisIconDirective,
28002
+ PraxisIconDirective
27895
28003
  ], template: `
27896
28004
  <div
27897
28005
  class="pdx-widget-context-toolbar"
@@ -28247,8 +28355,8 @@ class DynamicWidgetPageComponent {
28247
28355
  widgetSelectionChange = new EventEmitter();
28248
28356
  widgetAssistantRequested = new EventEmitter();
28249
28357
  widgetDiagnosticsChange = new EventEmitter();
28250
- widgets = signal([], ...(ngDevMode ? [{ debugName: "widgets" }] : []));
28251
- renderedGroups = signal([], ...(ngDevMode ? [{ debugName: "renderedGroups" }] : []));
28358
+ widgets = signal([], ...(ngDevMode ? [{ debugName: "widgets" }] : /* istanbul ignore next */ []));
28359
+ renderedGroups = signal([], ...(ngDevMode ? [{ debugName: "renderedGroups" }] : /* istanbul ignore next */ []));
28252
28360
  mergedContext = {};
28253
28361
  pageGap = '16px';
28254
28362
  gridTemplateColumns = 'minmax(0, 1fr)';
@@ -28272,9 +28380,9 @@ class DynamicWidgetPageComponent {
28272
28380
  widgetDiagnostics = {};
28273
28381
  selectedWidgetKey = null;
28274
28382
  blockedCanvasWidgetKey = null;
28275
- canvasPreviewState = signal(null, ...(ngDevMode ? [{ debugName: "canvasPreviewState" }] : []));
28276
- canvasPreviewInvalidState = signal(false, ...(ngDevMode ? [{ debugName: "canvasPreviewInvalidState" }] : []));
28277
- transientCanvasItemsState = signal({}, ...(ngDevMode ? [{ debugName: "transientCanvasItemsState" }] : []));
28383
+ canvasPreviewState = signal(null, ...(ngDevMode ? [{ debugName: "canvasPreviewState" }] : /* istanbul ignore next */ []));
28384
+ canvasPreviewInvalidState = signal(false, ...(ngDevMode ? [{ debugName: "canvasPreviewInvalidState" }] : /* istanbul ignore next */ []));
28385
+ transientCanvasItemsState = signal({}, ...(ngDevMode ? [{ debugName: "transientCanvasItemsState" }] : /* istanbul ignore next */ []));
28278
28386
  activeCanvasInteraction = null;
28279
28387
  appliedPersisted = false;
28280
28388
  isHydrating = false;
@@ -30755,8 +30863,8 @@ class DynamicWidgetPageComponent {
30755
30863
  }
30756
30864
  throw new Error('DynamicWidgetPageComponent no longer accepts `page.connections`. Use `composition.links` only.');
30757
30865
  }
30758
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30759
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: DynamicWidgetPageComponent, isStandalone: true, selector: "praxis-dynamic-page", inputs: { page: "page", context: "context", strictValidation: "strictValidation", enableCustomization: "enableCustomization", showPageSettingsButton: "showPageSettingsButton", shellEditorComponent: "shellEditorComponent", pageEditorComponent: "pageEditorComponent", autoPersist: "autoPersist", pageIdentity: "pageIdentity", componentInstanceId: "componentInstanceId", showWidgetAssistantButton: "showWidgetAssistantButton" }, outputs: { pageChange: "pageChange", widgetEvent: "widgetEvent", widgetSelectionChange: "widgetSelectionChange", widgetAssistantRequested: "widgetAssistantRequested", widgetDiagnosticsChange: "widgetDiagnosticsChange" }, host: { listeners: { "window:resize": "onWindowResize()", "window:pointermove": "onCanvasPointerMove($event)", "window:pointerup": "onCanvasPointerUp($event)", "window:pointercancel": "onCanvasPointerCancel($event)" } }, providers: [providePraxisI18nConfig(DYNAMIC_WIDGET_PAGE_I18N_CONFIG)], viewQueries: [{ propertyName: "pageCanvasHost", first: true, predicate: ["pageCanvasHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
30866
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30867
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: DynamicWidgetPageComponent, isStandalone: true, selector: "praxis-dynamic-page", inputs: { page: "page", context: "context", strictValidation: "strictValidation", enableCustomization: "enableCustomization", showPageSettingsButton: "showPageSettingsButton", shellEditorComponent: "shellEditorComponent", pageEditorComponent: "pageEditorComponent", autoPersist: "autoPersist", pageIdentity: "pageIdentity", componentInstanceId: "componentInstanceId", showWidgetAssistantButton: "showWidgetAssistantButton" }, outputs: { pageChange: "pageChange", widgetEvent: "widgetEvent", widgetSelectionChange: "widgetSelectionChange", widgetAssistantRequested: "widgetAssistantRequested", widgetDiagnosticsChange: "widgetDiagnosticsChange" }, host: { listeners: { "window:resize": "onWindowResize()", "window:pointermove": "onCanvasPointerMove($event)", "window:pointerup": "onCanvasPointerUp($event)", "window:pointercancel": "onCanvasPointerCancel($event)" } }, providers: [providePraxisI18nConfig(DYNAMIC_WIDGET_PAGE_I18N_CONFIG)], viewQueries: [{ propertyName: "pageCanvasHost", first: true, predicate: ["pageCanvasHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
30760
30868
  <div class="pdx-page-wrapper" [class.editing]="enableCustomization">
30761
30869
  @if (enableCustomization && showPageSettingsButton) {
30762
30870
  <button
@@ -31095,9 +31203,9 @@ class DynamicWidgetPageComponent {
31095
31203
  </div>
31096
31204
  }
31097
31205
  </div>
31098
- `, isInline: true, styles: [".pdx-page-wrapper{position:relative;display:block}.pdx-page{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}.pdx-page--canvas{align-items:start;grid-auto-flow:dense}.pdx-page-settings{position:sticky;top:8px;z-index:2;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low);color:inherit;border-radius:12px;width:36px;height:36px;margin-bottom:6px}.pdx-widget{position:relative;background:var(--pfx-surface, transparent);border-radius:6px;min-width:0;min-height:0}.pdx-widget--interactive{cursor:pointer}.pdx-widget--selected:before{content:\"\";position:absolute;inset:0;border:1px dashed color-mix(in srgb,var(--md-sys-color-primary) 34%,transparent);border-radius:14px;pointer-events:none;z-index:1;box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 6%,transparent),0 8px 20px color-mix(in srgb,var(--md-sys-color-primary) 6%,transparent)}.pdx-widget--canvas{align-self:stretch;--pdx-resize-gradient-horizontal: linear-gradient( 90deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-vertical: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-diagonal-se: linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-diagonal-sw: linear-gradient( 225deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-se)}.pdx-widget--canvas:after{content:\"\";position:absolute;inset:0;padding:2px;border-radius:14px;background:var(--pdx-active-resize-gradient);opacity:0;pointer-events:none;transition:opacity .14s ease,filter .14s ease;filter:saturate(1.02) drop-shadow(0 0 5px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.pdx-widget--canvas-selected:before,.pdx-widget--canvas-blocked:before{content:\"\";position:absolute;inset:0;border-radius:14px;pointer-events:none;z-index:1;transition:opacity .14s ease,box-shadow .14s ease,border-color .14s ease}.pdx-widget--canvas-blocked:before{border:1px solid color-mix(in srgb,var(--md-sys-color-error) 74%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-error) 20%,transparent),0 10px 24px color-mix(in srgb,var(--md-sys-color-error) 12%,transparent)}.pdx-widget--canvas:has(.pdx-canvas-resize:hover):after,.pdx-widget--canvas:has(.pdx-canvas-resize:focus-visible):after{opacity:.82}.pdx-widget--canvas:has(.pdx-canvas-resize--north:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-horizontal)}.pdx-widget--canvas:has(.pdx-canvas-resize--east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--east:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--west:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-vertical)}.pdx-widget--canvas:has(.pdx-canvas-resize--north-east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north-east:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south-west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south-west:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-sw)}.pdx-widget--canvas:has(.pdx-canvas-resize--north-west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north-west:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south-east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south-east:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-se)}.pdx-canvas-resize{position:absolute;z-index:7;border:0;padding:0;margin:0;background:transparent;touch-action:none;cursor:pointer;opacity:0;pointer-events:none;transform:scale(.94);transition:opacity .14s ease,transform .14s ease,filter .14s ease;filter:saturate(.9)}.pdx-widget--canvas:hover .pdx-canvas-resize,.pdx-widget--canvas:focus-within .pdx-canvas-resize,.pdx-widget--canvas-selected .pdx-canvas-resize{opacity:.88;pointer-events:auto;transform:scale(1);filter:saturate(1)}.pdx-widget--canvas:has(.pdx-shell.expanded) .pdx-canvas-resize,.pdx-widget--canvas:has(.pdx-shell.fullscreen) .pdx-canvas-resize{opacity:0;pointer-events:none;transform:scale(.94)}.pdx-canvas-resize-grip{display:block;width:9px;height:9px;border-radius:999px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 42%,var(--md-sys-color-outline-variant) 58%);background:color-mix(in srgb,var(--md-sys-color-surface) 92%,var(--md-sys-color-primary) 8%);box-shadow:0 1px 4px color-mix(in srgb,var(--md-sys-color-shadow) 10%,transparent);transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{border-color:color-mix(in srgb,var(--md-sys-color-primary) 58%,var(--md-sys-color-outline-variant) 42%);background:color-mix(in srgb,var(--md-sys-color-surface) 84%,var(--md-sys-color-primary) 16%);box-shadow:0 2px 7px color-mix(in srgb,var(--md-sys-color-primary) 14%,transparent);transform:scale(1.04)}.pdx-canvas-resize--north,.pdx-canvas-resize--south{left:50%;width:40px;height:18px;margin-left:-20px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--north{top:-8px;cursor:ns-resize}.pdx-canvas-resize--south{bottom:-8px;cursor:ns-resize}.pdx-canvas-resize--east,.pdx-canvas-resize--west{top:50%;width:18px;height:40px;margin-top:-20px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--east{right:-8px;cursor:ew-resize}.pdx-canvas-resize--west{left:-8px;cursor:ew-resize}.pdx-canvas-resize--north-east,.pdx-canvas-resize--north-west,.pdx-canvas-resize--south-east,.pdx-canvas-resize--south-west{width:18px;height:18px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--north-east{top:-8px;right:-8px;cursor:nesw-resize}.pdx-canvas-resize--north-west{top:-8px;left:-8px;cursor:nwse-resize}.pdx-canvas-resize--south-east{bottom:-8px;right:-8px;cursor:nwse-resize}.pdx-canvas-resize--south-west{bottom:-8px;left:-8px;cursor:nesw-resize}.pdx-canvas-snap-preview{position:relative;align-self:stretch;border-radius:12px;pointer-events:none;z-index:0;background:linear-gradient(135deg,color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent),color-mix(in srgb,var(--md-sys-color-tertiary) 12%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 42%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--md-sys-color-surface) 55%,transparent);animation:pdx-snap-preview-pulse .48s ease-out infinite alternate}.pdx-canvas-snap-preview:before,.pdx-canvas-snap-preview:after{content:\"\";position:absolute;border-radius:999px;background:color-mix(in srgb,var(--md-sys-color-primary) 82%,var(--md-sys-color-tertiary) 18%);opacity:.72}.pdx-canvas-snap-preview:before{inset:0 auto 0 0;width:3px}.pdx-canvas-snap-preview:after{inset:0 0 auto;height:3px}.pdx-canvas-snap-preview--invalid{background:linear-gradient(135deg,color-mix(in srgb,var(--md-sys-color-error) 18%,transparent),color-mix(in srgb,var(--md-sys-color-error-container) 22%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-error) 58%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--md-sys-color-surface) 40%,transparent)}.pdx-canvas-snap-preview--invalid:before,.pdx-canvas-snap-preview--invalid:after{background:color-mix(in srgb,var(--md-sys-color-error) 86%,var(--md-sys-color-error-container) 14%)}.pdx-canvas-resize:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{border-color:transparent;box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 20%,transparent),var(--mat-elevation-level3)}.pdx-canvas-resize--north:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-horizontal)}.pdx-canvas-resize--east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--east:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--west:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-vertical)}.pdx-canvas-resize--north-east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north-east:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south-west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south-west:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-diagonal-sw)}.pdx-canvas-resize--north-west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north-west:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south-east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south-east:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-diagonal-se)}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{transform:scale(1.08)}@keyframes pdx-snap-preview-pulse{0%{opacity:.72;transform:scale(.996)}to{opacity:1;transform:scale(1)}}.pdx-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pdx-group{display:grid;gap:12px;grid-column:1 / -1;padding:12px;border-radius:16px;background:color-mix(in srgb,var(--md-sys-color-surface-container-low) 76%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent)}.pdx-group--hero{padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--md-sys-color-primary-container) 42%,transparent),color-mix(in srgb,var(--md-sys-color-surface-container-low) 86%,transparent))}.pdx-group--rail{align-self:start}.pdx-group-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.pdx-group-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.pdx-group-content{display:grid;gap:12px}.pdx-group-content--stack{grid-template-columns:minmax(0,1fr)}.pdx-group-content--row{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.pdx-group-content--grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.pdx-group-tabs{display:grid;gap:12px}.pdx-tabs-header{display:flex;flex-wrap:wrap;gap:8px}.pdx-tab-chip{appearance:none;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);border-radius:999px;padding:8px 12px;font:inherit;cursor:pointer}.pdx-tab-chip.active{border-color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary-container) 78%,transparent);color:var(--md-sys-color-on-primary-container)}.pdx-page-wrapper.editing .pdx-widget-settings{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: DynamicWidgetContextToolbarComponent, selector: "praxis-dynamic-widget-context-toolbar", inputs: ["toolbarLabel", "contextLabel", "contextTooltip", "showAssistant", "assistantLabel", "assistantTooltip", "showComponentSettings", "componentSettingsLabel", "componentSettingsTooltip", "showShellSettings", "shellSettingsLabel", "shellSettingsTooltip", "moreActionsLabel", "removeLabel"], outputs: ["assistant", "componentSettings", "shellSettings", "remove"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: WidgetShellComponent, selector: "praxis-widget-shell", inputs: ["shell", "context", "dragSurfaceEnabled", "dragSurfaceLabel"], outputs: ["action", "dragSurfacePointerDown", "dragSurfaceKeydown"] }] });
31206
+ `, isInline: true, styles: [".pdx-page-wrapper{position:relative;display:block}.pdx-page{display:grid;gap:12px;grid-template-columns:minmax(0,1fr)}.pdx-page--canvas{align-items:start;grid-auto-flow:dense}.pdx-page-settings{position:sticky;top:8px;z-index:2;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-low);color:inherit;border-radius:12px;width:36px;height:36px;margin-bottom:6px}.pdx-widget{position:relative;background:var(--pfx-surface, transparent);border-radius:6px;min-width:0;min-height:0}.pdx-widget--interactive{cursor:pointer}.pdx-widget--selected:before{content:\"\";position:absolute;inset:0;border:1px dashed color-mix(in srgb,var(--md-sys-color-primary) 34%,transparent);border-radius:14px;pointer-events:none;z-index:1;box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 6%,transparent),0 8px 20px color-mix(in srgb,var(--md-sys-color-primary) 6%,transparent)}.pdx-widget--canvas{align-self:stretch;--pdx-resize-gradient-horizontal: linear-gradient( 90deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-vertical: linear-gradient( 180deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-diagonal-se: linear-gradient( 135deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-resize-gradient-diagonal-sw: linear-gradient( 225deg, color-mix(in srgb, var(--md-sys-color-primary) 94%, white 6%), color-mix(in srgb, var(--md-sys-color-tertiary) 90%, white 10%), color-mix(in srgb, var(--md-sys-color-secondary) 88%, white 12%) );--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-se)}.pdx-widget--canvas:after{content:\"\";position:absolute;inset:0;padding:2px;border-radius:14px;background:var(--pdx-active-resize-gradient);opacity:0;pointer-events:none;transition:opacity .14s ease,filter .14s ease;filter:saturate(1.02) drop-shadow(0 0 5px color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude}.pdx-widget--canvas-selected:before,.pdx-widget--canvas-blocked:before{content:\"\";position:absolute;inset:0;border-radius:14px;pointer-events:none;z-index:1;transition:opacity .14s ease,box-shadow .14s ease,border-color .14s ease}.pdx-widget--canvas-blocked:before{border:1px solid color-mix(in srgb,var(--md-sys-color-error) 74%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-error) 20%,transparent),0 10px 24px color-mix(in srgb,var(--md-sys-color-error) 12%,transparent)}.pdx-widget--canvas:has(.pdx-canvas-resize:hover):after,.pdx-widget--canvas:has(.pdx-canvas-resize:focus-visible):after{opacity:.82}.pdx-widget--canvas:has(.pdx-canvas-resize--north:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-horizontal)}.pdx-widget--canvas:has(.pdx-canvas-resize--east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--east:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--west:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-vertical)}.pdx-widget--canvas:has(.pdx-canvas-resize--north-east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north-east:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south-west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south-west:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-sw)}.pdx-widget--canvas:has(.pdx-canvas-resize--north-west:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--north-west:focus-visible),.pdx-widget--canvas:has(.pdx-canvas-resize--south-east:hover),.pdx-widget--canvas:has(.pdx-canvas-resize--south-east:focus-visible){--pdx-active-resize-gradient: var(--pdx-resize-gradient-diagonal-se)}.pdx-canvas-resize{position:absolute;z-index:7;border:0;padding:0;margin:0;background:transparent;touch-action:none;cursor:pointer;opacity:0;pointer-events:none;transform:scale(.94);transition:opacity .14s ease,transform .14s ease,filter .14s ease;filter:saturate(.9)}.pdx-widget--canvas:hover .pdx-canvas-resize,.pdx-widget--canvas:focus-within .pdx-canvas-resize,.pdx-widget--canvas-selected .pdx-canvas-resize{opacity:.88;pointer-events:auto;transform:scale(1);filter:saturate(1)}.pdx-widget--canvas:has(.pdx-shell.expanded) .pdx-canvas-resize,.pdx-widget--canvas:has(.pdx-shell.fullscreen) .pdx-canvas-resize{opacity:0;pointer-events:none;transform:scale(.94)}.pdx-canvas-resize-grip{display:block;width:9px;height:9px;border-radius:999px;border:1px solid color-mix(in srgb,var(--md-sys-color-primary) 42%,var(--md-sys-color-outline-variant) 58%);background:color-mix(in srgb,var(--md-sys-color-surface) 92%,var(--md-sys-color-primary) 8%);box-shadow:0 1px 4px color-mix(in srgb,var(--md-sys-color-shadow) 10%,transparent);transition:transform .14s ease,border-color .14s ease,background .14s ease,box-shadow .14s ease}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{border-color:color-mix(in srgb,var(--md-sys-color-primary) 58%,var(--md-sys-color-outline-variant) 42%);background:color-mix(in srgb,var(--md-sys-color-surface) 84%,var(--md-sys-color-primary) 16%);box-shadow:0 2px 7px color-mix(in srgb,var(--md-sys-color-primary) 14%,transparent);transform:scale(1.04)}.pdx-canvas-resize--north,.pdx-canvas-resize--south{left:50%;width:40px;height:18px;margin-left:-20px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--north{top:-8px;cursor:ns-resize}.pdx-canvas-resize--south{bottom:-8px;cursor:ns-resize}.pdx-canvas-resize--east,.pdx-canvas-resize--west{top:50%;width:18px;height:40px;margin-top:-20px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--east{right:-8px;cursor:ew-resize}.pdx-canvas-resize--west{left:-8px;cursor:ew-resize}.pdx-canvas-resize--north-east,.pdx-canvas-resize--north-west,.pdx-canvas-resize--south-east,.pdx-canvas-resize--south-west{width:18px;height:18px;display:flex;align-items:center;justify-content:center}.pdx-canvas-resize--north-east{top:-8px;right:-8px;cursor:nesw-resize}.pdx-canvas-resize--north-west{top:-8px;left:-8px;cursor:nwse-resize}.pdx-canvas-resize--south-east{bottom:-8px;right:-8px;cursor:nwse-resize}.pdx-canvas-resize--south-west{bottom:-8px;left:-8px;cursor:nesw-resize}.pdx-canvas-snap-preview{position:relative;align-self:stretch;border-radius:12px;pointer-events:none;z-index:0;background:linear-gradient(135deg,color-mix(in srgb,var(--md-sys-color-primary) 10%,transparent),color-mix(in srgb,var(--md-sys-color-tertiary) 12%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 42%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--md-sys-color-surface) 55%,transparent);animation:pdx-snap-preview-pulse .48s ease-out infinite alternate}.pdx-canvas-snap-preview:before,.pdx-canvas-snap-preview:after{content:\"\";position:absolute;border-radius:999px;background:color-mix(in srgb,var(--md-sys-color-primary) 82%,var(--md-sys-color-tertiary) 18%);opacity:.72}.pdx-canvas-snap-preview:before{inset:0 auto 0 0;width:3px}.pdx-canvas-snap-preview:after{inset:0 0 auto;height:3px}.pdx-canvas-snap-preview--invalid{background:linear-gradient(135deg,color-mix(in srgb,var(--md-sys-color-error) 18%,transparent),color-mix(in srgb,var(--md-sys-color-error-container) 22%,transparent));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--md-sys-color-error) 58%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--md-sys-color-surface) 40%,transparent)}.pdx-canvas-snap-preview--invalid:before,.pdx-canvas-snap-preview--invalid:after{background:color-mix(in srgb,var(--md-sys-color-error) 86%,var(--md-sys-color-error-container) 14%)}.pdx-canvas-resize:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{border-color:transparent;box-shadow:0 0 0 1px color-mix(in srgb,var(--md-sys-color-primary) 20%,transparent),var(--mat-elevation-level3)}.pdx-canvas-resize--north:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-horizontal)}.pdx-canvas-resize--east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--east:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--west:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-vertical)}.pdx-canvas-resize--north-east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north-east:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south-west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south-west:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-diagonal-sw)}.pdx-canvas-resize--north-west:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--north-west:focus-visible .pdx-canvas-resize-grip,.pdx-canvas-resize--south-east:hover .pdx-canvas-resize-grip,.pdx-canvas-resize--south-east:focus-visible .pdx-canvas-resize-grip{background:var(--pdx-resize-gradient-diagonal-se)}.pdx-canvas-resize:hover .pdx-canvas-resize-grip,.pdx-canvas-resize:focus-visible .pdx-canvas-resize-grip{transform:scale(1.08)}@keyframes pdx-snap-preview-pulse{0%{opacity:.72;transform:scale(.996)}to{opacity:1;transform:scale(1)}}.pdx-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pdx-group{display:grid;gap:12px;grid-column:1 / -1;padding:12px;border-radius:16px;background:color-mix(in srgb,var(--md-sys-color-surface-container-low) 76%,transparent);border:1px solid color-mix(in srgb,var(--md-sys-color-outline-variant) 72%,transparent)}.pdx-group--hero{padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--md-sys-color-primary-container) 42%,transparent),color-mix(in srgb,var(--md-sys-color-surface-container-low) 86%,transparent))}.pdx-group--rail{align-self:start}.pdx-group-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.pdx-group-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.pdx-group-content{display:grid;gap:12px}.pdx-group-content--stack{grid-template-columns:minmax(0,1fr)}.pdx-group-content--row{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.pdx-group-content--grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.pdx-group-tabs{display:grid;gap:12px}.pdx-tabs-header{display:flex;flex-wrap:wrap;gap:8px}.pdx-tab-chip{appearance:none;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container-lowest);color:var(--md-sys-color-on-surface);border-radius:999px;padding:8px 12px;font:inherit;cursor:pointer}.pdx-tab-chip.active{border-color:var(--md-sys-color-primary);background:color-mix(in srgb,var(--md-sys-color-primary-container) 78%,transparent);color:var(--md-sys-color-on-primary-container)}.pdx-page-wrapper.editing .pdx-widget-settings{opacity:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: DynamicWidgetContextToolbarComponent, selector: "praxis-dynamic-widget-context-toolbar", inputs: ["toolbarLabel", "contextLabel", "contextTooltip", "showAssistant", "assistantLabel", "assistantTooltip", "showComponentSettings", "componentSettingsLabel", "componentSettingsTooltip", "showShellSettings", "shellSettingsLabel", "shellSettingsTooltip", "moreActionsLabel", "removeLabel"], outputs: ["assistant", "componentSettings", "shellSettings", "remove"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: WidgetShellComponent, selector: "praxis-widget-shell", inputs: ["shell", "context", "dragSurfaceEnabled", "dragSurfaceLabel"], outputs: ["action", "dragSurfacePointerDown", "dragSurfaceKeydown"] }] });
31099
31207
  }
31100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: DynamicWidgetPageComponent, decorators: [{
31208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: DynamicWidgetPageComponent, decorators: [{
31101
31209
  type: Component,
31102
31210
  args: [{ selector: 'praxis-dynamic-page', standalone: true, imports: [
31103
31211
  CommonModule,
@@ -31577,8 +31685,8 @@ class PraxisSurfaceHostComponent {
31577
31685
  loader.renderNow();
31578
31686
  });
31579
31687
  }
31580
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisSurfaceHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31581
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.17", type: PraxisSurfaceHostComponent, isStandalone: true, selector: "praxis-surface-host", inputs: { title: "title", subtitle: "subtitle", icon: "icon", widget: "widget", context: "context", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, viewQueries: [{ propertyName: "widgetLoader", first: true, predicate: DynamicWidgetLoaderDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
31688
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31689
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisSurfaceHostComponent, isStandalone: true, selector: "praxis-surface-host", inputs: { title: "title", subtitle: "subtitle", icon: "icon", widget: "widget", context: "context", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, viewQueries: [{ propertyName: "widgetLoader", first: true, predicate: DynamicWidgetLoaderDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: `
31582
31690
  <div class="pdx-surface-host">
31583
31691
  @if (subtitle || (title && renderTitleInsideBody)) {
31584
31692
  <header class="pdx-surface-host__header">
@@ -31606,11 +31714,11 @@ class PraxisSurfaceHostComponent {
31606
31714
  }
31607
31715
  </section>
31608
31716
  </div>
31609
- `, isInline: true, styles: [":host{display:block;min-width:0}.pdx-surface-host{display:grid;gap:16px;min-width:0}.pdx-surface-host__header{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.pdx-surface-host__icon{font-size:20px;line-height:20px;color:var(--md-sys-color-primary, currentColor)}.pdx-surface-host__copy{display:grid;gap:4px;min-width:0}.pdx-surface-host__title,.pdx-surface-host__subtitle{margin:0}.pdx-surface-host__title{font-size:1rem;font-weight:600}.pdx-surface-host__subtitle{color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .64));font-size:.9375rem}.pdx-surface-host__body{min-width:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }] });
31717
+ `, isInline: true, styles: [":host{display:block;min-width:0}.pdx-surface-host{display:grid;gap:16px;min-width:0}.pdx-surface-host__header{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}.pdx-surface-host__icon{font-size:20px;line-height:20px;color:var(--md-sys-color-primary, currentColor)}.pdx-surface-host__copy{display:grid;gap:4px;min-width:0}.pdx-surface-host__title,.pdx-surface-host__subtitle{margin:0}.pdx-surface-host__title{font-size:1rem;font-weight:600}.pdx-surface-host__subtitle{color:var(--md-sys-color-on-surface-variant, rgba(0, 0, 0, .64));font-size:.9375rem}.pdx-surface-host__body{min-width:0}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }] });
31610
31718
  }
31611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisSurfaceHostComponent, decorators: [{
31719
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, decorators: [{
31612
31720
  type: Component,
31613
- args: [{ selector: 'praxis-surface-host', standalone: true, imports: [CommonModule, DynamicWidgetLoaderDirective], template: `
31721
+ args: [{ selector: 'praxis-surface-host', standalone: true, imports: [DynamicWidgetLoaderDirective], template: `
31614
31722
  <div class="pdx-surface-host">
31615
31723
  @if (subtitle || (title && renderTitleInsideBody)) {
31616
31724
  <header class="pdx-surface-host__header">
@@ -31666,68 +31774,92 @@ class EmptyStateCardComponent {
31666
31774
  secondaryActions = [];
31667
31775
  inline = false;
31668
31776
  tone = 'neutral';
31669
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EmptyStateCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31670
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: EmptyStateCardComponent, isStandalone: true, selector: "praxis-empty-state-card", inputs: { icon: "icon", title: "title", description: "description", primaryAction: "primaryAction", secondaryActions: "secondaryActions", inline: "inline", tone: "tone" }, ngImport: i0, template: `
31777
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EmptyStateCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31778
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: EmptyStateCardComponent, isStandalone: true, selector: "praxis-empty-state-card", inputs: { icon: "icon", title: "title", description: "description", primaryAction: "primaryAction", secondaryActions: "secondaryActions", inline: "inline", tone: "tone" }, ngImport: i0, template: `
31671
31779
  <mat-card
31672
31780
  class="empty-card"
31673
31781
  [class.empty-inline]="inline"
31674
31782
  [class.tone-primary]="tone === 'primary'"
31675
31783
  [class.tone-secondary]="tone === 'secondary'"
31676
31784
  appearance="outlined"
31677
- >
31785
+ >
31678
31786
  <mat-card-content>
31679
31787
  <div class="content">
31680
- <mat-icon *ngIf="icon" class="icon" [fontIcon]="icon"></mat-icon>
31788
+ @if (icon) {
31789
+ <mat-icon class="icon" [fontIcon]="icon"></mat-icon>
31790
+ }
31681
31791
  <div class="texts">
31682
31792
  <h3 class="title">{{ title }}</h3>
31683
- <p class="desc" *ngIf="description">{{ description }}</p>
31793
+ @if (description) {
31794
+ <p class="desc">{{ description }}</p>
31795
+ }
31684
31796
  </div>
31685
31797
  </div>
31686
31798
  <div class="actions">
31687
- <button mat-flat-button color="primary" *ngIf="primaryAction" (click)="primaryAction.action()">
31688
- <mat-icon *ngIf="primaryAction.icon" [fontIcon]="primaryAction.icon"></mat-icon>
31689
- {{ primaryAction.label }}
31690
- </button>
31691
- <button mat-stroked-button *ngFor="let a of secondaryActions" [color]="a.color" (click)="a.action()">
31692
- <mat-icon *ngIf="a.icon" [fontIcon]="a.icon"></mat-icon>
31693
- {{ a.label }}
31694
- </button>
31799
+ @if (primaryAction) {
31800
+ <button mat-flat-button color="primary" (click)="primaryAction.action()">
31801
+ @if (primaryAction.icon) {
31802
+ <mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
31803
+ }
31804
+ {{ primaryAction.label }}
31805
+ </button>
31806
+ }
31807
+ @for (a of secondaryActions; track a) {
31808
+ <button mat-stroked-button [color]="a.color" (click)="a.action()">
31809
+ @if (a.icon) {
31810
+ <mat-icon [fontIcon]="a.icon"></mat-icon>
31811
+ }
31812
+ {{ a.label }}
31813
+ </button>
31814
+ }
31695
31815
  </div>
31696
31816
  </mat-card-content>
31697
31817
  </mat-card>
31698
- `, isInline: true, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
31818
+ `, isInline: true, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
31699
31819
  }
31700
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: EmptyStateCardComponent, decorators: [{
31820
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: EmptyStateCardComponent, decorators: [{
31701
31821
  type: Component,
31702
- args: [{ selector: 'praxis-empty-state-card', standalone: true, imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule], template: `
31822
+ args: [{ selector: 'praxis-empty-state-card', standalone: true, imports: [MatCardModule, MatButtonModule, MatIconModule], template: `
31703
31823
  <mat-card
31704
31824
  class="empty-card"
31705
31825
  [class.empty-inline]="inline"
31706
31826
  [class.tone-primary]="tone === 'primary'"
31707
31827
  [class.tone-secondary]="tone === 'secondary'"
31708
31828
  appearance="outlined"
31709
- >
31829
+ >
31710
31830
  <mat-card-content>
31711
31831
  <div class="content">
31712
- <mat-icon *ngIf="icon" class="icon" [fontIcon]="icon"></mat-icon>
31832
+ @if (icon) {
31833
+ <mat-icon class="icon" [fontIcon]="icon"></mat-icon>
31834
+ }
31713
31835
  <div class="texts">
31714
31836
  <h3 class="title">{{ title }}</h3>
31715
- <p class="desc" *ngIf="description">{{ description }}</p>
31837
+ @if (description) {
31838
+ <p class="desc">{{ description }}</p>
31839
+ }
31716
31840
  </div>
31717
31841
  </div>
31718
31842
  <div class="actions">
31719
- <button mat-flat-button color="primary" *ngIf="primaryAction" (click)="primaryAction.action()">
31720
- <mat-icon *ngIf="primaryAction.icon" [fontIcon]="primaryAction.icon"></mat-icon>
31721
- {{ primaryAction.label }}
31722
- </button>
31723
- <button mat-stroked-button *ngFor="let a of secondaryActions" [color]="a.color" (click)="a.action()">
31724
- <mat-icon *ngIf="a.icon" [fontIcon]="a.icon"></mat-icon>
31725
- {{ a.label }}
31726
- </button>
31843
+ @if (primaryAction) {
31844
+ <button mat-flat-button color="primary" (click)="primaryAction.action()">
31845
+ @if (primaryAction.icon) {
31846
+ <mat-icon [fontIcon]="primaryAction.icon"></mat-icon>
31847
+ }
31848
+ {{ primaryAction.label }}
31849
+ </button>
31850
+ }
31851
+ @for (a of secondaryActions; track a) {
31852
+ <button mat-stroked-button [color]="a.color" (click)="a.action()">
31853
+ @if (a.icon) {
31854
+ <mat-icon [fontIcon]="a.icon"></mat-icon>
31855
+ }
31856
+ {{ a.label }}
31857
+ </button>
31858
+ }
31727
31859
  </div>
31728
31860
  </mat-card-content>
31729
31861
  </mat-card>
31730
- `, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"] }]
31862
+ `, styles: [".empty-card{display:block;margin:12px;border-color:var(--md-sys-color-outline-variant);--empty-icon-color: var(--md-sys-color-on-surface-variant)}.empty-card.empty-inline{margin:8px 0}.content{display:flex;align-items:center;gap:12px}.icon{font-size:32px;width:32px;height:32px;color:var(--empty-icon-color)}.texts{display:grid;gap:4px}.title{margin:0;font-size:16px;font-weight:600;color:var(--md-sys-color-on-surface)}.desc{margin:0;color:var(--md-sys-color-on-surface-variant)}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.empty-card.tone-primary{--empty-icon-color: var(--md-sys-color-primary)}.empty-card.tone-secondary{--empty-icon-color: var(--md-sys-color-secondary)}\n"] }]
31731
31863
  }], propDecorators: { icon: [{
31732
31864
  type: Input
31733
31865
  }], title: [{
@@ -31781,8 +31913,8 @@ class ResourceQuickConnectComponent {
31781
31913
  return true;
31782
31914
  return /^\/?[a-zA-Z0-9][a-zA-Z0-9/_-]*$/.test(value);
31783
31915
  }
31784
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceQuickConnectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31785
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ResourceQuickConnectComponent, isStandalone: true, selector: "praxis-resource-quick-connect", inputs: { resourcePath: "resourcePath" }, ngImport: i0, template: `
31916
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceQuickConnectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
31917
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ResourceQuickConnectComponent, isStandalone: true, selector: "praxis-resource-quick-connect", inputs: { resourcePath: "resourcePath" }, ngImport: i0, template: `
31786
31918
  <div class="pdx-quick-connect">
31787
31919
  <mat-form-field appearance="outline">
31788
31920
  <mat-label>Rota do recurso (API)</mat-label>
@@ -31791,20 +31923,24 @@ class ResourceQuickConnectComponent {
31791
31923
  [(ngModel)]="resourcePath"
31792
31924
  (ngModelChange)="updateState()"
31793
31925
  placeholder="ex.: human-resources/departamentos"
31794
- />
31926
+ />
31795
31927
  <mat-icon matSuffix [praxisIcon]="'link'"></mat-icon>
31796
- <mat-error *ngIf="showInvalid()">Use apenas letras, números, /, - ou _.</mat-error>
31928
+ @if (showInvalid()) {
31929
+ <mat-error>Use apenas letras, números, /, - ou _.</mat-error>
31930
+ }
31797
31931
  </mat-form-field>
31798
31932
  <small class="pdx-quick-connect__hint">Conecte o componente à fonte de dados (ex.: /api/&lt;rota-do-recurso&gt;)</small>
31799
- <small class="pdx-quick-connect__hint" *ngIf="normalizedPath() && normalizedPath() !== resourcePath">
31800
- Rota normalizada: {{ normalizedPath() }}
31801
- </small>
31933
+ @if (normalizedPath() && normalizedPath() !== resourcePath) {
31934
+ <small class="pdx-quick-connect__hint">
31935
+ Rota normalizada: {{ normalizedPath() }}
31936
+ </small>
31937
+ }
31802
31938
  </div>
31803
- `, isInline: true, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
31939
+ `, isInline: true, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i3.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }] });
31804
31940
  }
31805
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ResourceQuickConnectComponent, decorators: [{
31941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ResourceQuickConnectComponent, decorators: [{
31806
31942
  type: Component,
31807
- args: [{ selector: 'praxis-resource-quick-connect', standalone: true, imports: [CommonModule, FormsModule, MatFormFieldModule, MatInputModule, MatIconModule, PraxisIconDirective], template: `
31943
+ args: [{ selector: 'praxis-resource-quick-connect', standalone: true, imports: [FormsModule, MatFormFieldModule, MatInputModule, MatIconModule, PraxisIconDirective], template: `
31808
31944
  <div class="pdx-quick-connect">
31809
31945
  <mat-form-field appearance="outline">
31810
31946
  <mat-label>Rota do recurso (API)</mat-label>
@@ -31813,16 +31949,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
31813
31949
  [(ngModel)]="resourcePath"
31814
31950
  (ngModelChange)="updateState()"
31815
31951
  placeholder="ex.: human-resources/departamentos"
31816
- />
31952
+ />
31817
31953
  <mat-icon matSuffix [praxisIcon]="'link'"></mat-icon>
31818
- <mat-error *ngIf="showInvalid()">Use apenas letras, números, /, - ou _.</mat-error>
31954
+ @if (showInvalid()) {
31955
+ <mat-error>Use apenas letras, números, /, - ou _.</mat-error>
31956
+ }
31819
31957
  </mat-form-field>
31820
31958
  <small class="pdx-quick-connect__hint">Conecte o componente à fonte de dados (ex.: /api/&lt;rota-do-recurso&gt;)</small>
31821
- <small class="pdx-quick-connect__hint" *ngIf="normalizedPath() && normalizedPath() !== resourcePath">
31822
- Rota normalizada: {{ normalizedPath() }}
31823
- </small>
31959
+ @if (normalizedPath() && normalizedPath() !== resourcePath) {
31960
+ <small class="pdx-quick-connect__hint">
31961
+ Rota normalizada: {{ normalizedPath() }}
31962
+ </small>
31963
+ }
31824
31964
  </div>
31825
- `, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"] }]
31965
+ `, styles: [".pdx-quick-connect{display:grid;gap:12px;padding:12px;border-radius:12px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface);color:var(--md-sys-color-on-surface)}.pdx-quick-connect__hint{color:var(--md-sys-color-on-surface-variant);font-size:.9rem}\n"] }]
31826
31966
  }], propDecorators: { resourcePath: [{
31827
31967
  type: Input
31828
31968
  }] } });
@@ -31970,8 +32110,8 @@ class PraxisIconPickerComponent {
31970
32110
  return { family: 'mss', name };
31971
32111
  return { family: 'mi', name };
31972
32112
  }
31973
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisIconPickerComponent, deps: [{ token: MAT_DIALOG_DATA, optional: true }, { token: i1$3.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
31974
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: PraxisIconPickerComponent, isStandalone: true, selector: "praxis-icon-picker", inputs: { value: "value", icons: "icons" }, outputs: { selected: "selected", cancel: "cancel" }, host: { listeners: { "document:keydown.escape": "onEsc($event)", "document:keydown": "onGlobalKey($event)" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `
32113
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisIconPickerComponent, deps: [{ token: MAT_DIALOG_DATA, optional: true }, { token: i1$3.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
32114
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisIconPickerComponent, isStandalone: true, selector: "praxis-icon-picker", inputs: { value: "value", icons: "icons" }, outputs: { selected: "selected", cancel: "cancel" }, host: { listeners: { "document:keydown.escape": "onEsc($event)", "document:keydown": "onGlobalKey($event)" } }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }], ngImport: i0, template: `
31975
32115
  <div class="pip-root">
31976
32116
  <div class="pip-head">
31977
32117
  <mat-form-field appearance="outline" class="pip-search">
@@ -31983,7 +32123,7 @@ class PraxisIconPickerComponent {
31983
32123
  placeholder="ex.: star, schedule"
31984
32124
  (ngModelChange)="onFilter()"
31985
32125
  (keydown.enter)="confirmTyped()"
31986
- />
32126
+ />
31987
32127
  </mat-form-field>
31988
32128
  <button mat-stroked-button color="primary" (click)="clear()">
31989
32129
  <mat-icon>backspace</mat-icon>
@@ -32002,7 +32142,9 @@ class PraxisIconPickerComponent {
32002
32142
  <mat-chip-option value="mss">Sharp</mat-chip-option>
32003
32143
  </mat-chip-listbox>
32004
32144
  </div>
32005
- <button *ngIf="dialogRef" mat-stroked-button (click)="onCancel()">Cancelar</button>
32145
+ @if (dialogRef) {
32146
+ <button mat-stroked-button (click)="onCancel()">Cancelar</button>
32147
+ }
32006
32148
  </div>
32007
32149
  <div class="pip-hint muted">
32008
32150
  Dica: Se não encontrar aqui, abra o site oficial, copie o nome do ícone e cole na busca. Você pode confirmar o nome digitado mesmo que não esteja na lista.
@@ -32012,25 +32154,31 @@ class PraxisIconPickerComponent {
32012
32154
  <span class="pip-shortcut">Atalho: pressione / para focar a busca</span>
32013
32155
  </div>
32014
32156
  <div class="pip-body" role="grid" aria-label="Ícones disponíveis">
32015
- <button class="pip-item" *ngFor="let ic of filtered" (click)="choose(ic)" [class.selected]="isSelectedIcon(ic)" [attr.aria-label]="'Selecionar ícone ' + ic">
32016
- <mat-icon [ngClass]="iconClassForFamily(selectedFamily)">{{ ic }}</mat-icon>
32017
- <span class="pip-name">{{ ic }}</span>
32018
- </button>
32019
- </div>
32020
- <div class="pip-empty" *ngIf="!filtered.length">
32021
- Nenhum ícone encontrado. Você pode usar o nome digitado mesmo assim.
32157
+ @for (ic of filtered; track ic) {
32158
+ <button class="pip-item" (click)="choose(ic)" [class.selected]="isSelectedIcon(ic)" [attr.aria-label]="'Selecionar ícone ' + ic">
32159
+ <mat-icon [ngClass]="iconClassForFamily(selectedFamily)">{{ ic }}</mat-icon>
32160
+ <span class="pip-name">{{ ic }}</span>
32161
+ </button>
32162
+ }
32022
32163
  </div>
32164
+ @if (!filtered.length) {
32165
+ <div class="pip-empty">
32166
+ Nenhum ícone encontrado. Você pode usar o nome digitado mesmo assim.
32167
+ </div>
32168
+ }
32023
32169
  <div class="pip-footer">
32024
32170
  <button mat-flat-button color="primary" (click)="confirmTyped()" [disabled]="!query.trim()" aria-label="Usar nome digitado">
32025
32171
  <mat-icon>check</mat-icon>
32026
32172
  Usar nome digitado
32027
32173
  </button>
32028
- <span class="pip-typed" *ngIf="query.trim()">{{ previewValue() }}</span>
32174
+ @if (query.trim()) {
32175
+ <span class="pip-typed">{{ previewValue() }}</span>
32176
+ }
32029
32177
  </div>
32030
32178
  </div>
32031
- `, isInline: true, styles: [".pip-root{display:flex;flex-direction:column;min-width:340px;max-width:760px;max-height:80vh;overflow:hidden;padding:16px;color:var(--md-sys-color-on-surface)}.pip-head{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.pip-search{flex:1;min-width:180px}.pip-spacer{flex:1}.pip-body{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:4px}.pip-item{display:flex;gap:10px;align-items:center;justify-content:flex-start;padding:10px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);color:inherit;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.pip-item:hover{background:var(--md-sys-color-surface-container)}.pip-item:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pip-item.selected{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px var(--md-sys-color-primary)}.pip-name{font-size:12px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pip-hint{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin:-6px 0 8px}.pip-stats{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}.pip-shortcut{opacity:.9}.pip-empty{padding:12px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:10px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);margin-top:8px}.pip-footer{display:flex;gap:12px;align-items:center;margin-top:10px}.pip-typed{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface)}.pip-family{display:flex;align-items:center}.pip-family .mat-mdc-chip-listbox{min-width:260px}.pip-root .mat-icon{font-family:Material Icons,Material Symbols Outlined,Material Symbols Rounded,Material Symbols Sharp!important;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;color:currentColor}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i8.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
32179
+ `, isInline: true, styles: [".pip-root{display:flex;flex-direction:column;min-width:340px;max-width:760px;max-height:80vh;overflow:hidden;padding:16px;color:var(--md-sys-color-on-surface)}.pip-head{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.pip-search{flex:1;min-width:180px}.pip-spacer{flex:1}.pip-body{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:4px}.pip-item{display:flex;gap:10px;align-items:center;justify-content:flex-start;padding:10px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);color:inherit;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.pip-item:hover{background:var(--md-sys-color-surface-container)}.pip-item:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pip-item.selected{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px var(--md-sys-color-primary)}.pip-name{font-size:12px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pip-hint{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin:-6px 0 8px}.pip-stats{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}.pip-shortcut{opacity:.9}.pip-empty{padding:12px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:10px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);margin-top:8px}.pip-footer{display:flex;gap:12px;align-items:center;margin-top:10px}.pip-typed{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface)}.pip-family{display:flex;align-items:center}.pip-family .mat-mdc-chip-listbox{min-width:260px}.pip-root .mat-icon{font-family:Material Icons,Material Symbols Outlined,Material Symbols Rounded,Material Symbols Sharp!important;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;color:currentColor}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i8.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i8.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
32032
32180
  }
32033
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: PraxisIconPickerComponent, decorators: [{
32181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisIconPickerComponent, decorators: [{
32034
32182
  type: Component,
32035
32183
  args: [{ selector: 'praxis-icon-picker', standalone: true, imports: [CommonModule, FormsModule, MatFormFieldModule, MatInputModule, MatIconModule, MatButtonModule, MatChipsModule, MatDialogModule, MatTooltipModule], template: `
32036
32184
  <div class="pip-root">
@@ -32044,7 +32192,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32044
32192
  placeholder="ex.: star, schedule"
32045
32193
  (ngModelChange)="onFilter()"
32046
32194
  (keydown.enter)="confirmTyped()"
32047
- />
32195
+ />
32048
32196
  </mat-form-field>
32049
32197
  <button mat-stroked-button color="primary" (click)="clear()">
32050
32198
  <mat-icon>backspace</mat-icon>
@@ -32063,7 +32211,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32063
32211
  <mat-chip-option value="mss">Sharp</mat-chip-option>
32064
32212
  </mat-chip-listbox>
32065
32213
  </div>
32066
- <button *ngIf="dialogRef" mat-stroked-button (click)="onCancel()">Cancelar</button>
32214
+ @if (dialogRef) {
32215
+ <button mat-stroked-button (click)="onCancel()">Cancelar</button>
32216
+ }
32067
32217
  </div>
32068
32218
  <div class="pip-hint muted">
32069
32219
  Dica: Se não encontrar aqui, abra o site oficial, copie o nome do ícone e cole na busca. Você pode confirmar o nome digitado mesmo que não esteja na lista.
@@ -32073,20 +32223,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32073
32223
  <span class="pip-shortcut">Atalho: pressione / para focar a busca</span>
32074
32224
  </div>
32075
32225
  <div class="pip-body" role="grid" aria-label="Ícones disponíveis">
32076
- <button class="pip-item" *ngFor="let ic of filtered" (click)="choose(ic)" [class.selected]="isSelectedIcon(ic)" [attr.aria-label]="'Selecionar ícone ' + ic">
32077
- <mat-icon [ngClass]="iconClassForFamily(selectedFamily)">{{ ic }}</mat-icon>
32078
- <span class="pip-name">{{ ic }}</span>
32079
- </button>
32080
- </div>
32081
- <div class="pip-empty" *ngIf="!filtered.length">
32082
- Nenhum ícone encontrado. Você pode usar o nome digitado mesmo assim.
32226
+ @for (ic of filtered; track ic) {
32227
+ <button class="pip-item" (click)="choose(ic)" [class.selected]="isSelectedIcon(ic)" [attr.aria-label]="'Selecionar ícone ' + ic">
32228
+ <mat-icon [ngClass]="iconClassForFamily(selectedFamily)">{{ ic }}</mat-icon>
32229
+ <span class="pip-name">{{ ic }}</span>
32230
+ </button>
32231
+ }
32083
32232
  </div>
32233
+ @if (!filtered.length) {
32234
+ <div class="pip-empty">
32235
+ Nenhum ícone encontrado. Você pode usar o nome digitado mesmo assim.
32236
+ </div>
32237
+ }
32084
32238
  <div class="pip-footer">
32085
32239
  <button mat-flat-button color="primary" (click)="confirmTyped()" [disabled]="!query.trim()" aria-label="Usar nome digitado">
32086
32240
  <mat-icon>check</mat-icon>
32087
32241
  Usar nome digitado
32088
32242
  </button>
32089
- <span class="pip-typed" *ngIf="query.trim()">{{ previewValue() }}</span>
32243
+ @if (query.trim()) {
32244
+ <span class="pip-typed">{{ previewValue() }}</span>
32245
+ }
32090
32246
  </div>
32091
32247
  </div>
32092
32248
  `, styles: [".pip-root{display:flex;flex-direction:column;min-width:340px;max-width:760px;max-height:80vh;overflow:hidden;padding:16px;color:var(--md-sys-color-on-surface)}.pip-head{display:flex;gap:12px;align-items:center;margin-bottom:12px;flex-wrap:wrap}.pip-search{flex:1;min-width:180px}.pip-spacer{flex:1}.pip-body{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;padding:4px}.pip-item{display:flex;gap:10px;align-items:center;justify-content:flex-start;padding:10px;border:1px solid var(--md-sys-color-outline-variant);border-radius:10px;background:var(--md-sys-color-surface);color:inherit;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}.pip-item:hover{background:var(--md-sys-color-surface-container)}.pip-item:focus-visible{outline:2px solid var(--md-sys-color-primary);outline-offset:2px}.pip-item.selected{border-color:var(--md-sys-color-primary);box-shadow:0 0 0 2px var(--md-sys-color-primary)}.pip-name{font-size:12px;color:var(--md-sys-color-on-surface-variant);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pip-hint{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin:-6px 0 8px}.pip-stats{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:8px}.pip-shortcut{opacity:.9}.pip-empty{padding:12px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:10px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);margin-top:8px}.pip-footer{display:flex;gap:12px;align-items:center;margin-top:10px}.pip-typed{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface)}.pip-family{display:flex;align-items:center}.pip-family .mat-mdc-chip-listbox{min-width:260px}.pip-root .mat-icon{font-family:Material Icons,Material Symbols Outlined,Material Symbols Rounded,Material Symbols Sharp!important;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;color:currentColor}.material-symbols-outlined{font-family:Material Symbols Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-rounded{font-family:Material Symbols Rounded;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}.material-symbols-sharp{font-family:Material Symbols Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:\"liga\";-webkit-font-smoothing:antialiased;font-variation-settings:\"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24}\n"] }]
@@ -32146,10 +32302,10 @@ class IconPickerService {
32146
32302
  } });
32147
32303
  });
32148
32304
  }
32149
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: IconPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32150
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: IconPickerService, providedIn: 'root' });
32305
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IconPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
32306
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IconPickerService, providedIn: 'root' });
32151
32307
  }
32152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: IconPickerService, decorators: [{
32308
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: IconPickerService, decorators: [{
32153
32309
  type: Injectable,
32154
32310
  args: [{ providedIn: 'root' }]
32155
32311
  }] });
@@ -32163,14 +32319,14 @@ class SchemaViewerComponent {
32163
32319
  injected = inject(SCHEMA_VIEWER_CONTEXT, { optional: true });
32164
32320
  context;
32165
32321
  // Internal reactive state
32166
- _ctx = signal(undefined, ...(ngDevMode ? [{ debugName: "_ctx" }] : []));
32167
- ctx = computed(() => this._ctx(), ...(ngDevMode ? [{ debugName: "ctx" }] : []));
32168
- _componentMeta = signal(undefined, ...(ngDevMode ? [{ debugName: "_componentMeta" }] : []));
32169
- componentMeta = computed(() => this._componentMeta(), ...(ngDevMode ? [{ debugName: "componentMeta" }] : []));
32170
- _normalizedFields = signal([], ...(ngDevMode ? [{ debugName: "_normalizedFields" }] : []));
32171
- normalizedFields = computed(() => this._normalizedFields(), ...(ngDevMode ? [{ debugName: "normalizedFields" }] : []));
32172
- _copyNote = signal(null, ...(ngDevMode ? [{ debugName: "_copyNote" }] : []));
32173
- copyNote = computed(() => this._copyNote(), ...(ngDevMode ? [{ debugName: "copyNote" }] : []));
32322
+ _ctx = signal(undefined, ...(ngDevMode ? [{ debugName: "_ctx" }] : /* istanbul ignore next */ []));
32323
+ ctx = computed(() => this._ctx(), ...(ngDevMode ? [{ debugName: "ctx" }] : /* istanbul ignore next */ []));
32324
+ _componentMeta = signal(undefined, ...(ngDevMode ? [{ debugName: "_componentMeta" }] : /* istanbul ignore next */ []));
32325
+ componentMeta = computed(() => this._componentMeta(), ...(ngDevMode ? [{ debugName: "componentMeta" }] : /* istanbul ignore next */ []));
32326
+ _normalizedFields = signal([], ...(ngDevMode ? [{ debugName: "_normalizedFields" }] : /* istanbul ignore next */ []));
32327
+ normalizedFields = computed(() => this._normalizedFields(), ...(ngDevMode ? [{ debugName: "normalizedFields" }] : /* istanbul ignore next */ []));
32328
+ _copyNote = signal(null, ...(ngDevMode ? [{ debugName: "_copyNote" }] : /* istanbul ignore next */ []));
32329
+ copyNote = computed(() => this._copyNote(), ...(ngDevMode ? [{ debugName: "copyNote" }] : /* istanbul ignore next */ []));
32174
32330
  ngOnChanges(changes) {
32175
32331
  if ('context' in changes) {
32176
32332
  this.refresh();
@@ -32269,8 +32425,8 @@ class SchemaViewerComponent {
32269
32425
  this._copyNote.set(message);
32270
32426
  setTimeout(() => this._copyNote.set(null), 1600);
32271
32427
  }
32272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: SchemaViewerComponent, isStandalone: true, selector: "praxis-schema-viewer", inputs: { context: "context" }, usesOnChanges: true, ngImport: i0, template: `
32428
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SchemaViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32429
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: SchemaViewerComponent, isStandalone: true, selector: "praxis-schema-viewer", inputs: { context: "context" }, usesOnChanges: true, ngImport: i0, template: `
32274
32430
  <mat-card class="schema-viewer" appearance="outlined">
32275
32431
  <mat-card-header>
32276
32432
  <div class="header">
@@ -32285,8 +32441,12 @@ class SchemaViewerComponent {
32285
32441
  </button>
32286
32442
  </div>
32287
32443
  </div>
32288
- <div class="notes" *ngIf="ctx()?.notes">{{ ctx()?.notes }}</div>
32289
- <div class="copy-status" *ngIf="copyNote()">{{ copyNote() }}</div>
32444
+ @if (ctx()?.notes) {
32445
+ <div class="notes">{{ ctx()?.notes }}</div>
32446
+ }
32447
+ @if (copyNote()) {
32448
+ <div class="copy-status">{{ copyNote() }}</div>
32449
+ }
32290
32450
  </mat-card-header>
32291
32451
  <mat-card-content>
32292
32452
  <mat-tab-group>
@@ -32302,18 +32462,26 @@ class SchemaViewerComponent {
32302
32462
  <div class="kv"><span>Selector</span><code>{{ componentMeta()?.selector }}</code></div>
32303
32463
  <div class="kv"><span>Lib</span><code>{{ componentMeta()?.lib || '—' }}</code></div>
32304
32464
  <div class="kv"><span>Friendly</span><code>{{ componentMeta()?.friendlyName }}</code></div>
32305
- <div class="kv" *ngIf="componentMeta()?.description"><span>Descrição</span><code>{{ componentMeta()?.description }}</code></div>
32306
-
32465
+ @if (componentMeta()?.description) {
32466
+ <div class="kv"><span>Descrição</span><code>{{ componentMeta()?.description }}</code></div>
32467
+ }
32468
+
32307
32469
  <div class="sub">Inputs</div>
32308
- <pre class="pretty" *ngIf="componentMeta()?.inputs?.length; else noInputs">{{ componentMeta()?.inputs | json }}</pre>
32309
- <ng-template #noInputs><div class="muted">Sem inputs documentados.</div></ng-template>
32310
-
32470
+ @if (componentMeta()?.inputs?.length) {
32471
+ <pre class="pretty">{{ componentMeta()?.inputs | json }}</pre>
32472
+ } @else {
32473
+ <div class="muted">Sem inputs documentados.</div>
32474
+ }
32475
+
32311
32476
  <div class="sub">Outputs</div>
32312
- <pre class="pretty" *ngIf="componentMeta()?.outputs?.length; else noOutputs">{{ componentMeta()?.outputs | json }}</pre>
32313
- <ng-template #noOutputs><div class="muted">Sem outputs documentados.</div></ng-template>
32477
+ @if (componentMeta()?.outputs?.length) {
32478
+ <pre class="pretty">{{ componentMeta()?.outputs | json }}</pre>
32479
+ } @else {
32480
+ <div class="muted">Sem outputs documentados.</div>
32481
+ }
32314
32482
  </div>
32315
32483
  </mat-tab>
32316
-
32484
+
32317
32485
  <mat-tab label="Config">
32318
32486
  <div class="section">
32319
32487
  <div class="section-actions">
@@ -32323,15 +32491,21 @@ class SchemaViewerComponent {
32323
32491
  </button>
32324
32492
  </div>
32325
32493
  <div class="sub">Raw</div>
32326
- <pre class="pretty" *ngIf="ctx()?.rawConfig as rc; else noRaw">{{ rc | json }}</pre>
32327
- <ng-template #noRaw><div class="muted">Sem configuração fornecida.</div></ng-template>
32328
-
32494
+ @if (ctx()?.rawConfig; as rc) {
32495
+ <pre class="pretty">{{ rc | json }}</pre>
32496
+ } @else {
32497
+ <div class="muted">Sem configuração fornecida.</div>
32498
+ }
32499
+
32329
32500
  <div class="sub">Effective</div>
32330
- <pre class="pretty" *ngIf="ctx()?.effectiveConfig as ec; else noEff">{{ ec | json }}</pre>
32331
- <ng-template #noEff><div class="muted">Sem configuração efetiva (usando raw/defaults do componente).</div></ng-template>
32501
+ @if (ctx()?.effectiveConfig; as ec) {
32502
+ <pre class="pretty">{{ ec | json }}</pre>
32503
+ } @else {
32504
+ <div class="muted">Sem configuração efetiva (usando raw/defaults do componente).</div>
32505
+ }
32332
32506
  </div>
32333
32507
  </mat-tab>
32334
-
32508
+
32335
32509
  <mat-tab label="Backend Schema">
32336
32510
  <div class="section">
32337
32511
  <div class="section-actions">
@@ -32340,23 +32514,34 @@ class SchemaViewerComponent {
32340
32514
  Copiar seção
32341
32515
  </button>
32342
32516
  </div>
32343
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32344
- <span>Path</span><code>{{ m.path }}</code>
32345
- </div>
32346
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32347
- <span>Operation</span><code>{{ m.operation }}</code>
32348
- </div>
32349
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32350
- <span>Schema Type</span><code>{{ m.schemaType }}</code>
32351
- </div>
32352
- <div class="kv" *ngIf="ctx()?.schemaMeta?.schemaHash">
32353
- <span>Server Hash</span><code>{{ ctx()?.schemaMeta?.schemaHash }}</code>
32354
- </div>
32355
- <pre class="pretty" *ngIf="ctx()?.backendSchema as bs; else noSchema">{{ bs | json }}</pre>
32356
- <ng-template #noSchema><div class="muted">Sem schema de backend.</div></ng-template>
32517
+ @if (ctx()?.schemaMeta; as m) {
32518
+ <div class="kv">
32519
+ <span>Path</span><code>{{ m.path }}</code>
32520
+ </div>
32521
+ }
32522
+ @if (ctx()?.schemaMeta; as m) {
32523
+ <div class="kv">
32524
+ <span>Operation</span><code>{{ m.operation }}</code>
32525
+ </div>
32526
+ }
32527
+ @if (ctx()?.schemaMeta; as m) {
32528
+ <div class="kv">
32529
+ <span>Schema Type</span><code>{{ m.schemaType }}</code>
32530
+ </div>
32531
+ }
32532
+ @if (ctx()?.schemaMeta?.schemaHash) {
32533
+ <div class="kv">
32534
+ <span>Server Hash</span><code>{{ ctx()?.schemaMeta?.schemaHash }}</code>
32535
+ </div>
32536
+ }
32537
+ @if (ctx()?.backendSchema; as bs) {
32538
+ <pre class="pretty">{{ bs | json }}</pre>
32539
+ } @else {
32540
+ <div class="muted">Sem schema de backend.</div>
32541
+ }
32357
32542
  </div>
32358
32543
  </mat-tab>
32359
-
32544
+
32360
32545
  <mat-tab label="Fields">
32361
32546
  <div class="section">
32362
32547
  <div class="section-actions">
@@ -32365,16 +32550,20 @@ class SchemaViewerComponent {
32365
32550
  Copiar seção
32366
32551
  </button>
32367
32552
  </div>
32368
- <div class="muted" *ngIf="!normalizedFields().length">Sem campos normalizados.</div>
32369
- <pre class="pretty" *ngIf="normalizedFields().length">{{ normalizedFields() | json }}</pre>
32553
+ @if (!normalizedFields().length) {
32554
+ <div class="muted">Sem campos normalizados.</div>
32555
+ }
32556
+ @if (normalizedFields().length) {
32557
+ <pre class="pretty">{{ normalizedFields() | json }}</pre>
32558
+ }
32370
32559
  </div>
32371
32560
  </mat-tab>
32372
32561
  </mat-tab-group>
32373
32562
  </mat-card-content>
32374
32563
  </mat-card>
32375
- `, isInline: true, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i2$2.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i2$2.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3$1.MatCardHeader, selector: "mat-card-header" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$2.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32564
+ `, isInline: true, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i1$4.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i1$4.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "mat-align-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$1.MatCardHeader, selector: "mat-card-header" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: i1$2.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
32376
32565
  }
32377
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: SchemaViewerComponent, decorators: [{
32566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: SchemaViewerComponent, decorators: [{
32378
32567
  type: Component,
32379
32568
  args: [{ selector: 'praxis-schema-viewer', standalone: true, imports: [CommonModule, MatTabsModule, MatCardModule, MatButtonModule, MatIconModule], template: `
32380
32569
  <mat-card class="schema-viewer" appearance="outlined">
@@ -32391,8 +32580,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32391
32580
  </button>
32392
32581
  </div>
32393
32582
  </div>
32394
- <div class="notes" *ngIf="ctx()?.notes">{{ ctx()?.notes }}</div>
32395
- <div class="copy-status" *ngIf="copyNote()">{{ copyNote() }}</div>
32583
+ @if (ctx()?.notes) {
32584
+ <div class="notes">{{ ctx()?.notes }}</div>
32585
+ }
32586
+ @if (copyNote()) {
32587
+ <div class="copy-status">{{ copyNote() }}</div>
32588
+ }
32396
32589
  </mat-card-header>
32397
32590
  <mat-card-content>
32398
32591
  <mat-tab-group>
@@ -32408,18 +32601,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32408
32601
  <div class="kv"><span>Selector</span><code>{{ componentMeta()?.selector }}</code></div>
32409
32602
  <div class="kv"><span>Lib</span><code>{{ componentMeta()?.lib || '—' }}</code></div>
32410
32603
  <div class="kv"><span>Friendly</span><code>{{ componentMeta()?.friendlyName }}</code></div>
32411
- <div class="kv" *ngIf="componentMeta()?.description"><span>Descrição</span><code>{{ componentMeta()?.description }}</code></div>
32412
-
32604
+ @if (componentMeta()?.description) {
32605
+ <div class="kv"><span>Descrição</span><code>{{ componentMeta()?.description }}</code></div>
32606
+ }
32607
+
32413
32608
  <div class="sub">Inputs</div>
32414
- <pre class="pretty" *ngIf="componentMeta()?.inputs?.length; else noInputs">{{ componentMeta()?.inputs | json }}</pre>
32415
- <ng-template #noInputs><div class="muted">Sem inputs documentados.</div></ng-template>
32416
-
32609
+ @if (componentMeta()?.inputs?.length) {
32610
+ <pre class="pretty">{{ componentMeta()?.inputs | json }}</pre>
32611
+ } @else {
32612
+ <div class="muted">Sem inputs documentados.</div>
32613
+ }
32614
+
32417
32615
  <div class="sub">Outputs</div>
32418
- <pre class="pretty" *ngIf="componentMeta()?.outputs?.length; else noOutputs">{{ componentMeta()?.outputs | json }}</pre>
32419
- <ng-template #noOutputs><div class="muted">Sem outputs documentados.</div></ng-template>
32616
+ @if (componentMeta()?.outputs?.length) {
32617
+ <pre class="pretty">{{ componentMeta()?.outputs | json }}</pre>
32618
+ } @else {
32619
+ <div class="muted">Sem outputs documentados.</div>
32620
+ }
32420
32621
  </div>
32421
32622
  </mat-tab>
32422
-
32623
+
32423
32624
  <mat-tab label="Config">
32424
32625
  <div class="section">
32425
32626
  <div class="section-actions">
@@ -32429,15 +32630,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32429
32630
  </button>
32430
32631
  </div>
32431
32632
  <div class="sub">Raw</div>
32432
- <pre class="pretty" *ngIf="ctx()?.rawConfig as rc; else noRaw">{{ rc | json }}</pre>
32433
- <ng-template #noRaw><div class="muted">Sem configuração fornecida.</div></ng-template>
32434
-
32633
+ @if (ctx()?.rawConfig; as rc) {
32634
+ <pre class="pretty">{{ rc | json }}</pre>
32635
+ } @else {
32636
+ <div class="muted">Sem configuração fornecida.</div>
32637
+ }
32638
+
32435
32639
  <div class="sub">Effective</div>
32436
- <pre class="pretty" *ngIf="ctx()?.effectiveConfig as ec; else noEff">{{ ec | json }}</pre>
32437
- <ng-template #noEff><div class="muted">Sem configuração efetiva (usando raw/defaults do componente).</div></ng-template>
32640
+ @if (ctx()?.effectiveConfig; as ec) {
32641
+ <pre class="pretty">{{ ec | json }}</pre>
32642
+ } @else {
32643
+ <div class="muted">Sem configuração efetiva (usando raw/defaults do componente).</div>
32644
+ }
32438
32645
  </div>
32439
32646
  </mat-tab>
32440
-
32647
+
32441
32648
  <mat-tab label="Backend Schema">
32442
32649
  <div class="section">
32443
32650
  <div class="section-actions">
@@ -32446,23 +32653,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32446
32653
  Copiar seção
32447
32654
  </button>
32448
32655
  </div>
32449
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32450
- <span>Path</span><code>{{ m.path }}</code>
32451
- </div>
32452
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32453
- <span>Operation</span><code>{{ m.operation }}</code>
32454
- </div>
32455
- <div class="kv" *ngIf="ctx()?.schemaMeta as m">
32456
- <span>Schema Type</span><code>{{ m.schemaType }}</code>
32457
- </div>
32458
- <div class="kv" *ngIf="ctx()?.schemaMeta?.schemaHash">
32459
- <span>Server Hash</span><code>{{ ctx()?.schemaMeta?.schemaHash }}</code>
32460
- </div>
32461
- <pre class="pretty" *ngIf="ctx()?.backendSchema as bs; else noSchema">{{ bs | json }}</pre>
32462
- <ng-template #noSchema><div class="muted">Sem schema de backend.</div></ng-template>
32656
+ @if (ctx()?.schemaMeta; as m) {
32657
+ <div class="kv">
32658
+ <span>Path</span><code>{{ m.path }}</code>
32659
+ </div>
32660
+ }
32661
+ @if (ctx()?.schemaMeta; as m) {
32662
+ <div class="kv">
32663
+ <span>Operation</span><code>{{ m.operation }}</code>
32664
+ </div>
32665
+ }
32666
+ @if (ctx()?.schemaMeta; as m) {
32667
+ <div class="kv">
32668
+ <span>Schema Type</span><code>{{ m.schemaType }}</code>
32669
+ </div>
32670
+ }
32671
+ @if (ctx()?.schemaMeta?.schemaHash) {
32672
+ <div class="kv">
32673
+ <span>Server Hash</span><code>{{ ctx()?.schemaMeta?.schemaHash }}</code>
32674
+ </div>
32675
+ }
32676
+ @if (ctx()?.backendSchema; as bs) {
32677
+ <pre class="pretty">{{ bs | json }}</pre>
32678
+ } @else {
32679
+ <div class="muted">Sem schema de backend.</div>
32680
+ }
32463
32681
  </div>
32464
32682
  </mat-tab>
32465
-
32683
+
32466
32684
  <mat-tab label="Fields">
32467
32685
  <div class="section">
32468
32686
  <div class="section-actions">
@@ -32471,14 +32689,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
32471
32689
  Copiar seção
32472
32690
  </button>
32473
32691
  </div>
32474
- <div class="muted" *ngIf="!normalizedFields().length">Sem campos normalizados.</div>
32475
- <pre class="pretty" *ngIf="normalizedFields().length">{{ normalizedFields() | json }}</pre>
32692
+ @if (!normalizedFields().length) {
32693
+ <div class="muted">Sem campos normalizados.</div>
32694
+ }
32695
+ @if (normalizedFields().length) {
32696
+ <pre class="pretty">{{ normalizedFields() | json }}</pre>
32697
+ }
32476
32698
  </div>
32477
32699
  </mat-tab>
32478
32700
  </mat-tab-group>
32479
32701
  </mat-card-content>
32480
32702
  </mat-card>
32481
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"] }]
32703
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".schema-viewer{display:block;border-color:var(--md-sys-color-outline-variant)}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{display:flex;align-items:center;gap:8px}.title h3{margin:0;font-weight:600;color:var(--md-sys-color-on-surface)}.notes{margin-top:6px;color:var(--md-sys-color-on-surface-variant);font-size:12px}.copy-status{margin-top:6px;font-size:12px;color:var(--md-sys-color-primary)}.section{padding:12px}.section-actions{display:flex;justify-content:flex-end;margin-bottom:8px}.sub{font-weight:600;margin:12px 0 4px;color:var(--md-sys-color-on-surface)}.pretty{background:var(--md-sys-color-surface-container);padding:10px;border-radius:8px;overflow:auto;border:1px solid var(--md-sys-color-outline-variant)}.kv{display:grid;grid-template-columns:140px 1fr;align-items:baseline;gap:8px;margin:2px 0}.kv>span{color:var(--md-sys-color-on-surface-variant)}.kv>code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.muted{color:var(--md-sys-color-on-surface-variant)}\n"] }]
32482
32704
  }], propDecorators: { context: [{
32483
32705
  type: Input
32484
32706
  }] } });
@@ -32745,10 +32967,10 @@ class FormHooksRegistry {
32745
32967
  }
32746
32968
  return false;
32747
32969
  }
32748
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FormHooksRegistry, deps: [{ token: FORM_HOOKS, optional: true }, { token: FORM_HOOK_RESOLVERS, optional: true }, { token: FORM_HOOKS_WHITELIST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
32749
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FormHooksRegistry, providedIn: 'root' });
32970
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormHooksRegistry, deps: [{ token: FORM_HOOKS, optional: true }, { token: FORM_HOOK_RESOLVERS, optional: true }, { token: FORM_HOOKS_WHITELIST, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
32971
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormHooksRegistry, providedIn: 'root' });
32750
32972
  }
32751
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: FormHooksRegistry, decorators: [{
32973
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FormHooksRegistry, decorators: [{
32752
32974
  type: Injectable,
32753
32975
  args: [{ providedIn: 'root' }]
32754
32976
  }], ctorParameters: () => [{ type: undefined, decorators: [{