@forgeroute/ui 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14030,8 +14030,10 @@ var RadioComponent = class RadioComponent {
14030
14030
  alias: "disabled"
14031
14031
  });
14032
14032
  this.disabled = this._disabledInput;
14033
- this._labelId = `rd-${Math.random().toString(36).slice(2, 8)}-label`;
14034
- this._labelledBy = computed(() => this.label() && this.description() && !this.ariaLabel() ? this._labelId : null, ...ngDevMode ? [{ debugName: "_labelledBy" }] : /* istanbul ignore next */ []);
14033
+ this.labelId = input("", ...ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []);
14034
+ this._generatedLabelId = `rd-${Math.random().toString(36).slice(2, 8)}-label`;
14035
+ this._labelId = computed(() => this.labelId() || this._generatedLabelId, ...ngDevMode ? [{ debugName: "_labelId" }] : /* istanbul ignore next */ []);
14036
+ this._labelledBy = computed(() => this.label() && this.description() && !this.ariaLabel() ? this._labelId() : null, ...ngDevMode ? [{ debugName: "_labelledBy" }] : /* istanbul ignore next */ []);
14035
14037
  this._descriptionId = `rd-${Math.random().toString(36).slice(2, 8)}-desc`;
14036
14038
  this._describedByIds = computed(() => {
14037
14039
  return [this.describedBy(), this.description() ? this._descriptionId : ""].filter(Boolean).join(" ") || null;
@@ -14128,6 +14130,13 @@ var RadioComponent = class RadioComponent {
14128
14130
  isSignal: true,
14129
14131
  isRequired: false,
14130
14132
  transformFunction: null
14133
+ },
14134
+ labelId: {
14135
+ classPropertyName: "labelId",
14136
+ publicName: "labelId",
14137
+ isSignal: true,
14138
+ isRequired: false,
14139
+ transformFunction: null
14131
14140
  }
14132
14141
  },
14133
14142
  outputs: { selected: "selected" },
@@ -14152,7 +14161,7 @@ var RadioComponent = class RadioComponent {
14152
14161
  (change)="onChange($event)"
14153
14162
  />
14154
14163
  <span class="rd-text">
14155
- @if (label()) { <span class="rd-label" [id]="_labelId">{{ label() }}</span> }
14164
+ @if (label()) { <span class="rd-label" [id]="_labelId()">{{ label() }}</span> }
14156
14165
  @if (description()) { <span class="rd-description" [id]="_descriptionId">{{ description() }}</span> }
14157
14166
  <ng-content />
14158
14167
  </span>
@@ -14195,7 +14204,7 @@ i0.ɵɵngDeclareClassMetadata({
14195
14204
  (change)="onChange($event)"
14196
14205
  />
14197
14206
  <span class="rd-text">
14198
- @if (label()) { <span class="rd-label" [id]="_labelId">{{ label() }}</span> }
14207
+ @if (label()) { <span class="rd-label" [id]="_labelId()">{{ label() }}</span> }
14199
14208
  @if (description()) { <span class="rd-description" [id]="_descriptionId">{{ description() }}</span> }
14200
14209
  <ng-content />
14201
14210
  </span>
@@ -14285,6 +14294,14 @@ i0.ɵɵngDeclareClassMetadata({
14285
14294
  required: false
14286
14295
  }]
14287
14296
  }],
14297
+ labelId: [{
14298
+ type: i0.Input,
14299
+ args: [{
14300
+ isSignal: true,
14301
+ alias: "labelId",
14302
+ required: false
14303
+ }]
14304
+ }],
14288
14305
  selected: [{
14289
14306
  type: i0.Output,
14290
14307
  args: ["selected"]
@@ -14352,6 +14369,9 @@ var RadioGroupComponent = class RadioGroupComponent {
14352
14369
  get _name() {
14353
14370
  return this.name() || this._generatedName;
14354
14371
  }
14372
+ _optionLabelId(index) {
14373
+ return `${this._generatedName}-opt-${index}-label`;
14374
+ }
14355
14375
  constructor() {
14356
14376
  this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
14357
14377
  this.options = input([], ...ngDevMode ? [{ debugName: "options" }] : /* istanbul ignore next */ []);
@@ -14567,9 +14587,10 @@ var RadioGroupComponent = class RadioGroupComponent {
14567
14587
  [invalid]="!!_activeError()"
14568
14588
  [describedBy]="(_activeError() || hint()) ? _descId : ''"
14569
14589
  [controls]="(_value() === opt.value && _nestedContent().has(opt.value)) ? _nestedId : ''"
14590
+ [labelId]="_nestedContent().has(opt.value) ? _optionLabelId($index) : ''"
14570
14591
  (selected)="onSelect($event)" />
14571
14592
  @if (_value() === opt.value && _nestedContent().get(opt.value); as nested) {
14572
- <div class="rg-nested" [id]="_nestedId"><ng-container [ngTemplateOutlet]="nested" /></div>
14593
+ <div class="rg-nested" role="group" [id]="_nestedId" [attr.aria-labelledby]="opt.label ? _optionLabelId($index) : null"><ng-container [ngTemplateOutlet]="nested" /></div>
14573
14594
  }
14574
14595
  }
14575
14596
  </div>
@@ -14596,7 +14617,8 @@ var RadioGroupComponent = class RadioGroupComponent {
14596
14617
  "invalid",
14597
14618
  "describedBy",
14598
14619
  "controls",
14599
- "disabled"
14620
+ "disabled",
14621
+ "labelId"
14600
14622
  ],
14601
14623
  outputs: ["selected"]
14602
14624
  }, {
@@ -14670,9 +14692,10 @@ i0.ɵɵngDeclareClassMetadata({
14670
14692
  [invalid]="!!_activeError()"
14671
14693
  [describedBy]="(_activeError() || hint()) ? _descId : ''"
14672
14694
  [controls]="(_value() === opt.value && _nestedContent().has(opt.value)) ? _nestedId : ''"
14695
+ [labelId]="_nestedContent().has(opt.value) ? _optionLabelId($index) : ''"
14673
14696
  (selected)="onSelect($event)" />
14674
14697
  @if (_value() === opt.value && _nestedContent().get(opt.value); as nested) {
14675
- <div class="rg-nested" [id]="_nestedId"><ng-container [ngTemplateOutlet]="nested" /></div>
14698
+ <div class="rg-nested" role="group" [id]="_nestedId" [attr.aria-labelledby]="opt.label ? _optionLabelId($index) : null"><ng-container [ngTemplateOutlet]="nested" /></div>
14676
14699
  }
14677
14700
  }
14678
14701
  </div>
@@ -22193,9 +22216,9 @@ var FormRowComponent = class FormRowComponent {
22193
22216
  transformFunction: null
22194
22217
  } },
22195
22218
  ngImport: i0,
22196
- template: `<div class="fr-row" [style.--fr-cols]="cols()"><ng-content /></div>`,
22219
+ template: `<div class="fr-row" [class.fr-row--4]="cols() === 4" [style.--fr-cols]="cols()"><ng-content /></div>`,
22197
22220
  isInline: true,
22198
- styles: [":host{display:block}.fr-row{display:grid;grid-template-columns:repeat(var(--fr-cols, 2),1fr);gap:12px}.fr-row>::ng-deep .ui-span-2{grid-column:span 2}.fr-row>::ng-deep .ui-span-3{grid-column:span 3}.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}@media(max-width:480px){.fr-row{grid-template-columns:1fr}.fr-row>::ng-deep .ui-span-2,.fr-row>::ng-deep .ui-span-3,.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}}\n"],
22221
+ styles: [":host{display:block}.fr-row{display:grid;grid-template-columns:repeat(var(--fr-cols, 2),1fr);gap:12px}.fr-row>::ng-deep .ui-span-2{grid-column:span 2}.fr-row>::ng-deep .ui-span-3{grid-column:span 3}.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}@media(max-width:768px){.fr-row--4{grid-template-columns:repeat(2,1fr)}.fr-row--4>::ng-deep .ui-span-3{grid-column:1 / -1}}@media(max-width:480px){.fr-row{grid-template-columns:1fr}.fr-row>::ng-deep .ui-span-2,.fr-row>::ng-deep .ui-span-3,.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}}\n"],
22199
22222
  changeDetection: i0.ChangeDetectionStrategy.OnPush
22200
22223
  });
22201
22224
  }
@@ -22211,8 +22234,8 @@ i0.ɵɵngDeclareClassMetadata({
22211
22234
  selector: "ui-form-row",
22212
22235
  standalone: true,
22213
22236
  changeDetection: ChangeDetectionStrategy.OnPush,
22214
- template: `<div class="fr-row" [style.--fr-cols]="cols()"><ng-content /></div>`,
22215
- styles: [":host{display:block}.fr-row{display:grid;grid-template-columns:repeat(var(--fr-cols, 2),1fr);gap:12px}.fr-row>::ng-deep .ui-span-2{grid-column:span 2}.fr-row>::ng-deep .ui-span-3{grid-column:span 3}.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}@media(max-width:480px){.fr-row{grid-template-columns:1fr}.fr-row>::ng-deep .ui-span-2,.fr-row>::ng-deep .ui-span-3,.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}}\n"]
22237
+ template: `<div class="fr-row" [class.fr-row--4]="cols() === 4" [style.--fr-cols]="cols()"><ng-content /></div>`,
22238
+ styles: [":host{display:block}.fr-row{display:grid;grid-template-columns:repeat(var(--fr-cols, 2),1fr);gap:12px}.fr-row>::ng-deep .ui-span-2{grid-column:span 2}.fr-row>::ng-deep .ui-span-3{grid-column:span 3}.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}@media(max-width:768px){.fr-row--4{grid-template-columns:repeat(2,1fr)}.fr-row--4>::ng-deep .ui-span-3{grid-column:1 / -1}}@media(max-width:480px){.fr-row{grid-template-columns:1fr}.fr-row>::ng-deep .ui-span-2,.fr-row>::ng-deep .ui-span-3,.fr-row>::ng-deep .ui-span-all{grid-column:1 / -1}}\n"]
22216
22239
  }]
22217
22240
  }],
22218
22241
  propDecorators: { cols: [{
@@ -24648,6 +24671,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
24648
24671
  constructor() {
24649
24672
  this.sections = input([], ...ngDevMode ? [{ debugName: "sections" }] : /* istanbul ignore next */ []);
24650
24673
  this.showEmptyState = input(false, ...ngDevMode ? [{ debugName: "showEmptyState" }] : /* istanbul ignore next */ []);
24674
+ this.labelColon = input(false, ...ngDevMode ? [{ debugName: "labelColon" }] : /* istanbul ignore next */ []);
24651
24675
  this.displaySections = computed(() => this.showEmptyState() ? this.sections() : this.sections().filter((s) => s.items.some((i) => !i.hidden)), ...ngDevMode ? [{ debugName: "displaySections" }] : /* istanbul ignore next */ []);
24652
24676
  }
24653
24677
  hrefOf(item) {
@@ -24706,6 +24730,13 @@ var PanelInfoListComponent = class PanelInfoListComponent {
24706
24730
  isSignal: true,
24707
24731
  isRequired: false,
24708
24732
  transformFunction: null
24733
+ },
24734
+ labelColon: {
24735
+ classPropertyName: "labelColon",
24736
+ publicName: "labelColon",
24737
+ isSignal: true,
24738
+ isRequired: false,
24739
+ transformFunction: null
24709
24740
  }
24710
24741
  },
24711
24742
  ngImport: i0,
@@ -24726,7 +24757,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
24726
24757
  <div class="pil-grid-2">
24727
24758
  @for (item of visibleItems(section); track item.label) {
24728
24759
  <div class="pil-grid-cell">
24729
- <span class="pil-label">{{ item.label }}</span>
24760
+ <span class="pil-label">{{ item.label }}{{ labelColon() ? ':' : '' }}</span>{{ labelColon() ? ' ' : '' }}
24730
24761
  <span class="pil-value pil-value--block">
24731
24762
  @if (item.badge) {
24732
24763
  <ui-badge [label]="item.badge.label" [variant]="item.badge.variant" />
@@ -24741,8 +24772,8 @@ var PanelInfoListComponent = class PanelInfoListComponent {
24741
24772
  </div>
24742
24773
  } @else {
24743
24774
  @for (item of visibleItems(section); track item.label) {
24744
- <div class="pil-row">
24745
- <span class="pil-label">{{ item.label }}</span>
24775
+ <div class="pil-row" [class.pil-row--inline]="labelColon()">
24776
+ <span class="pil-label">{{ item.label }}{{ labelColon() ? ':' : '' }}</span>{{ labelColon() ? ' ' : '' }}
24746
24777
  <span class="pil-value">
24747
24778
  @if (item.badges) {
24748
24779
  <span class="pil-badges">
@@ -24779,7 +24810,7 @@ var PanelInfoListComponent = class PanelInfoListComponent {
24779
24810
  }
24780
24811
  `,
24781
24812
  isInline: true,
24782
- styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"],
24813
+ styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"],
24783
24814
  dependencies: [
24784
24815
  {
24785
24816
  kind: "component",
@@ -24882,7 +24913,7 @@ i0.ɵɵngDeclareClassMetadata({
24882
24913
  <div class="pil-grid-2">
24883
24914
  @for (item of visibleItems(section); track item.label) {
24884
24915
  <div class="pil-grid-cell">
24885
- <span class="pil-label">{{ item.label }}</span>
24916
+ <span class="pil-label">{{ item.label }}{{ labelColon() ? ':' : '' }}</span>{{ labelColon() ? ' ' : '' }}
24886
24917
  <span class="pil-value pil-value--block">
24887
24918
  @if (item.badge) {
24888
24919
  <ui-badge [label]="item.badge.label" [variant]="item.badge.variant" />
@@ -24897,8 +24928,8 @@ i0.ɵɵngDeclareClassMetadata({
24897
24928
  </div>
24898
24929
  } @else {
24899
24930
  @for (item of visibleItems(section); track item.label) {
24900
- <div class="pil-row">
24901
- <span class="pil-label">{{ item.label }}</span>
24931
+ <div class="pil-row" [class.pil-row--inline]="labelColon()">
24932
+ <span class="pil-label">{{ item.label }}{{ labelColon() ? ':' : '' }}</span>{{ labelColon() ? ' ' : '' }}
24902
24933
  <span class="pil-value">
24903
24934
  @if (item.badges) {
24904
24935
  <span class="pil-badges">
@@ -24934,7 +24965,7 @@ i0.ɵɵngDeclareClassMetadata({
24934
24965
  </div>
24935
24966
  }
24936
24967
  `,
24937
- styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"]
24968
+ styles: [":host{display:flex;flex-direction:column;gap:12px}.pil-section{border:1px solid #e2e8f0;border-radius:8px;overflow:hidden}.pil-section-label{display:flex;justify-content:space-between;align-items:center;font-size:.6875rem;font-weight:700;letter-spacing:.07em;color:#94a3b8;text-transform:uppercase;padding:8px 14px;background:#f8fafc;border-bottom:1px solid #e2e8f0}.pil-header-link{font-size:.75rem;font-weight:500;color:#2563eb;text-decoration:none;text-transform:none;letter-spacing:0}.pil-header-link:hover{text-decoration:underline}.pil-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f5f9}.pil-row:last-child{border-bottom:none}.pil-row--inline{justify-content:flex-start}.pil-row--inline .pil-value{text-align:left;justify-content:flex-start;flex-wrap:wrap;min-width:0;overflow-wrap:anywhere;word-break:break-word}.pil-label{font-size:.8125rem;color:#64748b;flex-shrink:0}.pil-value{font-size:.875rem;font-weight:500;color:#1e293b;text-align:right;display:flex;align-items:center;justify-content:flex-end}.pil-badges{display:flex;align-items:center;gap:4px;flex-wrap:wrap;justify-content:flex-end}.pil-edit-btn{margin-left:4px;flex-shrink:0}ui-empty-state{padding:12px 0}.pil-muted{color:#1e293b;font-weight:400}.pil-danger{color:#ef4444;font-weight:600}.pil-link{font-size:.875rem;font-weight:500;color:#2563eb;text-decoration:none}.pil-link:hover{text-decoration:underline}.pil-link--href{overflow-wrap:anywhere;word-break:break-word}.pil-link:focus-visible,.pil-header-link:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:2px}.pil-link-icon{display:inline-flex;align-items:center;gap:5px;font-size:.875rem;font-weight:500;color:#1e293b;text-decoration:none}.pil-link-icon svg{color:#94a3b8;flex-shrink:0}.pil-grid-2{display:grid;grid-template-columns:1fr 1fr}.pil-grid-cell{display:flex;flex-direction:column;gap:3px;padding:10px 14px;border-right:1px solid #f1f5f9}.pil-grid-cell:last-child{border-right:none}.pil-value--block{text-align:left;justify-content:flex-start}\n"]
24938
24969
  }]
24939
24970
  }],
24940
24971
  propDecorators: {
@@ -24953,6 +24984,14 @@ i0.ɵɵngDeclareClassMetadata({
24953
24984
  alias: "showEmptyState",
24954
24985
  required: false
24955
24986
  }]
24987
+ }],
24988
+ labelColon: [{
24989
+ type: i0.Input,
24990
+ args: [{
24991
+ isSignal: true,
24992
+ alias: "labelColon",
24993
+ required: false
24994
+ }]
24956
24995
  }]
24957
24996
  }
24958
24997
  });
@@ -26421,6 +26460,11 @@ var TimelineComponent = class TimelineComponent {
26421
26460
  this.items = input([], ...ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []);
26422
26461
  this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
26423
26462
  this.emptyMessage = input("", ...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
26463
+ this.maxHeight = input("", ...ngDevMode ? [{ debugName: "maxHeight" }] : /* istanbul ignore next */ []);
26464
+ this.timePosition = input("below", ...ngDevMode ? [{ debugName: "timePosition" }] : /* istanbul ignore next */ []);
26465
+ }
26466
+ dotColor(item) {
26467
+ return item.dotVariant ? BADGE_VARIANT_STYLES[item.dotVariant]?.color ?? null : null;
26424
26468
  }
26425
26469
  static {
26426
26470
  this.ɵfac = i0.ɵɵngDeclareFactory({
@@ -26460,36 +26504,70 @@ var TimelineComponent = class TimelineComponent {
26460
26504
  isSignal: true,
26461
26505
  isRequired: false,
26462
26506
  transformFunction: null
26507
+ },
26508
+ maxHeight: {
26509
+ classPropertyName: "maxHeight",
26510
+ publicName: "maxHeight",
26511
+ isSignal: true,
26512
+ isRequired: false,
26513
+ transformFunction: null
26514
+ },
26515
+ timePosition: {
26516
+ classPropertyName: "timePosition",
26517
+ publicName: "timePosition",
26518
+ isSignal: true,
26519
+ isRequired: false,
26520
+ transformFunction: null
26463
26521
  }
26464
26522
  },
26465
26523
  ngImport: i0,
26466
26524
  template: `
26467
26525
  @if (items().length) {
26526
+ @if (maxHeight()) {
26527
+ <div class="tl-scroll" role="region" tabindex="0" [attr.aria-label]="ariaLabel() || 'Timeline'" [style.max-height]="maxHeight()">
26528
+ <ng-container [ngTemplateOutlet]="listTpl" />
26529
+ </div>
26530
+ } @else {
26531
+ <ng-container [ngTemplateOutlet]="listTpl" />
26532
+ }
26533
+ } @else if (emptyMessage()) {
26534
+ <ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
26535
+ }
26536
+ <ng-template #listTpl>
26468
26537
  <ol class="tl" [attr.aria-label]="ariaLabel() || null">
26469
26538
  @for (item of items(); track item.id ?? $index) {
26470
- <li class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon">
26539
+ <li [attr.data-testid]="item.testId || null" class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon" [style.--tl-color]="dotColor(item)">
26471
26540
  <span class="tl-marker" aria-hidden="true">
26472
26541
  @if (item.icon) { <ui-icon [name]="item.icon" [interactive]="false" [size]="12" /> }
26473
26542
  </span>
26474
26543
  <div class="tl-content">
26475
26544
  <div class="tl-head">
26476
26545
  <span class="tl-title">{{ item.title }}</span>
26477
- @if (item.badge) { <ui-badge [label]="item.badge.label" [variant]="item.badge.variant" /> }
26546
+ @if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
26547
+ @for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
26548
+ @if (timePosition() === 'end' && (item.time || item.dateTime)) {
26549
+ <time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
26550
+ }
26478
26551
  </div>
26479
26552
  @if (item.description) { <p class="tl-description">{{ item.description }}</p> }
26480
- @if (item.time || item.dateTime) {
26553
+ @if (timePosition() !== 'end' && (item.time || item.dateTime)) {
26481
26554
  <time class="tl-time" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
26482
26555
  }
26483
26556
  </div>
26484
26557
  </li>
26485
26558
  }
26486
26559
  </ol>
26487
- } @else if (emptyMessage()) {
26488
- <ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
26489
- }
26560
+ </ng-template>
26561
+ <ng-template #badgeTpl let-b>
26562
+ @if (b.tooltip) {
26563
+ <span class="tl-badge-tip" tabindex="0" [uiTooltip]="b.tooltip" [attr.data-testid]="b.testId || null"><ui-badge [label]="b.label" [variant]="b.variant" /></span>
26564
+ } @else {
26565
+ <ui-badge [label]="b.label" [variant]="b.variant" [attr.data-testid]="b.testId || null" />
26566
+ }
26567
+ </ng-template>
26490
26568
  `,
26491
26569
  isInline: true,
26492
- styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"],
26570
+ styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"],
26493
26571
  dependencies: [
26494
26572
  {
26495
26573
  kind: "component",
@@ -26517,6 +26595,22 @@ var TimelineComponent = class TimelineComponent {
26517
26595
  "interactive"
26518
26596
  ],
26519
26597
  outputs: ["iconClick"]
26598
+ },
26599
+ {
26600
+ kind: "directive",
26601
+ type: NgTemplateOutlet,
26602
+ selector: "[ngTemplateOutlet]",
26603
+ inputs: [
26604
+ "ngTemplateOutletContext",
26605
+ "ngTemplateOutlet",
26606
+ "ngTemplateOutletInjector"
26607
+ ]
26608
+ },
26609
+ {
26610
+ kind: "directive",
26611
+ type: TooltipDirective,
26612
+ selector: "[uiTooltip]",
26613
+ inputs: ["uiTooltip", "tooltipPosition"]
26520
26614
  }
26521
26615
  ],
26522
26616
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -26537,34 +26631,56 @@ i0.ɵɵngDeclareClassMetadata({
26537
26631
  imports: [
26538
26632
  BadgeComponent,
26539
26633
  HintComponent,
26540
- IconComponent
26634
+ IconComponent,
26635
+ NgTemplateOutlet,
26636
+ TooltipDirective
26541
26637
  ],
26542
26638
  template: `
26543
26639
  @if (items().length) {
26640
+ @if (maxHeight()) {
26641
+ <div class="tl-scroll" role="region" tabindex="0" [attr.aria-label]="ariaLabel() || 'Timeline'" [style.max-height]="maxHeight()">
26642
+ <ng-container [ngTemplateOutlet]="listTpl" />
26643
+ </div>
26644
+ } @else {
26645
+ <ng-container [ngTemplateOutlet]="listTpl" />
26646
+ }
26647
+ } @else if (emptyMessage()) {
26648
+ <ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
26649
+ }
26650
+ <ng-template #listTpl>
26544
26651
  <ol class="tl" [attr.aria-label]="ariaLabel() || null">
26545
26652
  @for (item of items(); track item.id ?? $index) {
26546
- <li class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon">
26653
+ <li [attr.data-testid]="item.testId || null" class="tl-item" [class]="'tl-item tl-item--' + (item.tone ?? 'default')" [class.tl-item--icon]="!!item.icon" [style.--tl-color]="dotColor(item)">
26547
26654
  <span class="tl-marker" aria-hidden="true">
26548
26655
  @if (item.icon) { <ui-icon [name]="item.icon" [interactive]="false" [size]="12" /> }
26549
26656
  </span>
26550
26657
  <div class="tl-content">
26551
26658
  <div class="tl-head">
26552
26659
  <span class="tl-title">{{ item.title }}</span>
26553
- @if (item.badge) { <ui-badge [label]="item.badge.label" [variant]="item.badge.variant" /> }
26660
+ @if (item.badge) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: item.badge }" /> }
26661
+ @for (b of item.badges ?? []; track $index) { <ng-container [ngTemplateOutlet]="badgeTpl" [ngTemplateOutletContext]="{ $implicit: b }" /> }
26662
+ @if (timePosition() === 'end' && (item.time || item.dateTime)) {
26663
+ <time class="tl-time tl-time--end" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
26664
+ }
26554
26665
  </div>
26555
26666
  @if (item.description) { <p class="tl-description">{{ item.description }}</p> }
26556
- @if (item.time || item.dateTime) {
26667
+ @if (timePosition() !== 'end' && (item.time || item.dateTime)) {
26557
26668
  <time class="tl-time" [attr.datetime]="item.dateTime || null">{{ item.time || item.dateTime }}</time>
26558
26669
  }
26559
26670
  </div>
26560
26671
  </li>
26561
26672
  }
26562
26673
  </ol>
26563
- } @else if (emptyMessage()) {
26564
- <ui-hint class="tl-empty">{{ emptyMessage() }}</ui-hint>
26565
- }
26674
+ </ng-template>
26675
+ <ng-template #badgeTpl let-b>
26676
+ @if (b.tooltip) {
26677
+ <span class="tl-badge-tip" tabindex="0" [uiTooltip]="b.tooltip" [attr.data-testid]="b.testId || null"><ui-badge [label]="b.label" [variant]="b.variant" /></span>
26678
+ } @else {
26679
+ <ui-badge [label]="b.label" [variant]="b.variant" [attr.data-testid]="b.testId || null" />
26680
+ }
26681
+ </ng-template>
26566
26682
  `,
26567
- styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"]
26683
+ styles: [":host{display:block}.tl{list-style:none;margin:0;padding:0}.tl-item{position:relative;display:flex;gap:12px;padding-bottom:16px;--tl-color: #475569}.tl-item:last-child{padding-bottom:0}.tl-item:before{content:\"\";position:absolute;left:7px;top:18px;bottom:-2px;width:2px;background:#e2e8f0}.tl-item:last-child:before{display:none}.tl-item--success{--tl-color: #15803d}.tl-item--warning{--tl-color: #b45309}.tl-item--danger{--tl-color: #b91c1c}.tl-marker{flex-shrink:0;box-sizing:border-box;width:16px;height:16px;margin-top:2px;border-radius:50%;background:var(--tl-color);border:3px solid #fff;box-shadow:0 0 0 1px var(--tl-color);display:inline-flex;align-items:center;justify-content:center;position:relative;z-index:1}.tl-item--icon .tl-marker{border:none;box-shadow:none;color:#fff}.tl-content{flex:1;min-width:0;overflow-wrap:anywhere;word-break:break-word}.tl-head{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}.tl-badge-tip{display:inline-flex;border-radius:999px}.tl-badge-tip:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.tl-time--end{display:inline;margin:0 0 0 auto;padding-left:8px;white-space:nowrap}.tl-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-right:8px}.tl-scroll:focus-visible{outline:2px solid #3b82f6;outline-offset:2px;border-radius:4px}.tl-title{font-size:.875rem;font-weight:600;color:#1e293b;line-height:1.4}.tl-description{margin:2px 0 0;font-size:.8125rem;line-height:1.5;color:#475569}.tl-time{display:block;margin-top:2px;font-size:.75rem;color:#64748b}\n"]
26568
26684
  }]
26569
26685
  }],
26570
26686
  propDecorators: {
@@ -26591,6 +26707,22 @@ i0.ɵɵngDeclareClassMetadata({
26591
26707
  alias: "emptyMessage",
26592
26708
  required: false
26593
26709
  }]
26710
+ }],
26711
+ maxHeight: [{
26712
+ type: i0.Input,
26713
+ args: [{
26714
+ isSignal: true,
26715
+ alias: "maxHeight",
26716
+ required: false
26717
+ }]
26718
+ }],
26719
+ timePosition: [{
26720
+ type: i0.Input,
26721
+ args: [{
26722
+ isSignal: true,
26723
+ alias: "timePosition",
26724
+ required: false
26725
+ }]
26594
26726
  }]
26595
26727
  }
26596
26728
  });
@@ -29099,7 +29231,8 @@ var RadioMatrixComponent = class RadioMatrixComponent {
29099
29231
  "invalid",
29100
29232
  "describedBy",
29101
29233
  "controls",
29102
- "disabled"
29234
+ "disabled",
29235
+ "labelId"
29103
29236
  ],
29104
29237
  outputs: ["selected"]
29105
29238
  }],
@@ -29979,7 +30112,12 @@ var PdfHotspotComponent = class PdfHotspotComponent {
29979
30112
  this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
29980
30113
  this.image = input(null, ...ngDevMode ? [{ debugName: "image" }] : /* istanbul ignore next */ []);
29981
30114
  this.imageAlt = input("Applied signature", ...ngDevMode ? [{ debugName: "imageAlt" }] : /* istanbul ignore next */ []);
30115
+ this.scale = input(1, ...ngDevMode ? [{ debugName: "scale" }] : /* istanbul ignore next */ []);
29982
30116
  this.activate = output();
30117
+ this._scaleVar = computed(() => {
30118
+ const s = this.scale();
30119
+ return typeof s === "number" && Number.isFinite(s) && s > 0 && s !== 1 ? String(s) : null;
30120
+ }, ...ngDevMode ? [{ debugName: "_scaleVar" }] : /* istanbul ignore next */ []);
29983
30121
  this.fontSize = computed(() => Math.min(11, Math.max(7, this.height() * .25)), ...ngDevMode ? [{ debugName: "fontSize" }] : /* istanbul ignore next */ []);
29984
30122
  }
29985
30123
  static {
@@ -30076,6 +30214,13 @@ var PdfHotspotComponent = class PdfHotspotComponent {
30076
30214
  isSignal: true,
30077
30215
  isRequired: false,
30078
30216
  transformFunction: null
30217
+ },
30218
+ scale: {
30219
+ classPropertyName: "scale",
30220
+ publicName: "scale",
30221
+ isSignal: true,
30222
+ isRequired: false,
30223
+ transformFunction: null
30079
30224
  }
30080
30225
  },
30081
30226
  outputs: { activate: "activate" },
@@ -30084,7 +30229,8 @@ var PdfHotspotComponent = class PdfHotspotComponent {
30084
30229
  "style.top.px": "y()",
30085
30230
  "style.width.px": "width()",
30086
30231
  "style.height.px": "height()",
30087
- "attr.data-state": "state()"
30232
+ "attr.data-state": "state()",
30233
+ "style.--ph-scale": "_scaleVar()"
30088
30234
  } },
30089
30235
  ngImport: i0,
30090
30236
  template: `
@@ -30103,7 +30249,7 @@ var PdfHotspotComponent = class PdfHotspotComponent {
30103
30249
  }
30104
30250
  `,
30105
30251
  isInline: true,
30106
- styles: [":host{position:absolute;display:block;box-sizing:border-box}.ph-image{display:block;width:100%;height:100%;object-fit:contain;object-position:left}.ph-button{position:relative;box-sizing:border-box;width:100%;height:100%;white-space:nowrap;font:inherit;font-weight:500;line-height:1;border:2px solid #d1d5db;background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:0 4px 10px #0000002e;transition:background-color .15s,border-color .15s}.ph-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.ph-button.ph-ready{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;cursor:pointer}.ph-button.ph-ready:hover{background:#bfdbfe}.ph-button.ph-ready.ph-warning{border-color:#f59e0b;background:#fffbeb;color:#b45309}.ph-button.ph-ready.ph-warning:hover{background:#fef3c7}.ph-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}@media(pointer:coarse){.ph-button:after{content:\"\";position:absolute;left:0;right:0;top:50%;height:100%;min-height:44px;transform:translateY(-50%)}}\n"],
30252
+ styles: [":host{position:absolute;display:block;box-sizing:border-box}.ph-image{display:block;width:100%;height:100%;object-fit:contain;object-position:left}.ph-button{position:relative;box-sizing:border-box;width:100%;height:100%;white-space:nowrap;font:inherit;font-weight:500;line-height:1;border:2px solid #d1d5db;background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:0 4px 10px #0000002e;transition:background-color .15s,border-color .15s}.ph-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.ph-button.ph-ready{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;cursor:pointer}.ph-button.ph-ready:hover{background:#bfdbfe}.ph-button.ph-ready.ph-warning{border-color:#f59e0b;background:#fffbeb;color:#b45309}.ph-button.ph-ready.ph-warning:hover{background:#fef3c7}.ph-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}@media(pointer:coarse){.ph-button:after{content:\"\";position:absolute;left:0;right:0;top:50%;height:100%;min-height:calc(44px / var(--ph-scale, 1));transform:translateY(-50%)}}\n"],
30107
30253
  changeDetection: i0.ChangeDetectionStrategy.OnPush
30108
30254
  });
30109
30255
  }
@@ -30124,7 +30270,8 @@ i0.ɵɵngDeclareClassMetadata({
30124
30270
  "[style.top.px]": "y()",
30125
30271
  "[style.width.px]": "width()",
30126
30272
  "[style.height.px]": "height()",
30127
- "[attr.data-state]": "state()"
30273
+ "[attr.data-state]": "state()",
30274
+ "[style.--ph-scale]": "_scaleVar()"
30128
30275
  },
30129
30276
  template: `
30130
30277
  @if (state() === 'signed' && image()) {
@@ -30141,7 +30288,7 @@ i0.ɵɵngDeclareClassMetadata({
30141
30288
  (click)="activate.emit()"><span class="ph-text">{{ state() === 'blocked' ? blockedLabel() : label() }}</span></button>
30142
30289
  }
30143
30290
  `,
30144
- styles: [":host{position:absolute;display:block;box-sizing:border-box}.ph-image{display:block;width:100%;height:100%;object-fit:contain;object-position:left}.ph-button{position:relative;box-sizing:border-box;width:100%;height:100%;white-space:nowrap;font:inherit;font-weight:500;line-height:1;border:2px solid #d1d5db;background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:0 4px 10px #0000002e;transition:background-color .15s,border-color .15s}.ph-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.ph-button.ph-ready{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;cursor:pointer}.ph-button.ph-ready:hover{background:#bfdbfe}.ph-button.ph-ready.ph-warning{border-color:#f59e0b;background:#fffbeb;color:#b45309}.ph-button.ph-ready.ph-warning:hover{background:#fef3c7}.ph-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}@media(pointer:coarse){.ph-button:after{content:\"\";position:absolute;left:0;right:0;top:50%;height:100%;min-height:44px;transform:translateY(-50%)}}\n"]
30291
+ styles: [":host{position:absolute;display:block;box-sizing:border-box}.ph-image{display:block;width:100%;height:100%;object-fit:contain;object-position:left}.ph-button{position:relative;box-sizing:border-box;width:100%;height:100%;white-space:nowrap;font:inherit;font-weight:500;line-height:1;border:2px solid #d1d5db;background:#f3f4f6;color:#9ca3af;cursor:not-allowed;box-shadow:0 4px 10px #0000002e;transition:background-color .15s,border-color .15s}.ph-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.ph-button.ph-ready{border-color:#2563eb;background:#dbeafe;color:#1d4ed8;cursor:pointer}.ph-button.ph-ready:hover{background:#bfdbfe}.ph-button.ph-ready.ph-warning{border-color:#f59e0b;background:#fffbeb;color:#b45309}.ph-button.ph-ready.ph-warning:hover{background:#fef3c7}.ph-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}@media(pointer:coarse){.ph-button:after{content:\"\";position:absolute;left:0;right:0;top:50%;height:100%;min-height:calc(44px / var(--ph-scale, 1));transform:translateY(-50%)}}\n"]
30145
30292
  }]
30146
30293
  }],
30147
30294
  propDecorators: {
@@ -30233,6 +30380,14 @@ i0.ɵɵngDeclareClassMetadata({
30233
30380
  required: false
30234
30381
  }]
30235
30382
  }],
30383
+ scale: [{
30384
+ type: i0.Input,
30385
+ args: [{
30386
+ isSignal: true,
30387
+ alias: "scale",
30388
+ required: false
30389
+ }]
30390
+ }],
30236
30391
  activate: [{
30237
30392
  type: i0.Output,
30238
30393
  args: ["activate"]