@praxisui/tabs 10.0.0-rc.34 → 10.0.0-rc.36

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-10-19T09:48:25.455Z",
3
+ "generatedAt": "2026-10-21T13:45:30.091Z",
4
4
  "packageName": "@praxisui/tabs",
5
- "packageVersion": "10.0.0-rc.34",
5
+ "packageVersion": "10.0.0-rc.36",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 1,
@@ -7,11 +7,11 @@ import * as i3 from '@angular/material/tabs';
7
7
  import { MatTabsModule, MatTabGroup, MatTabNav } from '@angular/material/tabs';
8
8
  import * as i4$1 from '@angular/material/icon';
9
9
  import { MatIconModule } from '@angular/material/icon';
10
- import * as i10 from '@angular/material/tooltip';
10
+ import * as i11 from '@angular/material/tooltip';
11
11
  import { MatTooltipModule } from '@angular/material/tooltip';
12
12
  import * as i1 from '@praxisui/core';
13
13
  import { providePraxisI18n, PraxisI18nService, PraxisIconDirective, PraxisIconButtonComponent, providePraxisI18nConfig, deepMerge, ASYNC_CONFIG_STORAGE, ComponentKeyService, LoggerService, EmptyStateCardComponent, DynamicWidgetLoaderDirective, ComponentMetadataRegistry } from '@praxisui/core';
14
- import * as i6 from '@angular/material/button';
14
+ import * as i6$1 from '@angular/material/button';
15
15
  import { MatButtonModule } from '@angular/material/button';
16
16
  import * as i2_1 from '@angular/forms';
17
17
  import { FormsModule, FormGroup, FormControl, ReactiveFormsModule } from '@angular/forms';
@@ -21,9 +21,11 @@ import * as i4 from '@angular/material/form-field';
21
21
  import { MatFormFieldModule } from '@angular/material/form-field';
22
22
  import * as i5 from '@angular/material/input';
23
23
  import { MatInputModule } from '@angular/material/input';
24
- import * as i8 from '@angular/material/slide-toggle';
24
+ import * as i6 from '@angular/material/select';
25
+ import { MatSelectModule } from '@angular/material/select';
26
+ import * as i9 from '@angular/material/slide-toggle';
25
27
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
26
- import * as i9 from '@angular/cdk/drag-drop';
28
+ import * as i10 from '@angular/cdk/drag-drop';
27
29
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
28
30
  import { BehaviorSubject, firstValueFrom, Subject, Subscription } from 'rxjs';
29
31
  import { produce } from 'immer';
@@ -1185,10 +1187,10 @@ class PraxisTabsConfigEditor {
1185
1187
  <div class="editor-topbar">
1186
1188
  <mat-form-field appearance="outline" class="editor-mode-field">
1187
1189
  <mat-label>{{ t('editor.fields.mode', 'Modo principal') }}</mat-label>
1188
- <select matNativeControl [ngModel]="primaryMode" (ngModelChange)="setPrimaryMode($event)">
1189
- <option value="group">{{ t('editor.mode.group', 'Grupo de abas') }}</option>
1190
- <option value="nav">{{ t('editor.mode.nav', 'Navegacao por links') }}</option>
1191
- </select>
1190
+ <mat-select [ngModel]="primaryMode" (ngModelChange)="setPrimaryMode($event)">
1191
+ <mat-option value="group">{{ t('editor.mode.group', 'Grupo de abas') }}</mat-option>
1192
+ <mat-option value="nav">{{ t('editor.mode.nav', 'Navegacao por links') }}</mat-option>
1193
+ </mat-select>
1192
1194
  </mat-form-field>
1193
1195
  </div>
1194
1196
 
@@ -1226,19 +1228,19 @@ class PraxisTabsConfigEditor {
1226
1228
  <div class="editor-section">
1227
1229
  <div class="editor-grid two">
1228
1230
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.groupAlignTabs', 'Alinhamento das abas') }}</mat-label>
1229
- <select matNativeControl [(ngModel)]="group.alignTabs" (ngModelChange)="onAppearanceChange()">
1230
- <option [ngValue]="undefined">{{ t('editor.options.default', 'Padrao') }}</option>
1231
- <option value="start">{{ t('editor.options.start', 'Inicio') }}</option>
1232
- <option value="center">{{ t('editor.options.center', 'Centro') }}</option>
1233
- <option value="end">{{ t('editor.options.end', 'Fim') }}</option>
1234
- </select>
1231
+ <mat-select [(ngModel)]="group.alignTabs" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.default', 'Padrao')">
1232
+ <mat-option [value]="undefined">{{ t('editor.options.default', 'Padrao') }}</mat-option>
1233
+ <mat-option value="start">{{ t('editor.options.start', 'Inicio') }}</mat-option>
1234
+ <mat-option value="center">{{ t('editor.options.center', 'Centro') }}</mat-option>
1235
+ <mat-option value="end">{{ t('editor.options.end', 'Fim') }}</mat-option>
1236
+ </mat-select>
1235
1237
  </mat-form-field>
1236
1238
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.groupHeaderPosition', 'Posicao do header') }}</mat-label>
1237
- <select matNativeControl [(ngModel)]="group.headerPosition" (ngModelChange)="onAppearanceChange()">
1238
- <option [ngValue]="undefined">{{ t('editor.options.aboveDefault', 'Acima (padrao)') }}</option>
1239
- <option value="above">{{ t('editor.options.above', 'Acima') }}</option>
1240
- <option value="below">{{ t('editor.options.below', 'Abaixo') }}</option>
1241
- </select>
1239
+ <mat-select [(ngModel)]="group.headerPosition" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.aboveDefault', 'Acima (padrao)')">
1240
+ <mat-option [value]="undefined">{{ t('editor.options.aboveDefault', 'Acima (padrao)') }}</mat-option>
1241
+ <mat-option value="above">{{ t('editor.options.above', 'Acima') }}</mat-option>
1242
+ <mat-option value="below">{{ t('editor.options.below', 'Abaixo') }}</mat-option>
1243
+ </mat-select>
1242
1244
  </mat-form-field>
1243
1245
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
1244
1246
  <input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
@@ -1265,12 +1267,12 @@ class PraxisTabsConfigEditor {
1265
1267
  ></button>
1266
1268
  </mat-form-field>
1267
1269
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
1268
- <select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
1269
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1270
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1271
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1272
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1273
- </select>
1270
+ <mat-select [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1271
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1272
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1273
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1274
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1275
+ </mat-select>
1274
1276
  <button
1275
1277
  praxisIconButton="help_outline"
1276
1278
  size="dense"
@@ -1282,12 +1284,12 @@ class PraxisTabsConfigEditor {
1282
1284
  ></button>
1283
1285
  </mat-form-field>
1284
1286
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
1285
- <select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
1286
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1287
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1288
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1289
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1290
- </select>
1287
+ <mat-select [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1288
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1289
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1290
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1291
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1292
+ </mat-select>
1291
1293
  <button
1292
1294
  praxisIconButton="help_outline"
1293
1295
  size="dense"
@@ -1351,12 +1353,12 @@ class PraxisTabsConfigEditor {
1351
1353
  <input matInput [(ngModel)]="nav.ariaLabelledby" (ngModelChange)="onAppearanceChange()" />
1352
1354
  </mat-form-field>
1353
1355
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
1354
- <select matNativeControl [(ngModel)]="nav.color" (ngModelChange)="onAppearanceChange()">
1355
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1356
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1357
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1358
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1359
- </select>
1356
+ <mat-select [(ngModel)]="nav.color" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1357
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1358
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1359
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1360
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1361
+ </mat-select>
1360
1362
  <button
1361
1363
  praxisIconButton="help_outline"
1362
1364
  size="dense"
@@ -1368,12 +1370,12 @@ class PraxisTabsConfigEditor {
1368
1370
  ></button>
1369
1371
  </mat-form-field>
1370
1372
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
1371
- <select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
1372
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1373
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1374
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1375
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1376
- </select>
1373
+ <mat-select [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1374
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1375
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1376
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1377
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1378
+ </mat-select>
1377
1379
  <button
1378
1380
  praxisIconButton="help_outline"
1379
1381
  size="dense"
@@ -1455,12 +1457,12 @@ class PraxisTabsConfigEditor {
1455
1457
 
1456
1458
  <mat-form-field appearance="outline">
1457
1459
  <mat-label>{{ t('editor.fields.density', 'Densidade') }}</mat-label>
1458
- <select matNativeControl [(ngModel)]="appearance.density" (ngModelChange)="onAppearanceChange()">
1459
- <option [ngValue]="undefined">{{ t('editor.density.default', 'Padrao') }}</option>
1460
- <option value="compact">{{ t('editor.density.compact', 'Compacta') }}</option>
1461
- <option value="comfortable">{{ t('editor.density.comfortable', 'Confortavel') }}</option>
1462
- <option value="spacious">{{ t('editor.density.spacious', 'Espacosa') }}</option>
1463
- </select>
1460
+ <mat-select [(ngModel)]="appearance.density" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.density.default', 'Padrao')">
1461
+ <mat-option [value]="undefined">{{ t('editor.density.default', 'Padrao') }}</mat-option>
1462
+ <mat-option value="compact">{{ t('editor.density.compact', 'Compacta') }}</mat-option>
1463
+ <mat-option value="comfortable">{{ t('editor.density.comfortable', 'Confortavel') }}</mat-option>
1464
+ <mat-option value="spacious">{{ t('editor.density.spacious', 'Espacosa') }}</mat-option>
1465
+ </mat-select>
1464
1466
  </mat-form-field>
1465
1467
  </div>
1466
1468
 
@@ -1549,12 +1551,12 @@ class PraxisTabsConfigEditor {
1549
1551
  <div class="editor-row">
1550
1552
  <mat-form-field appearance="outline" class="editor-field-min">
1551
1553
  <mat-label>{{ t('editor.fields.addComponent', 'Adicionar componente') }}</mat-label>
1552
- <select matNativeControl [(ngModel)]="selectedTabWidgetId[i]">
1553
- <option [ngValue]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</option>
1554
+ <mat-select [(ngModel)]="selectedTabWidgetId[i]" [placeholder]="t('editor.fields.selectPlaceholder', '(selecione)')">
1555
+ <mat-option [value]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</mat-option>
1554
1556
  @for (c of componentOptions; track c) {
1555
- <option [ngValue]="c.id">{{ c.friendlyName || c.id }}</option>
1557
+ <mat-option [value]="c.id">{{ c.friendlyName || c.id }}</mat-option>
1556
1558
  }
1557
- </select>
1559
+ </mat-select>
1558
1560
  </mat-form-field>
1559
1561
  <button mat-stroked-button (click)="addWidgetToTab(i)"><mat-icon [praxisIcon]="'add'"></mat-icon>{{ t('editor.actions.add', 'Adicionar') }}</button>
1560
1562
  <span class="editor-spacer"></span>
@@ -1647,12 +1649,12 @@ class PraxisTabsConfigEditor {
1647
1649
  <div class="editor-row">
1648
1650
  <mat-form-field appearance="outline" class="editor-field-min">
1649
1651
  <mat-label>{{ t('editor.fields.addComponent', 'Adicionar componente') }}</mat-label>
1650
- <select matNativeControl [(ngModel)]="selectedLinkWidgetId[i]">
1651
- <option [ngValue]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</option>
1652
+ <mat-select [(ngModel)]="selectedLinkWidgetId[i]" [placeholder]="t('editor.fields.selectPlaceholder', '(selecione)')">
1653
+ <mat-option [value]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</mat-option>
1652
1654
  @for (c of componentOptions; track c) {
1653
- <option [ngValue]="c.id">{{ c.friendlyName || c.id }}</option>
1655
+ <mat-option [value]="c.id">{{ c.friendlyName || c.id }}</mat-option>
1654
1656
  }
1655
- </select>
1657
+ </mat-select>
1656
1658
  </mat-form-field>
1657
1659
  <button mat-stroked-button (click)="addWidgetToLink(i)"><mat-icon [praxisIcon]="'add'"></mat-icon>{{ t('editor.actions.add', 'Adicionar') }}</button>
1658
1660
  <span class="editor-spacer"></span>
@@ -1702,7 +1704,7 @@ class PraxisTabsConfigEditor {
1702
1704
  </mat-tab>
1703
1705
  </mat-tab-group>
1704
1706
  </div>
1705
- `, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2_1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2_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: i2_1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2_1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.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: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.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: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: MatSlideToggleModule }, { kind: "component", type: i8.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: DragDropModule }, { kind: "directive", type: i9.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i9.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
1707
+ `, isInline: true, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--pfx-settings-panel-surface-elevated, var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface)));--editor-border: 1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));--editor-radius: 12px;--editor-muted: var(--pfx-settings-panel-text-secondary, var(--md-sys-color-on-surface-variant))}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface))}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}@container (max-width: 640px){.editor-grid.two{grid-template-columns:1fr}.editor-field-min,.editor-section .editor-field-min,.editor-field-240,.editor-section .editor-field-240{min-width:0;width:100%;max-width:100%}}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_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: i2_1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.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: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.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: 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: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.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: MatSlideToggleModule }, { kind: "component", type: i9.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: DragDropModule }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }] });
1706
1708
  }
1707
1709
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabsConfigEditor, decorators: [{
1708
1710
  type: Component,
@@ -1711,6 +1713,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1711
1713
  MatTabsModule,
1712
1714
  MatFormFieldModule,
1713
1715
  MatInputModule,
1716
+ MatSelectModule,
1714
1717
  MatIconModule,
1715
1718
  PraxisIconDirective,
1716
1719
  PraxisIconButtonComponent,
@@ -1723,10 +1726,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1723
1726
  <div class="editor-topbar">
1724
1727
  <mat-form-field appearance="outline" class="editor-mode-field">
1725
1728
  <mat-label>{{ t('editor.fields.mode', 'Modo principal') }}</mat-label>
1726
- <select matNativeControl [ngModel]="primaryMode" (ngModelChange)="setPrimaryMode($event)">
1727
- <option value="group">{{ t('editor.mode.group', 'Grupo de abas') }}</option>
1728
- <option value="nav">{{ t('editor.mode.nav', 'Navegacao por links') }}</option>
1729
- </select>
1729
+ <mat-select [ngModel]="primaryMode" (ngModelChange)="setPrimaryMode($event)">
1730
+ <mat-option value="group">{{ t('editor.mode.group', 'Grupo de abas') }}</mat-option>
1731
+ <mat-option value="nav">{{ t('editor.mode.nav', 'Navegacao por links') }}</mat-option>
1732
+ </mat-select>
1730
1733
  </mat-form-field>
1731
1734
  </div>
1732
1735
 
@@ -1764,19 +1767,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1764
1767
  <div class="editor-section">
1765
1768
  <div class="editor-grid two">
1766
1769
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.groupAlignTabs', 'Alinhamento das abas') }}</mat-label>
1767
- <select matNativeControl [(ngModel)]="group.alignTabs" (ngModelChange)="onAppearanceChange()">
1768
- <option [ngValue]="undefined">{{ t('editor.options.default', 'Padrao') }}</option>
1769
- <option value="start">{{ t('editor.options.start', 'Inicio') }}</option>
1770
- <option value="center">{{ t('editor.options.center', 'Centro') }}</option>
1771
- <option value="end">{{ t('editor.options.end', 'Fim') }}</option>
1772
- </select>
1770
+ <mat-select [(ngModel)]="group.alignTabs" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.default', 'Padrao')">
1771
+ <mat-option [value]="undefined">{{ t('editor.options.default', 'Padrao') }}</mat-option>
1772
+ <mat-option value="start">{{ t('editor.options.start', 'Inicio') }}</mat-option>
1773
+ <mat-option value="center">{{ t('editor.options.center', 'Centro') }}</mat-option>
1774
+ <mat-option value="end">{{ t('editor.options.end', 'Fim') }}</mat-option>
1775
+ </mat-select>
1773
1776
  </mat-form-field>
1774
1777
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.groupHeaderPosition', 'Posicao do header') }}</mat-label>
1775
- <select matNativeControl [(ngModel)]="group.headerPosition" (ngModelChange)="onAppearanceChange()">
1776
- <option [ngValue]="undefined">{{ t('editor.options.aboveDefault', 'Acima (padrao)') }}</option>
1777
- <option value="above">{{ t('editor.options.above', 'Acima') }}</option>
1778
- <option value="below">{{ t('editor.options.below', 'Abaixo') }}</option>
1779
- </select>
1778
+ <mat-select [(ngModel)]="group.headerPosition" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.aboveDefault', 'Acima (padrao)')">
1779
+ <mat-option [value]="undefined">{{ t('editor.options.aboveDefault', 'Acima (padrao)') }}</mat-option>
1780
+ <mat-option value="above">{{ t('editor.options.above', 'Acima') }}</mat-option>
1781
+ <mat-option value="below">{{ t('editor.options.below', 'Abaixo') }}</mat-option>
1782
+ </mat-select>
1780
1783
  </mat-form-field>
1781
1784
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.selectedIndex', 'Indice selecionado') }}</mat-label>
1782
1785
  <input matInput type="number" [(ngModel)]="group.selectedIndex" (ngModelChange)="onAppearanceChange()" />
@@ -1803,12 +1806,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1803
1806
  ></button>
1804
1807
  </mat-form-field>
1805
1808
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
1806
- <select matNativeControl [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()">
1807
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1808
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1809
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1810
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1811
- </select>
1809
+ <mat-select [(ngModel)]="group.color" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1810
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1811
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1812
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1813
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1814
+ </mat-select>
1812
1815
  <button
1813
1816
  praxisIconButton="help_outline"
1814
1817
  size="dense"
@@ -1820,12 +1823,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1820
1823
  ></button>
1821
1824
  </mat-form-field>
1822
1825
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
1823
- <select matNativeControl [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()">
1824
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1825
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1826
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1827
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1828
- </select>
1826
+ <mat-select [(ngModel)]="group.backgroundColor" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1827
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1828
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1829
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1830
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1831
+ </mat-select>
1829
1832
  <button
1830
1833
  praxisIconButton="help_outline"
1831
1834
  size="dense"
@@ -1889,12 +1892,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1889
1892
  <input matInput [(ngModel)]="nav.ariaLabelledby" (ngModelChange)="onAppearanceChange()" />
1890
1893
  </mat-form-field>
1891
1894
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.color', 'Cor (M2)') }}</mat-label>
1892
- <select matNativeControl [(ngModel)]="nav.color" (ngModelChange)="onAppearanceChange()">
1893
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1894
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1895
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1896
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1897
- </select>
1895
+ <mat-select [(ngModel)]="nav.color" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1896
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1897
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1898
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1899
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1900
+ </mat-select>
1898
1901
  <button
1899
1902
  praxisIconButton="help_outline"
1900
1903
  size="dense"
@@ -1906,12 +1909,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1906
1909
  ></button>
1907
1910
  </mat-form-field>
1908
1911
  <mat-form-field appearance="outline"><mat-label>{{ t('editor.fields.backgroundColor', 'Cor de fundo (M2)') }}</mat-label>
1909
- <select matNativeControl [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()">
1910
- <option [ngValue]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</option>
1911
- <option value="primary">{{ t('editor.options.primary', 'Primary') }}</option>
1912
- <option value="accent">{{ t('editor.options.accent', 'Accent') }}</option>
1913
- <option value="warn">{{ t('editor.options.warn', 'Warn') }}</option>
1914
- </select>
1912
+ <mat-select [(ngModel)]="nav.backgroundColor" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.options.none', '(nenhuma)')">
1913
+ <mat-option [value]="undefined">{{ t('editor.options.none', '(nenhuma)') }}</mat-option>
1914
+ <mat-option value="primary">{{ t('editor.options.primary', 'Primary') }}</mat-option>
1915
+ <mat-option value="accent">{{ t('editor.options.accent', 'Accent') }}</mat-option>
1916
+ <mat-option value="warn">{{ t('editor.options.warn', 'Warn') }}</mat-option>
1917
+ </mat-select>
1915
1918
  <button
1916
1919
  praxisIconButton="help_outline"
1917
1920
  size="dense"
@@ -1993,12 +1996,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
1993
1996
 
1994
1997
  <mat-form-field appearance="outline">
1995
1998
  <mat-label>{{ t('editor.fields.density', 'Densidade') }}</mat-label>
1996
- <select matNativeControl [(ngModel)]="appearance.density" (ngModelChange)="onAppearanceChange()">
1997
- <option [ngValue]="undefined">{{ t('editor.density.default', 'Padrao') }}</option>
1998
- <option value="compact">{{ t('editor.density.compact', 'Compacta') }}</option>
1999
- <option value="comfortable">{{ t('editor.density.comfortable', 'Confortavel') }}</option>
2000
- <option value="spacious">{{ t('editor.density.spacious', 'Espacosa') }}</option>
2001
- </select>
1999
+ <mat-select [(ngModel)]="appearance.density" (ngModelChange)="onAppearanceChange()" [placeholder]="t('editor.density.default', 'Padrao')">
2000
+ <mat-option [value]="undefined">{{ t('editor.density.default', 'Padrao') }}</mat-option>
2001
+ <mat-option value="compact">{{ t('editor.density.compact', 'Compacta') }}</mat-option>
2002
+ <mat-option value="comfortable">{{ t('editor.density.comfortable', 'Confortavel') }}</mat-option>
2003
+ <mat-option value="spacious">{{ t('editor.density.spacious', 'Espacosa') }}</mat-option>
2004
+ </mat-select>
2002
2005
  </mat-form-field>
2003
2006
  </div>
2004
2007
 
@@ -2087,12 +2090,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2087
2090
  <div class="editor-row">
2088
2091
  <mat-form-field appearance="outline" class="editor-field-min">
2089
2092
  <mat-label>{{ t('editor.fields.addComponent', 'Adicionar componente') }}</mat-label>
2090
- <select matNativeControl [(ngModel)]="selectedTabWidgetId[i]">
2091
- <option [ngValue]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</option>
2093
+ <mat-select [(ngModel)]="selectedTabWidgetId[i]" [placeholder]="t('editor.fields.selectPlaceholder', '(selecione)')">
2094
+ <mat-option [value]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</mat-option>
2092
2095
  @for (c of componentOptions; track c) {
2093
- <option [ngValue]="c.id">{{ c.friendlyName || c.id }}</option>
2096
+ <mat-option [value]="c.id">{{ c.friendlyName || c.id }}</mat-option>
2094
2097
  }
2095
- </select>
2098
+ </mat-select>
2096
2099
  </mat-form-field>
2097
2100
  <button mat-stroked-button (click)="addWidgetToTab(i)"><mat-icon [praxisIcon]="'add'"></mat-icon>{{ t('editor.actions.add', 'Adicionar') }}</button>
2098
2101
  <span class="editor-spacer"></span>
@@ -2185,12 +2188,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2185
2188
  <div class="editor-row">
2186
2189
  <mat-form-field appearance="outline" class="editor-field-min">
2187
2190
  <mat-label>{{ t('editor.fields.addComponent', 'Adicionar componente') }}</mat-label>
2188
- <select matNativeControl [(ngModel)]="selectedLinkWidgetId[i]">
2189
- <option [ngValue]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</option>
2191
+ <mat-select [(ngModel)]="selectedLinkWidgetId[i]" [placeholder]="t('editor.fields.selectPlaceholder', '(selecione)')">
2192
+ <mat-option [value]="''">{{ t('editor.fields.selectPlaceholder', '(selecione)') }}</mat-option>
2190
2193
  @for (c of componentOptions; track c) {
2191
- <option [ngValue]="c.id">{{ c.friendlyName || c.id }}</option>
2194
+ <mat-option [value]="c.id">{{ c.friendlyName || c.id }}</mat-option>
2192
2195
  }
2193
- </select>
2196
+ </mat-select>
2194
2197
  </mat-form-field>
2195
2198
  <button mat-stroked-button (click)="addWidgetToLink(i)"><mat-icon [praxisIcon]="'add'"></mat-icon>{{ t('editor.actions.add', 'Adicionar') }}</button>
2196
2199
  <span class="editor-spacer"></span>
@@ -2240,7 +2243,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
2240
2243
  </mat-tab>
2241
2244
  </mat-tab-group>
2242
2245
  </div>
2243
- `, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--editor-border: 1px solid var(--md-sys-color-outline-variant);--editor-radius: 12px;--editor-muted: var(--md-sys-color-on-surface-variant)}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--md-sys-color-outline-variant);padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--md-sys-color-surface)}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"] }]
2246
+ `, styles: [":host{display:block;container-type:inline-size;color:var(--pfx-settings-panel-text-primary, var(--md-sys-color-on-surface))}.editor-shell{display:grid;gap:12px}.editor-topbar{display:flex;align-items:start;justify-content:flex-start}.editor-mode-field{width:min(320px,100%)}.editor-diagnostics{display:grid;gap:8px}.editor-diagnostics-title{font-size:.95rem;font-weight:600;color:var(--md-sys-color-on-surface)}.editor-diagnostic{display:grid;gap:4px;padding:10px 12px;border-radius:10px;border:1px solid var(--md-sys-color-outline-variant);background:var(--md-sys-color-surface-container);color:var(--md-sys-color-on-surface)}.editor-diagnostic code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;color:var(--md-sys-color-on-surface-variant)}.editor-diagnostic.level-error{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border-color:var(--md-sys-color-error)}.editor-diagnostic.level-warning{background:var(--md-sys-color-tertiary-container, var(--md-sys-color-surface-container));color:var(--md-sys-color-on-tertiary-container, var(--md-sys-color-on-surface));border-color:var(--md-sys-color-outline-variant)}.editor-tabs{--editor-surface: var(--pfx-settings-panel-surface-elevated, var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface)));--editor-border: 1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));--editor-radius: 12px;--editor-muted: var(--pfx-settings-panel-text-secondary, var(--md-sys-color-on-surface-variant))}.editor-section{padding:12px;display:grid;gap:12px;background:var(--editor-surface);border:var(--editor-border);border-radius:var(--editor-radius)}.editor-section-lg{gap:16px}.editor-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.editor-grid{display:grid;gap:12px}.editor-grid.two{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.editor-grid.tight{gap:8px}.editor-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.editor-muted{color:var(--editor-muted)}.editor-title{margin:6px 0 8px;font-size:1rem}.editor-title-row{display:flex;align-items:center;gap:8px}.editor-code{white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:8px;border-radius:6px;border:1px solid var(--md-sys-color-outline-variant)}.editor-card{border:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding:10px;border-radius:10px;display:grid;gap:8px;background:var(--pfx-settings-panel-surface, var(--md-sys-color-surface))}.editor-card.dashed{border-style:dashed}.editor-card-header{display:flex;align-items:center;gap:8px}.editor-card-title{flex:1;font-weight:600}.editor-divider{border-top:1px solid var(--pfx-settings-panel-border, var(--md-sys-color-outline-variant));padding-top:8px}.editor-spacer{flex:1}.editor-field-min{min-width:260px}.editor-section .editor-field-min{width:260px;max-width:260px}.editor-field-240{width:240px}.editor-section .editor-field-240{width:240px;max-width:240px}@container (max-width: 640px){.editor-grid.two{grid-template-columns:1fr}.editor-field-min,.editor-section .editor-field-min,.editor-field-240,.editor-section .editor-field-240{min-width:0;width:100%;max-width:100%}}.editor-json{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.editor-section .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.editor-section .mat-mdc-form-field.full{max-width:none}.editor-icon-action--danger{color:var(--md-sys-color-error)}\n"] }]
2244
2247
  }], ctorParameters: () => [{ type: undefined, decorators: [{
2245
2248
  type: Inject,
2246
2249
  args: [SETTINGS_PANEL_DATA]
@@ -2385,7 +2388,7 @@ class TabsQuickSetupComponent {
2385
2388
  <mat-slide-toggle [(ngModel)]="model.stretchTabs" (ngModelChange)="updateState()">{{ t('editor.toggles.stretchTabs', 'Esticar abas') }}</mat-slide-toggle>
2386
2389
  </div>
2387
2390
  </div>
2388
- `, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.setup-root{display:grid;gap:12px;padding:8px;background:var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.setup-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.setup-row.wrap{flex-wrap:wrap}.setup-grid{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.setup-root .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;background:var(--md-sys-color-surface)}.hint{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_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: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.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: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.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: MatSlideToggleModule }, { kind: "component", type: i8.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"] }] });
2391
+ `, isInline: true, styles: [":host{display:block;color:var(--md-sys-color-on-surface)}.setup-root{display:grid;gap:12px;padding:8px;background:var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));border:1px solid var(--md-sys-color-outline-variant);border-radius:12px}.setup-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.setup-row.wrap{flex-wrap:wrap}.setup-grid{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.setup-root .mat-mdc-form-field{width:100%;max-width:520px;--mdc-outlined-text-field-container-height: 48px;--mdc-outlined-text-field-outline-color: var(--md-sys-color-outline-variant);--mdc-outlined-text-field-hover-outline-color: var(--md-sys-color-outline);--mdc-outlined-text-field-focus-outline-color: var(--md-sys-color-primary);--mdc-outlined-text-field-error-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-focus-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-error-hover-outline-color: var(--md-sys-color-error);--mdc-outlined-text-field-label-text-color: var(--md-sys-color-on-surface-variant);--mdc-outlined-text-field-input-text-color: var(--md-sys-color-on-surface);--mdc-outlined-text-field-supporting-text-color: var(--md-sys-color-on-surface-variant)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--md-sys-color-outline-variant);border-radius:16px;background:var(--md-sys-color-surface)}.hint{color:var(--md-sys-color-on-surface-variant)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2_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: i2_1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2_1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.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: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.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: MatSlideToggleModule }, { kind: "component", type: i9.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"] }] });
2389
2392
  }
2390
2393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TabsQuickSetupComponent, decorators: [{
2391
2394
  type: Component,
@@ -4893,7 +4896,7 @@ class PraxisTabs {
4893
4896
  </button>
4894
4897
  }
4895
4898
  </div>
4896
- `, isInline: true, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.praxis-tabs-group--header-only .mat-mdc-tab-body-wrapper{display:none}:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper,:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper>.mat-mdc-tab-body,:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper>.mat-mdc-tab-body>.mat-mdc-tab-body-content{overflow:clip}.praxis-tabs-nav-panel--header-only{display:none}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.praxis-tabs-widget-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--p-tabs-widget-stack-gap, 16px);min-width:0}.praxis-tabs-widget-surface{display:block;min-width:0}.density-compact .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 12px}.density-comfortable .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 16px}.density-spacious .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2_1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2_1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i3.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.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: "component", type: i3.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i9.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i9.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i9.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4899
+ `, isInline: true, styles: [".praxis-tabs-root{position:relative;display:block}.praxis-tabs-group.align-start .mat-mdc-tab-header{justify-content:flex-start}.praxis-tabs-group.align-center .mat-mdc-tab-header{justify-content:center}.praxis-tabs-group.align-end .mat-mdc-tab-header{justify-content:flex-end}.praxis-tabs-group--header-only .mat-mdc-tab-body-wrapper{display:none}:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper,:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper>.mat-mdc-tab-body,:host ::ng-deep .praxis-tabs-group.mat-mdc-tab-group-dynamic-height>.mat-mdc-tab-body-wrapper>.mat-mdc-tab-body>.mat-mdc-tab-body-content{overflow:clip}.praxis-tabs-nav-panel--header-only{display:none}.density-compact .mat-mdc-tab-body-content{padding:8px}.density-comfortable .mat-mdc-tab-body-content{padding:16px}.density-spacious .mat-mdc-tab-body-content{padding:24px}.praxis-tabs-widget-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--p-tabs-widget-stack-gap, 16px);min-width:0}.praxis-tabs-widget-surface{display:block;min-width:0}.density-compact .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 12px}.density-comfortable .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 16px}.density-spacious .praxis-tabs-widget-stack{--p-tabs-widget-stack-gap: 24px}.tabs-ai-assistant{position:absolute;right:12px;bottom:72px;z-index:3}.tabs-ai-assistant-trigger{box-shadow:var(--md-sys-elevation-level2)}.edit-fab{position:absolute;right:12px;bottom:12px;z-index:2}.edit-fab-secondary{right:56px}.tab-empty{padding:16px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.high-contrast{filter:contrast(1.2)}.reduce-motion{--mat-animation-duration: 0ms}.drag-handle{display:inline-flex;align-items:center;vertical-align:middle;margin-right:4px;cursor:grab}.tab-label-icon{font-size:18px;width:18px;height:18px;margin-right:6px;vertical-align:middle}:host-context(.pdx-gridster-item) .praxis-tabs-root{display:flex;flex-direction:column;height:100%;min-height:0}:host-context(.pdx-gridster-item) .praxis-tabs-group,:host-context(.pdx-gridster-item) .mat-mdc-tab-group{flex:1 1 auto;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-wrapper,:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{height:100%;min-height:0}:host-context(.pdx-gridster-item) .mat-mdc-tab-body-content{overflow:auto}:host-context(.pdx-gridster-item) .praxis-tabnav-content{flex:1 1 auto;min-height:0;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2_1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2_1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "directive", type: i3.MatTabLabel, selector: "[mat-tab-label], [matTabLabel]" }, { kind: "component", type: i3.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i3.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: "component", type: i3.MatTabNav, selector: "[mat-tab-nav-bar]", inputs: ["fitInkBarToContent", "mat-stretch-tabs", "animationDuration", "backgroundColor", "disableRipple", "color", "tabPanel"], exportAs: ["matTabNavBar", "matTabNav"] }, { kind: "component", type: i3.MatTabNavPanel, selector: "mat-tab-nav-panel", inputs: ["id"], exportAs: ["matTabNavPanel"] }, { kind: "component", type: i3.MatTabLink, selector: "[mat-tab-link], [matTabLink]", inputs: ["active", "disabled", "disableRipple", "tabIndex", "id"], exportAs: ["matTabLink"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i6$1.MatMiniFabButton, selector: "button[mat-mini-fab], a[mat-mini-fab], button[matMiniFab], a[matMiniFab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i6$1.MatFabButton, selector: "button[mat-fab], a[mat-fab], button[matFab], a[matFab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i10.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i10.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i10.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: EmptyStateCardComponent, selector: "praxis-empty-state-card", inputs: ["icon", "title", "description", "primaryAction", "secondaryActions", "inline", "tone", "variant", "alignment", "density", "iconContainer"] }, { kind: "directive", type: DynamicFieldLoaderDirective, selector: "[dynamicFieldLoader]", inputs: ["fields", "formGroup", "enableExternalControlBinding", "itemTemplate", "debugTrace", "debugTraceLabel", "readonlyMode", "disabledMode", "presentationMode", "visible", "canvasMode"], outputs: ["componentsCreated", "fieldCreated", "fieldDestroyed", "renderError", "canvasMouseEnter", "canvasMouseLeave", "canvasClick", "canvasFocus"] }, { kind: "directive", type: DynamicWidgetLoaderDirective, selector: "[dynamicWidgetLoader]", inputs: ["dynamicWidgetLoader", "ownerWidgetKey", "context", "strictValidation", "autoWireOutputs"], outputs: ["widgetEvent", "widgetDiagnostic"], exportAs: ["dynamicWidgetLoader"] }, { kind: "component", type: PraxisAiAssistantShellComponent, selector: "praxis-ai-assistant-shell", inputs: ["labels", "mode", "state", "contextItems", "attachments", "messages", "quickReplies", "recommendedIntents", "prompt", "statusText", "errorText", "testIdPrefix", "panelTestId", "submitTestId", "applyTestId", "primaryAction", "secondaryActions", "governanceActions", "busy", "canSubmit", "canApply", "submitOnEnter", "showAttachAction", "enablePastedAttachments", "enableFileAttachments", "attachmentAccept", "attachmentMultiple", "voiceInputMode", "voiceLanguage", "draggable", "resizable", "minWidth", "minHeight", "margin", "layout"], outputs: ["promptChange", "submitPrompt", "apply", "retryTurn", "cancelTurn", "shellAction", "close", "attach", "attachmentsPasted", "attachmentsSelected", "removeAttachment", "messageAction", "editMessage", "resendMessage", "quickReply", "recommendedIntent", "layoutChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4897
4900
  }
4898
4901
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisTabs, decorators: [{
4899
4902
  type: Component,
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@praxisui/tabs",
3
- "version": "10.0.0-rc.34",
3
+ "version": "10.0.0-rc.36",
4
4
  "description": "Configurable tabs (group and nav) for Praxis UI with metadata-driven content and runtime editor.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
7
7
  "@angular/core": "^21.0.0",
8
8
  "@angular/material": "^21.0.0",
9
9
  "@angular/cdk": "^21.0.0",
10
- "@praxisui/core": "^10.0.0-rc.34",
11
- "@praxisui/dynamic-fields": "^10.0.0-rc.34",
12
- "@praxisui/settings-panel": "^10.0.0-rc.34",
10
+ "@praxisui/core": "^10.0.0-rc.36",
11
+ "@praxisui/dynamic-fields": "^10.0.0-rc.36",
12
+ "@praxisui/settings-panel": "^10.0.0-rc.36",
13
13
  "@angular/forms": "^21.0.0",
14
14
  "@angular/router": "^21.0.0",
15
- "@praxisui/ai": "^10.0.0-rc.34",
15
+ "@praxisui/ai": "^10.0.0-rc.36",
16
16
  "rxjs": "~7.8.0"
17
17
  },
18
18
  "dependencies": {