@praxisui/core 9.0.6 → 9.0.7

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.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-19T23:21:15.260Z",
3
+ "generatedAt": "2026-08-20T16:41:04.405Z",
4
4
  "packageName": "@praxisui/core",
5
- "packageVersion": "9.0.6",
5
+ "packageVersion": "9.0.7",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 4,
@@ -41705,8 +41705,25 @@ function providePraxisDynamicPageMetadata() {
41705
41705
  };
41706
41706
  }
41707
41707
 
41708
+ const SURFACE_HOST_I18N_NAMESPACE = 'surfaceHost';
41709
+ const SURFACE_HOST_I18N_CONFIG = {
41710
+ namespaces: {
41711
+ [SURFACE_HOST_I18N_NAMESPACE]: {
41712
+ 'pt-BR': {
41713
+ 'widget.error.title': 'Não foi possível carregar este conteúdo',
41714
+ 'widget.error.description': 'Este conteúdo está indisponível. Tente novamente. Se o problema continuar, informe o responsável pela plataforma.',
41715
+ },
41716
+ 'en-US': {
41717
+ 'widget.error.title': 'This content could not be loaded',
41718
+ 'widget.error.description': 'This content is unavailable. Try again. If the problem continues, contact the platform owner.',
41719
+ },
41720
+ },
41721
+ },
41722
+ };
41723
+
41708
41724
  class PraxisSurfaceHostComponent {
41709
41725
  globalActions = inject(GlobalActionService);
41726
+ i18n = inject(PraxisI18nService);
41710
41727
  title;
41711
41728
  subtitle;
41712
41729
  icon;
@@ -41729,25 +41746,43 @@ class PraxisSurfaceHostComponent {
41729
41746
  mainWidgetLoader;
41730
41747
  afterWidgetLoader;
41731
41748
  renderQueued = false;
41749
+ widgetDiagnostics = signal({}, ...(ngDevMode ? [{ debugName: "widgetDiagnostics" }] : /* istanbul ignore next */ []));
41732
41750
  beforeWidgetKey = 'surface.before';
41733
41751
  mainWidgetKey = 'surface.main';
41734
41752
  afterWidgetKey = 'surface.after';
41735
41753
  operationIdentity() {
41736
41754
  const operation = normalizeSurfaceOperationContext(this.context?.['operation']);
41737
- return operation?.subject?.identity ?? operation?.taskScope?.identity ?? null;
41755
+ return (operation?.subject?.identity ?? operation?.taskScope?.identity ?? null);
41738
41756
  }
41739
41757
  ngAfterViewInit() {
41740
41758
  this.scheduleWidgetRender();
41741
41759
  }
41742
41760
  ngOnChanges(changes) {
41743
- if (changes['widget']
41744
- || changes['beforeWidget']
41745
- || changes['afterWidget']
41746
- || changes['context']
41747
- || changes['strictValidation']) {
41761
+ if (changes['widget'] ||
41762
+ changes['beforeWidget'] ||
41763
+ changes['afterWidget'] ||
41764
+ changes['context'] ||
41765
+ changes['strictValidation']) {
41766
+ if (changes['widget'] ||
41767
+ changes['beforeWidget'] ||
41768
+ changes['afterWidget']) {
41769
+ this.widgetDiagnostics.set({});
41770
+ }
41748
41771
  this.scheduleWidgetRender();
41749
41772
  }
41750
41773
  }
41774
+ t(key, fallback) {
41775
+ return this.i18n.t(key, undefined, fallback, SURFACE_HOST_I18N_NAMESPACE);
41776
+ }
41777
+ hasWidgetError() {
41778
+ return Object.values(this.widgetDiagnostics()).some((diagnostic) => diagnostic.phase !== 'ready');
41779
+ }
41780
+ onWidgetDiagnostic(widgetKey, diagnostic) {
41781
+ this.widgetDiagnostics.update((current) => ({
41782
+ ...current,
41783
+ [widgetKey]: diagnostic,
41784
+ }));
41785
+ }
41751
41786
  scheduleWidgetRender() {
41752
41787
  if (this.renderQueued)
41753
41788
  return;
@@ -41860,7 +41895,8 @@ class PraxisSurfaceHostComponent {
41860
41895
  });
41861
41896
  }
41862
41897
  materializeSurfaceOutcome(event) {
41863
- const binding = this.lifecycle?.outcomes.find((candidate) => candidate.output === event.output && this.matchesLifecycleConditions(candidate, event.payload));
41898
+ const binding = this.lifecycle?.outcomes.find((candidate) => candidate.output === event.output &&
41899
+ this.matchesLifecycleConditions(candidate, event.payload));
41864
41900
  if (!binding)
41865
41901
  return;
41866
41902
  const runtime = this.context?.['surfaceRuntime'];
@@ -41945,7 +41981,9 @@ class PraxisSurfaceHostComponent {
41945
41981
  return text || null;
41946
41982
  }
41947
41983
  resourceIdOrNull(value) {
41948
- return typeof value === 'string' || typeof value === 'number' ? value : null;
41984
+ return typeof value === 'string' || typeof value === 'number'
41985
+ ? value
41986
+ : null;
41949
41987
  }
41950
41988
  toResourceSurface(surface, resource) {
41951
41989
  const availability = this.readRecord(surface?.['availability']);
@@ -41953,14 +41991,20 @@ class PraxisSurfaceHostComponent {
41953
41991
  return null;
41954
41992
  }
41955
41993
  const id = this.stringOrNull(surface['id']);
41956
- const resourceKey = this.stringOrNull(surface['resourceKey'])
41957
- || this.stringOrNull(resource?.['resourceKey']);
41994
+ const resourceKey = this.stringOrNull(surface['resourceKey']) ||
41995
+ this.stringOrNull(resource?.['resourceKey']);
41958
41996
  const operationId = this.stringOrNull(surface['operationId']);
41959
41997
  const path = this.stringOrNull(surface['path']);
41960
41998
  const method = this.stringOrNull(surface['method']);
41961
41999
  const schemaId = this.stringOrNull(surface['schemaId']);
41962
42000
  const schemaUrl = this.stringOrNull(surface['schemaUrl']);
41963
- if (!id || !resourceKey || !operationId || !path || !method || !schemaId || !schemaUrl) {
42001
+ if (!id ||
42002
+ !resourceKey ||
42003
+ !operationId ||
42004
+ !path ||
42005
+ !method ||
42006
+ !schemaId ||
42007
+ !schemaUrl) {
41964
42008
  return null;
41965
42009
  }
41966
42010
  return {
@@ -41984,12 +42028,16 @@ class PraxisSurfaceHostComponent {
41984
42028
  };
41985
42029
  }
41986
42030
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41987
- 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", beforeWidget: "beforeWidget", widget: "widget", afterWidget: "afterWidget", context: "context", lifecycle: "lifecycle", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, outputs: { widgetEvent: "widgetEvent", rowClick: "rowClick", selectionChange: "selectionChange", resourceEvent: "resourceEvent" }, viewQueries: [{ propertyName: "beforeWidgetLoader", first: true, predicate: ["beforeWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "mainWidgetLoader", first: true, predicate: ["mainWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "afterWidgetLoader", first: true, predicate: ["afterWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }], usesOnChanges: true, ngImport: i0, template: `
42031
+ 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", beforeWidget: "beforeWidget", widget: "widget", afterWidget: "afterWidget", context: "context", lifecycle: "lifecycle", strictValidation: "strictValidation", renderTitleInsideBody: "renderTitleInsideBody" }, outputs: { widgetEvent: "widgetEvent", rowClick: "rowClick", selectionChange: "selectionChange", resourceEvent: "resourceEvent" }, providers: [providePraxisI18nConfig(SURFACE_HOST_I18N_CONFIG)], viewQueries: [{ propertyName: "beforeWidgetLoader", first: true, predicate: ["beforeWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "mainWidgetLoader", first: true, predicate: ["mainWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }, { propertyName: "afterWidgetLoader", first: true, predicate: ["afterWidgetLoader"], descendants: true, read: DynamicWidgetLoaderDirective }], usesOnChanges: true, ngImport: i0, template: `
41988
42032
  <div class="pdx-surface-host">
41989
42033
  @if (subtitle || (title && renderTitleInsideBody)) {
41990
42034
  <header class="pdx-surface-host__header">
41991
42035
  @if (icon) {
41992
- <span class="material-icons pdx-surface-host__icon" aria-hidden="true">{{ icon }}</span>
42036
+ <span
42037
+ class="material-icons pdx-surface-host__icon"
42038
+ aria-hidden="true"
42039
+ >{{ icon }}</span
42040
+ >
41993
42041
  }
41994
42042
  <div class="pdx-surface-host__copy">
41995
42043
  @if (title && renderTitleInsideBody) {
@@ -42004,7 +42052,10 @@ class PraxisSurfaceHostComponent {
42004
42052
 
42005
42053
  <section class="pdx-surface-host__body">
42006
42054
  @if (operationIdentity(); as identity) {
42007
- <div class="pdx-surface-host__operation-context" data-testid="surface-operation-identity">
42055
+ <div
42056
+ class="pdx-surface-host__operation-context"
42057
+ data-testid="surface-operation-identity"
42058
+ >
42008
42059
  <praxis-resource-identity
42009
42060
  [identity]="identity"
42010
42061
  density="compact"
@@ -42013,6 +42064,32 @@ class PraxisSurfaceHostComponent {
42013
42064
  </div>
42014
42065
  }
42015
42066
 
42067
+ @if (hasWidgetError()) {
42068
+ <div
42069
+ class="pdx-surface-host__error"
42070
+ role="alert"
42071
+ aria-live="assertive"
42072
+ data-testid="surface-widget-error"
42073
+ >
42074
+ <span class="material-icons" aria-hidden="true">error_outline</span>
42075
+ <div>
42076
+ <h3>
42077
+ {{
42078
+ t('widget.error.title', 'This content could not be loaded')
42079
+ }}
42080
+ </h3>
42081
+ <p>
42082
+ {{
42083
+ t(
42084
+ 'widget.error.description',
42085
+ 'This content is unavailable. Try again.'
42086
+ )
42087
+ }}
42088
+ </p>
42089
+ </div>
42090
+ </div>
42091
+ }
42092
+
42016
42093
  @if (beforeWidget) {
42017
42094
  <div class="pdx-surface-host__slot pdx-surface-host__slot--before">
42018
42095
  <ng-container
@@ -42023,6 +42100,7 @@ class PraxisSurfaceHostComponent {
42023
42100
  [strictValidation]="strictValidation"
42024
42101
  [autoWireOutputs]="true"
42025
42102
  (widgetEvent)="onSlotWidgetEvent(beforeWidgetKey, $event)"
42103
+ (widgetDiagnostic)="onWidgetDiagnostic(beforeWidgetKey, $event)"
42026
42104
  ></ng-container>
42027
42105
  </div>
42028
42106
  }
@@ -42036,6 +42114,7 @@ class PraxisSurfaceHostComponent {
42036
42114
  [strictValidation]="strictValidation"
42037
42115
  [autoWireOutputs]="true"
42038
42116
  (widgetEvent)="onSlotWidgetEvent(mainWidgetKey, $event)"
42117
+ (widgetDiagnostic)="onWidgetDiagnostic(mainWidgetKey, $event)"
42039
42118
  ></ng-container>
42040
42119
  }
42041
42120
 
@@ -42049,21 +42128,26 @@ class PraxisSurfaceHostComponent {
42049
42128
  [strictValidation]="strictValidation"
42050
42129
  [autoWireOutputs]="true"
42051
42130
  (widgetEvent)="onSlotWidgetEvent(afterWidgetKey, $event)"
42131
+ (widgetDiagnostic)="onWidgetDiagnostic(afterWidgetKey, $event)"
42052
42132
  ></ng-container>
42053
42133
  </div>
42054
42134
  }
42055
42135
  </section>
42056
42136
  </div>
42057
- `, 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{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__slot{min-width:0}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisResourceIdentityComponent, selector: "praxis-resource-identity", inputs: ["identity", "emptyTitle", "density", "showMetadataLabels", "showKey", "showKeyLabel", "ariaLabel"] }] });
42137
+ `, 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{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__error{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;min-width:0;padding:14px;border:1px solid var(--md-sys-color-error, #ba1a1a);border-radius:10px;color:var(--md-sys-color-on-error-container, #410002);background:var(--md-sys-color-error-container, #ffdad6)}.pdx-surface-host__error h3,.pdx-surface-host__error p{margin:0}.pdx-surface-host__error h3{font-size:.95rem;font-weight:700}.pdx-surface-host__error p{margin-top:3px;font-size:.875rem;line-height:1.4}.pdx-surface-host__slot{min-width:0}\n"], dependencies: [{ kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisResourceIdentityComponent, selector: "praxis-resource-identity", inputs: ["identity", "emptyTitle", "density", "showMetadataLabels", "showKey", "showKeyLabel", "ariaLabel"] }] });
42058
42138
  }
42059
42139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisSurfaceHostComponent, decorators: [{
42060
42140
  type: Component,
42061
- args: [{ selector: 'praxis-surface-host', standalone: true, imports: [DynamicWidgetLoaderDirective, PraxisResourceIdentityComponent], template: `
42141
+ args: [{ selector: 'praxis-surface-host', standalone: true, imports: [DynamicWidgetLoaderDirective, PraxisResourceIdentityComponent], providers: [providePraxisI18nConfig(SURFACE_HOST_I18N_CONFIG)], template: `
42062
42142
  <div class="pdx-surface-host">
42063
42143
  @if (subtitle || (title && renderTitleInsideBody)) {
42064
42144
  <header class="pdx-surface-host__header">
42065
42145
  @if (icon) {
42066
- <span class="material-icons pdx-surface-host__icon" aria-hidden="true">{{ icon }}</span>
42146
+ <span
42147
+ class="material-icons pdx-surface-host__icon"
42148
+ aria-hidden="true"
42149
+ >{{ icon }}</span
42150
+ >
42067
42151
  }
42068
42152
  <div class="pdx-surface-host__copy">
42069
42153
  @if (title && renderTitleInsideBody) {
@@ -42078,7 +42162,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
42078
42162
 
42079
42163
  <section class="pdx-surface-host__body">
42080
42164
  @if (operationIdentity(); as identity) {
42081
- <div class="pdx-surface-host__operation-context" data-testid="surface-operation-identity">
42165
+ <div
42166
+ class="pdx-surface-host__operation-context"
42167
+ data-testid="surface-operation-identity"
42168
+ >
42082
42169
  <praxis-resource-identity
42083
42170
  [identity]="identity"
42084
42171
  density="compact"
@@ -42087,6 +42174,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
42087
42174
  </div>
42088
42175
  }
42089
42176
 
42177
+ @if (hasWidgetError()) {
42178
+ <div
42179
+ class="pdx-surface-host__error"
42180
+ role="alert"
42181
+ aria-live="assertive"
42182
+ data-testid="surface-widget-error"
42183
+ >
42184
+ <span class="material-icons" aria-hidden="true">error_outline</span>
42185
+ <div>
42186
+ <h3>
42187
+ {{
42188
+ t('widget.error.title', 'This content could not be loaded')
42189
+ }}
42190
+ </h3>
42191
+ <p>
42192
+ {{
42193
+ t(
42194
+ 'widget.error.description',
42195
+ 'This content is unavailable. Try again.'
42196
+ )
42197
+ }}
42198
+ </p>
42199
+ </div>
42200
+ </div>
42201
+ }
42202
+
42090
42203
  @if (beforeWidget) {
42091
42204
  <div class="pdx-surface-host__slot pdx-surface-host__slot--before">
42092
42205
  <ng-container
@@ -42097,6 +42210,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
42097
42210
  [strictValidation]="strictValidation"
42098
42211
  [autoWireOutputs]="true"
42099
42212
  (widgetEvent)="onSlotWidgetEvent(beforeWidgetKey, $event)"
42213
+ (widgetDiagnostic)="onWidgetDiagnostic(beforeWidgetKey, $event)"
42100
42214
  ></ng-container>
42101
42215
  </div>
42102
42216
  }
@@ -42110,6 +42224,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
42110
42224
  [strictValidation]="strictValidation"
42111
42225
  [autoWireOutputs]="true"
42112
42226
  (widgetEvent)="onSlotWidgetEvent(mainWidgetKey, $event)"
42227
+ (widgetDiagnostic)="onWidgetDiagnostic(mainWidgetKey, $event)"
42113
42228
  ></ng-container>
42114
42229
  }
42115
42230
 
@@ -42123,12 +42238,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
42123
42238
  [strictValidation]="strictValidation"
42124
42239
  [autoWireOutputs]="true"
42125
42240
  (widgetEvent)="onSlotWidgetEvent(afterWidgetKey, $event)"
42241
+ (widgetDiagnostic)="onWidgetDiagnostic(afterWidgetKey, $event)"
42126
42242
  ></ng-container>
42127
42243
  </div>
42128
42244
  }
42129
42245
  </section>
42130
42246
  </div>
42131
- `, 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{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__slot{min-width:0}\n"] }]
42247
+ `, 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{display:grid;gap:16px;min-width:0}.pdx-surface-host__operation-context{min-width:0;padding:12px 14px;border-inline-start:3px solid var(--md-sys-color-primary, currentColor);border-radius:0 10px 10px 0;background:var(--md-sys-color-surface-container-low, transparent)}.pdx-surface-host__error{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;min-width:0;padding:14px;border:1px solid var(--md-sys-color-error, #ba1a1a);border-radius:10px;color:var(--md-sys-color-on-error-container, #410002);background:var(--md-sys-color-error-container, #ffdad6)}.pdx-surface-host__error h3,.pdx-surface-host__error p{margin:0}.pdx-surface-host__error h3{font-size:.95rem;font-weight:700}.pdx-surface-host__error p{margin-top:3px;font-size:.875rem;line-height:1.4}.pdx-surface-host__slot{min-width:0}\n"] }]
42132
42248
  }], propDecorators: { title: [{
42133
42249
  type: Input
42134
42250
  }], subtitle: [{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/core",
3
- "version": "9.0.6",
3
+ "version": "9.0.7",
4
4
  "description": "Core library for Praxis UI Workspace: types, tokens, services and utilities shared across @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
@@ -16570,6 +16570,7 @@ declare function providePraxisDynamicPageMetadata(): Provider;
16570
16570
 
16571
16571
  declare class PraxisSurfaceHostComponent implements AfterViewInit, OnChanges {
16572
16572
  private readonly globalActions;
16573
+ private readonly i18n;
16573
16574
  title?: string;
16574
16575
  subtitle?: string;
16575
16576
  icon?: string;
@@ -16592,12 +16593,16 @@ declare class PraxisSurfaceHostComponent implements AfterViewInit, OnChanges {
16592
16593
  private mainWidgetLoader?;
16593
16594
  private afterWidgetLoader?;
16594
16595
  private renderQueued;
16596
+ private readonly widgetDiagnostics;
16595
16597
  readonly beforeWidgetKey = "surface.before";
16596
16598
  readonly mainWidgetKey = "surface.main";
16597
16599
  readonly afterWidgetKey = "surface.after";
16598
16600
  protected operationIdentity(): MaterializedResourceIdentity | null;
16599
16601
  ngAfterViewInit(): void;
16600
16602
  ngOnChanges(changes: SimpleChanges): void;
16603
+ protected t(key: string, fallback: string): string;
16604
+ protected hasWidgetError(): boolean;
16605
+ onWidgetDiagnostic(widgetKey: string, diagnostic: WidgetResolutionDiagnostic): void;
16601
16606
  private scheduleWidgetRender;
16602
16607
  private renderLoader;
16603
16608
  private enrichWidget;