@praxisui/visual-builder 9.0.0-beta.85 → 9.0.0-beta.88

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.
@@ -4,7 +4,7 @@ import * as i12$1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1$1 from '@angular/forms';
6
6
  import { Validators, ReactiveFormsModule, FormsModule, FormControl } from '@angular/forms';
7
- import * as i10$1 from '@angular/material/badge';
7
+ import * as i9$2 from '@angular/material/badge';
8
8
  import { MatBadgeModule } from '@angular/material/badge';
9
9
  import * as i5 from '@angular/material/button';
10
10
  import { MatButtonModule } from '@angular/material/button';
@@ -17,18 +17,18 @@ import * as i6 from '@angular/material/icon';
17
17
  import { MatIconModule } from '@angular/material/icon';
18
18
  import * as i8 from '@angular/material/list';
19
19
  import { MatListModule } from '@angular/material/list';
20
- import * as i7$2 from '@angular/material/menu';
20
+ import * as i6$2 from '@angular/material/menu';
21
21
  import { MatMenuModule } from '@angular/material/menu';
22
22
  import { MatSidenavModule } from '@angular/material/sidenav';
23
23
  import * as i4 from '@angular/material/snack-bar';
24
24
  import { MatSnackBarModule } from '@angular/material/snack-bar';
25
- import * as i5$2 from '@angular/material/toolbar';
25
+ import * as i4$2 from '@angular/material/toolbar';
26
26
  import { MatToolbarModule } from '@angular/material/toolbar';
27
27
  import * as i9 from '@angular/material/tooltip';
28
28
  import { MatTooltipModule } from '@angular/material/tooltip';
29
29
  import { BehaviorSubject, Subject, from, takeUntil as takeUntil$1, interval, Observable, of, throwError, combineLatest } from 'rxjs';
30
30
  import * as i1$2 from '@praxisui/core';
31
- import { RULE_PROPERTY_SCHEMA, providePraxisI18n, PraxisI18nService, ComponentMetadataRegistry, PraxisIconDirective } from '@praxisui/core';
31
+ import { RULE_PROPERTY_SCHEMA, PraxisIconButtonComponent, providePraxisI18n, PraxisI18nService, ComponentMetadataRegistry, PraxisIconDirective } from '@praxisui/core';
32
32
  import * as i3$1 from '@praxisui/ai';
33
33
  import { AiRuleWizardDialogComponent } from '@praxisui/ai';
34
34
  import { map, takeUntil, debounceTime, distinctUntilChanged, switchMap, catchError, startWith } from 'rxjs/operators';
@@ -41,7 +41,7 @@ import * as i4$1 from '@angular/material/input';
41
41
  import { MatInputModule } from '@angular/material/input';
42
42
  import * as i3 from '@angular/material/select';
43
43
  import { MatSelectModule } from '@angular/material/select';
44
- import * as i7$1 from '@angular/material/checkbox';
44
+ import * as i6$1 from '@angular/material/checkbox';
45
45
  import { MatCheckboxModule } from '@angular/material/checkbox';
46
46
  import * as i11 from '@angular/material/slide-toggle';
47
47
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
@@ -49,17 +49,17 @@ import * as i12 from '@angular/material/progress-bar';
49
49
  import { MatProgressBarModule } from '@angular/material/progress-bar';
50
50
  import * as i10 from '@angular/material/chips';
51
51
  import { MatChipsModule } from '@angular/material/chips';
52
- import * as i11$1 from '@angular/material/expansion';
52
+ import * as i10$1 from '@angular/material/expansion';
53
53
  import { MatExpansionModule } from '@angular/material/expansion';
54
54
  import * as i2$1 from '@angular/cdk/layout';
55
55
  import { Breakpoints } from '@angular/cdk/layout';
56
- import * as i8$1 from '@angular/material/button-toggle';
56
+ import * as i7$1 from '@angular/material/button-toggle';
57
57
  import { MatButtonToggleModule } from '@angular/material/button-toggle';
58
58
  import * as i7$3 from '@angular/material/stepper';
59
59
  import { MatStepperModule } from '@angular/material/stepper';
60
- import * as i12$2 from '@angular/cdk/drag-drop';
60
+ import * as i11$1 from '@angular/cdk/drag-drop';
61
61
  import { DragDropModule } from '@angular/cdk/drag-drop';
62
- import * as i8$2 from '@angular/material/datepicker';
62
+ import * as i7$2 from '@angular/material/datepicker';
63
63
  import { MatDatepickerModule } from '@angular/material/datepicker';
64
64
  import { MatNativeDateModule } from '@angular/material/core';
65
65
  import * as i11$2 from '@angular/material/autocomplete';
@@ -3423,14 +3423,13 @@ class ExportDialogComponent {
3423
3423
  placeholder="Leave empty for auto-generated"
3424
3424
  />
3425
3425
  <button
3426
- mat-icon-button
3426
+ praxisIconButton="help_outline"
3427
+ size="dense"
3427
3428
  matSuffix
3428
- class="help-icon-button"
3429
3429
  type="button"
3430
3430
  [matTooltip]="'Will be auto-generated if not specified'"
3431
3431
  matTooltipPosition="above"
3432
3432
  >
3433
- <mat-icon>help_outline</mat-icon>
3434
3433
  </button>
3435
3434
  </mat-form-field>
3436
3435
  </div>
@@ -3768,10 +3767,11 @@ class ExportDialogComponent {
3768
3767
  <input matInput [value]="shareResult.url" readonly />
3769
3768
  <button
3770
3769
  matSuffix
3771
- mat-icon-button
3770
+ praxisIconButton="content_copy"
3771
+ size="dense"
3772
+ aria-label="Copy share URL"
3772
3773
  (click)="copyShareUrl()"
3773
3774
  >
3774
- <mat-icon>content_copy</mat-icon>
3775
3775
  </button>
3776
3776
  </mat-form-field>
3777
3777
  </div>
@@ -3847,7 +3847,7 @@ class ExportDialogComponent {
3847
3847
  </mat-progress-bar>
3848
3848
  }
3849
3849
  </div>
3850
- `, isInline: true, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "pipe", type: i12$1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3850
+ `, isInline: true, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.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: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: MatProgressBarModule }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "pipe", type: i12$1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3851
3851
  }
3852
3852
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ExportDialogComponent, decorators: [{
3853
3853
  type: Component,
@@ -3858,6 +3858,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3858
3858
  MatDialogModule,
3859
3859
  MatButtonModule,
3860
3860
  MatIconModule,
3861
+ PraxisIconButtonComponent,
3861
3862
  MatTabsModule,
3862
3863
  MatFormFieldModule,
3863
3864
  MatInputModule,
@@ -3965,14 +3966,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
3965
3966
  placeholder="Leave empty for auto-generated"
3966
3967
  />
3967
3968
  <button
3968
- mat-icon-button
3969
+ praxisIconButton="help_outline"
3970
+ size="dense"
3969
3971
  matSuffix
3970
- class="help-icon-button"
3971
3972
  type="button"
3972
3973
  [matTooltip]="'Will be auto-generated if not specified'"
3973
3974
  matTooltipPosition="above"
3974
3975
  >
3975
- <mat-icon>help_outline</mat-icon>
3976
3976
  </button>
3977
3977
  </mat-form-field>
3978
3978
  </div>
@@ -4310,10 +4310,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
4310
4310
  <input matInput [value]="shareResult.url" readonly />
4311
4311
  <button
4312
4312
  matSuffix
4313
- mat-icon-button
4313
+ praxisIconButton="content_copy"
4314
+ size="dense"
4315
+ aria-label="Copy share URL"
4314
4316
  (click)="copyShareUrl()"
4315
4317
  >
4316
- <mat-icon>content_copy</mat-icon>
4317
4318
  </button>
4318
4319
  </mat-form-field>
4319
4320
  </div>
@@ -4389,7 +4390,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
4389
4390
  </mat-progress-bar>
4390
4391
  }
4391
4392
  </div>
4392
- `, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
4393
+ `, styles: [".export-dialog{width:800px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.dialog-header{display:flex;align-items:center;gap:8px;font-weight:500}.dialog-content{flex:1;overflow:auto;max-height:calc(80vh - 120px)}.tab-content{padding:16px 0;min-height:0;max-height:calc(80vh - 180px);overflow-y:auto}.section{margin-bottom:24px}.section-title{margin:0 0 16px;color:var(--md-sys-color-primary);font-size:16px;font-weight:500}.format-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-bottom:16px}.format-card{cursor:pointer;transition:all .2s ease;border:2px solid transparent}.format-card:hover{border-color:var(--md-sys-color-primary-container);box-shadow:0 4px 8px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.format-card.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.format-description{font-size:13px;color:var(--md-sys-color-on-surface-variant);margin:8px 0;min-height:40px}.format-features{display:flex;gap:4px;flex-wrap:wrap}.options-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:16px}.full-width{width:100%}.batch-formats{margin-top:16px}.export-results,.integration-results{margin-top:24px}.result-panel{margin-bottom:8px}.success-icon{color:var(--md-sys-color-tertiary)}.error-icon{color:var(--md-sys-color-error)}.result-details{padding:16px 0}.detail-row{margin-bottom:8px;font-size:14px}.action-buttons{display:flex;gap:8px;margin-top:16px}.error-details{color:var(--md-sys-color-error)}.error-item{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);padding:8px;border-radius:4px;margin-bottom:4px}.system-info{margin-top:16px}.info-card{background:var(--md-sys-color-surface-variant)}.system-details,.integration-result{margin-bottom:16px}.success-card{border-left:4px solid var(--md-sys-color-tertiary)}.error-card{border-left:4px solid var(--md-sys-color-error)}.sharing-form{max-width:400px}.share-card{margin-top:16px;border-left:4px solid var(--md-sys-color-primary)}.share-url{margin-bottom:16px}.dialog-actions{display:flex;justify-content:space-between;align-items:center;padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);position:sticky;bottom:0;background:var(--md-sys-color-surface);border-top:1px solid var(--md-sys-color-outline-variant);z-index:2}.dialog-actions .action-buttons{display:flex;gap:8px}.progress-bar{position:absolute;bottom:0;left:0;right:0}@media(max-width:768px){.export-dialog{width:100vw;height:100vh;max-width:none;max-height:none}.format-grid,.options-grid{grid-template-columns:1fr}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
4393
4394
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
4394
4395
  type: Inject,
4395
4396
  args: [MAT_DIALOG_DATA]
@@ -4701,7 +4702,7 @@ class PropertyEffectEditorComponent {
4701
4702
  </div>
4702
4703
  }
4703
4704
 
4704
- @for (entry of entries; track entry; let i = $index) {
4705
+ @for (entry of entries; track $index; let i = $index) {
4705
4706
  <div
4706
4707
  class="property-card"
4707
4708
  [attr.data-testid]="'property-effect-entry-' + i"
@@ -4725,8 +4726,7 @@ class PropertyEffectEditorComponent {
4725
4726
  (click)="$event.stopPropagation()"
4726
4727
  autocomplete="off">
4727
4728
  @if (searchControl.value) {
4728
- <button matSuffix mat-icon-button aria-label="Limpar" (click)="clearSearch($event)">
4729
- <mat-icon>close</mat-icon>
4729
+ <button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
4730
4730
  </button>
4731
4731
  }
4732
4732
  </mat-form-field>
@@ -4751,25 +4751,24 @@ class PropertyEffectEditorComponent {
4751
4751
  </mat-select>
4752
4752
  @if (getDefinition(entry.property)?.description) {
4753
4753
  <button
4754
- mat-icon-button
4754
+ praxisIconButton="help_outline"
4755
+ size="dense"
4755
4756
  matSuffix
4756
- class="help-icon-button"
4757
4757
  type="button"
4758
4758
  [matTooltip]="getDefinition(entry.property)?.description"
4759
4759
  matTooltipPosition="above"
4760
4760
  >
4761
- <mat-icon>help_outline</mat-icon>
4762
4761
  </button>
4763
4762
  }
4764
4763
  </mat-form-field>
4765
4764
  <button
4766
- mat-icon-button
4767
- color="warn"
4765
+ praxisIconButton="delete"
4766
+ size="dense"
4767
+ class="danger-action"
4768
4768
  (click)="removeEntry(i)"
4769
4769
  [disabled]="entries.length === 1 && !canAddEntry()"
4770
4770
  matTooltip="Remover propriedade"
4771
4771
  >
4772
- <mat-icon>delete</mat-icon>
4773
4772
  </button>
4774
4773
  </div>
4775
4774
  @if (entry.property) {
@@ -4778,12 +4777,12 @@ class PropertyEffectEditorComponent {
4778
4777
  <div class="value-label">
4779
4778
  Valor quando verdadeiro
4780
4779
  <button
4781
- mat-icon-button
4780
+ praxisIconButton="backspace"
4781
+ size="dense"
4782
4782
  type="button"
4783
4783
  (click)="clearValue(entry, 'true')"
4784
4784
  matTooltip="Limpar (usa padrão / null)"
4785
4785
  >
4786
- <mat-icon>backspace</mat-icon>
4787
4786
  </button>
4788
4787
  </div>
4789
4788
  @switch (entry.type) {
@@ -4871,12 +4870,12 @@ class PropertyEffectEditorComponent {
4871
4870
  <div class="value-label">
4872
4871
  Valor quando falso (opcional)
4873
4872
  <button
4874
- mat-icon-button
4873
+ praxisIconButton="backspace"
4874
+ size="dense"
4875
4875
  type="button"
4876
4876
  (click)="clearValue(entry, 'false')"
4877
4877
  matTooltip="Limpar (usa padrão / null)"
4878
4878
  >
4879
- <mat-icon>backspace</mat-icon>
4880
4879
  </button>
4881
4880
  </div>
4882
4881
  @switch (entry.type) {
@@ -4983,7 +4982,7 @@ class PropertyEffectEditorComponent {
4983
4982
  </div>
4984
4983
  }
4985
4984
  </div>
4986
- `, isInline: true, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4985
+ `, isInline: true, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4987
4986
  }
4988
4987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PropertyEffectEditorComponent, decorators: [{
4989
4988
  type: Component,
@@ -4998,6 +4997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
4998
4997
  MatIconModule,
4999
4998
  MatTooltipModule,
5000
4999
  MatButtonToggleModule,
5000
+ PraxisIconButtonComponent,
5001
5001
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
5002
5002
  <div class="property-effect-editor" data-testid="property-effect-editor">
5003
5003
  <div class="header">
@@ -5020,7 +5020,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5020
5020
  </div>
5021
5021
  }
5022
5022
 
5023
- @for (entry of entries; track entry; let i = $index) {
5023
+ @for (entry of entries; track $index; let i = $index) {
5024
5024
  <div
5025
5025
  class="property-card"
5026
5026
  [attr.data-testid]="'property-effect-entry-' + i"
@@ -5044,8 +5044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5044
5044
  (click)="$event.stopPropagation()"
5045
5045
  autocomplete="off">
5046
5046
  @if (searchControl.value) {
5047
- <button matSuffix mat-icon-button aria-label="Limpar" (click)="clearSearch($event)">
5048
- <mat-icon>close</mat-icon>
5047
+ <button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
5049
5048
  </button>
5050
5049
  }
5051
5050
  </mat-form-field>
@@ -5070,25 +5069,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5070
5069
  </mat-select>
5071
5070
  @if (getDefinition(entry.property)?.description) {
5072
5071
  <button
5073
- mat-icon-button
5072
+ praxisIconButton="help_outline"
5073
+ size="dense"
5074
5074
  matSuffix
5075
- class="help-icon-button"
5076
5075
  type="button"
5077
5076
  [matTooltip]="getDefinition(entry.property)?.description"
5078
5077
  matTooltipPosition="above"
5079
5078
  >
5080
- <mat-icon>help_outline</mat-icon>
5081
5079
  </button>
5082
5080
  }
5083
5081
  </mat-form-field>
5084
5082
  <button
5085
- mat-icon-button
5086
- color="warn"
5083
+ praxisIconButton="delete"
5084
+ size="dense"
5085
+ class="danger-action"
5087
5086
  (click)="removeEntry(i)"
5088
5087
  [disabled]="entries.length === 1 && !canAddEntry()"
5089
5088
  matTooltip="Remover propriedade"
5090
5089
  >
5091
- <mat-icon>delete</mat-icon>
5092
5090
  </button>
5093
5091
  </div>
5094
5092
  @if (entry.property) {
@@ -5097,12 +5095,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5097
5095
  <div class="value-label">
5098
5096
  Valor quando verdadeiro
5099
5097
  <button
5100
- mat-icon-button
5098
+ praxisIconButton="backspace"
5099
+ size="dense"
5101
5100
  type="button"
5102
5101
  (click)="clearValue(entry, 'true')"
5103
5102
  matTooltip="Limpar (usa padrão / null)"
5104
5103
  >
5105
- <mat-icon>backspace</mat-icon>
5106
5104
  </button>
5107
5105
  </div>
5108
5106
  @switch (entry.type) {
@@ -5190,12 +5188,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5190
5188
  <div class="value-label">
5191
5189
  Valor quando falso (opcional)
5192
5190
  <button
5193
- mat-icon-button
5191
+ praxisIconButton="backspace"
5192
+ size="dense"
5194
5193
  type="button"
5195
5194
  (click)="clearValue(entry, 'false')"
5196
5195
  matTooltip="Limpar (usa padrão / null)"
5197
5196
  >
5198
- <mat-icon>backspace</mat-icon>
5199
5197
  </button>
5200
5198
  </div>
5201
5199
  @switch (entry.type) {
@@ -5302,7 +5300,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
5302
5300
  </div>
5303
5301
  }
5304
5302
  </div>
5305
- `, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
5303
+ `, styles: [".property-effect-editor{display:flex;flex-direction:column;gap:16px}.header{display:flex;align-items:center;justify-content:space-between;gap:8px}.title{font-weight:600}.property-card{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-row{display:flex;gap:8px;align-items:center}.field{flex:1}.value-columns{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:12px}.value-block{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:8px;background:var(--md-sys-color-surface-container-low)}.value-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:600;color:var(--md-sys-color-on-surface-variant)}.preview{border-top:1px solid var(--md-sys-color-outline-variant);padding-top:8px}.preview-title{font-size:14px;font-weight:600;margin-bottom:8px}.preview-panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px}.preview-pane{border:1px solid var(--md-sys-color-outline-variant);border-radius:6px;padding:8px;background:var(--md-sys-color-surface-container)}.pane-label{font-size:12px;color:var(--md-sys-color-on-surface-variant);margin-bottom:4px}pre{margin:0;background:transparent;font-size:12px;line-height:1.4}.empty{color:var(--md-sys-color-on-surface-variant);font-size:13px;padding:8px;border:1px dashed var(--md-sys-color-outline-variant);border-radius:6px}.w-100{width:100%}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.option-content{display:flex;flex-direction:column;line-height:1.2;padding:4px 0}.option-label{font-weight:500}.option-id{font-size:11px;opacity:.6}.no-results{font-style:italic;font-size:13px;text-align:center}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
5306
5304
  }], propDecorators: { properties: [{
5307
5305
  type: Input
5308
5306
  }], initialConfig: [{
@@ -5806,8 +5804,7 @@ class FieldConditionEditorComponent {
5806
5804
  (click)="$event.stopPropagation()"
5807
5805
  autocomplete="off">
5808
5806
  @if (searchControl.value) {
5809
- <button matSuffix mat-icon-button aria-label="Limpar" (click)="clearSearch($event)">
5810
- <mat-icon>close</mat-icon>
5807
+ <button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
5811
5808
  </button>
5812
5809
  }
5813
5810
  </mat-form-field>
@@ -5846,14 +5843,13 @@ class FieldConditionEditorComponent {
5846
5843
  </mat-select>
5847
5844
  @if (selectedField?.description) {
5848
5845
  <button
5849
- mat-icon-button
5846
+ praxisIconButton="help_outline"
5847
+ size="dense"
5850
5848
  matSuffix
5851
- class="help-icon-button"
5852
5849
  type="button"
5853
5850
  [matTooltip]="selectedField?.description"
5854
5851
  matTooltipPosition="above"
5855
5852
  >
5856
- <mat-icon>help_outline</mat-icon>
5857
5853
  </button>
5858
5854
  }
5859
5855
  </mat-form-field>
@@ -5906,14 +5902,13 @@ class FieldConditionEditorComponent {
5906
5902
  [placeholder]="getValuePlaceholder()"
5907
5903
  />
5908
5904
  <button
5909
- mat-icon-button
5905
+ praxisIconButton="help_outline"
5906
+ size="dense"
5910
5907
  matSuffix
5911
- class="help-icon-button"
5912
5908
  type="button"
5913
5909
  [matTooltip]="getValueHint()"
5914
5910
  matTooltipPosition="above"
5915
5911
  >
5916
- <mat-icon>help_outline</mat-icon>
5917
5912
  </button>
5918
5913
  </mat-form-field>
5919
5914
  }
@@ -6064,7 +6059,7 @@ class FieldConditionEditorComponent {
6064
6059
  </div>
6065
6060
  }
6066
6061
  </form>
6067
- `, isInline: true, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i8$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i8$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i8$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6062
+ `, isInline: true, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i7$2.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i7$2.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i7$2.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6068
6063
  }
6069
6064
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: FieldConditionEditorComponent, decorators: [{
6070
6065
  type: Component,
@@ -6080,7 +6075,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6080
6075
  MatNativeDateModule,
6081
6076
  MatChipsModule,
6082
6077
  MatAutocompleteModule,
6083
- MatTooltipModule
6078
+ MatTooltipModule,
6079
+ PraxisIconButtonComponent,
6084
6080
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
6085
6081
  <form [formGroup]="conditionForm" class="field-condition-form compact-grid">
6086
6082
  <div class="condition-row">
@@ -6105,8 +6101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6105
6101
  (click)="$event.stopPropagation()"
6106
6102
  autocomplete="off">
6107
6103
  @if (searchControl.value) {
6108
- <button matSuffix mat-icon-button aria-label="Limpar" (click)="clearSearch($event)">
6109
- <mat-icon>close</mat-icon>
6104
+ <button matSuffix praxisIconButton="close" size="dense" aria-label="Limpar" (click)="clearSearch($event)">
6110
6105
  </button>
6111
6106
  }
6112
6107
  </mat-form-field>
@@ -6145,14 +6140,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6145
6140
  </mat-select>
6146
6141
  @if (selectedField?.description) {
6147
6142
  <button
6148
- mat-icon-button
6143
+ praxisIconButton="help_outline"
6144
+ size="dense"
6149
6145
  matSuffix
6150
- class="help-icon-button"
6151
6146
  type="button"
6152
6147
  [matTooltip]="selectedField?.description"
6153
6148
  matTooltipPosition="above"
6154
6149
  >
6155
- <mat-icon>help_outline</mat-icon>
6156
6150
  </button>
6157
6151
  }
6158
6152
  </mat-form-field>
@@ -6205,14 +6199,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6205
6199
  [placeholder]="getValuePlaceholder()"
6206
6200
  />
6207
6201
  <button
6208
- mat-icon-button
6202
+ praxisIconButton="help_outline"
6203
+ size="dense"
6209
6204
  matSuffix
6210
- class="help-icon-button"
6211
6205
  type="button"
6212
6206
  [matTooltip]="getValueHint()"
6213
6207
  matTooltipPosition="above"
6214
6208
  >
6215
- <mat-icon>help_outline</mat-icon>
6216
6209
  </button>
6217
6210
  </mat-form-field>
6218
6211
  }
@@ -6363,7 +6356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
6363
6356
  </div>
6364
6357
  }
6365
6358
  </form>
6366
- `, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
6359
+ `, styles: [".field-condition-form{display:flex;flex-direction:column;gap:8px;min-width:300px;background:var(--md-sys-color-surface-container-low);border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:8px 10px;overflow:visible}.condition-row-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.condition-title{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--md-sys-color-on-surface)}.compact-grid{gap:12px}.condition-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(140px,1.5fr) minmax(220px,3fr) auto;gap:12px 4px;align-items:center}.compact-field{width:100%}.value-inline{display:grid;grid-template-columns:1.2fr 2fr;gap:8px;align-items:center}.value-field{width:100%}.field-option,.context-option,.function-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.select-search-container{position:sticky;top:0;z-index:1;background:var(--md-sys-color-surface-container-lowest, #fff);padding:8px 16px;border-bottom:1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12))}.search-input-field{width:100%}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.no-results{font-style:italic;font-size:13px;text-align:center}.field-info{flex:1;display:flex;flex-direction:column;line-height:1.2;overflow:hidden}.field-name{font-size:10px;opacity:.6}.variable-name{font-family:monospace;font-weight:500;color:var(--md-sys-color-secondary)}.variable-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.function-name{font-weight:500;color:var(--md-sys-color-tertiary)}.function-desc{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.boolean-inline{display:flex;align-items:center;padding:4px 0}.condition-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:8px 12px;border-left:4px solid var(--md-sys-color-primary);margin-top:2px}.preview-label{font-size:12px;font-weight:500;color:var(--md-sys-color-on-surface-variant);margin-bottom:2px}.preview-text{font-family:monospace;font-size:14px;color:var(--md-sys-color-on-surface);background:var(--md-sys-color-surface);padding:6px 8px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.error-row{display:inline-flex;align-items:center;gap:6px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);border:1px solid var(--md-sys-color-error);border-radius:8px;padding:4px 10px;font-size:12px;min-height:32px}@media(max-width:1024px){.condition-row{grid-template-columns:repeat(2,minmax(180px,1fr))}.value-inline{grid-template-columns:1fr}}@media(max-width:768px){.condition-row{grid-template-columns:1fr}}.no-fields-hint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--md-sys-color-on-surface-variant);padding:8px 0}:host ::ng-deep .mat-mdc-select-panel{scrollbar-width:thin;scrollbar-color:var(--md-sys-color-on-surface-variant) transparent}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar{width:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-thumb{background-color:var(--md-sys-color-on-surface-variant);border-radius:8px}:host ::ng-deep .mat-mdc-select-panel::-webkit-scrollbar-track{background-color:transparent}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
6367
6360
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { config: [{
6368
6361
  type: Input
6369
6362
  }], fieldSchemas: [{
@@ -7613,14 +7606,13 @@ class ConditionalValidatorEditorComponent {
7613
7606
  }
7614
7607
  </mat-select>
7615
7608
  <button
7616
- mat-icon-button
7609
+ praxisIconButton="help_outline"
7610
+ size="dense"
7617
7611
  matSuffix
7618
- class="help-icon-button"
7619
7612
  type="button"
7620
7613
  [matTooltip]="t('conditionalValidator.help.targetField', 'Choose the field affected by this rule')"
7621
7614
  matTooltipPosition="above"
7622
7615
  >
7623
- <mat-icon>help_outline</mat-icon>
7624
7616
  </button>
7625
7617
  </mat-form-field>
7626
7618
  </div>
@@ -7688,12 +7680,12 @@ class ConditionalValidatorEditorComponent {
7688
7680
  <div class="condition-header">
7689
7681
  <span class="condition-number">{{ i + 1 }}</span>
7690
7682
  <button
7691
- mat-icon-button
7692
- color="warn"
7683
+ praxisIconButton="delete"
7684
+ size="dense"
7685
+ class="danger-action"
7693
7686
  (click)="removeCondition(i)"
7694
7687
  [disabled]="advancedConditions.length <= 1"
7695
7688
  >
7696
- <mat-icon>delete</mat-icon>
7697
7689
  </button>
7698
7690
  </div>
7699
7691
  <praxis-field-condition-editor
@@ -7736,14 +7728,13 @@ class ConditionalValidatorEditorComponent {
7736
7728
  [placeholder]="t('conditionalValidator.placeholder.errorMessage', 'This field is required')"
7737
7729
  />
7738
7730
  <button
7739
- mat-icon-button
7731
+ praxisIconButton="help_outline"
7732
+ size="dense"
7740
7733
  matSuffix
7741
- class="help-icon-button"
7742
7734
  type="button"
7743
7735
  [matTooltip]="t('conditionalValidator.help.errorMessage', 'Overrides the default message shown to the user')"
7744
7736
  matTooltipPosition="above"
7745
7737
  >
7746
- <mat-icon>help_outline</mat-icon>
7747
7738
  </button>
7748
7739
  </mat-form-field>
7749
7740
  <div class="validation-options">
@@ -7874,7 +7865,7 @@ class ConditionalValidatorEditorComponent {
7874
7865
  </div>
7875
7866
  }
7876
7867
  </form>
7877
- `, isInline: true, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7868
+ `, isInline: true, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.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: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
7878
7869
  }
7879
7870
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ConditionalValidatorEditorComponent, decorators: [{
7880
7871
  type: Component,
@@ -7891,6 +7882,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7891
7882
  MatTooltipModule,
7892
7883
  MatTabsModule,
7893
7884
  MatDividerModule,
7885
+ PraxisIconButtonComponent,
7894
7886
  FieldConditionEditorComponent
7895
7887
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], template: `
7896
7888
  <form [formGroup]="validatorForm" class="conditional-validator-form">
@@ -7976,14 +7968,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
7976
7968
  }
7977
7969
  </mat-select>
7978
7970
  <button
7979
- mat-icon-button
7971
+ praxisIconButton="help_outline"
7972
+ size="dense"
7980
7973
  matSuffix
7981
- class="help-icon-button"
7982
7974
  type="button"
7983
7975
  [matTooltip]="t('conditionalValidator.help.targetField', 'Choose the field affected by this rule')"
7984
7976
  matTooltipPosition="above"
7985
7977
  >
7986
- <mat-icon>help_outline</mat-icon>
7987
7978
  </button>
7988
7979
  </mat-form-field>
7989
7980
  </div>
@@ -8051,12 +8042,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
8051
8042
  <div class="condition-header">
8052
8043
  <span class="condition-number">{{ i + 1 }}</span>
8053
8044
  <button
8054
- mat-icon-button
8055
- color="warn"
8045
+ praxisIconButton="delete"
8046
+ size="dense"
8047
+ class="danger-action"
8056
8048
  (click)="removeCondition(i)"
8057
8049
  [disabled]="advancedConditions.length <= 1"
8058
8050
  >
8059
- <mat-icon>delete</mat-icon>
8060
8051
  </button>
8061
8052
  </div>
8062
8053
  <praxis-field-condition-editor
@@ -8099,14 +8090,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
8099
8090
  [placeholder]="t('conditionalValidator.placeholder.errorMessage', 'This field is required')"
8100
8091
  />
8101
8092
  <button
8102
- mat-icon-button
8093
+ praxisIconButton="help_outline"
8094
+ size="dense"
8103
8095
  matSuffix
8104
- class="help-icon-button"
8105
8096
  type="button"
8106
8097
  [matTooltip]="t('conditionalValidator.help.errorMessage', 'Overrides the default message shown to the user')"
8107
8098
  matTooltipPosition="above"
8108
8099
  >
8109
- <mat-icon>help_outline</mat-icon>
8110
8100
  </button>
8111
8101
  </mat-form-field>
8112
8102
  <div class="validation-options">
@@ -8237,7 +8227,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
8237
8227
  </div>
8238
8228
  }
8239
8229
  </form>
8240
- `, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
8230
+ `, styles: [".conditional-validator-form{display:flex;flex-direction:column;gap:16px;width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-field-select{flex:1;min-width:200px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-trigger{display:inline-flex;align-items:center;gap:8px}.trigger-icon{font-size:18px}.trigger-label{font-weight:600}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-variant);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-variant)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.condition-mode-selector{margin-bottom:16px}.simple-condition,.advanced-condition{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.logic-operator{width:100%;margin-bottom:16px}.conditions-list{display:flex;flex-direction:column;gap:12px}.condition-item{border:1px solid var(--md-sys-color-outline);border-radius:8px;padding:12px;background:var(--md-sys-color-surface-variant)}.condition-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.condition-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.add-condition-button{align-self:flex-start}.validation-settings,.ui-settings{display:flex;flex-direction:column;gap:12px}.validation-options{display:flex;flex-direction:column;gap:8px}.error-message-input,.animation-select,.disabled-style-select,.readonly-style-select,.disabled-message-input{width:100%}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline)}.preview-logic{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-field-select{width:100%}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
8241
8231
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }, { type: i1$2.PraxisI18nService, decorators: [{
8242
8232
  type: Optional
8243
8233
  }] }], propDecorators: { config: [{
@@ -8646,14 +8636,13 @@ class CollectionValidatorEditorComponent {
8646
8636
  }
8647
8637
  </mat-select>
8648
8638
  <button
8649
- mat-icon-button
8639
+ praxisIconButton="help_outline"
8640
+ size="dense"
8650
8641
  matSuffix
8651
- class="help-icon-button"
8652
8642
  type="button"
8653
8643
  [matTooltip]="'Select the array/collection field this validator applies to'"
8654
8644
  matTooltipPosition="above"
8655
8645
  >
8656
- <mat-icon>help_outline</mat-icon>
8657
8646
  </button>
8658
8647
  </mat-form-field>
8659
8648
  </div>
@@ -8674,14 +8663,13 @@ class CollectionValidatorEditorComponent {
8674
8663
  formControlName="itemVariable"
8675
8664
  placeholder="item">
8676
8665
  <button
8677
- mat-icon-button
8666
+ praxisIconButton="help_outline"
8667
+ size="dense"
8678
8668
  matSuffix
8679
- class="help-icon-button"
8680
8669
  type="button"
8681
8670
  [matTooltip]="'Variable name to reference each item (e.g., \\'item\\', \\'record\\')'"
8682
8671
  matTooltipPosition="above"
8683
8672
  >
8684
- <mat-icon>help_outline</mat-icon>
8685
8673
  </button>
8686
8674
  </mat-form-field>
8687
8675
  <mat-form-field appearance="outline" class="index-variable-input">
@@ -8690,14 +8678,13 @@ class CollectionValidatorEditorComponent {
8690
8678
  formControlName="indexVariable"
8691
8679
  placeholder="index">
8692
8680
  <button
8693
- mat-icon-button
8681
+ praxisIconButton="help_outline"
8682
+ size="dense"
8694
8683
  matSuffix
8695
- class="help-icon-button"
8696
8684
  type="button"
8697
8685
  [matTooltip]="'Variable name to reference item index (optional)'"
8698
8686
  matTooltipPosition="above"
8699
8687
  >
8700
- <mat-icon>help_outline</mat-icon>
8701
8688
  </button>
8702
8689
  </mat-form-field>
8703
8690
  </div>
@@ -8710,11 +8697,11 @@ class CollectionValidatorEditorComponent {
8710
8697
  [formGroupName]="i">
8711
8698
  <div class="rule-header">
8712
8699
  <span class="rule-number">{{ i + 1 }}</span>
8713
- <button mat-icon-button
8714
- color="warn"
8700
+ <button praxisIconButton="delete"
8701
+ size="dense"
8702
+ class="danger-action"
8715
8703
  (click)="removeItemValidationRule(i)"
8716
8704
  [disabled]="itemValidationRules.length <= 1">
8717
- <mat-icon>delete</mat-icon>
8718
8705
  </button>
8719
8706
  </div>
8720
8707
  <div class="rule-config">
@@ -8733,14 +8720,13 @@ class CollectionValidatorEditorComponent {
8733
8720
  formControlName="fieldPath"
8734
8721
  placeholder="item.propertyName">
8735
8722
  <button
8736
- mat-icon-button
8723
+ praxisIconButton="help_outline"
8724
+ size="dense"
8737
8725
  matSuffix
8738
- class="help-icon-button"
8739
8726
  type="button"
8740
8727
  [matTooltip]="'Path to the field within each item'"
8741
8728
  matTooltipPosition="above"
8742
8729
  >
8743
- <mat-icon>help_outline</mat-icon>
8744
8730
  </button>
8745
8731
  </mat-form-field>
8746
8732
  <mat-form-field appearance="outline" class="rule-message-input">
@@ -8785,11 +8771,11 @@ class CollectionValidatorEditorComponent {
8785
8771
  [formControlName]="i"
8786
8772
  placeholder="item.propertyName">
8787
8773
  </mat-form-field>
8788
- <button mat-icon-button
8789
- color="warn"
8774
+ <button praxisIconButton="delete"
8775
+ size="dense"
8776
+ class="danger-action"
8790
8777
  (click)="removeUniqueField(i)"
8791
8778
  [disabled]="uniqueByFields.length <= 1">
8792
- <mat-icon>delete</mat-icon>
8793
8779
  </button>
8794
8780
  </div>
8795
8781
  }
@@ -8838,14 +8824,13 @@ class CollectionValidatorEditorComponent {
8838
8824
  min="0"
8839
8825
  placeholder="0">
8840
8826
  <button
8841
- mat-icon-button
8827
+ praxisIconButton="help_outline"
8828
+ size="dense"
8842
8829
  matSuffix
8843
- class="help-icon-button"
8844
8830
  type="button"
8845
8831
  [matTooltip]="'Minimum number of items required'"
8846
8832
  matTooltipPosition="above"
8847
8833
  >
8848
- <mat-icon>help_outline</mat-icon>
8849
8834
  </button>
8850
8835
  </mat-form-field>
8851
8836
  }
@@ -8858,14 +8843,13 @@ class CollectionValidatorEditorComponent {
8858
8843
  min="1"
8859
8844
  placeholder="100">
8860
8845
  <button
8861
- mat-icon-button
8846
+ praxisIconButton="help_outline"
8847
+ size="dense"
8862
8848
  matSuffix
8863
- class="help-icon-button"
8864
8849
  type="button"
8865
8850
  [matTooltip]="'Maximum number of items allowed'"
8866
8851
  matTooltipPosition="above"
8867
8852
  >
8868
- <mat-icon>help_outline</mat-icon>
8869
8853
  </button>
8870
8854
  </mat-form-field>
8871
8855
  }
@@ -8961,14 +8945,13 @@ class CollectionValidatorEditorComponent {
8961
8945
  max="1000"
8962
8946
  placeholder="50">
8963
8947
  <button
8964
- mat-icon-button
8948
+ praxisIconButton="help_outline"
8949
+ size="dense"
8965
8950
  matSuffix
8966
- class="help-icon-button"
8967
8951
  type="button"
8968
8952
  [matTooltip]="'Number of items to validate at once'"
8969
8953
  matTooltipPosition="above"
8970
8954
  >
8971
- <mat-icon>help_outline</mat-icon>
8972
8955
  </button>
8973
8956
  </mat-form-field>
8974
8957
  <mat-checkbox formControlName="debounceValidation">
@@ -9033,7 +9016,7 @@ class CollectionValidatorEditorComponent {
9033
9016
  </div>
9034
9017
  }
9035
9018
  </form>
9036
- `, isInline: true, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i9$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i9$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9019
+ `, isInline: true, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i3.MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSliderModule }, { kind: "component", type: i9$1.MatSlider, selector: "mat-slider", inputs: ["disabled", "discrete", "showTickMarks", "min", "color", "disableRipple", "max", "step", "displayWith"], exportAs: ["matSlider"] }, { kind: "directive", type: i9$1.MatSliderThumb, selector: "input[matSliderThumb]", inputs: ["value"], outputs: ["valueChange", "dragStart", "dragEnd"], exportAs: ["matSliderThumb"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9037
9020
  }
9038
9021
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: CollectionValidatorEditorComponent, decorators: [{
9039
9022
  type: Component,
@@ -9049,7 +9032,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9049
9032
  MatTooltipModule,
9050
9033
  MatTabsModule,
9051
9034
  MatDividerModule,
9052
- MatSliderModule
9035
+ MatSliderModule,
9036
+ PraxisIconButtonComponent
9053
9037
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
9054
9038
  <form [formGroup]="collectionForm" class="collection-validator-form">
9055
9039
  <!-- Validator Type Selection -->
@@ -9113,14 +9097,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9113
9097
  }
9114
9098
  </mat-select>
9115
9099
  <button
9116
- mat-icon-button
9100
+ praxisIconButton="help_outline"
9101
+ size="dense"
9117
9102
  matSuffix
9118
- class="help-icon-button"
9119
9103
  type="button"
9120
9104
  [matTooltip]="'Select the array/collection field this validator applies to'"
9121
9105
  matTooltipPosition="above"
9122
9106
  >
9123
- <mat-icon>help_outline</mat-icon>
9124
9107
  </button>
9125
9108
  </mat-form-field>
9126
9109
  </div>
@@ -9141,14 +9124,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9141
9124
  formControlName="itemVariable"
9142
9125
  placeholder="item">
9143
9126
  <button
9144
- mat-icon-button
9127
+ praxisIconButton="help_outline"
9128
+ size="dense"
9145
9129
  matSuffix
9146
- class="help-icon-button"
9147
9130
  type="button"
9148
9131
  [matTooltip]="'Variable name to reference each item (e.g., \\'item\\', \\'record\\')'"
9149
9132
  matTooltipPosition="above"
9150
9133
  >
9151
- <mat-icon>help_outline</mat-icon>
9152
9134
  </button>
9153
9135
  </mat-form-field>
9154
9136
  <mat-form-field appearance="outline" class="index-variable-input">
@@ -9157,14 +9139,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9157
9139
  formControlName="indexVariable"
9158
9140
  placeholder="index">
9159
9141
  <button
9160
- mat-icon-button
9142
+ praxisIconButton="help_outline"
9143
+ size="dense"
9161
9144
  matSuffix
9162
- class="help-icon-button"
9163
9145
  type="button"
9164
9146
  [matTooltip]="'Variable name to reference item index (optional)'"
9165
9147
  matTooltipPosition="above"
9166
9148
  >
9167
- <mat-icon>help_outline</mat-icon>
9168
9149
  </button>
9169
9150
  </mat-form-field>
9170
9151
  </div>
@@ -9177,11 +9158,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9177
9158
  [formGroupName]="i">
9178
9159
  <div class="rule-header">
9179
9160
  <span class="rule-number">{{ i + 1 }}</span>
9180
- <button mat-icon-button
9181
- color="warn"
9161
+ <button praxisIconButton="delete"
9162
+ size="dense"
9163
+ class="danger-action"
9182
9164
  (click)="removeItemValidationRule(i)"
9183
9165
  [disabled]="itemValidationRules.length <= 1">
9184
- <mat-icon>delete</mat-icon>
9185
9166
  </button>
9186
9167
  </div>
9187
9168
  <div class="rule-config">
@@ -9200,14 +9181,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9200
9181
  formControlName="fieldPath"
9201
9182
  placeholder="item.propertyName">
9202
9183
  <button
9203
- mat-icon-button
9184
+ praxisIconButton="help_outline"
9185
+ size="dense"
9204
9186
  matSuffix
9205
- class="help-icon-button"
9206
9187
  type="button"
9207
9188
  [matTooltip]="'Path to the field within each item'"
9208
9189
  matTooltipPosition="above"
9209
9190
  >
9210
- <mat-icon>help_outline</mat-icon>
9211
9191
  </button>
9212
9192
  </mat-form-field>
9213
9193
  <mat-form-field appearance="outline" class="rule-message-input">
@@ -9252,11 +9232,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9252
9232
  [formControlName]="i"
9253
9233
  placeholder="item.propertyName">
9254
9234
  </mat-form-field>
9255
- <button mat-icon-button
9256
- color="warn"
9235
+ <button praxisIconButton="delete"
9236
+ size="dense"
9237
+ class="danger-action"
9257
9238
  (click)="removeUniqueField(i)"
9258
9239
  [disabled]="uniqueByFields.length <= 1">
9259
- <mat-icon>delete</mat-icon>
9260
9240
  </button>
9261
9241
  </div>
9262
9242
  }
@@ -9305,14 +9285,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9305
9285
  min="0"
9306
9286
  placeholder="0">
9307
9287
  <button
9308
- mat-icon-button
9288
+ praxisIconButton="help_outline"
9289
+ size="dense"
9309
9290
  matSuffix
9310
- class="help-icon-button"
9311
9291
  type="button"
9312
9292
  [matTooltip]="'Minimum number of items required'"
9313
9293
  matTooltipPosition="above"
9314
9294
  >
9315
- <mat-icon>help_outline</mat-icon>
9316
9295
  </button>
9317
9296
  </mat-form-field>
9318
9297
  }
@@ -9325,14 +9304,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9325
9304
  min="1"
9326
9305
  placeholder="100">
9327
9306
  <button
9328
- mat-icon-button
9307
+ praxisIconButton="help_outline"
9308
+ size="dense"
9329
9309
  matSuffix
9330
- class="help-icon-button"
9331
9310
  type="button"
9332
9311
  [matTooltip]="'Maximum number of items allowed'"
9333
9312
  matTooltipPosition="above"
9334
9313
  >
9335
- <mat-icon>help_outline</mat-icon>
9336
9314
  </button>
9337
9315
  </mat-form-field>
9338
9316
  }
@@ -9428,14 +9406,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9428
9406
  max="1000"
9429
9407
  placeholder="50">
9430
9408
  <button
9431
- mat-icon-button
9409
+ praxisIconButton="help_outline"
9410
+ size="dense"
9432
9411
  matSuffix
9433
- class="help-icon-button"
9434
9412
  type="button"
9435
9413
  [matTooltip]="'Number of items to validate at once'"
9436
9414
  matTooltipPosition="above"
9437
9415
  >
9438
- <mat-icon>help_outline</mat-icon>
9439
9416
  </button>
9440
9417
  </mat-form-field>
9441
9418
  <mat-checkbox formControlName="debounceValidation">
@@ -9500,7 +9477,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
9500
9477
  </div>
9501
9478
  }
9502
9479
  </form>
9503
- `, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
9480
+ `, styles: [".collection-validator-form{display:flex;flex-direction:column;gap:16px;max-width:900px}.form-row{display:flex;gap:12px;align-items:flex-start}.validator-type-select,.target-collection-select{flex:1;min-width:250px}.validator-option{display:flex;flex-direction:column;gap:4px}.validator-option mat-icon{align-self:flex-start;color:var(--md-sys-color-primary)}.validator-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.field-option{display:flex;align-items:center;gap:8px;width:100%}.field-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.field-label{flex:1;font-weight:500}.field-type{font-size:11px;color:var(--md-sys-color-on-surface-variant);background:var(--md-sys-color-surface-container);padding:2px 6px;border-radius:4px}.form-section{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:16px;background:var(--md-sys-color-surface-container)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-title h5{margin:16px 0 8px;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.foreach-config,.unique-config,.length-config{display:flex;flex-direction:column;gap:16px}.item-schema-info{display:flex;gap:12px}.item-variable-input,.index-variable-input{flex:1}.validation-rules{background:var(--md-sys-color-surface);border-radius:8px;padding:16px}.validation-rule-item,.unique-field-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;margin-bottom:12px;background:var(--md-sys-color-surface-container)}.rule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.rule-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.rule-config{display:flex;flex-direction:column;gap:8px}.unique-field-item{display:flex;align-items:center;gap:8px}.field-path-input{flex:1}.length-inputs{display:flex;gap:12px}.length-input{flex:1}.length-slider{margin:16px 0}.length-slider label{display:block;margin-bottom:8px;font-size:13px;font-weight:500}.length-options,.unique-options{display:flex;flex-direction:column;gap:12px}.advanced-options{background:var(--md-sys-color-secondary-container);border-color:var(--md-sys-color-secondary)}.advanced-config{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.validation-timing,.error-handling,.performance-options{display:flex;flex-direction:column;gap:8px}.validation-timing h5,.error-handling h5,.performance-options h5{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--md-sys-color-secondary);text-transform:uppercase}.add-rule-button,.add-field-button{align-self:flex-start}.preview-section{background:var(--md-sys-color-primary-container);border-color:var(--md-sys-color-primary)}.preview-content{display:flex;flex-direction:column;gap:8px}.preview-text{font-family:monospace;font-size:14px;background:var(--md-sys-color-surface);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant)}.preview-details{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.validation-messages{background:var(--md-sys-color-error-container);border-radius:4px;padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;color:var(--md-sys-color-on-error-container);font-size:12px;margin-bottom:4px}.validation-error:last-child{margin-bottom:0}.validation-error mat-icon{font-size:14px;width:14px;height:14px}@media(max-width:1024px){.advanced-config{grid-template-columns:1fr 1fr}}@media(max-width:768px){.form-row{flex-direction:column}.validator-type-select,.target-collection-select{width:100%}.item-schema-info,.length-inputs{flex-direction:column}.advanced-config{grid-template-columns:1fr}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
9504
9481
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { config: [{
9505
9482
  type: Input
9506
9483
  }], fieldSchemas: [{
@@ -9825,11 +9802,12 @@ class RuleNodeComponent {
9825
9802
 
9826
9803
  <!-- Node Menu -->
9827
9804
  <button
9828
- mat-icon-button
9805
+ praxisIconButton="more_vert"
9806
+ size="dense"
9807
+ aria-label="Ações da regra"
9829
9808
  [matMenuTriggerFor]="nodeMenu"
9830
9809
  (click)="$event.stopPropagation()"
9831
9810
  >
9832
- <mat-icon>more_vert</mat-icon>
9833
9811
  </button>
9834
9812
 
9835
9813
  <mat-menu #nodeMenu="matMenu">
@@ -10039,19 +10017,19 @@ class RuleNodeComponent {
10039
10017
  @if (canHaveChildren()) {
10040
10018
  <div class="add-child-area">
10041
10019
  <button
10042
- mat-icon-button
10043
- color="primary"
10020
+ praxisIconButton="add_circle"
10021
+ size="dense"
10022
+ aria-label="Adicionar regra filha"
10044
10023
  (click)="showAddChildMenu()"
10045
10024
  class="add-child-button"
10046
10025
  >
10047
- <mat-icon>add_circle</mat-icon>
10048
10026
  </button>
10049
10027
  </div>
10050
10028
  }
10051
10029
  </div>
10052
10030
  }
10053
10031
  </div>
10054
- `, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.rule-node-container{position:relative;margin-bottom:8px}.rule-node{min-width:300px;border:1px solid var(--md-sys-color-outline-variant);cursor:pointer;transition:all .2s ease;position:relative;border-radius:8px}.rule-node:hover{border-color:var(--md-sys-color-primary);box-shadow:0 4px 8px var(--vb-shadow-low-color)}.rule-node.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.rule-node-container.has-errors .rule-node{border-color:var(--md-sys-color-error)}.node-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant)}.node-type{display:flex;align-items:center;gap:8px}.type-icon{font-size:20px;width:20px;height:20px}.type-icon.field-condition{color:var(--md-sys-color-primary)}.type-icon.boolean-group{color:var(--md-sys-color-secondary)}.type-icon.conditional-validator{color:var(--md-sys-color-tertiary)}.type-icon.collection-validation{color:var(--md-sys-color-error)}.type-label{font-weight:500;font-size:14px}.node-actions{display:flex;align-items:center;gap:4px}.error-badge{color:var(--md-sys-color-error);font-size:18px}.node-content{padding:12px}.field-condition-content,.boolean-group-content,.conditional-validator-content,.collection-validation-content{min-height:60px}.group-operator{display:flex;justify-content:center}.operator-select{width:120px}.metadata-preview{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline)}.metadata-chips{margin-bottom:8px}.metadata-chip{font-size:11px;height:20px}.code-chip{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.tag-chip{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.metadata-message{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.validation-errors{border-top:1px solid var(--md-sys-color-error);background:var(--md-sys-color-error-container);padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}.validation-error:last-child{margin-bottom:0}.validation-error.error{color:var(--md-sys-color-on-error-container)}.validation-error.warning{color:var(--md-sys-color-secondary)}.error-icon{font-size:14px;width:14px;height:14px}.children-container{margin-left:24px;position:relative}.children-connector{position:absolute;left:-12px;top:0;width:12px;height:24px}.connector-line{width:2px;height:100%;background:var(--md-sys-color-outline);margin-left:10px}.children-list{padding-left:12px;border-left:2px solid var(--md-sys-color-outline)}.child-wrapper{position:relative}.child-connector{display:flex;flex-direction:column;align-items:center;margin:8px 0}.child-connector .connector-line{width:2px;height:12px;background:var(--md-sys-color-outline)}.connector-operator{background:var(--md-sys-color-secondary);color:var(--md-sys-color-on-secondary);padding:2px 6px;border-radius:8px;font-size:10px;font-weight:600;margin-top:-1px}.add-child-area{display:flex;justify-content:center;margin-top:16px;padding:8px;border:1px dashed var(--md-sys-color-outline);border-radius:8px;background:var(--md-sys-color-surface-variant)}.add-child-button{color:var(--md-sys-color-primary)}.level-1{margin-left:20px}.level-2{margin-left:40px}.level-3{margin-left:60px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.children-list.cdk-drop-list-dragging .child-wrapper:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.delete-action{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "component", type: RuleNodeComponent, selector: "praxis-rule-node", inputs: ["node", "nodes", "fieldSchemas", "level", "isSelected", "validationErrors"], outputs: ["nodeClicked", "nodeUpdated", "nodeDeleted", "childAdded", "childMoved"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i10$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i12$2.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: i12$2.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: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: ConditionalValidatorEditorComponent, selector: "praxis-conditional-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: CollectionValidatorEditorComponent, selector: "praxis-collection-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10032
+ `, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.rule-node-container{position:relative;margin-bottom:8px}.rule-node{min-width:300px;border:1px solid var(--md-sys-color-outline-variant);cursor:pointer;transition:all .2s ease;position:relative;border-radius:8px}.rule-node:hover{border-color:var(--md-sys-color-primary);box-shadow:0 4px 8px var(--vb-shadow-low-color)}.rule-node.selected{border-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.rule-node-container.has-errors .rule-node{border-color:var(--md-sys-color-error)}.node-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant)}.node-type{display:flex;align-items:center;gap:8px}.type-icon{font-size:20px;width:20px;height:20px}.type-icon.field-condition{color:var(--md-sys-color-primary)}.type-icon.boolean-group{color:var(--md-sys-color-secondary)}.type-icon.conditional-validator{color:var(--md-sys-color-tertiary)}.type-icon.collection-validation{color:var(--md-sys-color-error)}.type-label{font-weight:500;font-size:14px}.node-actions{display:flex;align-items:center;gap:4px}.error-badge{color:var(--md-sys-color-error);font-size:18px}.node-content{padding:12px}.field-condition-content,.boolean-group-content,.conditional-validator-content,.collection-validation-content{min-height:60px}.group-operator{display:flex;justify-content:center}.operator-select{width:120px}.metadata-preview{margin-top:12px;padding-top:12px;border-top:1px solid var(--md-sys-color-outline)}.metadata-chips{margin-bottom:8px}.metadata-chip{font-size:11px;height:20px}.code-chip{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.tag-chip{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.metadata-message{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.validation-errors{border-top:1px solid var(--md-sys-color-error);background:var(--md-sys-color-error-container);padding:8px 12px}.validation-error{display:flex;align-items:center;gap:6px;margin-bottom:4px;font-size:12px}.validation-error:last-child{margin-bottom:0}.validation-error.error{color:var(--md-sys-color-on-error-container)}.validation-error.warning{color:var(--md-sys-color-secondary)}.error-icon{font-size:14px;width:14px;height:14px}.children-container{margin-left:24px;position:relative}.children-connector{position:absolute;left:-12px;top:0;width:12px;height:24px}.connector-line{width:2px;height:100%;background:var(--md-sys-color-outline);margin-left:10px}.children-list{padding-left:12px;border-left:2px solid var(--md-sys-color-outline)}.child-wrapper{position:relative}.child-connector{display:flex;flex-direction:column;align-items:center;margin:8px 0}.child-connector .connector-line{width:2px;height:12px;background:var(--md-sys-color-outline)}.connector-operator{background:var(--md-sys-color-secondary);color:var(--md-sys-color-on-secondary);padding:2px 6px;border-radius:8px;font-size:10px;font-weight:600;margin-top:-1px}.add-child-area{display:flex;justify-content:center;margin-top:16px;padding:8px;border:1px dashed var(--md-sys-color-outline);border-radius:8px;background:var(--md-sys-color-surface-variant)}.add-child-button{color:var(--md-sys-color-primary)}.level-1{margin-left:20px}.level-2{margin-left:40px}.level-3{margin-left:60px}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.children-list.cdk-drop-list-dragging .child-wrapper:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.delete-action{color:var(--md-sys-color-error)}\n"], dependencies: [{ kind: "component", type: RuleNodeComponent, selector: "praxis-rule-node", inputs: ["node", "nodes", "fieldSchemas", "level", "isSelected", "validationErrors"], outputs: ["nodeClicked", "nodeUpdated", "nodeDeleted", "childAdded", "childMoved"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i11$1.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: i11$1.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: "component", type: FieldConditionEditorComponent, selector: "praxis-field-condition-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: ConditionalValidatorEditorComponent, selector: "praxis-conditional-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }, { kind: "component", type: CollectionValidatorEditorComponent, selector: "praxis-collection-validator-editor", inputs: ["config", "fieldSchemas"], outputs: ["configChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10055
10033
  }
10056
10034
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleNodeComponent, decorators: [{
10057
10035
  type: Component,
@@ -10068,6 +10046,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
10068
10046
  MatChipsModule,
10069
10047
  MatBadgeModule,
10070
10048
  MatDividerModule,
10049
+ PraxisIconButtonComponent,
10071
10050
  DragDropModule,
10072
10051
  FieldConditionEditorComponent,
10073
10052
  ConditionalValidatorEditorComponent,
@@ -10110,11 +10089,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
10110
10089
 
10111
10090
  <!-- Node Menu -->
10112
10091
  <button
10113
- mat-icon-button
10092
+ praxisIconButton="more_vert"
10093
+ size="dense"
10094
+ aria-label="Ações da regra"
10114
10095
  [matMenuTriggerFor]="nodeMenu"
10115
10096
  (click)="$event.stopPropagation()"
10116
10097
  >
10117
- <mat-icon>more_vert</mat-icon>
10118
10098
  </button>
10119
10099
 
10120
10100
  <mat-menu #nodeMenu="matMenu">
@@ -10324,12 +10304,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
10324
10304
  @if (canHaveChildren()) {
10325
10305
  <div class="add-child-area">
10326
10306
  <button
10327
- mat-icon-button
10328
- color="primary"
10307
+ praxisIconButton="add_circle"
10308
+ size="dense"
10309
+ aria-label="Adicionar regra filha"
10329
10310
  (click)="showAddChildMenu()"
10330
10311
  class="add-child-button"
10331
10312
  >
10332
- <mat-icon>add_circle</mat-icon>
10333
10313
  </button>
10334
10314
  </div>
10335
10315
  }
@@ -11194,11 +11174,11 @@ class TargetSelectorComponent {
11194
11174
  @if (searchControl.value) {
11195
11175
  <button
11196
11176
  matSuffix
11197
- mat-icon-button
11177
+ praxisIconButton="close"
11178
+ size="dense"
11198
11179
  [attr.aria-label]="t('target.searchClear', 'Limpar busca')"
11199
11180
  (click)="clearSearch($event)"
11200
11181
  >
11201
- <mat-icon>close</mat-icon>
11202
11182
  </button>
11203
11183
  }
11204
11184
  </mat-form-field>
@@ -11274,7 +11254,7 @@ class TargetSelectorComponent {
11274
11254
  </div>
11275
11255
  }
11276
11256
  </div>
11277
- `, isInline: true, styles: [".target-selector-container{--_pvb-target-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-target-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-target-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-target-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-target-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;gap:16px}.section-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:12px 0 8px}.hero-icon{width:74px;height:74px;border-radius:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--_pvb-target-accent) 24%,transparent);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--_pvb-target-accent) 22%,transparent) 0%,transparent 55%),color-mix(in srgb,var(--_pvb-target-surface) 98%,black 2%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.hero-icon mat-icon{color:var(--_pvb-target-accent);font-size:30px;width:30px;height:30px}.section-title{font-weight:600;font-size:18px;color:var(--md-sys-color-on-surface)}.section-description{max-width:680px;font-size:14px;color:var(--_pvb-target-text-soft);line-height:1.5}.hero-pill{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 16px;border-radius:999px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-target-surface-strong) 96%,black 4%);font-size:12px;color:var(--_pvb-target-text-soft);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.type-toggle-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px}.type-toggle{min-height:88px;height:100%;text-align:left;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 16px;line-height:1.3;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);box-sizing:border-box;border-radius:16px;background:color-mix(in srgb,var(--_pvb-target-surface) 92%,black 8%);transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 12px 26px color-mix(in srgb,black 12%,transparent)}.type-toggle:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-target-accent) 36%,transparent)}.type-toggle.mat-button-toggle-checked{border-color:color-mix(in srgb,var(--_pvb-target-accent) 54%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 7%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 14%,transparent)}.type-text{display:flex;flex-direction:column;gap:2px;max-width:100%}.type-label{font-weight:600}.type-desc{font-size:12px;color:var(--_pvb-target-text-soft);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.target-list-selector{margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-target-border) 52%,transparent);padding-top:14px}.w-100{width:100%}.list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;flex-wrap:wrap}.list-title{font-weight:600}.list-stats{font-size:13px;color:var(--_pvb-target-text-soft);white-space:nowrap}.search-input-field{width:260px;align-self:center;display:flex;align-items:center}.search-input-field ::ng-deep .mat-mdc-text-field-wrapper{border-radius:14px;background:color-mix(in srgb,var(--_pvb-target-surface-strong) 94%,black 6%)}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.target-groups{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow:auto;padding-right:4px}.card-list{display:flex;flex-direction:column;gap:8px}.target-card{display:flex;gap:12px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;cursor:pointer;transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;align-items:center;background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);min-height:72px;box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent),0 10px 22px color-mix(in srgb,black 10%,transparent)}.target-card:hover{border-color:color-mix(in srgb,var(--_pvb-target-accent) 40%,transparent);transform:translateY(-1px);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 16px 28px color-mix(in srgb,var(--_pvb-target-accent) 10%,transparent)}.target-card.selected{border-color:color-mix(in srgb,var(--_pvb-target-accent) 64%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 30px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.card-icon{color:var(--_pvb-target-accent);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--_pvb-target-accent) 16%,transparent))}.card-content{display:flex;flex-direction:column;gap:4px}.card-title{font-weight:600}.card-subtitle{font-size:13px;color:var(--_pvb-target-text-soft)}.card-meta{font-size:12px;color:var(--_pvb-target-text-soft)}.selected-wrapper{background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;margin-top:12px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.selected-label{font-weight:600;font-size:13px;color:var(--md-sys-color-on-surface)}.selected-targets-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}.chip-icon{margin-right:4px}.selected-summary{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed color-mix(in srgb,var(--_pvb-target-border) 82%,transparent);border-radius:16px;font-size:13px;color:var(--md-sys-color-on-surface)}.no-results{font-style:italic;font-size:13px;text-align:center;padding:12px 0;color:var(--_pvb-target-text-soft)}.target-accordion .mat-expansion-panel-header{padding-top:8px;padding-bottom:8px}.target-accordion .mat-expansion-panel-body{padding-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i11$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11257
+ `, isInline: true, styles: [".target-selector-container{--_pvb-target-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-target-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-target-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-target-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-target-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;gap:16px}.section-header{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;padding:12px 0 8px}.hero-icon{width:74px;height:74px;border-radius:20px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--_pvb-target-accent) 24%,transparent);background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--_pvb-target-accent) 22%,transparent) 0%,transparent 55%),color-mix(in srgb,var(--_pvb-target-surface) 98%,black 2%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.hero-icon mat-icon{color:var(--_pvb-target-accent);font-size:30px;width:30px;height:30px}.section-title{font-weight:600;font-size:18px;color:var(--md-sys-color-on-surface)}.section-description{max-width:680px;font-size:14px;color:var(--_pvb-target-text-soft);line-height:1.5}.hero-pill{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 16px;border-radius:999px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-target-surface-strong) 96%,black 4%);font-size:12px;color:var(--_pvb-target-text-soft);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.type-toggle-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(136px,1fr));gap:12px}.type-toggle{min-height:88px;height:100%;text-align:left;display:flex;align-items:center;justify-content:center;gap:10px;padding:14px 16px;line-height:1.3;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 72%,transparent);box-sizing:border-box;border-radius:16px;background:color-mix(in srgb,var(--_pvb-target-surface) 92%,black 8%);transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 12px 26px color-mix(in srgb,black 12%,transparent)}.type-toggle:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-target-accent) 36%,transparent)}.type-toggle.mat-button-toggle-checked{border-color:color-mix(in srgb,var(--_pvb-target-accent) 54%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 7%,transparent),0 18px 34px color-mix(in srgb,var(--_pvb-target-accent) 14%,transparent)}.type-text{display:flex;flex-direction:column;gap:2px;max-width:100%}.type-label{font-weight:600}.type-desc{font-size:12px;color:var(--_pvb-target-text-soft);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.target-list-selector{margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-target-border) 52%,transparent);padding-top:14px}.w-100{width:100%}.list-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;flex-wrap:wrap}.list-title{font-weight:600}.list-stats{font-size:13px;color:var(--_pvb-target-text-soft);white-space:nowrap}.search-input-field{width:260px;align-self:center;display:flex;align-items:center}.search-input-field ::ng-deep .mat-mdc-text-field-wrapper{border-radius:14px;background:color-mix(in srgb,var(--_pvb-target-surface-strong) 94%,black 6%)}.search-input-field ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.target-groups{display:flex;flex-direction:column;gap:12px;max-height:340px;overflow:auto;padding-right:4px}.card-list{display:flex;flex-direction:column;gap:8px}.target-card{display:flex;gap:12px;padding:12px 16px;border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;cursor:pointer;transition:border-color .22s ease,background .22s ease,transform .22s ease,box-shadow .22s ease;align-items:center;background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);min-height:72px;box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent),0 10px 22px color-mix(in srgb,black 10%,transparent)}.target-card:hover{border-color:color-mix(in srgb,var(--_pvb-target-accent) 40%,transparent);transform:translateY(-1px);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 16px 28px color-mix(in srgb,var(--_pvb-target-accent) 10%,transparent)}.target-card.selected{border-color:color-mix(in srgb,var(--_pvb-target-accent) 64%,transparent);background:color-mix(in srgb,var(--_pvb-target-accent) 12%,var(--_pvb-target-surface) 88%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 30px color-mix(in srgb,var(--_pvb-target-accent) 12%,transparent)}.card-icon{color:var(--_pvb-target-accent);filter:drop-shadow(0 0 10px color-mix(in srgb,var(--_pvb-target-accent) 16%,transparent))}.card-content{display:flex;flex-direction:column;gap:4px}.card-title{font-weight:600}.card-subtitle{font-size:13px;color:var(--_pvb-target-text-soft)}.card-meta{font-size:12px;color:var(--_pvb-target-text-soft)}.selected-wrapper{background:color-mix(in srgb,var(--_pvb-target-surface) 96%,black 4%);border:1px solid color-mix(in srgb,var(--_pvb-target-border) 78%,transparent);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;margin-top:12px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.selected-label{font-weight:600;font-size:13px;color:var(--md-sys-color-on-surface)}.selected-targets-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:2px}.chip-icon{margin-right:4px}.selected-summary{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed color-mix(in srgb,var(--_pvb-target-border) 82%,transparent);border-radius:16px;font-size:13px;color:var(--md-sys-color-on-surface)}.no-results{font-style:italic;font-size:13px;text-align:center;padding:12px 0;color:var(--_pvb-target-text-soft)}.target-accordion .mat-expansion-panel-header{padding-top:8px;padding-bottom:8px}.target-accordion .mat-expansion-panel-body{padding-top:4px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i6$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "directive", type: i10$1.MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11278
11258
  }
11279
11259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TargetSelectorComponent, decorators: [{
11280
11260
  type: Component,
@@ -11290,7 +11270,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
11290
11270
  MatButtonToggleModule,
11291
11271
  MatCheckboxModule,
11292
11272
  MatTooltipModule,
11293
- MatExpansionModule
11273
+ MatExpansionModule,
11274
+ PraxisIconButtonComponent
11294
11275
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], template: `
11295
11276
  <div class="target-selector-container">
11296
11277
  <div class="section-header">
@@ -11353,11 +11334,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
11353
11334
  @if (searchControl.value) {
11354
11335
  <button
11355
11336
  matSuffix
11356
- mat-icon-button
11337
+ praxisIconButton="close"
11338
+ size="dense"
11357
11339
  [attr.aria-label]="t('target.searchClear', 'Limpar busca')"
11358
11340
  (click)="clearSearch($event)"
11359
11341
  >
11360
- <mat-icon>close</mat-icon>
11361
11342
  </button>
11362
11343
  }
11363
11344
  </mat-form-field>
@@ -12188,7 +12169,7 @@ class RuleDefinitionComponent {
12188
12169
  </div>
12189
12170
  </div>
12190
12171
  </div>
12191
- `, isInline: true, styles: [".rule-definition-container{--_pvb-definition-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-definition-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-definition-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-definition-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-definition-success: var(--md-sys-color-tertiary, #2dcc8f);--_pvb-definition-shadow: color-mix(in srgb, var(--_pvb-definition-accent) 18%, transparent);display:flex;flex-direction:column;gap:8px;padding:6px 16px 12px;overflow-y:auto;height:100%;min-height:0;flex:1;box-sizing:border-box;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-definition-accent) 8%,transparent) 0%,transparent 34%),var(--_pvb-definition-surface)}.rule-canvas-wrapper{width:100%;min-height:0;margin:0}.rule-stepper{background:transparent;flex:1}.wizard-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:10px;padding:6px 0 14px}.wizard-progress.mobile{grid-template-columns:1fr}.progress-step{display:flex;align-items:center;gap:12px;min-height:62px;padding:10px 12px;border-radius:18px;border:1px solid transparent;background:transparent;color:var(--md-sys-color-on-surface-variant);text-align:left;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,color .22s ease,transform .22s ease}.progress-step:disabled{cursor:default;opacity:1}.progress-step:not(:disabled){cursor:pointer}.progress-step:not(:disabled):hover{transform:translateY(-1px);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 82%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent)}.progress-step.is-current{background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 90%,black 10%);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 34%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 12%,transparent),0 16px 36px color-mix(in srgb,var(--_pvb-definition-shadow) 28%,transparent);color:var(--md-sys-color-on-surface)}.progress-step.is-complete{color:var(--md-sys-color-on-surface)}.progress-step.is-pending{color:var(--md-sys-color-on-surface-variant)}.progress-step-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 94%,black 6%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.progress-step.is-current .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-accent) 14%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 42%,transparent);color:var(--_pvb-definition-accent);box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent),0 0 18px color-mix(in srgb,var(--_pvb-definition-accent) 18%,transparent)}.progress-step.is-complete .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-success) 16%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-success) 46%,transparent);color:var(--_pvb-definition-success);box-shadow:0 0 18px color-mix(in srgb,var(--_pvb-definition-success) 18%,transparent)}.progress-step-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.progress-step-title{font-size:14px;font-weight:600;color:inherit}.progress-step-subtitle{font-size:11px;line-height:1.2;color:var(--md-sys-color-on-surface-variant)}.progress-connector{height:1px;background:color-mix(in srgb,var(--_pvb-definition-border) 44%,transparent);margin:0 -2px;position:relative;overflow:hidden}.progress-connector.active{background:color-mix(in srgb,var(--_pvb-definition-success) 54%,transparent)}.progress-connector.active:after{content:\"\";position:absolute;inset:-1px auto -1px -20%;width:36%;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--_pvb-definition-success) 54%,white 16%) 50%,transparent 100%);animation:pvbProgressPulse 2.6s ease-in-out infinite}.panel-content{display:flex;flex-direction:column;gap:12px;padding:0}.mode-selector{margin-bottom:12px;display:flex;justify-content:flex-start}.small-toggles ::ng-deep .mat-button-toggle-label-content{line-height:32px!important;padding:0 12px!important;font-size:13px}.step-question{font-weight:600;font-size:16px;color:var(--md-sys-color-on-surface);margin-top:8px;margin-bottom:8px}.step-label-stack{display:inline-flex;flex-direction:column;gap:2px;line-height:1.1}.step-label-main{font-size:14px;font-weight:600}.step-label-sub{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.step-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-left:0}.step-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0 0;margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);position:sticky;bottom:0;z-index:2;background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-definition-surface) 2%,transparent),color-mix(in srgb,var(--_pvb-definition-surface) 96%,black 4%) 36%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.footer-actions-left,.footer-actions-right{display:flex;align-items:center;gap:10px}.step-footer button[mat-stroked-button],.step-footer button[mat-button],.step-footer button[mat-flat-button]{min-height:40px;border-radius:12px}.step-footer button[mat-flat-button]{min-width:108px;box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}.step-footer button[mat-flat-button]:not([disabled]){animation:pvbPrimaryGlow 2.8s ease-in-out infinite}.condition-warning{display:flex;align-items:flex-start;gap:8px;padding:12px;margin-bottom:12px;border:1px solid var(--md-sys-color-error);border-radius:10px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);font-size:13px}.visual-editor-box{height:auto;min-height:0;border:1px solid var(--_pvb-definition-border);border-radius:12px;overflow:visible;box-shadow:none}.w-100{width:100%}.always-hint{font-size:13px;color:var(--md-sys-color-on-surface-variant)}.review-block{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent)}.review-title{font-weight:600}.review-hero{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-definition-accent) 12%,var(--_pvb-definition-surface-strong) 88%),color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%));box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 42px color-mix(in srgb,var(--_pvb-definition-shadow) 14%,transparent)}.review-hero-title{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant)}.review-hero-body{font-size:16px;line-height:1.5;font-weight:500}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.review-block.highlight{grid-column:span 3}.review-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--md-sys-color-on-surface-variant)}.review-body{font-size:14px;line-height:1.5}.code-block{font-family:Roboto Mono,monospace;font-size:12px;padding:8px;border-radius:8px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);border:1px solid var(--_pvb-definition-border);white-space:pre-wrap;word-break:break-word}.muted{color:var(--md-sys-color-on-surface-variant);font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-definition-accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 78%,transparent);font-size:13px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.technical-details{border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);border-radius:14px;padding:12px 14px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%)}.technical-details summary{cursor:pointer;font-weight:600}.technical-details[open]{display:flex;flex-direction:column;gap:12px}.review-block.compact{padding:0;border:0;background:transparent}.condition-panel{width:100%;margin-left:0}.condition-editor{border:1px solid var(--_pvb-definition-border);border-radius:12px;padding:10px;box-shadow:none;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);width:100%;min-height:unset;overflow:visible}.manual-editor-box ::ng-deep .mat-mdc-form-field-flex{border-radius:8px}::ng-deep .mat-horizontal-stepper-header-container{display:none}::ng-deep .mat-horizontal-content-container{padding:2px 0 0}@media(max-width:768px){.review-grid{grid-template-columns:1fr}.review-block.highlight{grid-column:span 1}.step-footer{flex-direction:column;align-items:stretch}.footer-actions-left,.footer-actions-right{width:100%;justify-content:space-between}.progress-connector{display:none}}@keyframes pvbPrimaryGlow{0%,to{box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}50%{box-shadow:0 14px 30px color-mix(in srgb,var(--_pvb-definition-accent) 28%,transparent),0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 16%,transparent)}}@keyframes pvbProgressPulse{0%{transform:translate(0);opacity:0}18%{opacity:1}to{transform:translate(340%);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i8$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i8$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i7$3.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: TargetSelectorComponent, selector: "praxis-target-selector", inputs: ["fieldSchemas", "targetSchemas", "initialType", "initialSelection"], outputs: ["selectionChanged"] }, { kind: "component", type: PropertyEffectEditorComponent, selector: "praxis-property-effect-editor", inputs: ["properties", "initialConfig"], outputs: ["configChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12172
+ `, isInline: true, styles: [".rule-definition-container{--_pvb-definition-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-definition-surface: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-definition-surface-strong: var(--md-sys-color-surface-container, var(--md-sys-color-surface));--_pvb-definition-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-definition-success: var(--md-sys-color-tertiary, #2dcc8f);--_pvb-definition-shadow: color-mix(in srgb, var(--_pvb-definition-accent) 18%, transparent);display:flex;flex-direction:column;gap:8px;padding:6px 16px 12px;overflow-y:auto;height:100%;min-height:0;flex:1;box-sizing:border-box;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-definition-accent) 8%,transparent) 0%,transparent 34%),var(--_pvb-definition-surface)}.rule-canvas-wrapper{width:100%;min-height:0;margin:0}.rule-stepper{background:transparent;flex:1}.wizard-progress{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;gap:10px;padding:6px 0 14px}.wizard-progress.mobile{grid-template-columns:1fr}.progress-step{display:flex;align-items:center;gap:12px;min-height:62px;padding:10px 12px;border-radius:18px;border:1px solid transparent;background:transparent;color:var(--md-sys-color-on-surface-variant);text-align:left;transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,color .22s ease,transform .22s ease}.progress-step:disabled{cursor:default;opacity:1}.progress-step:not(:disabled){cursor:pointer}.progress-step:not(:disabled):hover{transform:translateY(-1px);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 82%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent)}.progress-step.is-current{background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 90%,black 10%);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 34%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 12%,transparent),0 16px 36px color-mix(in srgb,var(--_pvb-definition-shadow) 28%,transparent);color:var(--md-sys-color-on-surface)}.progress-step.is-complete{color:var(--md-sys-color-on-surface)}.progress-step.is-pending{color:var(--md-sys-color-on-surface-variant)}.progress-step-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:36px;height:36px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 94%,black 6%);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.progress-step.is-current .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-accent) 14%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-accent) 42%,transparent);color:var(--_pvb-definition-accent);box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent),0 0 18px color-mix(in srgb,var(--_pvb-definition-accent) 18%,transparent)}.progress-step.is-complete .progress-step-icon{background:color-mix(in srgb,var(--_pvb-definition-success) 16%,transparent);border-color:color-mix(in srgb,var(--_pvb-definition-success) 46%,transparent);color:var(--_pvb-definition-success);box-shadow:0 0 18px color-mix(in srgb,var(--_pvb-definition-success) 18%,transparent)}.progress-step-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.progress-step-title{font-size:14px;font-weight:600;color:inherit}.progress-step-subtitle{font-size:11px;line-height:1.2;color:var(--md-sys-color-on-surface-variant)}.progress-connector{height:1px;background:color-mix(in srgb,var(--_pvb-definition-border) 44%,transparent);margin:0 -2px;position:relative;overflow:hidden}.progress-connector.active{background:color-mix(in srgb,var(--_pvb-definition-success) 54%,transparent)}.progress-connector.active:after{content:\"\";position:absolute;inset:-1px auto -1px -20%;width:36%;background:linear-gradient(90deg,transparent 0%,color-mix(in srgb,var(--_pvb-definition-success) 54%,white 16%) 50%,transparent 100%);animation:pvbProgressPulse 2.6s ease-in-out infinite}.panel-content{display:flex;flex-direction:column;gap:12px;padding:0}.mode-selector{margin-bottom:12px;display:flex;justify-content:flex-start}.small-toggles ::ng-deep .mat-button-toggle-label-content{line-height:32px!important;padding:0 12px!important;font-size:13px}.step-question{font-weight:600;font-size:16px;color:var(--md-sys-color-on-surface);margin-top:8px;margin-bottom:8px}.step-label-stack{display:inline-flex;flex-direction:column;gap:2px;line-height:1.1}.step-label-main{font-size:14px;font-weight:600}.step-label-sub{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.step-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;padding-left:0}.step-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0 0;margin-top:8px;border-top:1px solid color-mix(in srgb,var(--_pvb-definition-border) 52%,transparent);position:sticky;bottom:0;z-index:2;background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-definition-surface) 2%,transparent),color-mix(in srgb,var(--_pvb-definition-surface) 96%,black 4%) 36%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.footer-actions-left,.footer-actions-right{display:flex;align-items:center;gap:10px}.step-footer button[mat-stroked-button],.step-footer button[mat-button],.step-footer button[mat-flat-button]{min-height:40px;border-radius:12px}.step-footer button[mat-flat-button]{min-width:108px;box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}.step-footer button[mat-flat-button]:not([disabled]){animation:pvbPrimaryGlow 2.8s ease-in-out infinite}.condition-warning{display:flex;align-items:flex-start;gap:8px;padding:12px;margin-bottom:12px;border:1px solid var(--md-sys-color-error);border-radius:10px;background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container);font-size:13px}.visual-editor-box{height:auto;min-height:0;border:1px solid var(--_pvb-definition-border);border-radius:12px;overflow:visible;box-shadow:none}.w-100{width:100%}.always-hint{font-size:13px;color:var(--md-sys-color-on-surface-variant)}.review-block{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);box-shadow:inset 0 1px color-mix(in srgb,white 4%,transparent)}.review-title{font-weight:600}.review-hero{display:flex;flex-direction:column;gap:8px;padding:16px 18px;border-radius:18px;border:1px solid color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent);background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-definition-accent) 12%,var(--_pvb-definition-surface-strong) 88%),color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%));box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 18px 42px color-mix(in srgb,var(--_pvb-definition-shadow) 14%,transparent)}.review-hero-title{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--md-sys-color-on-surface-variant)}.review-hero-body{font-size:16px;line-height:1.5;font-weight:500}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.review-block.highlight{grid-column:span 3}.review-kicker{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--md-sys-color-on-surface-variant)}.review-body{font-size:14px;line-height:1.5}.code-block{font-family:Roboto Mono,monospace;font-size:12px;padding:8px;border-radius:8px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);border:1px solid var(--_pvb-definition-border);white-space:pre-wrap;word-break:break-word}.muted{color:var(--md-sys-color-on-surface-variant);font-size:13px}.pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-definition-accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 78%,transparent);font-size:13px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.technical-details{border:1px solid color-mix(in srgb,var(--_pvb-definition-border) 72%,transparent);border-radius:14px;padding:12px 14px;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%)}.technical-details summary{cursor:pointer;font-weight:600}.technical-details[open]{display:flex;flex-direction:column;gap:12px}.review-block.compact{padding:0;border:0;background:transparent}.condition-panel{width:100%;margin-left:0}.condition-editor{border:1px solid var(--_pvb-definition-border);border-radius:12px;padding:10px;box-shadow:none;background:color-mix(in srgb,var(--_pvb-definition-surface-strong) 96%,black 4%);width:100%;min-height:unset;overflow:visible}.manual-editor-box ::ng-deep .mat-mdc-form-field-flex{border-radius:8px}::ng-deep .mat-horizontal-stepper-header-container{display:none}::ng-deep .mat-horizontal-content-container{padding:2px 0 0}@media(max-width:768px){.review-grid{grid-template-columns:1fr}.review-block.highlight{grid-column:span 1}.step-footer{flex-direction:column;align-items:stretch}.footer-actions-left,.footer-actions-right{width:100%;justify-content:space-between}.progress-connector{display:none}}@keyframes pvbPrimaryGlow{0%,to{box-shadow:0 10px 24px color-mix(in srgb,var(--_pvb-definition-accent) 22%,transparent)}50%{box-shadow:0 14px 30px color-mix(in srgb,var(--_pvb-definition-accent) 28%,transparent),0 0 0 1px color-mix(in srgb,var(--_pvb-definition-accent) 16%,transparent)}}@keyframes pvbProgressPulse{0%{transform:translate(0);opacity:0}18%{opacity:1}to{transform:translate(340%);opacity:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i7$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i7$3.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperIcon, selector: "ng-template[matStepperIcon]", inputs: ["matStepperIcon"] }, { kind: "component", type: TargetSelectorComponent, selector: "praxis-target-selector", inputs: ["fieldSchemas", "targetSchemas", "initialType", "initialSelection"], outputs: ["selectionChanged"] }, { kind: "component", type: PropertyEffectEditorComponent, selector: "praxis-property-effect-editor", inputs: ["properties", "initialConfig"], outputs: ["configChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12192
12173
  }
12193
12174
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleDefinitionComponent, decorators: [{
12194
12175
  type: Component,
@@ -12826,11 +12807,11 @@ class RuleListComponent {
12826
12807
  @if (searchTerm) {
12827
12808
  <button
12828
12809
  matSuffix
12829
- mat-icon-button
12810
+ praxisIconButton="close"
12811
+ size="dense"
12830
12812
  [attr.aria-label]="t('ruleList.clearSearch', 'Limpar busca')"
12831
12813
  (click)="searchTerm = ''"
12832
12814
  >
12833
- <mat-icon>close</mat-icon>
12834
12815
  </button>
12835
12816
  }
12836
12817
  </mat-form-field>
@@ -12933,23 +12914,22 @@ class RuleListComponent {
12933
12914
  </div>
12934
12915
  <div class="card-actions">
12935
12916
  <button
12936
- mat-icon-button
12917
+ praxisIconButton="content_copy"
12918
+ size="dense"
12937
12919
  class="card-action"
12938
12920
  (click)="onDuplicate(item, $event)"
12939
12921
  [matTooltip]="t('ruleList.duplicate', 'Duplicar regra')"
12940
12922
  [attr.aria-label]="t('ruleList.duplicate', 'Duplicar regra')"
12941
12923
  >
12942
- <mat-icon>content_copy</mat-icon>
12943
12924
  </button>
12944
12925
  <button
12945
- mat-icon-button
12946
- color="warn"
12947
- class="card-action"
12926
+ praxisIconButton="delete"
12927
+ size="dense"
12928
+ class="card-action danger-action"
12948
12929
  (click)="onDelete(item, $event)"
12949
12930
  [matTooltip]="t('ruleList.remove', 'Remover regra')"
12950
12931
  [attr.aria-label]="t('ruleList.remove', 'Remover regra')"
12951
12932
  >
12952
- <mat-icon>delete</mat-icon>
12953
12933
  </button>
12954
12934
  </div>
12955
12935
  </div>
@@ -12984,7 +12964,7 @@ class RuleListComponent {
12984
12964
  </div>
12985
12965
  }
12986
12966
  </div>
12987
- `, isInline: true, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;width:30px;height:30px;transition:transform .18s ease,opacity .18s ease,color .18s ease}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12967
+ `, isInline: true, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;transition:transform .18s ease,opacity .18s ease,color .18s ease}.danger-action{color:var(--md-sys-color-error)}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i12$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatListModule }, { kind: "component", type: i8.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i8.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12988
12968
  }
12989
12969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleListComponent, decorators: [{
12990
12970
  type: Component,
@@ -12998,6 +12978,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
12998
12978
  MatInputModule,
12999
12979
  MatListModule,
13000
12980
  MatTooltipModule,
12981
+ PraxisIconButtonComponent,
13001
12982
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [providePraxisVisualBuilderI18n()], host: { class: 'rule-list-panel' }, template: `
13002
12983
  <div class="panel-header">
13003
12984
  <div class="panel-heading">
@@ -13021,11 +13002,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13021
13002
  @if (searchTerm) {
13022
13003
  <button
13023
13004
  matSuffix
13024
- mat-icon-button
13005
+ praxisIconButton="close"
13006
+ size="dense"
13025
13007
  [attr.aria-label]="t('ruleList.clearSearch', 'Limpar busca')"
13026
13008
  (click)="searchTerm = ''"
13027
13009
  >
13028
- <mat-icon>close</mat-icon>
13029
13010
  </button>
13030
13011
  }
13031
13012
  </mat-form-field>
@@ -13128,23 +13109,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13128
13109
  </div>
13129
13110
  <div class="card-actions">
13130
13111
  <button
13131
- mat-icon-button
13112
+ praxisIconButton="content_copy"
13113
+ size="dense"
13132
13114
  class="card-action"
13133
13115
  (click)="onDuplicate(item, $event)"
13134
13116
  [matTooltip]="t('ruleList.duplicate', 'Duplicar regra')"
13135
13117
  [attr.aria-label]="t('ruleList.duplicate', 'Duplicar regra')"
13136
13118
  >
13137
- <mat-icon>content_copy</mat-icon>
13138
13119
  </button>
13139
13120
  <button
13140
- mat-icon-button
13141
- color="warn"
13142
- class="card-action"
13121
+ praxisIconButton="delete"
13122
+ size="dense"
13123
+ class="card-action danger-action"
13143
13124
  (click)="onDelete(item, $event)"
13144
13125
  [matTooltip]="t('ruleList.remove', 'Remover regra')"
13145
13126
  [attr.aria-label]="t('ruleList.remove', 'Remover regra')"
13146
13127
  >
13147
- <mat-icon>delete</mat-icon>
13148
13128
  </button>
13149
13129
  </div>
13150
13130
  </div>
@@ -13179,7 +13159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13179
13159
  </div>
13180
13160
  }
13181
13161
  </div>
13182
- `, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;width:30px;height:30px;transition:transform .18s ease,opacity .18s ease,color .18s ease}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"] }]
13162
+ `, styles: [":host{--_pvb-list-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-list-surface: var(--md-sys-color-surface-container-lowest, var(--md-sys-color-surface));--_pvb-list-surface-strong: var(--md-sys-color-surface-container-low, var(--md-sys-color-surface));--_pvb-list-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-list-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));--_pvb-list-success: var(--md-sys-color-primary, var(--_pvb-list-accent));--_pvb-list-warning: var(--md-sys-color-tertiary, #ffb347);--_pvb-list-error: var(--md-sys-color-error, #ff5f5f);display:flex;flex-direction:column;border-right:1px solid var(--md-sys-color-outline-variant);background:radial-gradient(circle at top left,color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent) 0%,transparent 34%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-surface-strong) 94%,black 6%),color-mix(in srgb,var(--_pvb-list-surface) 96%,black 4%));overflow:hidden;min-width:0;color:var(--md-sys-color-on-surface)}.panel-header{padding:18px 18px 12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 84%,transparent)}.panel-heading{display:flex;flex-direction:column;gap:4px}.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--_pvb-list-accent)}.panel-header h3{margin:0;font-size:18px;font-weight:600}.header-badge-stack{display:flex;flex-direction:column;align-items:center}.header-badge{min-width:34px;height:34px;padding:0 10px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-list-surface-strong) 92%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 22%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 72%,var(--md-sys-color-on-surface) 28%);font-size:13px;font-weight:700}.search-box{padding:0 18px}.w-100,.search-box mat-form-field{width:100%}.search-box ::ng-deep .mat-mdc-text-field-wrapper{background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);border-radius:14px}.search-box ::ng-deep .mat-mdc-form-field-subscript-wrapper{display:none}.filter-row{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px 0}.filter-chip{min-height:30px;border-radius:999px!important;font-size:12px;color:var(--_pvb-list-text-soft);border-color:color-mix(in srgb,var(--_pvb-list-border) 74%,transparent)!important}.filter-chip.active{color:var(--_pvb-list-accent);background:color-mix(in srgb,var(--_pvb-list-accent) 10%,transparent);border-color:color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent)!important}.panel-actions{padding:12px 18px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.new-rule-button{min-height:42px;border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--_pvb-list-accent) 30%,transparent),color-mix(in srgb,var(--_pvb-list-accent) 16%,transparent))!important;border:1px solid color-mix(in srgb,var(--_pvb-list-accent) 44%,transparent);color:var(--_pvb-list-accent)!important;font-weight:700}.ai-rule-button{min-width:52px;min-height:42px;border-radius:12px!important;border-color:color-mix(in srgb,var(--_pvb-list-accent) 28%,transparent)!important;color:var(--_pvb-list-accent)!important;padding:0 12px!important}.list-content{flex:1;overflow-y:auto;padding:0 10px 14px}mat-list{padding:0}.rule-list-item{padding:0;margin-bottom:10px;cursor:pointer;height:auto!important;min-height:0}::ng-deep .rule-list-item .mdc-list-item__content{width:100%;padding:0!important}.rule-card{width:100%;display:flex;flex-direction:column;gap:10px;padding:14px;border-radius:14px;border:1px solid color-mix(in srgb,var(--_pvb-list-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%);transition:border-color .22s ease,transform .22s ease,box-shadow .22s ease,background .22s ease;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 10px 24px color-mix(in srgb,black 18%,transparent)}.rule-card.has-error{border-color:color-mix(in srgb,var(--_pvb-list-error) 30%,transparent)}.rule-list-item:hover .rule-card{transform:translateY(-1px);border-color:color-mix(in srgb,var(--_pvb-list-accent) 34%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent),0 16px 30px color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent)}.rule-list-item.selected .rule-card{border-color:color-mix(in srgb,var(--_pvb-list-accent) 68%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent),0 16px 34px color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--_pvb-list-accent) 10%,var(--_pvb-list-surface-strong) 90%),color-mix(in srgb,var(--_pvb-list-surface-strong) 96%,black 4%))}.rule-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rule-card-title-group{display:flex;flex-direction:column;gap:10px;min-width:0;flex:1}.rule-title-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.rule-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;width:fit-content}.rule-status.valid{color:var(--_pvb-list-success)}.rule-status.incomplete{color:var(--_pvb-list-warning)}.rule-status.draft{color:var(--_pvb-list-text-soft)}.rule-status.error{color:var(--_pvb-list-error)}.status-dot{width:8px;height:8px;border-radius:999px;background:currentColor}.card-actions{display:flex;align-items:center;gap:2px}.card-action{opacity:.72;transition:transform .18s ease,opacity .18s ease,color .18s ease}.danger-action{color:var(--md-sys-color-error)}.card-action:hover{transform:translateY(-1px) scale(1.02);opacity:1}.rule-card-meta{display:flex;flex-wrap:wrap;gap:8px}.meta-pill{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 14%,transparent);color:color-mix(in srgb,var(--_pvb-list-accent) 82%,var(--md-sys-color-on-surface) 18%);font-size:12px;box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.meta-pill.subtle{background:color-mix(in srgb,var(--_pvb-list-border) 16%,transparent);color:var(--_pvb-list-text-soft)}.rule-summary{font-size:12px;line-height:1.45;color:var(--_pvb-list-text-soft)}.rule-tags{display:flex;flex-wrap:wrap;gap:6px}.rule-card-footer{display:flex;justify-content:flex-end;align-items:center;min-height:18px}.rule-time{font-size:12px;color:var(--_pvb-list-text-soft);letter-spacing:.01em}.tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border-radius:999px;background:color-mix(in srgb,var(--_pvb-list-accent) 12%,transparent);color:var(--_pvb-list-accent);font-size:11px;box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.rule-name{font-weight:600;font-size:15px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.empty-list{padding:28px 18px;text-align:center;color:var(--_pvb-list-text-soft);font-size:13px;line-height:1.5}\n"] }]
13183
13163
  }], ctorParameters: () => [{ type: i1$2.PraxisI18nService, decorators: [{
13184
13164
  type: Optional
13185
13165
  }] }], propDecorators: { rules: [{
@@ -13595,12 +13575,12 @@ class RuleEditorComponent {
13595
13575
  <div class="builder-shell-header">
13596
13576
  <div class="shell-brand">
13597
13577
  <button
13598
- mat-icon-button
13578
+ [praxisIconButton]="isListPanelOpen ? 'menu_open' : 'menu'"
13579
+ size="dense"
13599
13580
  class="shell-menu"
13600
13581
  (click)="toggleListPanel()"
13601
13582
  [matTooltip]="isListPanelOpen ? t('ruleEditor.toolbar.collapseList', 'Collapse side panel') : t('ruleEditor.toolbar.expandList', 'Expand side panel')"
13602
13583
  >
13603
- <mat-icon>{{ isListPanelOpen ? 'menu_open' : 'menu' }}</mat-icon>
13604
13584
  </button>
13605
13585
  <div class="brand-mark">
13606
13586
  <mat-icon>rule</mat-icon>
@@ -13624,18 +13604,16 @@ class RuleEditorComponent {
13624
13604
  <span>{{ t('ruleEditor.shell.unsaved', 'Unsaved changes') }}</span>
13625
13605
  </div>
13626
13606
  }
13627
- <button mat-icon-button [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
13628
- <mat-icon>undo</mat-icon>
13607
+ <button praxisIconButton="undo" size="dense" [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
13629
13608
  </button>
13630
- <button mat-icon-button [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
13631
- <mat-icon>redo</mat-icon>
13609
+ <button praxisIconButton="redo" size="dense" [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
13632
13610
  </button>
13633
13611
  <button
13634
- mat-icon-button
13612
+ praxisIconButton="more_horiz"
13613
+ size="dense"
13635
13614
  [matMenuTriggerFor]="devMenu"
13636
13615
  [matTooltip]="t('ruleEditor.toolbar.advanced', 'More options')"
13637
13616
  >
13638
- <mat-icon>more_horiz</mat-icon>
13639
13617
  </button>
13640
13618
  </div>
13641
13619
  </div>
@@ -13674,8 +13652,7 @@ class RuleEditorComponent {
13674
13652
  <h3>{{ t('ruleEditor.conditionOnly.title', 'Condicao') }}</h3>
13675
13653
  <p>{{ t('ruleEditor.conditionOnly.subtitle', 'Monte apenas a expressao JSON Logic da condicao.') }}</p>
13676
13654
  </div>
13677
- <button mat-icon-button (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
13678
- <mat-icon>delete_forever</mat-icon>
13655
+ <button praxisIconButton="delete_forever" size="compact" class="danger-action" (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
13679
13656
  </button>
13680
13657
  </div>
13681
13658
  }
@@ -13773,8 +13750,7 @@ class RuleEditorComponent {
13773
13750
  <div class="debug-panel">
13774
13751
  <div class="debug-header">
13775
13752
  <h3>{{ t('ruleEditor.debug.title', 'Debug state') }}</h3>
13776
- <button mat-icon-button (click)="showDebugPanel = false">
13777
- <mat-icon>close</mat-icon>
13753
+ <button praxisIconButton="close" size="compact" (click)="showDebugPanel = false">
13778
13754
  </button>
13779
13755
  </div>
13780
13756
  <div class="debug-content">
@@ -13791,7 +13767,7 @@ class RuleEditorComponent {
13791
13767
  (change)="onFileSelected($event)"
13792
13768
  />
13793
13769
  </div>
13794
- `, isInline: true, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.builder-shell-header button[mat-icon-button]{width:36px;height:36px;line-height:36px;padding:8px}.builder-shell-header button[mat-icon-button] mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i10$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: RuleListComponent, selector: "praxis-rule-list", inputs: ["rules", "selectedRuleId", "nodeMap", "validationErrors"], outputs: ["ruleSelected", "ruleDeleted", "ruleDuplicated", "ruleAdded", "aiRequested"] }, { kind: "component", type: RuleDefinitionComponent, selector: "praxis-rule-definition", inputs: ["ruleNode", "fieldSchemas", "targetSchemas", "propertySchema"], outputs: ["ruleChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13770
+ `, isInline: true, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.danger-action{color:var(--md-sys-color-error)}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "ngmodule", type: MatListModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "component", type: RuleListComponent, selector: "praxis-rule-list", inputs: ["rules", "selectedRuleId", "nodeMap", "validationErrors"], outputs: ["ruleSelected", "ruleDeleted", "ruleDuplicated", "ruleAdded", "aiRequested"] }, { kind: "component", type: RuleDefinitionComponent, selector: "praxis-rule-definition", inputs: ["ruleNode", "fieldSchemas", "targetSchemas", "propertySchema"], outputs: ["ruleChanged"] }, { kind: "component", type: RuleCanvasComponent, selector: "praxis-rule-canvas", inputs: ["conditionOnly", "state", "fieldSchemas", "validationErrors"], outputs: ["nodeSelected", "nodeAdded", "nodeUpdated", "nodeRemoved"] }, { kind: "pipe", type: i12$1.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13795
13771
  }
13796
13772
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: RuleEditorComponent, decorators: [{
13797
13773
  type: Component,
@@ -13810,6 +13786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13810
13786
  MatDialogModule,
13811
13787
  MatBadgeModule,
13812
13788
  MatMenuModule,
13789
+ PraxisIconButtonComponent,
13813
13790
  RuleListComponent,
13814
13791
  RuleDefinitionComponent,
13815
13792
  RuleCanvasComponent,
@@ -13823,12 +13800,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13823
13800
  <div class="builder-shell-header">
13824
13801
  <div class="shell-brand">
13825
13802
  <button
13826
- mat-icon-button
13803
+ [praxisIconButton]="isListPanelOpen ? 'menu_open' : 'menu'"
13804
+ size="dense"
13827
13805
  class="shell-menu"
13828
13806
  (click)="toggleListPanel()"
13829
13807
  [matTooltip]="isListPanelOpen ? t('ruleEditor.toolbar.collapseList', 'Collapse side panel') : t('ruleEditor.toolbar.expandList', 'Expand side panel')"
13830
13808
  >
13831
- <mat-icon>{{ isListPanelOpen ? 'menu_open' : 'menu' }}</mat-icon>
13832
13809
  </button>
13833
13810
  <div class="brand-mark">
13834
13811
  <mat-icon>rule</mat-icon>
@@ -13852,18 +13829,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13852
13829
  <span>{{ t('ruleEditor.shell.unsaved', 'Unsaved changes') }}</span>
13853
13830
  </div>
13854
13831
  }
13855
- <button mat-icon-button [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
13856
- <mat-icon>undo</mat-icon>
13832
+ <button praxisIconButton="undo" size="dense" [disabled]="!canUndo" (click)="undo()" [matTooltip]="t('ruleEditor.toolbar.undo', 'Undo')">
13857
13833
  </button>
13858
- <button mat-icon-button [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
13859
- <mat-icon>redo</mat-icon>
13834
+ <button praxisIconButton="redo" size="dense" [disabled]="!canRedo" (click)="redo()" [matTooltip]="t('ruleEditor.toolbar.redo', 'Redo')">
13860
13835
  </button>
13861
13836
  <button
13862
- mat-icon-button
13837
+ praxisIconButton="more_horiz"
13838
+ size="dense"
13863
13839
  [matMenuTriggerFor]="devMenu"
13864
13840
  [matTooltip]="t('ruleEditor.toolbar.advanced', 'More options')"
13865
13841
  >
13866
- <mat-icon>more_horiz</mat-icon>
13867
13842
  </button>
13868
13843
  </div>
13869
13844
  </div>
@@ -13902,8 +13877,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
13902
13877
  <h3>{{ t('ruleEditor.conditionOnly.title', 'Condicao') }}</h3>
13903
13878
  <p>{{ t('ruleEditor.conditionOnly.subtitle', 'Monte apenas a expressao JSON Logic da condicao.') }}</p>
13904
13879
  </div>
13905
- <button mat-icon-button (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
13906
- <mat-icon>delete_forever</mat-icon>
13880
+ <button praxisIconButton="delete_forever" size="compact" class="danger-action" (click)="clearRules()" [matTooltip]="t('ruleEditor.debug.clearAll', 'Clear all')">
13907
13881
  </button>
13908
13882
  </div>
13909
13883
  }
@@ -14001,8 +13975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
14001
13975
  <div class="debug-panel">
14002
13976
  <div class="debug-header">
14003
13977
  <h3>{{ t('ruleEditor.debug.title', 'Debug state') }}</h3>
14004
- <button mat-icon-button (click)="showDebugPanel = false">
14005
- <mat-icon>close</mat-icon>
13978
+ <button praxisIconButton="close" size="compact" (click)="showDebugPanel = false">
14006
13979
  </button>
14007
13980
  </div>
14008
13981
  <div class="debug-content">
@@ -14019,7 +13992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
14019
13992
  (change)="onFileSelected($event)"
14020
13993
  />
14021
13994
  </div>
14022
- `, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.builder-shell-header button[mat-icon-button]{width:36px;height:36px;line-height:36px;padding:8px}.builder-shell-header button[mat-icon-button] mat-icon{font-size:20px;width:20px;height:20px;line-height:20px}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"] }]
13995
+ `, styles: [".rule-editor-container{--_pvb-editor-accent: var(--md-sys-color-primary, var(--sicoob-primary-default));--_pvb-editor-accent-soft: color-mix(in srgb, var(--_pvb-editor-accent) 16%, transparent);--_pvb-editor-surface: var(--md-sys-color-surface, var(--sicoob-background-primary));--_pvb-editor-surface-low: var(--md-sys-color-surface-container-low, var(--sicoob-background-secondary));--_pvb-editor-surface-strong: var(--md-sys-color-surface-container, var(--sicoob-background-tertiary));--_pvb-editor-border: var(--md-sys-color-outline-variant, var(--sicoob-stroke-medium));--_pvb-editor-text: var(--md-sys-color-on-surface, var(--sicoob-text-default));--_pvb-editor-text-soft: var(--md-sys-color-on-surface-variant, var(--sicoob-text-subtle));display:flex;flex-direction:column;height:100%;background:radial-gradient(circle at top center,color-mix(in srgb,var(--_pvb-editor-accent) 12%,transparent) 0%,transparent 32%),linear-gradient(180deg,color-mix(in srgb,var(--_pvb-editor-surface-low) 96%,black 4%),color-mix(in srgb,var(--_pvb-editor-surface) 98%,black 2%));overflow:hidden;position:relative;color:var(--_pvb-editor-text)}.rule-editor-container.embedded{height:100%}.condition-only-editor{display:flex;flex-direction:column;height:100%;min-height:360px;overflow:hidden}.condition-only-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%)}.condition-only-header h3{margin:0;font-size:16px;font-weight:600}.condition-only-header p{margin:4px 0 0;font-size:12px;color:var(--_pvb-editor-text-soft)}.condition-only-canvas{flex:1;min-height:0}.builder-shell-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:54px;padding:0 18px;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 68%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 94%,black 6%);flex-shrink:0}.shell-brand{display:flex;align-items:center;gap:10px;min-width:0}.shell-menu{margin-right:2px}.brand-mark{width:32px;height:32px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);border:1px solid color-mix(in srgb,var(--_pvb-editor-accent) 24%,transparent)}.brand-mark mat-icon{display:flex;align-items:center;justify-content:center;font-size:18px;width:18px;height:18px;color:var(--_pvb-editor-accent)}.brand-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.brand-title{font-size:14px;font-weight:700}.brand-breadcrumb{font-size:12px;color:var(--_pvb-editor-text-soft)}.shell-nav{display:inline-flex;align-items:center;gap:10px;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);border:1px solid color-mix(in srgb,var(--_pvb-editor-border) 56%,transparent)}.nav-pill{min-width:96px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--_pvb-editor-text-soft);font:inherit;font-size:13px;cursor:default}.nav-pill.active{color:var(--_pvb-editor-text);background:color-mix(in srgb,var(--_pvb-editor-accent) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--_pvb-editor-accent) 34%,transparent)}.shell-status{display:flex;align-items:center;gap:6px}.unsaved-indicator{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--_pvb-editor-text);margin-right:6px}.unsaved-dot{width:8px;height:8px;border-radius:999px;background:#f0b429;box-shadow:0 0 12px #f0b42973}.danger-action{color:var(--md-sys-color-error)}.editor-content-grid{display:grid;grid-template-columns:360px 1fr;flex:1;overflow:hidden;min-height:0;min-width:0;transition:grid-template-columns .2s ease}.editor-content-grid.list-closed{grid-template-columns:0 1fr}.rule-list-panel{border-right:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);background:color-mix(in srgb,var(--_pvb-editor-surface-low) 94%,black 6%);display:flex;flex-direction:column;overflow:hidden;min-width:0}.rule-definition-panel{background:radial-gradient(circle at 50% 0%,color-mix(in srgb,var(--_pvb-editor-accent) 8%,transparent) 0%,transparent 26%),transparent;overflow:hidden;display:flex;flex-direction:column;position:relative;min-height:0;min-width:0;flex:1}.empty-state,.unsupported-node{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--_pvb-editor-text-soft);gap:16px;text-align:center;padding:32px}.empty-state mat-icon,.unsupported-node mat-icon{font-size:64px;width:64px;height:64px;opacity:.9;color:var(--_pvb-editor-accent)}.status-bar{height:32px;background:color-mix(in srgb,var(--_pvb-editor-surface-strong) 92%,black 8%);border-top:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent);display:flex;align-items:center;justify-content:space-between;padding:0 16px;font-size:12px;color:var(--_pvb-editor-text-soft);flex-shrink:0}.status-left,.status-center{display:flex;align-items:center;gap:8px}.validation-status{display:flex;align-items:center;gap:4px}.validation-status.error{color:var(--md-sys-color-error)}.validation-status.success{color:var(--md-sys-color-tertiary)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.debug-panel{position:absolute;top:0;right:0;bottom:0;width:400px;background:var(--_pvb-editor-surface);border-left:1px solid var(--_pvb-editor-border);box-shadow:-2px 0 8px #0000001a;z-index:var(--praxis-layer-authoring-toolbar, 340);display:flex;flex-direction:column}.debug-header{padding:8px 16px;border-bottom:1px solid var(--_pvb-editor-border);display:flex;align-items:center;justify-content:space-between;background:var(--_pvb-editor-surface-strong)}.debug-content{flex:1;overflow:auto;padding:16px;font-family:monospace;font-size:12px}@media(max-width:1180px){.builder-shell-header{flex-wrap:wrap;justify-content:flex-start;padding:10px 14px}.shell-nav{order:3;width:100%;justify-content:center}.shell-status{margin-left:auto}}@media(max-width:720px){.editor-content-grid,.editor-content-grid.list-closed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(360px,1fr);overflow-y:auto}.rule-list-panel{max-height:min(360px,48vh);border-right:0;border-bottom:1px solid color-mix(in srgb,var(--_pvb-editor-border) 74%,transparent)}.rule-definition-panel{min-height:360px}}\n"] }]
14023
13996
  }], ctorParameters: () => [{ type: RuleBuilderService }, { type: FieldSchemaService }, { type: i3$1.AiResponseValidatorService }, { type: i4.MatSnackBar }, { type: i1.MatDialog }, { type: i0.ChangeDetectorRef }, { type: i1$2.PraxisI18nService, decorators: [{
14024
13997
  type: Optional
14025
13998
  }] }], propDecorators: { embedded: [{
@@ -17119,11 +17092,13 @@ class MetadataEditorComponent {
17119
17092
  </div>
17120
17093
  </div>
17121
17094
  <div class="header-actions">
17122
- <button mat-icon-button
17123
- [color]="hasUnsavedChanges ? 'warn' : 'primary'"
17095
+ <button
17096
+ [praxisIconButton]="hasUnsavedChanges ? 'edit' : 'check_circle'"
17097
+ size="compact"
17098
+ [class.danger-action]="hasUnsavedChanges"
17099
+ [attr.aria-label]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
17124
17100
  [matTooltip]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
17125
17101
  [disabled]="!hasUnsavedChanges">
17126
- <mat-icon [praxisIcon]="hasUnsavedChanges ? 'edit' : 'check_circle'"></mat-icon>
17127
17102
  </button>
17128
17103
  </div>
17129
17104
  </div>
@@ -17139,14 +17114,13 @@ class MetadataEditorComponent {
17139
17114
  formControlName="code"
17140
17115
  placeholder="REGRA_001">
17141
17116
  <button
17142
- mat-icon-button
17117
+ praxisIconButton="help_outline"
17118
+ size="dense"
17143
17119
  matSuffix
17144
- class="help-icon-button"
17145
17120
  type="button"
17146
17121
  [matTooltip]="'Identificador único desta regra'"
17147
17122
  matTooltipPosition="above"
17148
17123
  >
17149
- <mat-icon>help_outline</mat-icon>
17150
17124
  </button>
17151
17125
  </mat-form-field>
17152
17126
  <!-- Message -->
@@ -17158,14 +17132,13 @@ class MetadataEditorComponent {
17158
17132
  placeholder="Texto que será mostrado ao usuário">
17159
17133
  </textarea>
17160
17134
  <button
17161
- mat-icon-button
17135
+ praxisIconButton="help_outline"
17136
+ size="dense"
17162
17137
  matSuffix
17163
- class="help-icon-button"
17164
17138
  type="button"
17165
17139
  [matTooltip]="'Mensagem exibida quando a regra for acionada'"
17166
17140
  matTooltipPosition="above"
17167
17141
  >
17168
- <mat-icon>help_outline</mat-icon>
17169
17142
  </button>
17170
17143
  </mat-form-field>
17171
17144
  <!-- Tag -->
@@ -17183,14 +17156,13 @@ class MetadataEditorComponent {
17183
17156
  }
17184
17157
  </mat-autocomplete>
17185
17158
  <button
17186
- mat-icon-button
17159
+ praxisIconButton="help_outline"
17160
+ size="dense"
17187
17161
  matSuffix
17188
- class="help-icon-button"
17189
17162
  type="button"
17190
17163
  [matTooltip]="'Categoria para organizar regras semelhantes'"
17191
17164
  matTooltipPosition="above"
17192
17165
  >
17193
- <mat-icon>help_outline</mat-icon>
17194
17166
  </button>
17195
17167
  </mat-form-field>
17196
17168
  <!-- Description -->
@@ -17202,14 +17174,13 @@ class MetadataEditorComponent {
17202
17174
  placeholder="Explique o objetivo e quando aplicar esta regra">
17203
17175
  </textarea>
17204
17176
  <button
17205
- mat-icon-button
17177
+ praxisIconButton="help_outline"
17178
+ size="dense"
17206
17179
  matSuffix
17207
- class="help-icon-button"
17208
17180
  type="button"
17209
17181
  [matTooltip]="'Texto interno para documentação'"
17210
17182
  matTooltipPosition="above"
17211
17183
  >
17212
- <mat-icon>help_outline</mat-icon>
17213
17184
  </button>
17214
17185
  </mat-form-field>
17215
17186
  <!-- Priority -->
@@ -17249,14 +17220,13 @@ class MetadataEditorComponent {
17249
17220
  </mat-option>
17250
17221
  </mat-select>
17251
17222
  <button
17252
- mat-icon-button
17223
+ praxisIconButton="help_outline"
17224
+ size="dense"
17253
17225
  matSuffix
17254
- class="help-icon-button"
17255
17226
  type="button"
17256
17227
  [matTooltip]="'Define a prioridade e a experiência para o usuário'"
17257
17228
  matTooltipPosition="above"
17258
17229
  >
17259
- <mat-icon>help_outline</mat-icon>
17260
17230
  </button>
17261
17231
  </mat-form-field>
17262
17232
  </div>
@@ -17439,11 +17409,11 @@ class MetadataEditorComponent {
17439
17409
  [formGroupName]="i">
17440
17410
  <div class="property-header">
17441
17411
  <span class="property-number">{{ i + 1 }}</span>
17442
- <button mat-icon-button
17443
- color="warn"
17412
+ <button praxisIconButton="delete"
17413
+ size="dense"
17414
+ class="danger-action"
17444
17415
  (click)="removeCustomProperty(i)"
17445
17416
  [disabled]="customProperties.length <= 0">
17446
- <mat-icon>delete</mat-icon>
17447
17417
  </button>
17448
17418
  </div>
17449
17419
  <div class="property-form">
@@ -17509,14 +17479,13 @@ class MetadataEditorComponent {
17509
17479
  placeholder='{"===": [{"var": "form.status"}, "premium"]}'>
17510
17480
  </textarea>
17511
17481
  <button
17512
- mat-icon-button
17482
+ praxisIconButton="help_outline"
17483
+ size="dense"
17513
17484
  matSuffix
17514
- class="help-icon-button"
17515
17485
  type="button"
17516
17486
  [matTooltip]="'Expressão que define quando aplicar estes metadados'"
17517
17487
  matTooltipPosition="above"
17518
17488
  >
17519
- <mat-icon>help_outline</mat-icon>
17520
17489
  </button>
17521
17490
  </mat-form-field>
17522
17491
  <mat-form-field appearance="outline" class="fallback-input">
@@ -17570,10 +17539,10 @@ class MetadataEditorComponent {
17570
17539
  [formControlName]="i"
17571
17540
  placeholder="https://docs.example.com">
17572
17541
  </mat-form-field>
17573
- <button mat-icon-button
17574
- color="warn"
17542
+ <button praxisIconButton="delete"
17543
+ size="dense"
17544
+ class="danger-action"
17575
17545
  (click)="removeDocumentationLink(i)">
17576
- <mat-icon>delete</mat-icon>
17577
17546
  </button>
17578
17547
  </div>
17579
17548
  }
@@ -17615,7 +17584,7 @@ class MetadataEditorComponent {
17615
17584
  </div>
17616
17585
  </div>
17617
17586
  }
17618
- `, isInline: true, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.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: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: MatAutocompleteModule }, { kind: "component", type: i11$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17587
+ `, isInline: true, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: "directive", type: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatChipsModule }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "component", type: i7.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass", "id"], exportAs: ["matTab"] }, { kind: "component", type: i7.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: MatDividerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: MatAutocompleteModule }, { kind: "component", type: i11$2.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i11$2.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
17619
17588
  }
17620
17589
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: MetadataEditorComponent, decorators: [{
17621
17590
  type: Component,
@@ -17627,6 +17596,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17627
17596
  MatInputModule,
17628
17597
  MatButtonModule,
17629
17598
  MatIconModule,
17599
+ PraxisIconButtonComponent,
17630
17600
  PraxisIconDirective,
17631
17601
  MatCheckboxModule,
17632
17602
  MatChipsModule,
@@ -17649,11 +17619,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17649
17619
  </div>
17650
17620
  </div>
17651
17621
  <div class="header-actions">
17652
- <button mat-icon-button
17653
- [color]="hasUnsavedChanges ? 'warn' : 'primary'"
17622
+ <button
17623
+ [praxisIconButton]="hasUnsavedChanges ? 'edit' : 'check_circle'"
17624
+ size="compact"
17625
+ [class.danger-action]="hasUnsavedChanges"
17626
+ [attr.aria-label]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
17654
17627
  [matTooltip]="hasUnsavedChanges ? 'Há alterações não salvas' : 'Tudo salvo'"
17655
17628
  [disabled]="!hasUnsavedChanges">
17656
- <mat-icon [praxisIcon]="hasUnsavedChanges ? 'edit' : 'check_circle'"></mat-icon>
17657
17629
  </button>
17658
17630
  </div>
17659
17631
  </div>
@@ -17669,14 +17641,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17669
17641
  formControlName="code"
17670
17642
  placeholder="REGRA_001">
17671
17643
  <button
17672
- mat-icon-button
17644
+ praxisIconButton="help_outline"
17645
+ size="dense"
17673
17646
  matSuffix
17674
- class="help-icon-button"
17675
17647
  type="button"
17676
17648
  [matTooltip]="'Identificador único desta regra'"
17677
17649
  matTooltipPosition="above"
17678
17650
  >
17679
- <mat-icon>help_outline</mat-icon>
17680
17651
  </button>
17681
17652
  </mat-form-field>
17682
17653
  <!-- Message -->
@@ -17688,14 +17659,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17688
17659
  placeholder="Texto que será mostrado ao usuário">
17689
17660
  </textarea>
17690
17661
  <button
17691
- mat-icon-button
17662
+ praxisIconButton="help_outline"
17663
+ size="dense"
17692
17664
  matSuffix
17693
- class="help-icon-button"
17694
17665
  type="button"
17695
17666
  [matTooltip]="'Mensagem exibida quando a regra for acionada'"
17696
17667
  matTooltipPosition="above"
17697
17668
  >
17698
- <mat-icon>help_outline</mat-icon>
17699
17669
  </button>
17700
17670
  </mat-form-field>
17701
17671
  <!-- Tag -->
@@ -17713,14 +17683,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17713
17683
  }
17714
17684
  </mat-autocomplete>
17715
17685
  <button
17716
- mat-icon-button
17686
+ praxisIconButton="help_outline"
17687
+ size="dense"
17717
17688
  matSuffix
17718
- class="help-icon-button"
17719
17689
  type="button"
17720
17690
  [matTooltip]="'Categoria para organizar regras semelhantes'"
17721
17691
  matTooltipPosition="above"
17722
17692
  >
17723
- <mat-icon>help_outline</mat-icon>
17724
17693
  </button>
17725
17694
  </mat-form-field>
17726
17695
  <!-- Description -->
@@ -17732,14 +17701,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17732
17701
  placeholder="Explique o objetivo e quando aplicar esta regra">
17733
17702
  </textarea>
17734
17703
  <button
17735
- mat-icon-button
17704
+ praxisIconButton="help_outline"
17705
+ size="dense"
17736
17706
  matSuffix
17737
- class="help-icon-button"
17738
17707
  type="button"
17739
17708
  [matTooltip]="'Texto interno para documentação'"
17740
17709
  matTooltipPosition="above"
17741
17710
  >
17742
- <mat-icon>help_outline</mat-icon>
17743
17711
  </button>
17744
17712
  </mat-form-field>
17745
17713
  <!-- Priority -->
@@ -17779,14 +17747,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17779
17747
  </mat-option>
17780
17748
  </mat-select>
17781
17749
  <button
17782
- mat-icon-button
17750
+ praxisIconButton="help_outline"
17751
+ size="dense"
17783
17752
  matSuffix
17784
- class="help-icon-button"
17785
17753
  type="button"
17786
17754
  [matTooltip]="'Define a prioridade e a experiência para o usuário'"
17787
17755
  matTooltipPosition="above"
17788
17756
  >
17789
- <mat-icon>help_outline</mat-icon>
17790
17757
  </button>
17791
17758
  </mat-form-field>
17792
17759
  </div>
@@ -17969,11 +17936,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
17969
17936
  [formGroupName]="i">
17970
17937
  <div class="property-header">
17971
17938
  <span class="property-number">{{ i + 1 }}</span>
17972
- <button mat-icon-button
17973
- color="warn"
17939
+ <button praxisIconButton="delete"
17940
+ size="dense"
17941
+ class="danger-action"
17974
17942
  (click)="removeCustomProperty(i)"
17975
17943
  [disabled]="customProperties.length <= 0">
17976
- <mat-icon>delete</mat-icon>
17977
17944
  </button>
17978
17945
  </div>
17979
17946
  <div class="property-form">
@@ -18039,14 +18006,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
18039
18006
  placeholder='{"===": [{"var": "form.status"}, "premium"]}'>
18040
18007
  </textarea>
18041
18008
  <button
18042
- mat-icon-button
18009
+ praxisIconButton="help_outline"
18010
+ size="dense"
18043
18011
  matSuffix
18044
- class="help-icon-button"
18045
18012
  type="button"
18046
18013
  [matTooltip]="'Expressão que define quando aplicar estes metadados'"
18047
18014
  matTooltipPosition="above"
18048
18015
  >
18049
- <mat-icon>help_outline</mat-icon>
18050
18016
  </button>
18051
18017
  </mat-form-field>
18052
18018
  <mat-form-field appearance="outline" class="fallback-input">
@@ -18100,10 +18066,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
18100
18066
  [formControlName]="i"
18101
18067
  placeholder="https://docs.example.com">
18102
18068
  </mat-form-field>
18103
- <button mat-icon-button
18104
- color="warn"
18069
+ <button praxisIconButton="delete"
18070
+ size="dense"
18071
+ class="danger-action"
18105
18072
  (click)="removeDocumentationLink(i)">
18106
- <mat-icon>delete</mat-icon>
18107
18073
  </button>
18108
18074
  </div>
18109
18075
  }
@@ -18145,7 +18111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
18145
18111
  </div>
18146
18112
  </div>
18147
18113
  }
18148
- `, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
18114
+ `, styles: [".metadata-editor-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:16px;background:var(--md-sys-color-surface-container);border-bottom:1px solid var(--md-sys-color-outline-variant)}.node-info{display:flex;align-items:center;gap:12px}.node-icon{font-size:24px;width:24px;height:24px;color:var(--md-sys-color-primary)}.node-details{display:flex;flex-direction:column}.node-title{margin:0;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-subtitle{margin:0;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.header-actions{display:flex;gap:8px}.metadata-form{flex:1;overflow:auto;padding:16px}.tab-content{padding:16px 0;display:flex;flex-direction:column;gap:16px}.full-width{width:100%}.form-row{display:flex;gap:12px;align-items:flex-start}.form-row>*{flex:1}.config-panel{margin-bottom:16px}.panel-content{padding:16px;display:flex;flex-direction:column;gap:16px}.priority-option,.icon-option{display:flex;align-items:center;gap:8px}.priority-option small,.icon-option small{color:var(--md-sys-color-on-surface-variant);font-size:11px}.toggle-options,.display-options,.animation-options{display:flex;flex-direction:column;gap:8px}.custom-properties{display:flex;flex-direction:column;gap:12px}.custom-property-item{border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;padding:12px;background:var(--md-sys-color-surface)}.property-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.property-number{background:var(--md-sys-color-primary);color:var(--md-sys-color-on-primary);border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600}.property-form{display:flex;gap:8px}.property-key,.property-value{flex:2}.property-type{flex:1}.conditional-config{display:flex;flex-direction:column;gap:12px}.conditional-rules{display:flex;flex-direction:column;gap:12px;padding:12px;background:var(--md-sys-color-surface);border-radius:8px;border:1px solid var(--md-sys-color-outline-variant)}.documentation-links{display:flex;flex-direction:column;gap:8px}.documentation-links h5{margin:0;font-size:13px;font-weight:500;color:var(--md-sys-color-primary)}.doc-link-item{display:flex;gap:8px;align-items:center}.link-title,.link-url{flex:1}.add-property-button,.add-link-button{align-self:flex-start}.preview-section{margin-top:24px;border:1px solid var(--md-sys-color-outline-variant);border-radius:8px;overflow:hidden}.preview-title{display:flex;align-items:center;gap:8px;margin:0;padding:12px 16px;background:var(--md-sys-color-primary-container);border-bottom:1px solid var(--md-sys-color-outline-variant);font-size:14px;font-weight:500}.preview-content{padding:16px;background:var(--md-sys-color-surface)}.preview-json{font-family:Courier New,monospace;font-size:12px;color:var(--md-sys-color-on-surface);margin:0;white-space:pre-wrap;background:var(--md-sys-color-surface-container);padding:12px;border-radius:4px;border:1px solid var(--md-sys-color-outline-variant);max-height:200px;overflow-y:auto}.empty-state{display:flex;align-items:center;justify-content:center;height:100%;text-align:center}.empty-state-content{max-width:300px}.empty-icon{font-size:64px;width:64px;height:64px;color:var(--md-sys-color-on-surface-variant);margin-bottom:16px}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface);font-weight:500}.empty-state p{margin:0;color:var(--md-sys-color-on-surface-variant);line-height:1.4}@media(max-width:768px){.form-row,.property-form{flex-direction:column}.doc-link-item{flex-direction:column;align-items:stretch}}.danger-action{color:var(--md-sys-color-error)}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
18149
18115
  }], ctorParameters: () => [{ type: i1$1.FormBuilder }], propDecorators: { selectedNode: [{
18150
18116
  type: Input
18151
18117
  }], metadataUpdated: [{
@@ -18322,37 +18288,40 @@ class JsonViewerComponent {
18322
18288
  <mat-divider vertical></mat-divider>
18323
18289
 
18324
18290
  <!-- Actions -->
18325
- <button mat-icon-button
18291
+ <button praxisIconButton="auto_fix_high"
18292
+ size="dense"
18293
+ aria-label="Format JSON"
18326
18294
  [disabled]="!editable"
18327
18295
  (click)="formatJson()"
18328
18296
  matTooltip="Format JSON">
18329
- <mat-icon [praxisIcon]="'auto_fix_high'"></mat-icon>
18330
18297
  </button>
18331
18298
 
18332
- <button mat-icon-button
18299
+ <button praxisIconButton="check_circle"
18300
+ size="dense"
18301
+ aria-label="Validate JSON"
18333
18302
  [disabled]="!editable"
18334
18303
  (click)="validateJson()"
18335
18304
  matTooltip="Validate JSON">
18336
- <mat-icon [praxisIcon]="'check_circle'"></mat-icon>
18337
18305
  </button>
18338
18306
 
18339
- <button mat-icon-button
18307
+ <button praxisIconButton="save"
18308
+ size="dense"
18309
+ aria-label="Apply Changes"
18340
18310
  [disabled]="!editable || !hasChanges"
18341
18311
  (click)="applyChanges()"
18342
18312
  matTooltip="Apply Changes">
18343
- <mat-icon [praxisIcon]="'save'"></mat-icon>
18344
18313
  </button>
18345
18314
 
18346
- <button mat-icon-button
18315
+ <button praxisIconButton="undo"
18316
+ size="dense"
18317
+ aria-label="Discard Changes"
18347
18318
  [disabled]="!editable || !hasChanges"
18348
18319
  (click)="discardChanges()"
18349
18320
  matTooltip="Discard Changes">
18350
- <mat-icon [praxisIcon]="'undo'"></mat-icon>
18351
18321
  </button>
18352
18322
 
18353
18323
  <!-- More Actions Menu -->
18354
- <button mat-icon-button [matMenuTriggerFor]="moreMenu">
18355
- <mat-icon [praxisIcon]="'more_vert'"></mat-icon>
18324
+ <button praxisIconButton="more_vert" size="dense" aria-label="More actions" [matMenuTriggerFor]="moreMenu">
18356
18325
  </button>
18357
18326
 
18358
18327
  <mat-menu #moreMenu="matMenu">
@@ -18442,13 +18411,14 @@ class JsonViewerComponent {
18442
18411
  </div>
18443
18412
  </div>
18444
18413
  </div>
18445
- `, isInline: true, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .mat-mdc-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .mat-mdc-icon-button:hover{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.toolbar-actions .mat-mdc-icon-button:disabled{color:var(--md-sys-color-on-surface);opacity:.38}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i5$2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18414
+ `, isInline: true, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .praxis-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .praxis-icon-button:hover{color:var(--md-sys-color-on-primary-container)}.toolbar-actions .praxis-icon-button:disabled{color:var(--md-sys-color-on-surface)}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i4$2.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18446
18415
  }
18447
18416
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: JsonViewerComponent, decorators: [{
18448
18417
  type: Component,
18449
18418
  args: [{ selector: 'praxis-json-viewer', standalone: true, imports: [
18450
18419
  MatButtonModule,
18451
18420
  MatIconModule,
18421
+ PraxisIconButtonComponent,
18452
18422
  PraxisIconDirective,
18453
18423
  MatTooltipModule,
18454
18424
  MatToolbarModule,
@@ -18476,37 +18446,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
18476
18446
  <mat-divider vertical></mat-divider>
18477
18447
 
18478
18448
  <!-- Actions -->
18479
- <button mat-icon-button
18449
+ <button praxisIconButton="auto_fix_high"
18450
+ size="dense"
18451
+ aria-label="Format JSON"
18480
18452
  [disabled]="!editable"
18481
18453
  (click)="formatJson()"
18482
18454
  matTooltip="Format JSON">
18483
- <mat-icon [praxisIcon]="'auto_fix_high'"></mat-icon>
18484
18455
  </button>
18485
18456
 
18486
- <button mat-icon-button
18457
+ <button praxisIconButton="check_circle"
18458
+ size="dense"
18459
+ aria-label="Validate JSON"
18487
18460
  [disabled]="!editable"
18488
18461
  (click)="validateJson()"
18489
18462
  matTooltip="Validate JSON">
18490
- <mat-icon [praxisIcon]="'check_circle'"></mat-icon>
18491
18463
  </button>
18492
18464
 
18493
- <button mat-icon-button
18465
+ <button praxisIconButton="save"
18466
+ size="dense"
18467
+ aria-label="Apply Changes"
18494
18468
  [disabled]="!editable || !hasChanges"
18495
18469
  (click)="applyChanges()"
18496
18470
  matTooltip="Apply Changes">
18497
- <mat-icon [praxisIcon]="'save'"></mat-icon>
18498
18471
  </button>
18499
18472
 
18500
- <button mat-icon-button
18473
+ <button praxisIconButton="undo"
18474
+ size="dense"
18475
+ aria-label="Discard Changes"
18501
18476
  [disabled]="!editable || !hasChanges"
18502
18477
  (click)="discardChanges()"
18503
18478
  matTooltip="Discard Changes">
18504
- <mat-icon [praxisIcon]="'undo'"></mat-icon>
18505
18479
  </button>
18506
18480
 
18507
18481
  <!-- More Actions Menu -->
18508
- <button mat-icon-button [matMenuTriggerFor]="moreMenu">
18509
- <mat-icon [praxisIcon]="'more_vert'"></mat-icon>
18482
+ <button praxisIconButton="more_vert" size="dense" aria-label="More actions" [matMenuTriggerFor]="moreMenu">
18510
18483
  </button>
18511
18484
 
18512
18485
  <mat-menu #moreMenu="matMenu">
@@ -18596,7 +18569,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
18596
18569
  </div>
18597
18570
  </div>
18598
18571
  </div>
18599
- `, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .mat-mdc-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .mat-mdc-icon-button:hover{background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.toolbar-actions .mat-mdc-icon-button:disabled{color:var(--md-sys-color-on-surface);opacity:.38}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"] }]
18572
+ `, styles: [".json-viewer-container{display:flex;flex-direction:column;height:100%;overflow:hidden;min-width:0}.json-toolbar{flex-shrink:0;padding:0 16px}.toolbar-title{display:flex;align-items:center;gap:8px;font-weight:500}.toolbar-spacer{flex:1}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions .praxis-icon-button{color:var(--md-sys-color-on-primary)}.toolbar-actions .praxis-icon-button:hover{color:var(--md-sys-color-on-primary-container)}.toolbar-actions .praxis-icon-button:disabled{color:var(--md-sys-color-on-surface)}.validation-status{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.validation-status.valid{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.validation-status.invalid{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.validation-status mat-icon{font-size:16px;width:16px;height:16px}.editor-container{flex:1;position:relative;overflow:hidden;min-width:0}.json-editor{position:relative;height:100%;display:flex;min-width:0;width:100%}.json-textarea{flex:1;width:100%;border:none;outline:none;resize:none;font-family:Courier New,monospace;font-size:14px;line-height:1.5;padding:16px;background:var(--md-sys-color-surface, #f5f7fb);color:var(--md-sys-color-on-surface, #0f172a);caret-color:var(--md-sys-color-on-surface, #0f172a);white-space:pre;overflow-wrap:normal;overflow:auto;box-sizing:border-box}.json-textarea.has-line-numbers{padding-left:60px}.json-textarea.word-wrap{white-space:pre-wrap;overflow-wrap:break-word}.json-textarea:read-only{background:var(--md-sys-color-surface-container, #e7edf7);color:var(--md-sys-color-on-surface, #0f172a)}.line-numbers-panel{position:absolute;left:0;top:0;width:50px;height:100%;background:var(--md-sys-color-surface-container);border-right:1px solid var(--md-sys-color-outline-variant);padding:16px 8px;font-family:Courier New,monospace;font-size:14px;line-height:1.5;color:var(--md-sys-color-on-surface-variant);text-align:right;overflow:hidden;-webkit-user-select:none;user-select:none}.line-numbers-panel .line-number{height:21px}.readonly-overlay{position:absolute;top:8px;right:8px;z-index:100}.readonly-message{display:flex;align-items:center;gap:4px;background:var(--md-sys-color-surface-container);padding:4px 8px;border-radius:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant);box-shadow:0 2px 4px var(--vb-shadow-low-color, rgba(0,0,0,.1))}.readonly-message mat-icon{font-size:14px;width:14px;height:14px}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;background:var(--md-sys-color-surface-container);border-top:1px solid var(--md-sys-color-outline-variant);font-size:12px;color:var(--md-sys-color-on-surface-variant);flex-shrink:0}.status-left,.status-center,.status-right{display:flex;align-items:center;gap:12px}.validation-error{display:flex;align-items:center;gap:4px;color:var(--md-sys-color-error)}.validation-error mat-icon{font-size:14px;width:14px;height:14px}.language-mode{font-family:monospace;font-weight:600}.unsaved-indicator{color:var(--md-sys-color-primary);font-weight:700;font-size:16px}\n"] }]
18600
18573
  }], ctorParameters: () => [{ type: i4.MatSnackBar }], propDecorators: { json: [{
18601
18574
  type: Input
18602
18575
  }], editable: [{
@@ -19107,14 +19080,13 @@ class TemplateEditorDialogComponent {
19107
19080
  (matChipInputTokenEnd)="addTag($event)">
19108
19081
  </mat-chip-grid>
19109
19082
  <button
19110
- mat-icon-button
19083
+ praxisIconButton="help_outline"
19084
+ size="dense"
19111
19085
  matSuffix
19112
- class="help-icon-button"
19113
19086
  type="button"
19114
19087
  [matTooltip]="'Tags help organize and find templates. Press Enter to add.'"
19115
19088
  matTooltipPosition="above"
19116
19089
  >
19117
- <mat-icon>help_outline</mat-icon>
19118
19090
  </button>
19119
19091
  </mat-form-field>
19120
19092
  </div>
@@ -19187,14 +19159,13 @@ class TemplateEditorDialogComponent {
19187
19159
  (matChipInputTokenEnd)="addRequiredField($event)">
19188
19160
  </mat-chip-grid>
19189
19161
  <button
19190
- mat-icon-button
19162
+ praxisIconButton="help_outline"
19163
+ size="dense"
19191
19164
  matSuffix
19192
- class="help-icon-button"
19193
19165
  type="button"
19194
19166
  [matTooltip]="'Field names that must exist for the template to work correctly'"
19195
19167
  matTooltipPosition="above"
19196
19168
  >
19197
- <mat-icon>help_outline</mat-icon>
19198
19169
  </button>
19199
19170
  </mat-form-field>
19200
19171
  </div>
@@ -19265,14 +19236,13 @@ class TemplateEditorDialogComponent {
19265
19236
  formControlName="version"
19266
19237
  placeholder="1.0.0">
19267
19238
  <button
19268
- mat-icon-button
19239
+ praxisIconButton="help_outline"
19240
+ size="dense"
19269
19241
  matSuffix
19270
- class="help-icon-button"
19271
19242
  type="button"
19272
19243
  [matTooltip]="'Semantic version (major.minor.patch)'"
19273
19244
  matTooltipPosition="above"
19274
19245
  >
19275
- <mat-icon>help_outline</mat-icon>
19276
19246
  </button>
19277
19247
  </mat-form-field>
19278
19248
  </div>
@@ -19351,7 +19321,7 @@ class TemplateEditorDialogComponent {
19351
19321
  </button>
19352
19322
  </div>
19353
19323
  </div>
19354
- `, isInline: true, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i10.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperNext, selector: "button[matStepperNext]" }, { kind: "directive", type: i7$3.MatStepperPrevious, selector: "button[matStepperPrevious]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19324
+ `, isInline: true, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i10.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatStepperModule }, { kind: "component", type: i7$3.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "component", type: i7$3.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["disableRipple", "color", "labelPosition", "headerPosition", "aria-label", "headerPrefix", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i7$3.MatStepperNext, selector: "button[matStepperNext]" }, { kind: "directive", type: i7$3.MatStepperPrevious, selector: "button[matStepperPrevious]" }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "ngmodule", type: MatSnackBarModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
19355
19325
  }
19356
19326
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplateEditorDialogComponent, decorators: [{
19357
19327
  type: Component,
@@ -19363,6 +19333,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
19363
19333
  MatSelectModule,
19364
19334
  MatButtonModule,
19365
19335
  MatIconModule,
19336
+ PraxisIconButtonComponent,
19366
19337
  MatChipsModule,
19367
19338
  MatTooltipModule,
19368
19339
  MatStepperModule,
@@ -19458,14 +19429,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
19458
19429
  (matChipInputTokenEnd)="addTag($event)">
19459
19430
  </mat-chip-grid>
19460
19431
  <button
19461
- mat-icon-button
19432
+ praxisIconButton="help_outline"
19433
+ size="dense"
19462
19434
  matSuffix
19463
- class="help-icon-button"
19464
19435
  type="button"
19465
19436
  [matTooltip]="'Tags help organize and find templates. Press Enter to add.'"
19466
19437
  matTooltipPosition="above"
19467
19438
  >
19468
- <mat-icon>help_outline</mat-icon>
19469
19439
  </button>
19470
19440
  </mat-form-field>
19471
19441
  </div>
@@ -19538,14 +19508,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
19538
19508
  (matChipInputTokenEnd)="addRequiredField($event)">
19539
19509
  </mat-chip-grid>
19540
19510
  <button
19541
- mat-icon-button
19511
+ praxisIconButton="help_outline"
19512
+ size="dense"
19542
19513
  matSuffix
19543
- class="help-icon-button"
19544
19514
  type="button"
19545
19515
  [matTooltip]="'Field names that must exist for the template to work correctly'"
19546
19516
  matTooltipPosition="above"
19547
19517
  >
19548
- <mat-icon>help_outline</mat-icon>
19549
19518
  </button>
19550
19519
  </mat-form-field>
19551
19520
  </div>
@@ -19616,14 +19585,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
19616
19585
  formControlName="version"
19617
19586
  placeholder="1.0.0">
19618
19587
  <button
19619
- mat-icon-button
19588
+ praxisIconButton="help_outline"
19589
+ size="dense"
19620
19590
  matSuffix
19621
- class="help-icon-button"
19622
19591
  type="button"
19623
19592
  [matTooltip]="'Semantic version (major.minor.patch)'"
19624
19593
  matTooltipPosition="above"
19625
19594
  >
19626
- <mat-icon>help_outline</mat-icon>
19627
19595
  </button>
19628
19596
  </mat-form-field>
19629
19597
  </div>
@@ -19702,7 +19670,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
19702
19670
  </button>
19703
19671
  </div>
19704
19672
  </div>
19705
- `, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.help-icon-button{--mdc-icon-button-state-layer-size: 28px;--mdc-icon-button-icon-size: 18px;width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;margin-right:-4px}.help-icon-button mat-icon{font-size:18px;width:18px;height:18px}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
19673
+ `, styles: [".template-editor-dialog{min-width:600px;max-width:800px;max-height:90vh}.dialog-title{display:flex;align-items:center;gap:8px;margin:0;padding:24px 24px 0;font-size:20px;font-weight:500}.dialog-content{padding:16px 24px;max-height:calc(90vh - 120px);overflow-y:auto}.step-form{padding:16px 0;min-height:400px}.form-row{display:flex;gap:16px;margin-bottom:16px}.name-field,.category-field{flex:1}.description-field,.tags-input,.required-fields-input,.example-field,.organization-field{width:100%}.icon-field,.version-field,.author-name,.author-email{flex:1}.category-option,.icon-option{display:flex;align-items:center;gap:8px}.tags-section,.required-fields-section,.template-variables-section,.author-section,.example-section{margin-bottom:24px}.tags-section h4,.author-section h5,.example-section h5,.required-fields-section h5,.template-variables-section h5{margin:0 0 8px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.section-header{margin-bottom:16px}.section-header h4{margin:0 0 4px;font-size:16px;font-weight:500}.section-description,.field-description{margin:0;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.rules-preview{background:var(--md-sys-color-surface-container);border-radius:8px;padding:16px;margin-bottom:24px}.preview-header{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;font-weight:500;color:var(--md-sys-color-on-surface)}.node-count{font-weight:400;color:var(--md-sys-color-on-surface-variant)}.nodes-tree{max-height:200px;overflow-y:auto}.tree-node{border-left:2px solid transparent;padding:8px 0 8px 16px}.tree-node.root-node{border-left-color:var(--md-sys-color-primary);background:var(--md-sys-color-primary-container)}.node-content{display:flex;align-items:center;gap:8px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-size:13px}.node-type-chip{font-size:10px;height:18px;line-height:18px}.detected-variables{margin-top:8px}.no-variables{font-size:12px;color:var(--md-sys-color-on-surface-variant);font-style:italic;margin:8px 0}.step-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:24px;padding-top:16px;border-top:1px solid var(--md-sys-color-outline-variant)}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}::ng-deep .mat-stepper-horizontal{margin-top:8px}::ng-deep .mat-step-header{pointer-events:none}::ng-deep .mat-step-header.cdk-keyboard-focused,::ng-deep .mat-step-header.cdk-program-focused,::ng-deep .mat-step-header:hover{background-color:transparent}@media(max-width:768px){.template-editor-dialog{min-width:320px;max-width:95vw}.form-row{flex-direction:column}.name-field,.category-field,.icon-field,.version-field,.author-name,.author-email{flex:none;width:100%}}.mat-mdc-form-field-icon-suffix{align-self:center}\n"] }]
19706
19674
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
19707
19675
  type: Inject,
19708
19676
  args: [MAT_DIALOG_DATA]
@@ -20059,7 +20027,7 @@ class TemplatePreviewDialogComponent {
20059
20027
  </button>
20060
20028
  </div>
20061
20029
  </div>
20062
- `, isInline: true, styles: [".template-preview-dialog{min-width:500px;max-width:700px}.dialog-title{padding:24px 24px 0;margin:0}.title-content{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title-content mat-icon{font-size:32px;width:32px;height:32px;color:var(--md-sys-color-primary)}.title-text h2{margin:0;font-size:24px;font-weight:500}.template-category{margin:4px 0 0;font-size:14px;color:var(--md-sys-color-on-surface-variant);text-transform:capitalize}.title-actions{display:flex;justify-content:flex-end;margin-bottom:16px}.complexity-chip{font-size:11px}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.dialog-content{padding:16px 24px;max-height:70vh;overflow-y:auto}.template-info h3,.template-metadata h3,.rule-structure h3,.required-fields h3,.example-usage h3{margin:0 0 12px;font-size:16px;font-weight:500;color:var(--md-sys-color-primary)}.template-description{margin:0 0 16px;line-height:1.5}.template-tags h4{margin:0 0 8px;font-size:14px;font-weight:500}.tag-chip{margin-right:4px;margin-bottom:4px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:16px}.metadata-item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:8px}.metadata-item mat-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.metadata-item .label{font-weight:500;color:var(--md-sys-color-on-surface)}.metadata-item .value{color:var(--md-sys-color-on-surface-variant)}.structure-container{margin-top:8px}.root-node-panel{margin-bottom:8px}.node-details{padding:0 16px 16px}.tree-node{margin-bottom:8px;padding:8px;border-left:2px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant);border-radius:4px}.node-content{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-weight:500}.node-type-chip{font-size:10px;height:20px;line-height:20px}.node-config{margin-top:4px}.config-preview{font-size:11px;margin:0;padding:4px 8px;background:var(--md-sys-color-surface);border-radius:4px;border:1px solid var(--md-sys-color-outline);overflow-x:auto}.required-field-chip{margin-right:4px;margin-bottom:4px}.fields-note{margin:12px 0 0;font-size:13px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.example-content{background:var(--md-sys-color-surface-variant);border-radius:8px;padding:16px}.example-code{margin:0;font-family:Courier New,monospace;font-size:12px;line-height:1.4;overflow-x:auto}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}mat-divider{margin:16px 0}@media(max-width:768px){.template-preview-dialog{min-width:320px;max-width:95vw}.metadata-grid{grid-template-columns:1fr}.title-content{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i11$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i11$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11$1.MatExpansionPanelDescription, selector: "mat-panel-description" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20030
+ `, isInline: true, styles: [".template-preview-dialog{min-width:500px;max-width:700px}.dialog-title{padding:24px 24px 0;margin:0}.title-content{display:flex;align-items:center;gap:12px;margin-bottom:8px}.title-content mat-icon{font-size:32px;width:32px;height:32px;color:var(--md-sys-color-primary)}.title-text h2{margin:0;font-size:24px;font-weight:500}.template-category{margin:4px 0 0;font-size:14px;color:var(--md-sys-color-on-surface-variant);text-transform:capitalize}.title-actions{display:flex;justify-content:flex-end;margin-bottom:16px}.complexity-chip{font-size:11px}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.dialog-content{padding:16px 24px;max-height:70vh;overflow-y:auto}.template-info h3,.template-metadata h3,.rule-structure h3,.required-fields h3,.example-usage h3{margin:0 0 12px;font-size:16px;font-weight:500;color:var(--md-sys-color-primary)}.template-description{margin:0 0 16px;line-height:1.5}.template-tags h4{margin:0 0 8px;font-size:14px;font-weight:500}.tag-chip{margin-right:4px;margin-bottom:4px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:16px}.metadata-item{display:flex;align-items:center;gap:8px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:8px}.metadata-item mat-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.metadata-item .label{font-weight:500;color:var(--md-sys-color-on-surface)}.metadata-item .value{color:var(--md-sys-color-on-surface-variant)}.structure-container{margin-top:8px}.root-node-panel{margin-bottom:8px}.node-details{padding:0 16px 16px}.tree-node{margin-bottom:8px;padding:8px;border-left:2px solid var(--md-sys-color-outline);background:var(--md-sys-color-surface-variant);border-radius:4px}.node-content{display:flex;align-items:center;gap:8px;margin-bottom:4px}.node-icon{font-size:16px;width:16px;height:16px;color:var(--md-sys-color-primary)}.node-label{flex:1;font-weight:500}.node-type-chip{font-size:10px;height:20px;line-height:20px}.node-config{margin-top:4px}.config-preview{font-size:11px;margin:0;padding:4px 8px;background:var(--md-sys-color-surface);border-radius:4px;border:1px solid var(--md-sys-color-outline);overflow-x:auto}.required-field-chip{margin-right:4px;margin-bottom:4px}.fields-note{margin:12px 0 0;font-size:13px;color:var(--md-sys-color-on-surface-variant);font-style:italic}.example-content{background:var(--md-sys-color-surface-variant);border-radius:8px;padding:16px}.example-code{margin:0;font-family:Courier New,monospace;font-size:12px;line-height:1.4;overflow-x:auto}.dialog-actions{padding:var(--pdx-dialog-actions-padding, 12px 24px 16px);display:flex;align-items:center;gap:8px}.actions-spacer{flex:1}mat-divider{margin:16px 0}@media(max-width:768px){.template-preview-dialog{min-width:320px;max-width:95vw}.metadata-grid{grid-template-columns:1fr}.title-content{flex-direction:column;align-items:flex-start}}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i10$1.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10$1.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "directive", type: i10$1.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10$1.MatExpansionPanelDescription, selector: "mat-panel-description" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20063
20031
  }
20064
20032
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplatePreviewDialogComponent, decorators: [{
20065
20033
  type: Component,
@@ -20725,11 +20693,12 @@ class TemplateGalleryComponent {
20725
20693
  </button>
20726
20694
 
20727
20695
  <button
20728
- mat-icon-button
20696
+ praxisIconButton="view_module"
20697
+ size="dense"
20698
+ aria-label="View options"
20729
20699
  [matMenuTriggerFor]="viewMenu"
20730
20700
  matTooltip="View options"
20731
20701
  >
20732
- <mat-icon [praxisIcon]="'view_module'"></mat-icon>
20733
20702
  </button>
20734
20703
 
20735
20704
  <mat-menu #viewMenu="matMenu">
@@ -20963,11 +20932,12 @@ class TemplateGalleryComponent {
20963
20932
  <mat-card-subtitle>{{ template.category }}</mat-card-subtitle>
20964
20933
  <div class="card-actions">
20965
20934
  <button
20966
- mat-icon-button
20935
+ praxisIconButton="more_vert"
20936
+ size="dense"
20937
+ aria-label="Template actions"
20967
20938
  [matMenuTriggerFor]="templateMenu"
20968
20939
  (click)="$event.stopPropagation()"
20969
20940
  >
20970
- <mat-icon>more_vert</mat-icon>
20971
20941
  </button>
20972
20942
  <mat-menu #templateMenu="matMenu">
20973
20943
  <button mat-menu-item (click)="applyTemplate(template)">
@@ -21132,10 +21102,11 @@ class TemplateGalleryComponent {
21132
21102
  Preview
21133
21103
  </button>
21134
21104
  <button
21135
- mat-icon-button
21105
+ praxisIconButton="more_vert"
21106
+ size="dense"
21107
+ aria-label="Template actions"
21136
21108
  [matMenuTriggerFor]="listTemplateMenu"
21137
21109
  >
21138
- <mat-icon>more_vert</mat-icon>
21139
21110
  </button>
21140
21111
  <mat-menu #listTemplateMenu="matMenu">
21141
21112
  <button mat-menu-item (click)="editTemplate(template)">
@@ -21174,18 +21145,20 @@ class TemplateGalleryComponent {
21174
21145
  </div>
21175
21146
  <div class="compact-actions">
21176
21147
  <button
21177
- mat-icon-button
21148
+ praxisIconButton="play_arrow"
21149
+ size="dense"
21150
+ aria-label="Apply template"
21178
21151
  (click)="applyTemplate(template)"
21179
21152
  matTooltip="Apply template"
21180
21153
  >
21181
- <mat-icon>play_arrow</mat-icon>
21182
21154
  </button>
21183
21155
  <button
21184
- mat-icon-button
21156
+ praxisIconButton="preview"
21157
+ size="dense"
21158
+ aria-label="Preview template"
21185
21159
  (click)="previewTemplate(template)"
21186
21160
  matTooltip="Preview template"
21187
21161
  >
21188
- <mat-icon>preview</mat-icon>
21189
21162
  </button>
21190
21163
  </div>
21191
21164
  </div>
@@ -21210,7 +21183,7 @@ class TemplateGalleryComponent {
21210
21183
  </div>
21211
21184
  </div>
21212
21185
  </div>
21213
- `, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.template-gallery{display:flex;flex-direction:column;height:100%;background:var(--md-sys-color-background)}.gallery-header{background:var(--md-sys-color-surface);border-bottom:1px solid var(--md-sys-color-outline);padding:16px 24px}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title-section{flex:1}.gallery-title{display:flex;align-items:center;gap:8px;margin:0;font-size:24px;font-weight:500;color:var(--md-sys-color-on-surface)}.gallery-subtitle{margin:4px 0 0 32px;color:var(--md-sys-color-on-surface-variant);font-size:14px}.header-actions{display:flex;gap:8px;align-items:center}.stats-bar{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--md-sys-color-outline)}.stat-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.stat-item mat-icon{font-size:16px;width:16px;height:16px}.search-section{padding:16px 24px;background:var(--md-sys-color-surface-variant);border-bottom:1px solid var(--md-sys-color-outline)}.search-form{display:flex;flex-direction:column;gap:16px}.search-row{display:flex;gap:16px;align-items:flex-start}.search-input{flex:2;min-width:300px}.category-select,.complexity-select,.sort-select{flex:1;min-width:150px}.category-option{display:flex;align-items:center;gap:8px;width:100%}.tags-section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tags-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.tags-list{flex:1}.active-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--md-sys-color-outline)}.filters-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.filter-chips{flex:1}.clear-all-button{font-size:12px}.recently-used-section{padding:16px 24px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.template-count{font-size:14px;font-weight:400;color:var(--md-sys-color-on-surface-variant)}.recent-templates{display:flex;gap:12px;flex-wrap:wrap}.recent-template-button{display:flex;align-items:center;gap:8px;padding:8px 16px}.templates-section{flex:1;padding:0 24px 24px;overflow:auto}.templates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.view-toggle{display:flex;align-items:center;gap:8px}.templates-container{min-height:200px}.templates-container.grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:16px}.template-grid-card{height:fit-content;transition:transform .2s ease,box-shadow .2s ease}.template-grid-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.template-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.card-actions{margin-left:auto}.template-description{font-size:14px;line-height:1.4;margin:0 0 12px;color:var(--md-sys-color-on-surface-variant)}.template-tags{margin-bottom:12px}.template-tag{font-size:11px;height:20px;line-height:20px}.more-tags{background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.template-metadata{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.metadata-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.metadata-item mat-icon{font-size:14px;width:14px;height:14px}.template-preview{margin-top:12px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:4px}.preview-header{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;margin-bottom:8px;color:var(--md-sys-color-on-surface-variant)}.preview-header mat-icon{font-size:14px;width:14px;height:14px}.node-tree{font-size:11px;font-family:monospace}.root-node{padding:2px 0;color:var(--md-sys-color-on-surface)}.templates-container.list-view{display:flex;flex-direction:column;gap:8px}.template-list-card{padding:12px 16px}.list-card-content{display:flex;justify-content:space-between;align-items:center;gap:16px}.template-info{flex:1;display:flex;flex-direction:column;gap:8px}.template-header{display:flex;align-items:center;gap:12px}.template-details{flex:1}.template-name{margin:0;font-size:16px;font-weight:500}.template-meta{display:flex;gap:8px;align-items:center}.category-badge,.complexity-badge{font-size:11px;padding:2px 6px;border-radius:12px;background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.usage-count{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.template-actions{display:flex;gap:8px;align-items:center}.templates-container.compact-view{display:flex;flex-direction:column;gap:4px}.template-compact-card{padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:4px;background:var(--md-sys-color-surface)}.compact-content{display:flex;align-items:center;gap:12px}.compact-icon{color:var(--md-sys-color-primary)}.compact-info{flex:1;display:flex;flex-direction:column}.compact-name{font-size:14px;font-weight:500}.compact-category{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.compact-actions{display:flex;gap:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--md-sys-color-on-surface-variant)}.empty-icon{font-size:64px;width:64px;height:64px;margin-bottom:16px;color:var(--md-sys-color-outline)}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface)}.empty-state p{margin:0 0 16px;max-width:400px}@media(max-width:1024px){.templates-container.grid-view{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.search-row{flex-wrap:wrap}.search-input{flex:1 1 100%}}@media(max-width:768px){.header-content{flex-direction:column;gap:16px;align-items:flex-start}.templates-container.grid-view{grid-template-columns:1fr}.stats-bar{flex-wrap:wrap;gap:12px}.gallery-subtitle{margin-left:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i10.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i7$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i7$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i10$1.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21186
+ `, isInline: true, styles: [":host{--vb-shadow-low-color: var(--sicoob-shadow-low, rgba(0,0,0,.08));--vb-shadow-medium-color: var(--sicoob-shadow-medium, rgba(0,0,0,.18));--vb-shadow-high-color: var(--sicoob-shadow-high, rgba(0,0,0,.32))}.template-gallery{display:flex;flex-direction:column;height:100%;background:var(--md-sys-color-background)}.gallery-header{background:var(--md-sys-color-surface);border-bottom:1px solid var(--md-sys-color-outline);padding:16px 24px}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.title-section{flex:1}.gallery-title{display:flex;align-items:center;gap:8px;margin:0;font-size:24px;font-weight:500;color:var(--md-sys-color-on-surface)}.gallery-subtitle{margin:4px 0 0 32px;color:var(--md-sys-color-on-surface-variant);font-size:14px}.header-actions{display:flex;gap:8px;align-items:center}.stats-bar{display:flex;gap:24px;padding:12px 0;border-top:1px solid var(--md-sys-color-outline)}.stat-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--md-sys-color-on-surface-variant)}.stat-item mat-icon{font-size:16px;width:16px;height:16px}.search-section{padding:16px 24px;background:var(--md-sys-color-surface-variant);border-bottom:1px solid var(--md-sys-color-outline)}.search-form{display:flex;flex-direction:column;gap:16px}.search-row{display:flex;gap:16px;align-items:flex-start}.search-input{flex:2;min-width:300px}.category-select,.complexity-select,.sort-select{flex:1;min-width:150px}.category-option{display:flex;align-items:center;gap:8px;width:100%}.tags-section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tags-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.tags-list{flex:1}.active-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--md-sys-color-outline)}.filters-label{font-size:13px;font-weight:500;color:var(--md-sys-color-on-surface-variant)}.filter-chips{flex:1}.clear-all-button{font-size:12px}.recently-used-section{padding:16px 24px}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 16px;font-size:16px;font-weight:500;color:var(--md-sys-color-on-surface)}.template-count{font-size:14px;font-weight:400;color:var(--md-sys-color-on-surface-variant)}.recent-templates{display:flex;gap:12px;flex-wrap:wrap}.recent-template-button{display:flex;align-items:center;gap:8px;padding:8px 16px}.templates-section{flex:1;padding:0 24px 24px;overflow:auto}.templates-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.view-toggle{display:flex;align-items:center;gap:8px}.templates-container{min-height:200px}.templates-container.grid-view{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:16px}.template-grid-card{height:fit-content;transition:transform .2s ease,box-shadow .2s ease}.template-grid-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px var(--vb-shadow-medium-color)}.template-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--md-sys-color-primary-container);color:var(--md-sys-color-on-primary-container)}.card-actions{margin-left:auto}.template-description{font-size:14px;line-height:1.4;margin:0 0 12px;color:var(--md-sys-color-on-surface-variant)}.template-tags{margin-bottom:12px}.template-tag{font-size:11px;height:20px;line-height:20px}.more-tags{background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.template-metadata{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:12px}.metadata-item{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--md-sys-color-on-surface-variant)}.metadata-item mat-icon{font-size:14px;width:14px;height:14px}.template-preview{margin-top:12px;padding:8px;background:var(--md-sys-color-surface-variant);border-radius:4px}.preview-header{display:flex;align-items:center;gap:4px;font-size:12px;font-weight:500;margin-bottom:8px;color:var(--md-sys-color-on-surface-variant)}.preview-header mat-icon{font-size:14px;width:14px;height:14px}.node-tree{font-size:11px;font-family:monospace}.root-node{padding:2px 0;color:var(--md-sys-color-on-surface)}.templates-container.list-view{display:flex;flex-direction:column;gap:8px}.template-list-card{padding:12px 16px}.list-card-content{display:flex;justify-content:space-between;align-items:center;gap:16px}.template-info{flex:1;display:flex;flex-direction:column;gap:8px}.template-header{display:flex;align-items:center;gap:12px}.template-details{flex:1}.template-name{margin:0;font-size:16px;font-weight:500}.template-meta{display:flex;gap:8px;align-items:center}.category-badge,.complexity-badge{font-size:11px;padding:2px 6px;border-radius:12px;background:var(--md-sys-color-surface-variant);color:var(--md-sys-color-on-surface-variant)}.complexity-simple{background:var(--md-sys-color-tertiary-container);color:var(--md-sys-color-on-tertiary-container)}.complexity-medium{background:var(--md-sys-color-secondary-container);color:var(--md-sys-color-on-secondary-container)}.complexity-complex{background:var(--md-sys-color-error-container);color:var(--md-sys-color-on-error-container)}.usage-count{font-size:11px;color:var(--md-sys-color-on-surface-variant)}.template-actions{display:flex;gap:8px;align-items:center}.templates-container.compact-view{display:flex;flex-direction:column;gap:4px}.template-compact-card{padding:8px 12px;border:1px solid var(--md-sys-color-outline);border-radius:4px;background:var(--md-sys-color-surface)}.compact-content{display:flex;align-items:center;gap:12px}.compact-icon{color:var(--md-sys-color-primary)}.compact-info{flex:1;display:flex;flex-direction:column}.compact-name{font-size:14px;font-weight:500}.compact-category{font-size:12px;color:var(--md-sys-color-on-surface-variant)}.compact-actions{display:flex;gap:4px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px;text-align:center;color:var(--md-sys-color-on-surface-variant)}.empty-icon{font-size:64px;width:64px;height:64px;margin-bottom:16px;color:var(--md-sys-color-outline)}.empty-state h3{margin:0 0 8px;color:var(--md-sys-color-on-surface)}.empty-state p{margin:0 0 16px;max-width:400px}@media(max-width:1024px){.templates-container.grid-view{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.search-row{flex-wrap:wrap}.search-input{flex:1 1 100%}}@media(max-width:768px){.header-content{flex-direction:column;gap:16px;align-items:flex-start}.templates-container.grid-view{grid-template-columns:1fr}.stats-bar{flex-wrap:wrap;gap:12px}.gallery-subtitle{margin-left:0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i5$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i5$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i5$1.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "directive", type: i5$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i5$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i5$1.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i5$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4$1.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: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i10.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i10.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i10.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i10.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i10.MatChipSet, selector: "mat-chip-set", inputs: ["disabled", "role", "tabIndex"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: MatTabsModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatSnackBarModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i6$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i9$2.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i11.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: "component", type: PraxisIconButtonComponent, selector: "button[praxisIconButton]", inputs: ["praxisIconButton", "size", "appearance", "presentation", "pressed", "busy"] }, { kind: "directive", type: PraxisIconDirective, selector: "mat-icon[praxisIcon]", inputs: ["praxisIcon"] }, { kind: "pipe", type: i12$1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21214
21187
  }
21215
21188
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: TemplateGalleryComponent, decorators: [{
21216
21189
  type: Component,
@@ -21234,6 +21207,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
21234
21207
  MatExpansionModule,
21235
21208
  MatDividerModule,
21236
21209
  MatSlideToggleModule,
21210
+ PraxisIconButtonComponent,
21237
21211
  PraxisIconDirective,
21238
21212
  ], changeDetection: ChangeDetectionStrategy.OnPush, template: `
21239
21213
  <div class="template-gallery">
@@ -21271,11 +21245,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
21271
21245
  </button>
21272
21246
 
21273
21247
  <button
21274
- mat-icon-button
21248
+ praxisIconButton="view_module"
21249
+ size="dense"
21250
+ aria-label="View options"
21275
21251
  [matMenuTriggerFor]="viewMenu"
21276
21252
  matTooltip="View options"
21277
21253
  >
21278
- <mat-icon [praxisIcon]="'view_module'"></mat-icon>
21279
21254
  </button>
21280
21255
 
21281
21256
  <mat-menu #viewMenu="matMenu">
@@ -21509,11 +21484,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
21509
21484
  <mat-card-subtitle>{{ template.category }}</mat-card-subtitle>
21510
21485
  <div class="card-actions">
21511
21486
  <button
21512
- mat-icon-button
21487
+ praxisIconButton="more_vert"
21488
+ size="dense"
21489
+ aria-label="Template actions"
21513
21490
  [matMenuTriggerFor]="templateMenu"
21514
21491
  (click)="$event.stopPropagation()"
21515
21492
  >
21516
- <mat-icon>more_vert</mat-icon>
21517
21493
  </button>
21518
21494
  <mat-menu #templateMenu="matMenu">
21519
21495
  <button mat-menu-item (click)="applyTemplate(template)">
@@ -21678,10 +21654,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
21678
21654
  Preview
21679
21655
  </button>
21680
21656
  <button
21681
- mat-icon-button
21657
+ praxisIconButton="more_vert"
21658
+ size="dense"
21659
+ aria-label="Template actions"
21682
21660
  [matMenuTriggerFor]="listTemplateMenu"
21683
21661
  >
21684
- <mat-icon>more_vert</mat-icon>
21685
21662
  </button>
21686
21663
  <mat-menu #listTemplateMenu="matMenu">
21687
21664
  <button mat-menu-item (click)="editTemplate(template)">
@@ -21720,18 +21697,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
21720
21697
  </div>
21721
21698
  <div class="compact-actions">
21722
21699
  <button
21723
- mat-icon-button
21700
+ praxisIconButton="play_arrow"
21701
+ size="dense"
21702
+ aria-label="Apply template"
21724
21703
  (click)="applyTemplate(template)"
21725
21704
  matTooltip="Apply template"
21726
21705
  >
21727
- <mat-icon>play_arrow</mat-icon>
21728
21706
  </button>
21729
21707
  <button
21730
- mat-icon-button
21708
+ praxisIconButton="preview"
21709
+ size="dense"
21710
+ aria-label="Preview template"
21731
21711
  (click)="previewTemplate(template)"
21732
21712
  matTooltip="Preview template"
21733
21713
  >
21734
- <mat-icon>preview</mat-icon>
21735
21714
  </button>
21736
21715
  </div>
21737
21716
  </div>