@forgeroute/ui 0.4.17 → 0.4.18

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.
@@ -4302,6 +4302,7 @@ const EXTRA_ICONS = {
4302
4302
  "image": "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z M8.5 8.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3z M21 15l-5-5L5 21",
4303
4303
  "chevron-up": "M18 15l-6-6-6 6",
4304
4304
  "chevron-down": "M6 9l6 6 6-6",
4305
+ "chevron-right": "M9 18l6-6-6-6",
4305
4306
  "arrow-left": "M19 12H5 M12 19l-7-7 7-7",
4306
4307
  "bell": "M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9 M13.73 21a2 2 0 0 1-3.46 0",
4307
4308
  "print": "M6 9V2h12v7 M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2 M6 14h12v8H6z",
@@ -4314,6 +4315,7 @@ const EXTRA_ICONS = {
4314
4315
  "grip": "M9 5h.01 M15 5h.01 M9 12h.01 M15 12h.01 M9 19h.01 M15 19h.01",
4315
4316
  "card": "M3 4h18a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z M1 10h22",
4316
4317
  "view-off": "M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z M12 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6z M3 3l18 18",
4318
+ "refund": "M3 10h10a8 8 0 0 1 8 8v2 M3 10l6 6 M3 10l6-6",
4317
4319
  "bank": "M3 21h18 M3 10h18 M5 6l7-3 7 3 M4 10v11 M20 10v11 M8 14v3 M12 14v3 M16 14v3"
4318
4320
  };
4319
4321
  function iconPath(name) {
@@ -9957,6 +9959,7 @@ var DataTableComponent = class DataTableComponent {
9957
9959
  this.showToolbar = input(true, ...ngDevMode ? [{ debugName: "showToolbar" }] : /* istanbul ignore next */ []);
9958
9960
  this.showMoreActions = input(true, ...ngDevMode ? [{ debugName: "showMoreActions" }] : /* istanbul ignore next */ []);
9959
9961
  this.showSearch = input(true, ...ngDevMode ? [{ debugName: "showSearch" }] : /* istanbul ignore next */ []);
9962
+ this.showQuickTabs = input(true, ...ngDevMode ? [{ debugName: "showQuickTabs" }] : /* istanbul ignore next */ []);
9960
9963
  this._showHeader = computed(() => this.showSearch() || this.showToolbar() || this._effectiveTabs().length > 0, ...ngDevMode ? [{ debugName: "_showHeader" }] : /* istanbul ignore next */ []);
9961
9964
  this.countsEndpoint = input("", ...ngDevMode ? [{ debugName: "countsEndpoint" }] : /* istanbul ignore next */ []);
9962
9965
  this.params = input(null, ...ngDevMode ? [{ debugName: "params" }] : /* istanbul ignore next */ []);
@@ -10005,6 +10008,7 @@ var DataTableComponent = class DataTableComponent {
10005
10008
  this._tabCounts = signal({}, ...ngDevMode ? [{ debugName: "_tabCounts" }] : /* istanbul ignore next */ []);
10006
10009
  this._filterCounts = signal({}, ...ngDevMode ? [{ debugName: "_filterCounts" }] : /* istanbul ignore next */ []);
10007
10010
  this._effectiveTabs = computed(() => {
10011
+ if (!this.showQuickTabs()) return [];
10008
10012
  const counts = this._tabCounts();
10009
10013
  const present = this._presentKeys(counts);
10010
10014
  const active = this._activeTab();
@@ -10928,6 +10932,13 @@ var DataTableComponent = class DataTableComponent {
10928
10932
  isRequired: false,
10929
10933
  transformFunction: null
10930
10934
  },
10935
+ showQuickTabs: {
10936
+ classPropertyName: "showQuickTabs",
10937
+ publicName: "showQuickTabs",
10938
+ isSignal: true,
10939
+ isRequired: false,
10940
+ transformFunction: null
10941
+ },
10931
10942
  countsEndpoint: {
10932
10943
  classPropertyName: "countsEndpoint",
10933
10944
  publicName: "countsEndpoint",
@@ -12893,6 +12904,14 @@ i0.ɵɵngDeclareClassMetadata({
12893
12904
  required: false
12894
12905
  }]
12895
12906
  }],
12907
+ showQuickTabs: [{
12908
+ type: i0.Input,
12909
+ args: [{
12910
+ isSignal: true,
12911
+ alias: "showQuickTabs",
12912
+ required: false
12913
+ }]
12914
+ }],
12896
12915
  countsEndpoint: [{
12897
12916
  type: i0.Input,
12898
12917
  args: [{
@@ -24284,8 +24303,19 @@ var ListItemComponent = class ListItemComponent {
24284
24303
  this.badge = input(null, ...ngDevMode ? [{ debugName: "badge" }] : /* istanbul ignore next */ []);
24285
24304
  this.badgeVariant = input("green", ...ngDevMode ? [{ debugName: "badgeVariant" }] : /* istanbul ignore next */ []);
24286
24305
  this.details = input([], ...ngDevMode ? [{ debugName: "details" }] : /* istanbul ignore next */ []);
24306
+ this.icon = input("", ...ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []);
24307
+ this.iconColor = input("slate", ...ngDevMode ? [{ debugName: "iconColor" }] : /* istanbul ignore next */ []);
24308
+ this.iconD = () => this.icon() ? iconPath(this.icon()) ?? null : null;
24287
24309
  this.select = output();
24288
- this.visibleDetails = () => this.details().filter((d) => !!d);
24310
+ this.visibleDetails = () => this.details().map((d) => typeof d === "string" ? {
24311
+ text: d,
24312
+ d: null,
24313
+ tone: "default"
24314
+ } : d ? {
24315
+ text: d.text,
24316
+ d: d.icon ? iconPath(d.icon) ?? null : null,
24317
+ tone: d.tone ?? "default"
24318
+ } : null).filter((d) => !!d && !!d.text);
24289
24319
  }
24290
24320
  get _borderedClass() {
24291
24321
  return this.bordered();
@@ -24398,29 +24428,60 @@ var ListItemComponent = class ListItemComponent {
24398
24428
  isSignal: true,
24399
24429
  isRequired: false,
24400
24430
  transformFunction: null
24431
+ },
24432
+ icon: {
24433
+ classPropertyName: "icon",
24434
+ publicName: "icon",
24435
+ isSignal: true,
24436
+ isRequired: false,
24437
+ transformFunction: null
24438
+ },
24439
+ iconColor: {
24440
+ classPropertyName: "iconColor",
24441
+ publicName: "iconColor",
24442
+ isSignal: true,
24443
+ isRequired: false,
24444
+ transformFunction: null
24401
24445
  }
24402
24446
  },
24403
24447
  outputs: { select: "select" },
24404
24448
  host: { properties: { "class.li-bordered": "this._borderedClass" } },
24405
24449
  ngImport: i0,
24406
24450
  template: `
24451
+ <ng-template #tile>
24452
+ @if (iconD(); as d) {
24453
+ <span class="li-icon" [class]="'li-icon li-icon--' + iconColor()" aria-hidden="true">
24454
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>
24455
+ </span>
24456
+ }
24457
+ </ng-template>
24458
+ <ng-template #content>
24459
+ <div class="li-title-row">
24460
+ <span class="li-title">{{ title() }}</span>
24461
+ @if (badge() && (checked() || alwaysShowBadge())) {
24462
+ <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24463
+ }
24464
+ </div>
24465
+ @if (visibleDetails().length) {
24466
+ <div class="li-details">
24467
+ @for (detail of visibleDetails(); track $index) {
24468
+ <span class="li-detail" [class.li-detail--warning]="detail.tone === 'warning'" [class.li-detail--danger]="detail.tone === 'danger'">
24469
+ @if (detail.d) {
24470
+ <svg class="li-detail-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="detail.d" /></svg>
24471
+ }
24472
+ <span class="li-detail-text">{{ detail.text }}</span>
24473
+ </span>
24474
+ }
24475
+ </div>
24476
+ }
24477
+ </ng-template>
24478
+
24407
24479
  <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
24408
24480
 
24409
24481
  @if (!interactive()) {
24482
+ <ng-container [ngTemplateOutlet]="tile" />
24410
24483
  <div class="li-body li-body--static">
24411
- <div class="li-title-row">
24412
- <span class="li-title">{{ title() }}</span>
24413
- @if (badge() && (checked() || alwaysShowBadge())) {
24414
- <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24415
- }
24416
- </div>
24417
- @if (visibleDetails().length) {
24418
- <div class="li-details">
24419
- @for (detail of visibleDetails(); track $index) {
24420
- <span>{{ detail }}</span>
24421
- }
24422
- </div>
24423
- }
24484
+ <ng-container [ngTemplateOutlet]="content" />
24424
24485
  </div>
24425
24486
  } @else {
24426
24487
  @if (leading() === 'radio') {
@@ -24442,20 +24503,9 @@ var ListItemComponent = class ListItemComponent {
24442
24503
  />
24443
24504
  }
24444
24505
 
24506
+ <ng-container [ngTemplateOutlet]="tile" />
24445
24507
  <label class="li-body" [attr.for]="inputId() || null">
24446
- <div class="li-title-row">
24447
- <span class="li-title">{{ title() }}</span>
24448
- @if (badge() && (checked() || alwaysShowBadge())) {
24449
- <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24450
- }
24451
- </div>
24452
- @if (visibleDetails().length) {
24453
- <div class="li-details">
24454
- @for (detail of visibleDetails(); track $index) {
24455
- <span>{{ detail }}</span>
24456
- }
24457
- </div>
24458
- }
24508
+ <ng-container [ngTemplateOutlet]="content" />
24459
24509
  </label>
24460
24510
  }
24461
24511
 
@@ -24464,12 +24514,21 @@ var ListItemComponent = class ListItemComponent {
24464
24514
  </div>
24465
24515
  `,
24466
24516
  isInline: true,
24467
- styles: [":host{display:block}:host(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:8px;overflow:hidden;margin-bottom:6px}:host(.li-bordered):last-child{margin-bottom:0}.li-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}:host(.li-bordered) .li-row{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row ::ng-deep [list-item-action],.li-row ::ng-deep [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:3px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-wrap:wrap;gap:6px;font-size:.775rem;color:var(--text-secondary, #64748b)}.li-row--wrap .li-details span{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"],
24517
+ styles: [":host{display:block}:host(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);margin-bottom:8px}:host(.li-bordered):last-child{margin-bottom:0}.li-row{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}:host(.li-bordered) .li-row{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row ::ng-deep [list-item-action],.li-row ::ng-deep [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px}.li-icon--slate{background:#f1f5f9;color:#475569}.li-icon--amber{background:#fef3c7;color:#b45309}.li-icon--orange{background:#ffedd5;color:#c2410c}.li-icon--red{background:#fee2e2;color:#b91c1c}.li-icon--blue{background:#dbeafe;color:#1d4ed8}.li-icon--green{background:#dcfce7;color:#15803d}.li-icon--purple{background:#f3e8ff;color:#7e22ce}.li-icon--teal{background:#ccfbf1;color:#0f766e}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:4px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.35;color:var(--text-primary, #0f172a)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-direction:column;gap:2px;font-size:.8125rem;line-height:1.4;color:var(--text-secondary, #64748b)}.li-detail{display:flex;align-items:center;gap:6px;min-width:0}.li-detail-icon{flex:0 0 auto;color:#94a3b8}.li-detail--warning,.li-detail--warning .li-detail-icon{color:#b45309}.li-detail--danger,.li-detail--danger .li-detail-icon{color:#b91c1c}.li-row--wrap .li-detail-text{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"],
24468
24518
  dependencies: [{
24469
24519
  kind: "component",
24470
24520
  type: BadgeComponent,
24471
24521
  selector: "ui-badge",
24472
24522
  inputs: ["label", "variant"]
24523
+ }, {
24524
+ kind: "directive",
24525
+ type: NgTemplateOutlet,
24526
+ selector: "[ngTemplateOutlet]",
24527
+ inputs: [
24528
+ "ngTemplateOutletContext",
24529
+ "ngTemplateOutlet",
24530
+ "ngTemplateOutletInjector"
24531
+ ]
24473
24532
  }],
24474
24533
  changeDetection: i0.ChangeDetectionStrategy.OnPush
24475
24534
  });
@@ -24486,25 +24545,42 @@ i0.ɵɵngDeclareClassMetadata({
24486
24545
  selector: "ui-list-item",
24487
24546
  standalone: true,
24488
24547
  changeDetection: ChangeDetectionStrategy.OnPush,
24489
- imports: [BadgeComponent],
24548
+ imports: [BadgeComponent, NgTemplateOutlet],
24490
24549
  template: `
24550
+ <ng-template #tile>
24551
+ @if (iconD(); as d) {
24552
+ <span class="li-icon" [class]="'li-icon li-icon--' + iconColor()" aria-hidden="true">
24553
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>
24554
+ </span>
24555
+ }
24556
+ </ng-template>
24557
+ <ng-template #content>
24558
+ <div class="li-title-row">
24559
+ <span class="li-title">{{ title() }}</span>
24560
+ @if (badge() && (checked() || alwaysShowBadge())) {
24561
+ <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24562
+ }
24563
+ </div>
24564
+ @if (visibleDetails().length) {
24565
+ <div class="li-details">
24566
+ @for (detail of visibleDetails(); track $index) {
24567
+ <span class="li-detail" [class.li-detail--warning]="detail.tone === 'warning'" [class.li-detail--danger]="detail.tone === 'danger'">
24568
+ @if (detail.d) {
24569
+ <svg class="li-detail-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path [attr.d]="detail.d" /></svg>
24570
+ }
24571
+ <span class="li-detail-text">{{ detail.text }}</span>
24572
+ </span>
24573
+ }
24574
+ </div>
24575
+ }
24576
+ </ng-template>
24577
+
24491
24578
  <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
24492
24579
 
24493
24580
  @if (!interactive()) {
24581
+ <ng-container [ngTemplateOutlet]="tile" />
24494
24582
  <div class="li-body li-body--static">
24495
- <div class="li-title-row">
24496
- <span class="li-title">{{ title() }}</span>
24497
- @if (badge() && (checked() || alwaysShowBadge())) {
24498
- <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24499
- }
24500
- </div>
24501
- @if (visibleDetails().length) {
24502
- <div class="li-details">
24503
- @for (detail of visibleDetails(); track $index) {
24504
- <span>{{ detail }}</span>
24505
- }
24506
- </div>
24507
- }
24583
+ <ng-container [ngTemplateOutlet]="content" />
24508
24584
  </div>
24509
24585
  } @else {
24510
24586
  @if (leading() === 'radio') {
@@ -24526,20 +24602,9 @@ i0.ɵɵngDeclareClassMetadata({
24526
24602
  />
24527
24603
  }
24528
24604
 
24605
+ <ng-container [ngTemplateOutlet]="tile" />
24529
24606
  <label class="li-body" [attr.for]="inputId() || null">
24530
- <div class="li-title-row">
24531
- <span class="li-title">{{ title() }}</span>
24532
- @if (badge() && (checked() || alwaysShowBadge())) {
24533
- <ui-badge [label]="badge()!" [variant]="badgeVariant()" />
24534
- }
24535
- </div>
24536
- @if (visibleDetails().length) {
24537
- <div class="li-details">
24538
- @for (detail of visibleDetails(); track $index) {
24539
- <span>{{ detail }}</span>
24540
- }
24541
- </div>
24542
- }
24607
+ <ng-container [ngTemplateOutlet]="content" />
24543
24608
  </label>
24544
24609
  }
24545
24610
 
@@ -24547,7 +24612,7 @@ i0.ɵɵngDeclareClassMetadata({
24547
24612
 
24548
24613
  </div>
24549
24614
  `,
24550
- styles: [":host{display:block}:host(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:8px;overflow:hidden;margin-bottom:6px}:host(.li-bordered):last-child{margin-bottom:0}.li-row{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}:host(.li-bordered) .li-row{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row ::ng-deep [list-item-action],.li-row ::ng-deep [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:3px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.875rem;font-weight:500;color:var(--text-primary, #1e293b)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-wrap:wrap;gap:6px;font-size:.775rem;color:var(--text-secondary, #64748b)}.li-row--wrap .li-details span{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"]
24615
+ styles: [":host{display:block}:host(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);margin-bottom:8px}:host(.li-bordered):last-child{margin-bottom:0}.li-row{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}:host(.li-bordered) .li-row{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}.li-row.li-row--highlighted{background:#f0fdf4}.li-row.li-row--highlighted:hover{background:#dcfce7}.li-row.li-row--static:hover{background:transparent}.li-row.li-row--static.li-row--highlighted,.li-row.li-row--static.li-row--highlighted:hover{background:#f0fdf4}.li-body.li-body--static{cursor:default}.li-row ::ng-deep [list-item-action],.li-row ::ng-deep [li-action]{flex-shrink:0;align-self:center}.li-input{margin-top:3px;flex-shrink:0;accent-color:#16a34a;width:1rem;height:1rem;cursor:pointer}.li-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px}.li-icon--slate{background:#f1f5f9;color:#475569}.li-icon--amber{background:#fef3c7;color:#b45309}.li-icon--orange{background:#ffedd5;color:#c2410c}.li-icon--red{background:#fee2e2;color:#b91c1c}.li-icon--blue{background:#dbeafe;color:#1d4ed8}.li-icon--green{background:#dcfce7;color:#15803d}.li-icon--purple{background:#f3e8ff;color:#7e22ce}.li-icon--teal{background:#ccfbf1;color:#0f766e}.li-body{flex:1;min-width:0;cursor:pointer;display:flex;flex-direction:column;gap:4px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.35;color:var(--text-primary, #0f172a)}.li-row--wrap .li-title{min-width:0;word-break:break-word;overflow-wrap:anywhere}.li-details{display:flex;flex-direction:column;gap:2px;font-size:.8125rem;line-height:1.4;color:var(--text-secondary, #64748b)}.li-detail{display:flex;align-items:center;gap:6px;min-width:0}.li-detail-icon{flex:0 0 auto;color:#94a3b8}.li-detail--warning,.li-detail--warning .li-detail-icon{color:#b45309}.li-detail--danger,.li-detail--danger .li-detail-icon{color:#b91c1c}.li-row--wrap .li-detail-text{min-width:0;word-break:break-word;overflow-wrap:anywhere}\n"]
24551
24616
  }]
24552
24617
  }],
24553
24618
  propDecorators: {
@@ -24659,6 +24724,22 @@ i0.ɵɵngDeclareClassMetadata({
24659
24724
  required: false
24660
24725
  }]
24661
24726
  }],
24727
+ icon: [{
24728
+ type: i0.Input,
24729
+ args: [{
24730
+ isSignal: true,
24731
+ alias: "icon",
24732
+ required: false
24733
+ }]
24734
+ }],
24735
+ iconColor: [{
24736
+ type: i0.Input,
24737
+ args: [{
24738
+ isSignal: true,
24739
+ alias: "iconColor",
24740
+ required: false
24741
+ }]
24742
+ }],
24662
24743
  select: [{
24663
24744
  type: i0.Output,
24664
24745
  args: ["select"]
@@ -24739,6 +24820,8 @@ var ListComponent = class ListComponent {
24739
24820
  this.moveLaterLabel = input(void 0, ...ngDevMode ? [{ debugName: "moveLaterLabel" }] : /* istanbul ignore next */ []);
24740
24821
  this.helpText = input("Hold Shift and press the arrow keys to move this item. Shift plus Home or End moves it to the start or end.", ...ngDevMode ? [{ debugName: "helpText" }] : /* istanbul ignore next */ []);
24741
24822
  this.moveAnnouncement = input((label, position, total) => `${label} moved to position ${position} of ${total}`, ...ngDevMode ? [{ debugName: "moveAnnouncement" }] : /* istanbul ignore next */ []);
24823
+ this.navigable = input(false, ...ngDevMode ? [{ debugName: "navigable" }] : /* istanbul ignore next */ []);
24824
+ this.itemClick = output();
24742
24825
  this.itemsChange = output();
24743
24826
  this.reorder = output();
24744
24827
  this.rowTemplate = contentChild(TemplateRef, ...ngDevMode ? [{ debugName: "rowTemplate" }] : /* istanbul ignore next */ []);
@@ -24824,7 +24907,18 @@ var ListComponent = class ListComponent {
24824
24907
  move(from, to) {
24825
24908
  return this.apply(from, to, null);
24826
24909
  }
24910
+ emitItemClick(e) {
24911
+ const target = e.target;
24912
+ if (!target || target.closest("button, a, input, select, textarea, [data-move]")) return;
24913
+ const idx = this.rowIndexOf(target, e.currentTarget);
24914
+ const row = this.rows()[idx];
24915
+ if (row) this.itemClick.emit(row.item);
24916
+ }
24827
24917
  onKeydown(e) {
24918
+ if (this.navigable() && e.key === "Enter" && e.target?.classList.contains("ul-item")) {
24919
+ this.emitItemClick(e);
24920
+ return;
24921
+ }
24828
24922
  if (!this.canReorder() || e.ctrlKey || e.metaKey) return;
24829
24923
  const list = e.currentTarget;
24830
24924
  const target = e.target;
@@ -24864,6 +24958,7 @@ var ListComponent = class ListComponent {
24864
24958
  }
24865
24959
  }
24866
24960
  onClick(e) {
24961
+ if (this.navigable()) this.emitItemClick(e);
24867
24962
  if (!this.canReorder()) return;
24868
24963
  const btn = e.target?.closest("[data-move]") ?? null;
24869
24964
  if (!btn) return;
@@ -25108,9 +25203,17 @@ var ListComponent = class ListComponent {
25108
25203
  isSignal: true,
25109
25204
  isRequired: false,
25110
25205
  transformFunction: null
25206
+ },
25207
+ navigable: {
25208
+ classPropertyName: "navigable",
25209
+ publicName: "navigable",
25210
+ isSignal: true,
25211
+ isRequired: false,
25212
+ transformFunction: null
25111
25213
  }
25112
25214
  },
25113
25215
  outputs: {
25216
+ itemClick: "itemClick",
25114
25217
  itemsChange: "itemsChange",
25115
25218
  reorder: "reorder"
25116
25219
  },
@@ -25130,9 +25233,10 @@ var ListComponent = class ListComponent {
25130
25233
  [class.ul-item--draggable]="direct()"
25131
25234
  [class.ul-item--dragging]="row.dragging"
25132
25235
  [class.ul-item--over]="dragIndex() !== null && dragIndex() !== row.index && overIndex() === row.index"
25236
+ [class.ul-item--nav]="navigable()"
25133
25237
  [attr.data-index]="row.index"
25134
25238
  [attr.draggable]="direct() ? 'true' : null"
25135
- [attr.tabindex]="direct() ? 0 : null"
25239
+ [attr.tabindex]="direct() || navigable() ? 0 : null"
25136
25240
  [attr.aria-roledescription]="direct() ? 'sortable item' : null"
25137
25241
  [attr.aria-label]="direct() ? row.label : null"
25138
25242
  [attr.aria-describedby]="direct() ? helpId : null">
@@ -25144,6 +25248,9 @@ var ListComponent = class ListComponent {
25144
25248
  {{ row.label }}
25145
25249
  }
25146
25250
  </div>
25251
+ @if (navigable()) {
25252
+ <svg class="ul-chevron" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M9 18l6-6-6-6"/></svg>
25253
+ }
25147
25254
  @if (showControls()) {
25148
25255
  <div class="ul-controls">
25149
25256
  <ui-button variant="icon" data-move="up" [ariaLabel]="row.earlierLabel" [disabled]="disabled() || row.first">
@@ -25189,7 +25296,7 @@ var ListComponent = class ListComponent {
25189
25296
  }
25190
25297
  `,
25191
25298
  isInline: true,
25192
- styles: [":host{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}:host ::ng-deep .ul-item--draggable img,:host ::ng-deep .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"],
25299
+ styles: [":host{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(2px)}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .15s ease,transform .15s ease}@media(prefers-reduced-motion:reduce){.ul-chevron{transition:none}}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}:host ::ng-deep .ul-item--draggable img,:host ::ng-deep .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"],
25193
25300
  dependencies: [{
25194
25301
  kind: "directive",
25195
25302
  type: NgTemplateOutlet,
@@ -25253,9 +25360,10 @@ i0.ɵɵngDeclareClassMetadata({
25253
25360
  [class.ul-item--draggable]="direct()"
25254
25361
  [class.ul-item--dragging]="row.dragging"
25255
25362
  [class.ul-item--over]="dragIndex() !== null && dragIndex() !== row.index && overIndex() === row.index"
25363
+ [class.ul-item--nav]="navigable()"
25256
25364
  [attr.data-index]="row.index"
25257
25365
  [attr.draggable]="direct() ? 'true' : null"
25258
- [attr.tabindex]="direct() ? 0 : null"
25366
+ [attr.tabindex]="direct() || navigable() ? 0 : null"
25259
25367
  [attr.aria-roledescription]="direct() ? 'sortable item' : null"
25260
25368
  [attr.aria-label]="direct() ? row.label : null"
25261
25369
  [attr.aria-describedby]="direct() ? helpId : null">
@@ -25267,6 +25375,9 @@ i0.ɵɵngDeclareClassMetadata({
25267
25375
  {{ row.label }}
25268
25376
  }
25269
25377
  </div>
25378
+ @if (navigable()) {
25379
+ <svg class="ul-chevron" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M9 18l6-6-6-6"/></svg>
25380
+ }
25270
25381
  @if (showControls()) {
25271
25382
  <div class="ul-controls">
25272
25383
  <ui-button variant="icon" data-move="up" [ariaLabel]="row.earlierLabel" [disabled]="disabled() || row.first">
@@ -25311,7 +25422,7 @@ i0.ɵɵngDeclareClassMetadata({
25311
25422
  <div class="ul-sr" role="status" aria-live="polite" aria-atomic="true">{{ announcement() }}</div>
25312
25423
  }
25313
25424
  `,
25314
- styles: [":host{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}:host ::ng-deep .ul-item--draggable img,:host ::ng-deep .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"]
25425
+ styles: [":host{display:block;min-width:0}.ul-list{margin:0;padding:0;min-width:0}.ul-list--unordered{list-style:none}.ul-list--ordered{list-style:decimal;-webkit-padding-start:1.75rem;padding-inline-start:1.75rem}.ul-list--ordered>.ul-item::marker{color:var(--text-secondary, #64748b);font-size:.875rem}.ul-item{min-width:0;transition:background-color .4s ease}.ul-item.ul-item--moved{background-color:var(--surface-hover, #f1f5f9)}.ul-list:not(.ul-list--grid)>.ul-item+.ul-item{margin-top:var(--ul-gap, 0px)}.ul-row{display:flex;align-items:center;gap:8px;min-width:0}.ul-content{flex:1 1 auto;min-width:0;word-break:break-word;overflow-wrap:anywhere}.ul-controls{display:flex;flex:0 0 auto;align-items:center;gap:2px}.ul-item--nav{cursor:pointer;border-radius:10px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(2px)}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .15s ease,transform .15s ease}@media(prefers-reduced-motion:reduce){.ul-chevron{transition:none}}.ul-list.ul-list--grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(var(--ul-min, 130px),100%),1fr));gap:var(--ul-gap, 12px);list-style:none;-webkit-padding-start:0;padding-inline-start:0}.ul-list--grid>.ul-item>.ul-row{flex-direction:column;align-items:stretch;gap:6px}.ul-list--grid>.ul-item>.ul-row>.ul-controls{align-self:center}@media(pointer:coarse),(max-width:480px){.ul-controls{gap:16px}}.ul-item--draggable{-webkit-user-select:none;user-select:none;-webkit-user-drag:element}@media(hover:hover)and (pointer:fine){.ul-item--draggable{cursor:grab}.ul-item--draggable:active{cursor:grabbing}}.ul-item--draggable:focus{outline:2px solid #3b82f6;outline-offset:2px;border-radius:6px}.ul-item--draggable:focus:not(:focus-visible){outline:none}:host ::ng-deep .ul-item--draggable img,:host ::ng-deep .ul-item--draggable ui-image-preview{pointer-events:none;-webkit-user-drag:none}.ul-item--dragging{opacity:.5}.ul-item--over{outline:2px dashed #3b82f6;outline-offset:2px;border-radius:6px}@media(prefers-reduced-motion:reduce){.ul-item{transition:none}}@media(forced-colors:active){.ul-item.ul-item--moved{outline:2px solid Highlight;outline-offset:-2px}}@media(forced-colors:active){.ul-item.ul-item--dragging{outline:2px dotted Highlight;outline-offset:2px}.ul-item.ul-item--over{outline:2px dashed Highlight;outline-offset:2px}.ul-item--draggable:focus{outline:2px solid Highlight;outline-offset:2px}}.ul-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n"]
25315
25426
  }]
25316
25427
  }],
25317
25428
  propDecorators: {
@@ -25451,6 +25562,18 @@ i0.ɵɵngDeclareClassMetadata({
25451
25562
  required: false
25452
25563
  }]
25453
25564
  }],
25565
+ navigable: [{
25566
+ type: i0.Input,
25567
+ args: [{
25568
+ isSignal: true,
25569
+ alias: "navigable",
25570
+ required: false
25571
+ }]
25572
+ }],
25573
+ itemClick: [{
25574
+ type: i0.Output,
25575
+ args: ["itemClick"]
25576
+ }],
25454
25577
  itemsChange: [{
25455
25578
  type: i0.Output,
25456
25579
  args: ["itemsChange"]
@@ -29550,7 +29673,7 @@ var KpiCardComponent = class KpiCardComponent {
29550
29673
  },
29551
29674
  ngImport: i0,
29552
29675
  template: `
29553
- <div class="kpi-card" [class.highlight]="highlight()" [class.clickable]="clickable()" [style.background]="background() || null">
29676
+ <div class="kpi-card" [class.highlight]="highlight()" [class.clickable]="clickable()" [class.ring-corner]="hasProgress() && !!iconSvg()" [style.background]="background() || null">
29554
29677
  @if (iconSvg()) {
29555
29678
  <div [class]="'kpi-icon ' + color() + '-icon'" aria-hidden="true" [innerHTML]="iconSvg()"></div>
29556
29679
  }
@@ -29577,7 +29700,7 @@ var KpiCardComponent = class KpiCardComponent {
29577
29700
  </div>
29578
29701
  `,
29579
29702
  isInline: true,
29580
- styles: [":host{display:block;height:100%}.kpi-card{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;height:100%;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}:host(:focus){outline:none}:host(:focus-visible) .kpi-card{outline:2px solid #3b82f6;outline-offset:2px}.kpi-card.clickable{cursor:pointer}.kpi-card.clickable:hover{border-color:#93c5fd;box-shadow:0 2px 8px #3b82f614}.kpi-card.clickable:hover .kpi-arrow{color:#3b82f6;transform:translate(2px)}.kpi-arrow{position:absolute;bottom:14px;right:14px;color:#94a3b8;transition:color .15s ease,transform .15s ease}.kpi-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.green-icon{background:#dcfce7;color:#16a34a}.blue-icon{background:#dbeafe;color:#2563eb}.amber-icon{background:#fef3c7;color:#d97706}.orange-icon{background:#ffedd5;color:#c2410c}.red-icon{background:#fee2e2;color:#dc2626}.slate-icon{background:#f1f5f9;color:#475569}.kpi-label{font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:36px;margin-bottom:4px}.kpi-ring{flex-shrink:0}.kpi-value{font-size:1.5rem;font-weight:700;color:#111827;line-height:1.1}.kpi-value.green-value{color:#16a34a}.kpi-value.blue-value{color:#3b82f6}.kpi-value.red-value{color:#dc2626}.kpi-subtitle{font-size:.75rem;color:#64748b;margin-top:2px}\n"],
29703
+ styles: [":host{display:block;height:100%}.kpi-card{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;height:100%;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}:host(:focus){outline:none}:host(:focus-visible) .kpi-card{outline:2px solid #3b82f6;outline-offset:2px}.kpi-card.clickable{cursor:pointer}.kpi-card.clickable:hover{border-color:#93c5fd;box-shadow:0 2px 8px #3b82f614}.kpi-card.clickable:hover .kpi-arrow{color:#3b82f6;transform:translate(2px)}.kpi-arrow{position:absolute;bottom:14px;right:14px;color:#94a3b8;transition:color .15s ease,transform .15s ease}.kpi-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.green-icon{background:#dcfce7;color:#16a34a}.blue-icon{background:#dbeafe;color:#2563eb}.amber-icon{background:#fef3c7;color:#d97706}.orange-icon{background:#ffedd5;color:#c2410c}.red-icon{background:#fee2e2;color:#dc2626}.slate-icon{background:#f1f5f9;color:#475569}.kpi-label{font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:36px;margin-bottom:4px}.kpi-ring{flex-shrink:0}.kpi-card.ring-corner .kpi-top{display:contents}.kpi-card.ring-corner .kpi-ring{position:absolute;top:12px;right:12px}.kpi-value{font-size:1.5rem;font-weight:700;color:#111827;line-height:1.1}.kpi-value.green-value{color:#16a34a}.kpi-value.blue-value{color:#3b82f6}.kpi-value.red-value{color:#dc2626}.kpi-subtitle{font-size:.75rem;color:#64748b;margin-top:2px}\n"],
29581
29704
  dependencies: [{
29582
29705
  kind: "component",
29583
29706
  type: ProgressRingComponent,
@@ -29618,7 +29741,7 @@ i0.ɵɵngDeclareClassMetadata({
29618
29741
  "(keydown.space)": "onActivateKey($event)"
29619
29742
  },
29620
29743
  template: `
29621
- <div class="kpi-card" [class.highlight]="highlight()" [class.clickable]="clickable()" [style.background]="background() || null">
29744
+ <div class="kpi-card" [class.highlight]="highlight()" [class.clickable]="clickable()" [class.ring-corner]="hasProgress() && !!iconSvg()" [style.background]="background() || null">
29622
29745
  @if (iconSvg()) {
29623
29746
  <div [class]="'kpi-icon ' + color() + '-icon'" aria-hidden="true" [innerHTML]="iconSvg()"></div>
29624
29747
  }
@@ -29644,7 +29767,7 @@ i0.ɵɵngDeclareClassMetadata({
29644
29767
  }
29645
29768
  </div>
29646
29769
  `,
29647
- styles: [":host{display:block;height:100%}.kpi-card{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;height:100%;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}:host(:focus){outline:none}:host(:focus-visible) .kpi-card{outline:2px solid #3b82f6;outline-offset:2px}.kpi-card.clickable{cursor:pointer}.kpi-card.clickable:hover{border-color:#93c5fd;box-shadow:0 2px 8px #3b82f614}.kpi-card.clickable:hover .kpi-arrow{color:#3b82f6;transform:translate(2px)}.kpi-arrow{position:absolute;bottom:14px;right:14px;color:#94a3b8;transition:color .15s ease,transform .15s ease}.kpi-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.green-icon{background:#dcfce7;color:#16a34a}.blue-icon{background:#dbeafe;color:#2563eb}.amber-icon{background:#fef3c7;color:#d97706}.orange-icon{background:#ffedd5;color:#c2410c}.red-icon{background:#fee2e2;color:#dc2626}.slate-icon{background:#f1f5f9;color:#475569}.kpi-label{font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:36px;margin-bottom:4px}.kpi-ring{flex-shrink:0}.kpi-value{font-size:1.5rem;font-weight:700;color:#111827;line-height:1.1}.kpi-value.green-value{color:#16a34a}.kpi-value.blue-value{color:#3b82f6}.kpi-value.red-value{color:#dc2626}.kpi-subtitle{font-size:.75rem;color:#64748b;margin-top:2px}\n"]
29770
+ styles: [":host{display:block;height:100%}.kpi-card{position:relative;background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:4px;min-width:0;height:100%;box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}:host(:focus){outline:none}:host(:focus-visible) .kpi-card{outline:2px solid #3b82f6;outline-offset:2px}.kpi-card.clickable{cursor:pointer}.kpi-card.clickable:hover{border-color:#93c5fd;box-shadow:0 2px 8px #3b82f614}.kpi-card.clickable:hover .kpi-arrow{color:#3b82f6;transform:translate(2px)}.kpi-arrow{position:absolute;bottom:14px;right:14px;color:#94a3b8;transition:color .15s ease,transform .15s ease}.kpi-icon{flex-shrink:0;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.green-icon{background:#dcfce7;color:#16a34a}.blue-icon{background:#dbeafe;color:#2563eb}.amber-icon{background:#fef3c7;color:#d97706}.orange-icon{background:#ffedd5;color:#c2410c}.red-icon{background:#fee2e2;color:#dc2626}.slate-icon{background:#f1f5f9;color:#475569}.kpi-label{font-size:.75rem;font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.kpi-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;min-height:36px;margin-bottom:4px}.kpi-ring{flex-shrink:0}.kpi-card.ring-corner .kpi-top{display:contents}.kpi-card.ring-corner .kpi-ring{position:absolute;top:12px;right:12px}.kpi-value{font-size:1.5rem;font-weight:700;color:#111827;line-height:1.1}.kpi-value.green-value{color:#16a34a}.kpi-value.blue-value{color:#3b82f6}.kpi-value.red-value{color:#dc2626}.kpi-subtitle{font-size:.75rem;color:#64748b;margin-top:2px}\n"]
29648
29771
  }]
29649
29772
  }],
29650
29773
  propDecorators: {
@@ -33327,7 +33450,7 @@ var DetailCardComponent = class DetailCardComponent {
33327
33450
  </div>
33328
33451
  `,
33329
33452
  isInline: true,
33330
- styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.75rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"],
33453
+ styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.75rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"],
33331
33454
  dependencies: [{
33332
33455
  kind: "component",
33333
33456
  type: ButtonComponent,
@@ -33426,7 +33549,7 @@ i0.ɵɵngDeclareClassMetadata({
33426
33549
  </div>
33427
33550
  </div>
33428
33551
  `,
33429
- styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.75rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"]
33552
+ styles: [":host{display:block;margin-bottom:16px}:host(:last-child){margin-bottom:0}:host(.dc-fill-host){height:100%;margin-bottom:0}.dc.dc-fill{height:100%;box-sizing:border-box;display:flex;flex-direction:column}.dc.dc-fill .dc-body-wrap{flex:1 1 auto;min-height:0}.dc.dc-fill .dc-body{display:flex;flex-direction:column}.dc-selectable{cursor:pointer}.dc-selected{outline:2px solid #3b82f6;outline-offset:-1px}.dc{background:#fff;border:1px solid #e2e8f0;border-radius:10px;overflow:hidden}.dc-header{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;padding:14px 18px}.dc-header.open{border-bottom:1px solid #f1f5f9}.dc-header.collapsible{cursor:pointer;-webkit-user-select:none;user-select:none}@media(hover:hover){.dc-header.collapsible:hover{background:#f8fafc}}.dc-chevron{flex-shrink:0;color:var(--dc-text, #64748b)}.dc-chevron svg{transition:transform .2s}.dc-chevron svg.rotated{transform:rotate(-90deg)}.dc-header-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.dc-title{font-size:.8125rem;font-weight:800;letter-spacing:.07em;color:var(--dc-text, #1e293b);line-height:1.3;text-transform:uppercase}.dc-title--as-written{text-transform:none}.dc-subtitle{font-size:.75rem;color:var(--dc-text, #475569)}.dc-has-text-color .dc-subtitle{opacity:.8}.dc-has-text-color .dc-header.open{border-bottom-color:#94a3b859}.dc-edit{flex-shrink:0;margin-left:auto}.dc-edit ::ng-deep button{font-size:.8rem;font-weight:500;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;gap:5px}.dc-edit ::ng-deep button:hover{background:#f1f5f9;color:#1e293b}.dc-body-wrap{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s ease}.dc-body-wrap.collapsed{grid-template-rows:0fr}.dc-body{padding:16px 18px;min-height:0;overflow:hidden}@media(max-width:480px){.dc-header{padding:12px 14px}.dc-body{padding:14px}.dc-edit{margin-left:0}}@media(prefers-reduced-motion:reduce){.dc-body-wrap,.dc-chevron svg{transition:none}}\n"]
33430
33553
  }]
33431
33554
  }],
33432
33555
  propDecorators: {
@@ -34362,6 +34485,9 @@ var SectionHeaderComponent = class SectionHeaderComponent {
34362
34485
  this.iconBackground = input("", ...ngDevMode ? [{ debugName: "iconBackground" }] : /* istanbul ignore next */ []);
34363
34486
  this.bordered = input(false, ...ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []);
34364
34487
  this.size = input("md", ...ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []);
34488
+ this.noPaddingTop = input(false, ...ngDevMode ? [{ debugName: "noPaddingTop" }] : /* istanbul ignore next */ []);
34489
+ this.noPaddingLeft = input(false, ...ngDevMode ? [{ debugName: "noPaddingLeft" }] : /* istanbul ignore next */ []);
34490
+ this.noPaddingBottom = input(false, ...ngDevMode ? [{ debugName: "noPaddingBottom" }] : /* istanbul ignore next */ []);
34365
34491
  this.titleId = `ui-sh-title-${++nextSectionHeaderId}`;
34366
34492
  this.descriptionId = `ui-sh-desc-${nextSectionHeaderId}`;
34367
34493
  this.headingLevel = computed(() => {
@@ -34457,12 +34583,34 @@ var SectionHeaderComponent = class SectionHeaderComponent {
34457
34583
  isSignal: true,
34458
34584
  isRequired: false,
34459
34585
  transformFunction: null
34586
+ },
34587
+ noPaddingTop: {
34588
+ classPropertyName: "noPaddingTop",
34589
+ publicName: "noPaddingTop",
34590
+ isSignal: true,
34591
+ isRequired: false,
34592
+ transformFunction: null
34593
+ },
34594
+ noPaddingLeft: {
34595
+ classPropertyName: "noPaddingLeft",
34596
+ publicName: "noPaddingLeft",
34597
+ isSignal: true,
34598
+ isRequired: false,
34599
+ transformFunction: null
34600
+ },
34601
+ noPaddingBottom: {
34602
+ classPropertyName: "noPaddingBottom",
34603
+ publicName: "noPaddingBottom",
34604
+ isSignal: true,
34605
+ isRequired: false,
34606
+ transformFunction: null
34460
34607
  }
34461
34608
  },
34462
34609
  host: { properties: { "attr.title": "null" } },
34463
34610
  ngImport: i0,
34464
34611
  template: `
34465
34612
  <div class="sh" [class.sh-sm]="size() === 'sm'" [class.sh-lg]="size() === 'lg'" [class.sh-xl]="size() === 'xl'" [class.sh-has-bg]="!!background()" [class.sh-has-text-color]="!!textColor()" [class.sh-bordered]="bordered()"
34613
+ [class.sh-no-pt]="noPaddingTop()" [class.sh-no-pl]="noPaddingLeft()" [class.sh-no-pb]="noPaddingBottom()"
34466
34614
  [style.--sh-bg]="background() || null" [style.--sh-text]="textColor() || null" [style.--sh-icon]="iconColor() || null" [style.--sh-icon-bg]="iconBackground() || null">
34467
34615
  <span class="sh-icon" aria-hidden="true"><ng-content select="[section-header-icon]" />@if (path(); as d) {<svg class="sh-glyph" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>}</span>
34468
34616
  <div class="sh-text">
@@ -34473,7 +34621,7 @@ var SectionHeaderComponent = class SectionHeaderComponent {
34473
34621
  </div>
34474
34622
  `,
34475
34623
  isInline: true,
34476
- styles: [":host{display:block}.sh{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;box-sizing:border-box;padding:14px 18px;background:var(--sh-bg, transparent)}.sh-has-bg{border-radius:10px}.sh-bordered{border:1px solid #e2e8f0;border-radius:10px}.sh-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;background:var(--sh-icon-bg, #f1f5f9);color:var(--sh-icon, #2563eb)}.sh-has-bg .sh-icon{background:var(--sh-icon-bg, #fff)}.sh-icon:empty{display:none}.sh-glyph,.sh-icon ::ng-deep svg{display:block;width:16px;height:16px}.sh-icon ::ng-deep [section-header-icon]~.sh-glyph{display:none}.sh-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.sh-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3;color:var(--sh-text, #0f172a)}.sh-description{margin:0;font-size:.8125rem;line-height:1.45;color:#64748b}.sh-has-bg .sh-description{color:#475569}.sh-has-text-color .sh-description{color:var(--sh-text);opacity:.8}.sh-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex-shrink:0;margin-left:auto}.sh-actions:empty{display:none}.sh-sm{gap:6px 10px}.sh-sm .sh-icon{width:24px;height:24px;border-radius:6px}.sh-sm .sh-glyph,.sh-sm .sh-icon ::ng-deep svg{width:14px;height:14px}.sh-sm .sh-title{font-size:.875rem}.sh-sm .sh-description{font-size:.75rem}.sh-lg{gap:8px 14px;padding:18px 22px}.sh-lg .sh-icon{width:36px;height:36px;border-radius:10px}.sh-lg .sh-glyph,.sh-lg .sh-icon ::ng-deep svg{width:20px;height:20px}.sh-lg .sh-title{font-size:1.25rem}.sh-lg .sh-description{font-size:.9375rem}.sh-xl{gap:10px 16px;padding:22px 26px}.sh-xl .sh-icon{width:44px;height:44px;border-radius:12px}.sh-xl .sh-glyph,.sh-xl .sh-icon ::ng-deep svg{width:24px;height:24px}.sh-xl .sh-title{font-size:1.5rem}.sh-xl .sh-description{font-size:1rem}@media(max-width:480px){.sh{padding:12px 14px}.sh-lg{padding:14px 16px}.sh-xl{padding:16px 18px}.sh-xl .sh-title{font-size:1.375rem}.sh-actions{flex:1 1 100%;margin-left:0;flex-shrink:1}}\n"],
34624
+ styles: [":host{display:block}.sh{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;box-sizing:border-box;padding:14px 18px;background:var(--sh-bg, transparent)}.sh-has-bg{border-radius:10px}.sh-bordered{border:1px solid #e2e8f0;border-radius:10px}.sh-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;background:var(--sh-icon-bg, #f1f5f9);color:var(--sh-icon, #2563eb)}.sh-has-bg .sh-icon{background:var(--sh-icon-bg, #fff)}.sh-icon:empty{display:none}.sh-glyph,.sh-icon ::ng-deep svg{display:block;width:16px;height:16px}.sh-icon ::ng-deep [section-header-icon]~.sh-glyph{display:none}.sh-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.sh-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3;color:var(--sh-text, #0f172a)}.sh-description{margin:0;font-size:.8125rem;line-height:1.45;color:#64748b}.sh-has-bg .sh-description{color:#475569}.sh-has-text-color .sh-description{color:var(--sh-text);opacity:.8}.sh-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex-shrink:0;margin-left:auto}.sh-actions:empty{display:none}.sh-sm{gap:6px 10px}.sh-sm .sh-icon{width:24px;height:24px;border-radius:6px}.sh-sm .sh-glyph,.sh-sm .sh-icon ::ng-deep svg{width:14px;height:14px}.sh-sm .sh-title{font-size:.875rem}.sh-sm .sh-description{font-size:.75rem}.sh-lg{gap:8px 14px;padding:18px 22px}.sh-lg .sh-icon{width:36px;height:36px;border-radius:10px}.sh-lg .sh-glyph,.sh-lg .sh-icon ::ng-deep svg{width:20px;height:20px}.sh-lg .sh-title{font-size:1.25rem}.sh-lg .sh-description{font-size:.9375rem}.sh-xl{gap:10px 16px;padding:22px 26px}.sh-xl .sh-icon{width:44px;height:44px;border-radius:12px}.sh-xl .sh-glyph,.sh-xl .sh-icon ::ng-deep svg{width:24px;height:24px}.sh-xl .sh-title{font-size:1.5rem}.sh-xl .sh-description{font-size:1rem}.sh.sh-no-pt{padding-top:0}.sh.sh-no-pl{padding-left:0}.sh.sh-no-pb{padding-bottom:0}@media(max-width:480px){.sh{padding:12px 14px}.sh-lg{padding:14px 16px}.sh-xl{padding:16px 18px}.sh-xl .sh-title{font-size:1.375rem}.sh-actions{flex:1 1 100%;margin-left:0;flex-shrink:1}}\n"],
34477
34625
  changeDetection: i0.ChangeDetectionStrategy.OnPush
34478
34626
  });
34479
34627
  }
@@ -34492,6 +34640,7 @@ i0.ɵɵngDeclareClassMetadata({
34492
34640
  host: { "[attr.title]": "null" },
34493
34641
  template: `
34494
34642
  <div class="sh" [class.sh-sm]="size() === 'sm'" [class.sh-lg]="size() === 'lg'" [class.sh-xl]="size() === 'xl'" [class.sh-has-bg]="!!background()" [class.sh-has-text-color]="!!textColor()" [class.sh-bordered]="bordered()"
34643
+ [class.sh-no-pt]="noPaddingTop()" [class.sh-no-pl]="noPaddingLeft()" [class.sh-no-pb]="noPaddingBottom()"
34495
34644
  [style.--sh-bg]="background() || null" [style.--sh-text]="textColor() || null" [style.--sh-icon]="iconColor() || null" [style.--sh-icon-bg]="iconBackground() || null">
34496
34645
  <span class="sh-icon" aria-hidden="true"><ng-content select="[section-header-icon]" />@if (path(); as d) {<svg class="sh-glyph" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false"><path [attr.d]="d" /></svg>}</span>
34497
34646
  <div class="sh-text">
@@ -34501,7 +34650,7 @@ i0.ɵɵngDeclareClassMetadata({
34501
34650
  <div class="sh-actions"><ng-content select="[section-header-actions]" /></div>
34502
34651
  </div>
34503
34652
  `,
34504
- styles: [":host{display:block}.sh{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;box-sizing:border-box;padding:14px 18px;background:var(--sh-bg, transparent)}.sh-has-bg{border-radius:10px}.sh-bordered{border:1px solid #e2e8f0;border-radius:10px}.sh-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;background:var(--sh-icon-bg, #f1f5f9);color:var(--sh-icon, #2563eb)}.sh-has-bg .sh-icon{background:var(--sh-icon-bg, #fff)}.sh-icon:empty{display:none}.sh-glyph,.sh-icon ::ng-deep svg{display:block;width:16px;height:16px}.sh-icon ::ng-deep [section-header-icon]~.sh-glyph{display:none}.sh-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.sh-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3;color:var(--sh-text, #0f172a)}.sh-description{margin:0;font-size:.8125rem;line-height:1.45;color:#64748b}.sh-has-bg .sh-description{color:#475569}.sh-has-text-color .sh-description{color:var(--sh-text);opacity:.8}.sh-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex-shrink:0;margin-left:auto}.sh-actions:empty{display:none}.sh-sm{gap:6px 10px}.sh-sm .sh-icon{width:24px;height:24px;border-radius:6px}.sh-sm .sh-glyph,.sh-sm .sh-icon ::ng-deep svg{width:14px;height:14px}.sh-sm .sh-title{font-size:.875rem}.sh-sm .sh-description{font-size:.75rem}.sh-lg{gap:8px 14px;padding:18px 22px}.sh-lg .sh-icon{width:36px;height:36px;border-radius:10px}.sh-lg .sh-glyph,.sh-lg .sh-icon ::ng-deep svg{width:20px;height:20px}.sh-lg .sh-title{font-size:1.25rem}.sh-lg .sh-description{font-size:.9375rem}.sh-xl{gap:10px 16px;padding:22px 26px}.sh-xl .sh-icon{width:44px;height:44px;border-radius:12px}.sh-xl .sh-glyph,.sh-xl .sh-icon ::ng-deep svg{width:24px;height:24px}.sh-xl .sh-title{font-size:1.5rem}.sh-xl .sh-description{font-size:1rem}@media(max-width:480px){.sh{padding:12px 14px}.sh-lg{padding:14px 16px}.sh-xl{padding:16px 18px}.sh-xl .sh-title{font-size:1.375rem}.sh-actions{flex:1 1 100%;margin-left:0;flex-shrink:1}}\n"]
34653
+ styles: [":host{display:block}.sh{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;box-sizing:border-box;padding:14px 18px;background:var(--sh-bg, transparent)}.sh-has-bg{border-radius:10px}.sh-bordered{border:1px solid #e2e8f0;border-radius:10px}.sh-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;background:var(--sh-icon-bg, #f1f5f9);color:var(--sh-icon, #2563eb)}.sh-has-bg .sh-icon{background:var(--sh-icon-bg, #fff)}.sh-icon:empty{display:none}.sh-glyph,.sh-icon ::ng-deep svg{display:block;width:16px;height:16px}.sh-icon ::ng-deep [section-header-icon]~.sh-glyph{display:none}.sh-text{display:flex;flex-direction:column;gap:2px;flex:1 1 160px;min-width:0;word-break:break-word;overflow-wrap:anywhere}.sh-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3;color:var(--sh-text, #0f172a)}.sh-description{margin:0;font-size:.8125rem;line-height:1.45;color:#64748b}.sh-has-bg .sh-description{color:#475569}.sh-has-text-color .sh-description{color:var(--sh-text);opacity:.8}.sh-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;flex-shrink:0;margin-left:auto}.sh-actions:empty{display:none}.sh-sm{gap:6px 10px}.sh-sm .sh-icon{width:24px;height:24px;border-radius:6px}.sh-sm .sh-glyph,.sh-sm .sh-icon ::ng-deep svg{width:14px;height:14px}.sh-sm .sh-title{font-size:.875rem}.sh-sm .sh-description{font-size:.75rem}.sh-lg{gap:8px 14px;padding:18px 22px}.sh-lg .sh-icon{width:36px;height:36px;border-radius:10px}.sh-lg .sh-glyph,.sh-lg .sh-icon ::ng-deep svg{width:20px;height:20px}.sh-lg .sh-title{font-size:1.25rem}.sh-lg .sh-description{font-size:.9375rem}.sh-xl{gap:10px 16px;padding:22px 26px}.sh-xl .sh-icon{width:44px;height:44px;border-radius:12px}.sh-xl .sh-glyph,.sh-xl .sh-icon ::ng-deep svg{width:24px;height:24px}.sh-xl .sh-title{font-size:1.5rem}.sh-xl .sh-description{font-size:1rem}.sh.sh-no-pt{padding-top:0}.sh.sh-no-pl{padding-left:0}.sh.sh-no-pb{padding-bottom:0}@media(max-width:480px){.sh{padding:12px 14px}.sh-lg{padding:14px 16px}.sh-xl{padding:16px 18px}.sh-xl .sh-title{font-size:1.375rem}.sh-actions{flex:1 1 100%;margin-left:0;flex-shrink:1}}\n"]
34505
34654
  }]
34506
34655
  }],
34507
34656
  propDecorators: {
@@ -34584,6 +34733,30 @@ i0.ɵɵngDeclareClassMetadata({
34584
34733
  alias: "size",
34585
34734
  required: false
34586
34735
  }]
34736
+ }],
34737
+ noPaddingTop: [{
34738
+ type: i0.Input,
34739
+ args: [{
34740
+ isSignal: true,
34741
+ alias: "noPaddingTop",
34742
+ required: false
34743
+ }]
34744
+ }],
34745
+ noPaddingLeft: [{
34746
+ type: i0.Input,
34747
+ args: [{
34748
+ isSignal: true,
34749
+ alias: "noPaddingLeft",
34750
+ required: false
34751
+ }]
34752
+ }],
34753
+ noPaddingBottom: [{
34754
+ type: i0.Input,
34755
+ args: [{
34756
+ isSignal: true,
34757
+ alias: "noPaddingBottom",
34758
+ required: false
34759
+ }]
34587
34760
  }]
34588
34761
  }
34589
34762
  });