@forgeroute/ui 0.4.19 → 0.4.20

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.
@@ -4742,6 +4742,7 @@ var TextInputComponent = class TextInputComponent {
4742
4742
  constructor() {
4743
4743
  this.label = input("", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
4744
4744
  this.ariaLabel = input("", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
4745
+ this.inputTestId = input("", ...ngDevMode ? [{ debugName: "inputTestId" }] : /* istanbul ignore next */ []);
4745
4746
  this.placeholder = input("", ...ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []);
4746
4747
  this.prefix = input("", ...ngDevMode ? [{ debugName: "prefix" }] : /* istanbul ignore next */ []);
4747
4748
  this.revealable = input(false, ...ngDevMode ? [{ debugName: "revealable" }] : /* istanbul ignore next */ []);
@@ -4973,6 +4974,13 @@ var TextInputComponent = class TextInputComponent {
4973
4974
  isRequired: false,
4974
4975
  transformFunction: null
4975
4976
  },
4977
+ inputTestId: {
4978
+ classPropertyName: "inputTestId",
4979
+ publicName: "inputTestId",
4980
+ isSignal: true,
4981
+ isRequired: false,
4982
+ transformFunction: null
4983
+ },
4976
4984
  placeholder: {
4977
4985
  classPropertyName: "placeholder",
4978
4986
  publicName: "placeholder",
@@ -5163,16 +5171,20 @@ var TextInputComponent = class TextInputComponent {
5163
5171
  <div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
5164
5172
  [class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
5165
5173
  @if (label()) {
5166
- <label class="ti-label" [for]="_inputId">
5167
- {{ label() }}
5168
- @if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
5169
- </label>
5174
+ <div class="ti-label-row">
5175
+ <label class="ti-label" [for]="_inputId">
5176
+ {{ label() }}
5177
+ @if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
5178
+ </label>
5179
+ <ng-content select="[uiLabelEnd]" />
5180
+ </div>
5170
5181
  }
5171
5182
  <input
5172
5183
  class="ti-input"
5173
5184
  [style.padding-left]="_prefixPadding()"
5174
5185
  [style.padding-right]="_revealable() ? '44px' : null"
5175
5186
  [id]="_inputId"
5187
+ [attr.data-testid]="inputTestId() || null"
5176
5188
  [type]="_inputType()"
5177
5189
  [attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
5178
5190
  [placeholder]="placeholder()"
@@ -5214,7 +5226,7 @@ var TextInputComponent = class TextInputComponent {
5214
5226
  </div>
5215
5227
  `,
5216
5228
  isInline: true,
5217
- styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
5229
+ styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"],
5218
5230
  dependencies: [{
5219
5231
  kind: "component",
5220
5232
  type: PasswordRequirementsComponent,
@@ -5261,16 +5273,20 @@ i0.ɵɵngDeclareClassMetadata({
5261
5273
  <div class="ti-field" [class.ti-error]="_activeError()" [class.ti-disabled]="disabled()"
5262
5274
  [class.ti-prefixed]="!!prefix() || _revealable()" [style.--ti-input-row]="(prefix() || _revealable()) ? (label() ? 2 : 1) : null">
5263
5275
  @if (label()) {
5264
- <label class="ti-label" [for]="_inputId">
5265
- {{ label() }}
5266
- @if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
5267
- </label>
5276
+ <div class="ti-label-row">
5277
+ <label class="ti-label" [for]="_inputId">
5278
+ {{ label() }}
5279
+ @if (required()) { <span class="ti-required" aria-hidden="true">*</span> }
5280
+ </label>
5281
+ <ng-content select="[uiLabelEnd]" />
5282
+ </div>
5268
5283
  }
5269
5284
  <input
5270
5285
  class="ti-input"
5271
5286
  [style.padding-left]="_prefixPadding()"
5272
5287
  [style.padding-right]="_revealable() ? '44px' : null"
5273
5288
  [id]="_inputId"
5289
+ [attr.data-testid]="inputTestId() || null"
5274
5290
  [type]="_inputType()"
5275
5291
  [attr.inputmode]="inputmode() || (type() === 'tel' ? 'tel' : integer() ? 'numeric' : null)"
5276
5292
  [placeholder]="placeholder()"
@@ -5311,7 +5327,7 @@ i0.ɵɵngDeclareClassMetadata({
5311
5327
  }
5312
5328
  </div>
5313
5329
  `,
5314
- styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
5330
+ styles: [":host{display:block}.ti-field{display:flex;flex-direction:column;gap:6px}.ti-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.ti-label-row>[uiLabelEnd]{margin-left:auto}.ti-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ti-required{color:#dc2626;margin-left:2px}.ti-prefixed{display:grid;grid-template-columns:minmax(0,1fr)}.ti-prefixed .ti-input{grid-row:var(--ti-input-row);grid-column:1}.ti-prefix{grid-row:var(--ti-input-row);grid-column:1;justify-self:start;align-self:center;margin-left:12px;font-size:.875rem;line-height:1;color:#64748b;pointer-events:none}@media(max-width:480px){.ti-prefix{font-size:1rem}}.ti-disabled .ti-prefix{opacity:.5}.ti-reveal{grid-row:var(--ti-input-row);grid-column:1;justify-self:end;align-self:center;margin-right:6px;position:relative;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:6px;background:transparent;color:#64748b;cursor:pointer}.ti-reveal:hover:not(:disabled){color:#1e293b;background:#f1f5f9}.ti-reveal:focus-visible{outline:2px solid #3b82f6;outline-offset:0}.ti-reveal:disabled{opacity:.5;cursor:not-allowed}@media(pointer:coarse),(max-width:480px){.ti-reveal{width:44px;height:44px;margin-right:0}}.ti-input{width:100%;box-sizing:border-box;padding:9px 12px;font-size:.875rem;font-family:inherit;color:#1e293b;background:#fff;border:1px solid #e2e8f0;border-radius:8px;outline:none;transition:border-color .15s,box-shadow .15s}.ti-input::placeholder{color:#94a3b8}.ti-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ti-input:read-only{background:#f8fafc;cursor:default}.ti-error .ti-input{border-color:#ef4444}.ti-error .ti-input:focus{box-shadow:0 0 0 3px #ef44441f}.ti-disabled .ti-input{opacity:.5;cursor:not-allowed}.ti-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ti-desc-error{color:#dc2626}@media(max-width:480px){.ti-input{font-size:1rem}}@media(pointer:coarse),(max-width:480px){.ti-input{min-height:44px}}\n"]
5315
5331
  }]
5316
5332
  }],
5317
5333
  ctorParameters: () => [],
@@ -5332,6 +5348,14 @@ i0.ɵɵngDeclareClassMetadata({
5332
5348
  required: false
5333
5349
  }]
5334
5350
  }],
5351
+ inputTestId: [{
5352
+ type: i0.Input,
5353
+ args: [{
5354
+ isSignal: true,
5355
+ alias: "inputTestId",
5356
+ required: false
5357
+ }]
5358
+ }],
5335
5359
  placeholder: [{
5336
5360
  type: i0.Input,
5337
5361
  args: [{
@@ -5987,6 +6011,7 @@ var TableToolbarComponent = class TableToolbarComponent {
5987
6011
  inputs: [
5988
6012
  "label",
5989
6013
  "ariaLabel",
6014
+ "inputTestId",
5990
6015
  "placeholder",
5991
6016
  "prefix",
5992
6017
  "revealable",
@@ -17205,6 +17230,7 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
17205
17230
  inputs: [
17206
17231
  "label",
17207
17232
  "ariaLabel",
17233
+ "inputTestId",
17208
17234
  "placeholder",
17209
17235
  "prefix",
17210
17236
  "revealable",
@@ -19349,6 +19375,7 @@ var BulkMessagePanelComponent = class BulkMessagePanelComponent {
19349
19375
  inputs: [
19350
19376
  "label",
19351
19377
  "ariaLabel",
19378
+ "inputTestId",
19352
19379
  "placeholder",
19353
19380
  "prefix",
19354
19381
  "revealable",
@@ -24562,7 +24589,7 @@ var ListItemComponent = class ListItemComponent {
24562
24589
  </div>
24563
24590
  `,
24564
24591
  isInline: true,
24565
- styles: ["ui-list-item{display:block}ui-list-item(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);margin-bottom:8px;&: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;ui-list-item(.li-bordered) &{border-bottom:none}}.li-row:last-child{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 [list-item-action],.li-row [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"],
24592
+ styles: ["ui-list-item{display:block}ui-list-item.li-bordered{border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);box-shadow:0 1px 2px #0f172a0a;margin-bottom:8px;transition:border-color .15s ease,box-shadow .15s ease}ui-list-item.li-bordered:last-child{margin-bottom:0}ui-list-item.li-bordered:hover{border-color:#cbd5e1;box-shadow:0 2px 6px #0f172a12}@media(prefers-reduced-motion:reduce){ui-list-item.li-bordered{transition:none}}.li-row{display:flex;align-items:flex-start;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}ui-list-item.li-bordered .li-row{border-bottom:none;padding:14px 16px}.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 [list-item-action],.li-row [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:40px;height:40px;border-radius:12px}.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:6px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.4;letter-spacing:-.005em;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:3px;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"],
24566
24593
  dependencies: [{
24567
24594
  kind: "component",
24568
24595
  type: BadgeComponent,
@@ -24662,7 +24689,7 @@ i0.ɵɵngDeclareClassMetadata({
24662
24689
 
24663
24690
  </div>
24664
24691
  `,
24665
- styles: ["ui-list-item{display:block}ui-list-item(.li-bordered){border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);margin-bottom:8px;&: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;ui-list-item(.li-bordered) &{border-bottom:none}}.li-row:last-child{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 [list-item-action],.li-row [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"]
24692
+ styles: ["ui-list-item{display:block}ui-list-item.li-bordered{border:1px solid var(--border, #e2e8f0);border-radius:12px;overflow:hidden;background:var(--surface, #fff);box-shadow:0 1px 2px #0f172a0a;margin-bottom:8px;transition:border-color .15s ease,box-shadow .15s ease}ui-list-item.li-bordered:last-child{margin-bottom:0}ui-list-item.li-bordered:hover{border-color:#cbd5e1;box-shadow:0 2px 6px #0f172a12}@media(prefers-reduced-motion:reduce){ui-list-item.li-bordered{transition:none}}.li-row{display:flex;align-items:flex-start;gap:14px;padding:12px 16px;border-bottom:1px solid var(--border, #e2e8f0);transition:background .12s}.li-row:last-child{border-bottom:none}.li-row:hover{background:var(--surface-hover, #f8fafc)}ui-list-item.li-bordered .li-row{border-bottom:none;padding:14px 16px}.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 [list-item-action],.li-row [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:40px;height:40px;border-radius:12px}.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:6px}.li-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.li-title{font-size:.9375rem;font-weight:600;line-height:1.4;letter-spacing:-.005em;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:3px;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"]
24666
24693
  }]
24667
24694
  }],
24668
24695
  propDecorators: {
@@ -25346,7 +25373,7 @@ var ListComponent = class ListComponent {
25346
25373
  }
25347
25374
  `,
25348
25375
  isInline: true,
25349
- styles: ["ui-list{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;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav>.ul-row{padding-inline-end:16px}.ul-item--nav:hover .ul-chevron{color:#0f172a}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .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}ui-list .ul-item--draggable img,ui-list .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"],
25376
+ styles: ["ui-list{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;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav:hover:has(>.ul-row>.ul-content>ui-list-item.li-bordered){background:transparent}.ul-item--nav>.ul-row{padding-inline-end:8px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(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;transform:none!important}}.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}ui-list .ul-item--draggable img,ui-list .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"],
25350
25377
  dependencies: [{
25351
25378
  kind: "directive",
25352
25379
  type: NgTemplateOutlet,
@@ -25474,7 +25501,7 @@ i0.ɵɵngDeclareClassMetadata({
25474
25501
  <div class="ul-sr" role="status" aria-live="polite" aria-atomic="true">{{ announcement() }}</div>
25475
25502
  }
25476
25503
  `,
25477
- styles: ["ui-list{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;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav>.ul-row{padding-inline-end:16px}.ul-item--nav:hover .ul-chevron{color:#0f172a}.ul-chevron{flex:0 0 auto;color:#94a3b8;transition:color .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}ui-list .ul-item--draggable img,ui-list .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"]
25504
+ styles: ["ui-list{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;transition:background-color .12s ease}.ul-item--nav:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.ul-item--nav:hover{background:var(--surface-hover, #f8fafc)}.ul-item--nav:hover:has(>.ul-row>.ul-content>ui-list-item.li-bordered){background:transparent}.ul-item--nav>.ul-row{padding-inline-end:8px}.ul-item--nav:hover .ul-chevron{color:#0f172a;transform:translate(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;transform:none!important}}.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}ui-list .ul-item--draggable img,ui-list .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"]
25478
25505
  }]
25479
25506
  }],
25480
25507
  propDecorators: {
@@ -33509,7 +33536,7 @@ var DetailCardComponent = class DetailCardComponent {
33509
33536
  },
33510
33537
  ngImport: i0,
33511
33538
  template: `
33512
- <div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
33539
+ <div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-has-bg]="!!((selectable() && selected() && selectedBackground()) || background())" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
33513
33540
  [style.outline-color]="selectable() && selected() ? selectedColor() : null"
33514
33541
  [style.background]="(selectable() && selected() && selectedBackground()) || background() || null" (click)="onCardClick($event)"
33515
33542
  [style.color]="textColor() || null" [style.--dc-text]="textColor() || null">
@@ -33554,7 +33581,7 @@ var DetailCardComponent = class DetailCardComponent {
33554
33581
  </div>
33555
33582
  `,
33556
33583
  isInline: true,
33557
- 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-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.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"],
33584
+ 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-has-bg .dc-header.open{border-bottom-color:#94a3b859}.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-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.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"],
33558
33585
  dependencies: [{
33559
33586
  kind: "component",
33560
33587
  type: ButtonComponent,
@@ -33609,7 +33636,7 @@ i0.ɵɵngDeclareClassMetadata({
33609
33636
  "[attr.aria-label]": "groupLabel()"
33610
33637
  },
33611
33638
  template: `
33612
- <div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
33639
+ <div class="dc" [class.dc-fill]="fill()" [class.dc-has-text-color]="!!textColor()" [class.dc-has-bg]="!!((selectable() && selected() && selectedBackground()) || background())" [class.dc-selectable]="selectable()" [class.dc-selected]="selectable() && selected()"
33613
33640
  [style.outline-color]="selectable() && selected() ? selectedColor() : null"
33614
33641
  [style.background]="(selectable() && selected() && selectedBackground()) || background() || null" (click)="onCardClick($event)"
33615
33642
  [style.color]="textColor() || null" [style.--dc-text]="textColor() || null">
@@ -33653,7 +33680,7 @@ i0.ɵɵngDeclareClassMetadata({
33653
33680
  </div>
33654
33681
  </div>
33655
33682
  `,
33656
- 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-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.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"]
33683
+ 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-has-bg .dc-header.open{border-bottom-color:#94a3b859}.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-action{display:inline-flex;align-items:center;justify-content:center;gap:5px;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;color:#64748b;background:none;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,color .15s ease}.dc-edit-action:hover{background:#f1f5f9;color:#1e293b}.dc-edit-action:focus-visible{outline:2px solid var(--ui-focus, #3b82f6);outline-offset:2px}@media(pointer:coarse),(max-width:480px){.dc-edit-action{min-height:44px}}.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"]
33657
33684
  }]
33658
33685
  }],
33659
33686
  propDecorators: {
@@ -33951,6 +33978,697 @@ i0.ɵɵngDeclareClassMetadata({
33951
33978
  }]
33952
33979
  }
33953
33980
  });
33981
+ var BoardCardDirective = class BoardCardDirective {
33982
+ constructor() {
33983
+ this.template = inject(TemplateRef);
33984
+ }
33985
+ static ngTemplateContextGuard(_dir, _ctx) {
33986
+ return true;
33987
+ }
33988
+ static {
33989
+ this.ɵfac = i0.ɵɵngDeclareFactory({
33990
+ minVersion: "12.0.0",
33991
+ version: "22.2.2",
33992
+ ngImport: i0,
33993
+ type: BoardCardDirective,
33994
+ deps: [],
33995
+ target: i0.ɵɵFactoryTarget.Directive
33996
+ });
33997
+ }
33998
+ static {
33999
+ this.ɵdir = i0.ɵɵngDeclareDirective({
34000
+ minVersion: "14.0.0",
34001
+ version: "22.2.2",
34002
+ type: BoardCardDirective,
34003
+ isStandalone: true,
34004
+ selector: "ng-template[uiBoardCard]",
34005
+ ngImport: i0
34006
+ });
34007
+ }
34008
+ };
34009
+ i0.ɵɵngDeclareClassMetadata({
34010
+ minVersion: "12.0.0",
34011
+ version: "22.2.2",
34012
+ ngImport: i0,
34013
+ type: BoardCardDirective,
34014
+ decorators: [{
34015
+ type: Directive,
34016
+ args: [{
34017
+ selector: "ng-template[uiBoardCard]",
34018
+ standalone: true
34019
+ }]
34020
+ }]
34021
+ });
34022
+ const DOT_COLORS = {
34023
+ blue: "#3b82f6",
34024
+ cyan: "#06b6d4",
34025
+ green: "#22c55e",
34026
+ teal: "#14b8a6",
34027
+ amber: "#f59e0b",
34028
+ orange: "#f97316",
34029
+ red: "#ef4444",
34030
+ pink: "#ec4899",
34031
+ slate: "#64748b",
34032
+ gray: "#6b7280"
34033
+ };
34034
+ var BoardComponent = class BoardComponent {
34035
+ constructor() {
34036
+ this.columns = input.required(...ngDevMode ? [{ debugName: "columns" }] : /* istanbul ignore next */ []);
34037
+ this.itemKey = input.required(...ngDevMode ? [{ debugName: "itemKey" }] : /* istanbul ignore next */ []);
34038
+ this.itemLabel = input.required(...ngDevMode ? [{ debugName: "itemLabel" }] : /* istanbul ignore next */ []);
34039
+ this.cardActions = input([], ...ngDevMode ? [{ debugName: "cardActions" }] : /* istanbul ignore next */ []);
34040
+ this.loading = input(false, ...ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []);
34041
+ this.error = input(null, ...ngDevMode ? [{ debugName: "error" }] : /* istanbul ignore next */ []);
34042
+ this.readOnly = input(false, ...ngDevMode ? [{ debugName: "readOnly" }] : /* istanbul ignore next */ []);
34043
+ this.moveDisabled = input(false, ...ngDevMode ? [{ debugName: "moveDisabled" }] : /* istanbul ignore next */ []);
34044
+ this.canMove = input(null, ...ngDevMode ? [{ debugName: "canMove" }] : /* istanbul ignore next */ []);
34045
+ this.ariaLabel = input("Board", ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
34046
+ this.emptyMessage = input("Nothing to show.", ...ngDevMode ? [{ debugName: "emptyMessage" }] : /* istanbul ignore next */ []);
34047
+ this.emptyColumnText = input("Nothing here yet", ...ngDevMode ? [{ debugName: "emptyColumnText" }] : /* istanbul ignore next */ []);
34048
+ this.itemNoun = input("item", ...ngDevMode ? [{ debugName: "itemNoun" }] : /* istanbul ignore next */ []);
34049
+ this.itemNounPlural = input("items", ...ngDevMode ? [{ debugName: "itemNounPlural" }] : /* istanbul ignore next */ []);
34050
+ this.retryLabel = input("Retry", ...ngDevMode ? [{ debugName: "retryLabel" }] : /* istanbul ignore next */ []);
34051
+ this.cardClick = output();
34052
+ this.cardAction = output();
34053
+ this.itemMove = output();
34054
+ this.retry = output();
34055
+ this.card = contentChild(BoardCardDirective, ...ngDevMode ? [{ debugName: "card" }] : /* istanbul ignore next */ []);
34056
+ this.cols = linkedSignal(() => this.columns(), ...ngDevMode ? [{ debugName: "cols" }] : /* istanbul ignore next */ []);
34057
+ this.overKey = signal(null, ...ngDevMode ? [{ debugName: "overKey" }] : /* istanbul ignore next */ []);
34058
+ this.draggingKey = signal(null, ...ngDevMode ? [{ debugName: "draggingKey" }] : /* istanbul ignore next */ []);
34059
+ this.announcement = signal("", ...ngDevMode ? [{ debugName: "announcement" }] : /* istanbul ignore next */ []);
34060
+ this.host = inject(ElementRef);
34061
+ this.drag = null;
34062
+ this.skeletonColumns = computed(() => Array.from({ length: Math.max(this.columns().length, 4) }, (_, i) => i), ...ngDevMode ? [{ debugName: "skeletonColumns" }] : /* istanbul ignore next */ []);
34063
+ this.canDrag = computed(() => !this.readOnly() && !this.moveDisabled(), ...ngDevMode ? [{ debugName: "canDrag" }] : /* istanbul ignore next */ []);
34064
+ this.canMoveAny = this.canDrag;
34065
+ }
34066
+ dot(color) {
34067
+ return color && DOT_COLORS[color] || color || "#3b82f6";
34068
+ }
34069
+ onDragStart(event, item, col) {
34070
+ if (!this.canDrag()) {
34071
+ event.preventDefault();
34072
+ return;
34073
+ }
34074
+ this.drag = {
34075
+ item,
34076
+ from: col.key
34077
+ };
34078
+ this.draggingKey.set(this.itemKey()(item));
34079
+ if (event.dataTransfer) {
34080
+ event.dataTransfer.effectAllowed = "move";
34081
+ event.dataTransfer.setData("text/plain", this.itemKey()(item));
34082
+ }
34083
+ }
34084
+ onDragEnd() {
34085
+ this.drag = null;
34086
+ this.draggingKey.set(null);
34087
+ this.overKey.set(null);
34088
+ }
34089
+ onDragOver(event, col) {
34090
+ if (!this.drag || !this.accepts(this.drag.item, this.drag.from, col)) {
34091
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "none";
34092
+ return;
34093
+ }
34094
+ event.preventDefault();
34095
+ if (event.dataTransfer) event.dataTransfer.dropEffect = "move";
34096
+ if (this.overKey() !== col.key) this.overKey.set(col.key);
34097
+ }
34098
+ onDragLeave(event, col) {
34099
+ const related = event.relatedTarget;
34100
+ if ((!related || !event.currentTarget.contains(related)) && this.overKey() === col.key) this.overKey.set(null);
34101
+ }
34102
+ onDrop(event, col) {
34103
+ event.preventDefault();
34104
+ const drag = this.drag;
34105
+ this.onDragEnd();
34106
+ if (drag && this.accepts(drag.item, drag.from, col)) this.move(drag.item, drag.from, col.key);
34107
+ }
34108
+ onCardKey(event, item, col) {
34109
+ if (event.target !== event.currentTarget) return;
34110
+ if (event.key === "Enter" || event.key === " ") {
34111
+ event.preventDefault();
34112
+ this.cardClick.emit(item);
34113
+ return;
34114
+ }
34115
+ if (!event.shiftKey || event.key !== "ArrowLeft" && event.key !== "ArrowRight") return;
34116
+ event.preventDefault();
34117
+ if (!this.canDrag()) return;
34118
+ const cols = this.cols();
34119
+ const step = event.key === "ArrowRight" ? 1 : -1;
34120
+ for (let i = cols.findIndex((c) => c.key === col.key) + step; i >= 0 && i < cols.length; i += step) if (this.accepts(item, col.key, cols[i])) {
34121
+ this.move(item, col.key, cols[i].key);
34122
+ this.announcement.set(`${this.itemLabel()(item)} moved to ${cols[i].label}`);
34123
+ const key = this.itemKey()(item);
34124
+ setTimeout(() => {
34125
+ const cards = this.host.nativeElement.querySelectorAll(".ub-card");
34126
+ Array.from(cards).find((c) => c.dataset["boardKey"] === key)?.focus();
34127
+ });
34128
+ return;
34129
+ }
34130
+ }
34131
+ accepts(item, from, to) {
34132
+ if (from === to.key || to.dropDisabled || this.moveDisabled() || this.readOnly()) return false;
34133
+ const rule = this.canMove();
34134
+ return !rule || rule(item, from, to.key);
34135
+ }
34136
+ move(item, from, to) {
34137
+ const before = this.cols();
34138
+ const key = this.itemKey()(item);
34139
+ this.cols.set(before.map((c) => {
34140
+ if (c.key === from) return {
34141
+ ...c,
34142
+ items: c.items.filter((i) => this.itemKey()(i) !== key)
34143
+ };
34144
+ if (c.key === to) return {
34145
+ ...c,
34146
+ items: [item, ...c.items]
34147
+ };
34148
+ return c;
34149
+ }));
34150
+ this.itemMove.emit({
34151
+ item,
34152
+ from,
34153
+ to,
34154
+ revert: () => this.cols.set(before)
34155
+ });
34156
+ }
34157
+ static {
34158
+ this.ɵfac = i0.ɵɵngDeclareFactory({
34159
+ minVersion: "12.0.0",
34160
+ version: "22.2.2",
34161
+ ngImport: i0,
34162
+ type: BoardComponent,
34163
+ deps: [],
34164
+ target: i0.ɵɵFactoryTarget.Component
34165
+ });
34166
+ }
34167
+ static {
34168
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
34169
+ minVersion: "17.0.0",
34170
+ version: "22.2.2",
34171
+ type: BoardComponent,
34172
+ isStandalone: true,
34173
+ selector: "ui-board",
34174
+ inputs: {
34175
+ columns: {
34176
+ classPropertyName: "columns",
34177
+ publicName: "columns",
34178
+ isSignal: true,
34179
+ isRequired: true,
34180
+ transformFunction: null
34181
+ },
34182
+ itemKey: {
34183
+ classPropertyName: "itemKey",
34184
+ publicName: "itemKey",
34185
+ isSignal: true,
34186
+ isRequired: true,
34187
+ transformFunction: null
34188
+ },
34189
+ itemLabel: {
34190
+ classPropertyName: "itemLabel",
34191
+ publicName: "itemLabel",
34192
+ isSignal: true,
34193
+ isRequired: true,
34194
+ transformFunction: null
34195
+ },
34196
+ cardActions: {
34197
+ classPropertyName: "cardActions",
34198
+ publicName: "cardActions",
34199
+ isSignal: true,
34200
+ isRequired: false,
34201
+ transformFunction: null
34202
+ },
34203
+ loading: {
34204
+ classPropertyName: "loading",
34205
+ publicName: "loading",
34206
+ isSignal: true,
34207
+ isRequired: false,
34208
+ transformFunction: null
34209
+ },
34210
+ error: {
34211
+ classPropertyName: "error",
34212
+ publicName: "error",
34213
+ isSignal: true,
34214
+ isRequired: false,
34215
+ transformFunction: null
34216
+ },
34217
+ readOnly: {
34218
+ classPropertyName: "readOnly",
34219
+ publicName: "readOnly",
34220
+ isSignal: true,
34221
+ isRequired: false,
34222
+ transformFunction: null
34223
+ },
34224
+ moveDisabled: {
34225
+ classPropertyName: "moveDisabled",
34226
+ publicName: "moveDisabled",
34227
+ isSignal: true,
34228
+ isRequired: false,
34229
+ transformFunction: null
34230
+ },
34231
+ canMove: {
34232
+ classPropertyName: "canMove",
34233
+ publicName: "canMove",
34234
+ isSignal: true,
34235
+ isRequired: false,
34236
+ transformFunction: null
34237
+ },
34238
+ ariaLabel: {
34239
+ classPropertyName: "ariaLabel",
34240
+ publicName: "ariaLabel",
34241
+ isSignal: true,
34242
+ isRequired: false,
34243
+ transformFunction: null
34244
+ },
34245
+ emptyMessage: {
34246
+ classPropertyName: "emptyMessage",
34247
+ publicName: "emptyMessage",
34248
+ isSignal: true,
34249
+ isRequired: false,
34250
+ transformFunction: null
34251
+ },
34252
+ emptyColumnText: {
34253
+ classPropertyName: "emptyColumnText",
34254
+ publicName: "emptyColumnText",
34255
+ isSignal: true,
34256
+ isRequired: false,
34257
+ transformFunction: null
34258
+ },
34259
+ itemNoun: {
34260
+ classPropertyName: "itemNoun",
34261
+ publicName: "itemNoun",
34262
+ isSignal: true,
34263
+ isRequired: false,
34264
+ transformFunction: null
34265
+ },
34266
+ itemNounPlural: {
34267
+ classPropertyName: "itemNounPlural",
34268
+ publicName: "itemNounPlural",
34269
+ isSignal: true,
34270
+ isRequired: false,
34271
+ transformFunction: null
34272
+ },
34273
+ retryLabel: {
34274
+ classPropertyName: "retryLabel",
34275
+ publicName: "retryLabel",
34276
+ isSignal: true,
34277
+ isRequired: false,
34278
+ transformFunction: null
34279
+ }
34280
+ },
34281
+ outputs: {
34282
+ cardClick: "cardClick",
34283
+ cardAction: "cardAction",
34284
+ itemMove: "itemMove",
34285
+ retry: "retry"
34286
+ },
34287
+ queries: [{
34288
+ propertyName: "card",
34289
+ first: true,
34290
+ predicate: BoardCardDirective,
34291
+ descendants: true,
34292
+ isSignal: true
34293
+ }],
34294
+ ngImport: i0,
34295
+ template: `
34296
+ <!-- The card's "⋮" menu. Place it in the card's top row: <ng-container [ngTemplateOutlet]="menu" [ngTemplateOutletContext]="{ $implicit: item }" /> -->
34297
+ <ng-template #menuTpl let-item>
34298
+ @if (cardActions().length) {
34299
+ <div class="ub-card__top-right" (click)="$event.stopPropagation()" (keydown)="$event.stopPropagation()">
34300
+ <ui-more-menu [actions]="cardActions()" [ariaLabel]="'Actions for ' + itemLabel()(item)"
34301
+ (actionClick)="cardAction.emit({ type: $event, item })" />
34302
+ </div>
34303
+ }
34304
+ </ng-template>
34305
+ <div class="ub-wrap">
34306
+ @if (loading()) {
34307
+ <div class="ub-skeleton" role="status" [attr.aria-label]="'Loading ' + ariaLabel()">
34308
+ @for (n of skeletonColumns(); track n) {
34309
+ <div class="ub-col-skeleton" aria-hidden="true">
34310
+ <div class="ub-col-skeleton__header"></div>
34311
+ @for (c of [1, 2, 3]; track c) { <div class="ub-col-skeleton__card"></div> }
34312
+ </div>
34313
+ }
34314
+ </div>
34315
+ } @else if (error()) {
34316
+ <div class="ub-message" role="alert">
34317
+ <p>{{ error() }}</p>
34318
+ <ui-button variant="secondary" size="sm" (click)="retry.emit()">{{ retryLabel() }}</ui-button>
34319
+ </div>
34320
+ } @else if (cols().length === 0) {
34321
+ <div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
34322
+ } @else {
34323
+ <div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
34324
+ @for (col of cols(); track col.key) {
34325
+ <div class="ub-col"
34326
+ [class.ub-col--over]="overKey() === col.key"
34327
+ [class.ub-col--success]="col.tone === 'success'"
34328
+ role="group"
34329
+ [attr.aria-label]="col.label + ' — ' + col.items.length + ' ' + (col.items.length === 1 ? itemNoun() : itemNounPlural())"
34330
+ (dragover)="onDragOver($event, col)"
34331
+ (dragleave)="onDragLeave($event, col)"
34332
+ (drop)="onDrop($event, col)">
34333
+ <div class="ub-col__header">
34334
+ <div class="ub-col__title">
34335
+ <span class="ub-col__dot" [style.background]="dot(col.color)" aria-hidden="true"></span>
34336
+ <span class="ub-col__label">{{ col.label }}</span>
34337
+ <span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
34338
+ </div>
34339
+ @if (col.summary) {
34340
+ <div class="ub-col__summary" [attr.aria-label]="col.summaryLabel || col.summary">{{ col.summary }}</div>
34341
+ }
34342
+ </div>
34343
+ <div class="ub-col__cards" role="list">
34344
+ @for (item of col.items; track itemKey()(item)) {
34345
+ <div class="ub-card"
34346
+ [class.ub-card--success]="col.tone === 'success'"
34347
+ [class.ub-card--dragging]="draggingKey() === itemKey()(item)"
34348
+ role="listitem"
34349
+ tabindex="0"
34350
+ [attr.data-board-key]="itemKey()(item)"
34351
+ [attr.aria-label]="itemLabel()(item)"
34352
+ [attr.aria-keyshortcuts]="canMoveAny() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
34353
+ [attr.draggable]="canDrag() ? 'true' : null"
34354
+ (dragstart)="onDragStart($event, item, col)"
34355
+ (dragend)="onDragEnd()"
34356
+ (click)="cardClick.emit(item)"
34357
+ (keydown)="onCardKey($event, item, col)">
34358
+ @if (card(); as tpl) {
34359
+ <ng-container [ngTemplateOutlet]="tpl.template" [ngTemplateOutletContext]="{ $implicit: item, column: col, menu: menuTpl }" />
34360
+ }
34361
+ </div>
34362
+ }
34363
+ @if (col.items.length === 0) {
34364
+ <div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
34365
+ }
34366
+ </div>
34367
+ </div>
34368
+ }
34369
+ </div>
34370
+ <div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
34371
+ }
34372
+ </div>
34373
+ `,
34374
+ isInline: true,
34375
+ styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:flex-start}.ub-board::-webkit-scrollbar{height:6px}.ub-board::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.ub-board::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.ub-col{flex:0 0 280px;min-width:280px;max-width:280px;display:flex;flex-direction:column;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;max-height:calc(100vh - 200px);transition:border-color .15s,background .15s}.ub-col--over{border-color:#3b82f6;background:#eff6ff}.ub-col--success{background:#f0fdf4;border-color:#bbf7d0}.ub-col--success.ub-col--over{border-color:#22c55e;background:#dcfce7}.ub-col__header{padding:12px 14px 10px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ub-col__title{display:flex;align-items:center;gap:7px;margin-bottom:2px}.ub-col__dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.ub-col__label{font-size:12px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.04em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-col__count{font-size:11px;font-weight:600;color:#fff;background:#94a3b8;border-radius:10px;padding:1px 7px;flex-shrink:0}.ub-col__summary{font-size:11px;color:#64748b;font-weight:500;margin-top:2px}.ub-col__cards{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:60px}.ub-col__cards::-webkit-scrollbar{width:4px}.ub-col__cards::-webkit-scrollbar-track{background:transparent}.ub-col__cards::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.ub-col__empty{text-align:center;padding:24px 12px;color:#94a3b8;font-size:12px;border:1.5px dashed #e2e8f0;border-radius:8px;margin:4px 0}.ub-card{position:relative;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;padding:11px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s,transform .12s}.ub-card[draggable=true]{cursor:grab}.ub-card[draggable=true]:active{cursor:grabbing}.ub-card:hover{border-color:#94a3b8;box-shadow:0 2px 8px #00000012}.ub-card:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-card--dragging{opacity:.4;transform:scale(.98);box-shadow:none}.ub-card--success{border-left:3px solid #22c55e}.ub-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:4px}.ub-card__title{font-size:13px;font-weight:600;color:#1e293b;line-height:1.35;flex:1;min-width:0;word-break:break-word}.ub-card:hover .ub-card__title{color:#2563eb}.ub-card__top-right{flex-shrink:0;margin-top:-2px}.ub-card__status-row{margin-bottom:5px}.ub-card__contact{font-size:12px;color:#475569;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__property{font-size:11px;color:#94a3b8;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__next-step{display:flex;align-items:flex-start;gap:4px;font-size:11px;color:#64748b;margin-bottom:6px;line-height:1.4}.ub-card__next-step svg{flex-shrink:0;margin-top:1px;color:#94a3b8}.ub-card__footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid #f1f5f9}.ub-card__value{font-size:12px;font-weight:700;color:#0f172a}.ub-card__activity{font-size:11px;color:#94a3b8}.ub-card__activity--stale{color:#d97706;font-weight:600}.ub-skeleton{display:flex;gap:12px;padding-bottom:16px}.ub-col-skeleton{flex:0 0 280px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.ub-col-skeleton__header,.ub-col-skeleton__card{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:ub-shimmer 1.4s infinite}.ub-col-skeleton__header{height:32px;border-radius:6px}.ub-col-skeleton__card{height:90px;border-radius:8px}@keyframes ub-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ub-col-skeleton__header,.ub-col-skeleton__card{animation:none}}.ub-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;color:#64748b;font-size:14px;text-align:center}.ub-message p{margin:0}.ub-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(max-width:640px){.ub-board{flex-direction:column;overflow-x:hidden;overflow-y:auto;height:auto;align-items:stretch}.ub-col{flex:none;min-width:0;max-width:100%;width:100%;max-height:none}.ub-skeleton{flex-direction:column}.ub-col-skeleton{flex:none;width:100%}}\n"],
34376
+ dependencies: [
34377
+ {
34378
+ kind: "directive",
34379
+ type: NgTemplateOutlet,
34380
+ selector: "[ngTemplateOutlet]",
34381
+ inputs: [
34382
+ "ngTemplateOutletContext",
34383
+ "ngTemplateOutlet",
34384
+ "ngTemplateOutletInjector"
34385
+ ]
34386
+ },
34387
+ {
34388
+ kind: "component",
34389
+ type: ButtonComponent,
34390
+ selector: "ui-button",
34391
+ inputs: [
34392
+ "variant",
34393
+ "routerLink",
34394
+ "queryParams",
34395
+ "fragment",
34396
+ "state",
34397
+ "href",
34398
+ "target",
34399
+ "rel",
34400
+ "shortLabel",
34401
+ "shortBelow",
34402
+ "color",
34403
+ "active",
34404
+ "size",
34405
+ "type",
34406
+ "disabled",
34407
+ "loading",
34408
+ "fullWidth",
34409
+ "ariaLabel",
34410
+ "ariaExpanded",
34411
+ "ariaPressed",
34412
+ "ariaDescribedBy",
34413
+ "modal-footer-left",
34414
+ "modal-footer-right"
34415
+ ]
34416
+ },
34417
+ {
34418
+ kind: "component",
34419
+ type: MoreMenuComponent,
34420
+ selector: "ui-more-menu",
34421
+ inputs: ["ariaLabel", "actions"],
34422
+ outputs: ["actionClick"]
34423
+ }
34424
+ ],
34425
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
34426
+ encapsulation: i0.ViewEncapsulation.None
34427
+ });
34428
+ }
34429
+ };
34430
+ i0.ɵɵngDeclareClassMetadata({
34431
+ minVersion: "12.0.0",
34432
+ version: "22.2.2",
34433
+ ngImport: i0,
34434
+ type: BoardComponent,
34435
+ decorators: [{
34436
+ type: Component,
34437
+ args: [{
34438
+ selector: "ui-board",
34439
+ standalone: true,
34440
+ changeDetection: ChangeDetectionStrategy.OnPush,
34441
+ encapsulation: ViewEncapsulation.None,
34442
+ imports: [
34443
+ NgTemplateOutlet,
34444
+ ButtonComponent,
34445
+ MoreMenuComponent
34446
+ ],
34447
+ template: `
34448
+ <!-- The card's "⋮" menu. Place it in the card's top row: <ng-container [ngTemplateOutlet]="menu" [ngTemplateOutletContext]="{ $implicit: item }" /> -->
34449
+ <ng-template #menuTpl let-item>
34450
+ @if (cardActions().length) {
34451
+ <div class="ub-card__top-right" (click)="$event.stopPropagation()" (keydown)="$event.stopPropagation()">
34452
+ <ui-more-menu [actions]="cardActions()" [ariaLabel]="'Actions for ' + itemLabel()(item)"
34453
+ (actionClick)="cardAction.emit({ type: $event, item })" />
34454
+ </div>
34455
+ }
34456
+ </ng-template>
34457
+ <div class="ub-wrap">
34458
+ @if (loading()) {
34459
+ <div class="ub-skeleton" role="status" [attr.aria-label]="'Loading ' + ariaLabel()">
34460
+ @for (n of skeletonColumns(); track n) {
34461
+ <div class="ub-col-skeleton" aria-hidden="true">
34462
+ <div class="ub-col-skeleton__header"></div>
34463
+ @for (c of [1, 2, 3]; track c) { <div class="ub-col-skeleton__card"></div> }
34464
+ </div>
34465
+ }
34466
+ </div>
34467
+ } @else if (error()) {
34468
+ <div class="ub-message" role="alert">
34469
+ <p>{{ error() }}</p>
34470
+ <ui-button variant="secondary" size="sm" (click)="retry.emit()">{{ retryLabel() }}</ui-button>
34471
+ </div>
34472
+ } @else if (cols().length === 0) {
34473
+ <div class="ub-message" role="status"><p>{{ emptyMessage() }}</p></div>
34474
+ } @else {
34475
+ <div class="ub-board" role="region" [attr.aria-label]="ariaLabel()">
34476
+ @for (col of cols(); track col.key) {
34477
+ <div class="ub-col"
34478
+ [class.ub-col--over]="overKey() === col.key"
34479
+ [class.ub-col--success]="col.tone === 'success'"
34480
+ role="group"
34481
+ [attr.aria-label]="col.label + ' — ' + col.items.length + ' ' + (col.items.length === 1 ? itemNoun() : itemNounPlural())"
34482
+ (dragover)="onDragOver($event, col)"
34483
+ (dragleave)="onDragLeave($event, col)"
34484
+ (drop)="onDrop($event, col)">
34485
+ <div class="ub-col__header">
34486
+ <div class="ub-col__title">
34487
+ <span class="ub-col__dot" [style.background]="dot(col.color)" aria-hidden="true"></span>
34488
+ <span class="ub-col__label">{{ col.label }}</span>
34489
+ <span class="ub-col__count" aria-hidden="true">{{ col.items.length }}</span>
34490
+ </div>
34491
+ @if (col.summary) {
34492
+ <div class="ub-col__summary" [attr.aria-label]="col.summaryLabel || col.summary">{{ col.summary }}</div>
34493
+ }
34494
+ </div>
34495
+ <div class="ub-col__cards" role="list">
34496
+ @for (item of col.items; track itemKey()(item)) {
34497
+ <div class="ub-card"
34498
+ [class.ub-card--success]="col.tone === 'success'"
34499
+ [class.ub-card--dragging]="draggingKey() === itemKey()(item)"
34500
+ role="listitem"
34501
+ tabindex="0"
34502
+ [attr.data-board-key]="itemKey()(item)"
34503
+ [attr.aria-label]="itemLabel()(item)"
34504
+ [attr.aria-keyshortcuts]="canMoveAny() ? 'Shift+ArrowLeft Shift+ArrowRight' : null"
34505
+ [attr.draggable]="canDrag() ? 'true' : null"
34506
+ (dragstart)="onDragStart($event, item, col)"
34507
+ (dragend)="onDragEnd()"
34508
+ (click)="cardClick.emit(item)"
34509
+ (keydown)="onCardKey($event, item, col)">
34510
+ @if (card(); as tpl) {
34511
+ <ng-container [ngTemplateOutlet]="tpl.template" [ngTemplateOutletContext]="{ $implicit: item, column: col, menu: menuTpl }" />
34512
+ }
34513
+ </div>
34514
+ }
34515
+ @if (col.items.length === 0) {
34516
+ <div class="ub-col__empty" role="status">{{ col.emptyText || emptyColumnText() }}</div>
34517
+ }
34518
+ </div>
34519
+ </div>
34520
+ }
34521
+ </div>
34522
+ <div class="ub-sr-only" role="status" aria-live="polite">{{ announcement() }}</div>
34523
+ }
34524
+ </div>
34525
+ `,
34526
+ styles: ["ui-board{display:flex;flex-direction:column;flex:1;min-height:0}.ub-wrap{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.ub-board{display:flex;gap:12px;padding:0 0 16px;overflow-x:auto;overflow-y:hidden;height:100%;align-items:flex-start}.ub-board::-webkit-scrollbar{height:6px}.ub-board::-webkit-scrollbar-track{background:#f1f5f9;border-radius:3px}.ub-board::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.ub-col{flex:0 0 280px;min-width:280px;max-width:280px;display:flex;flex-direction:column;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;max-height:calc(100vh - 200px);transition:border-color .15s,background .15s}.ub-col--over{border-color:#3b82f6;background:#eff6ff}.ub-col--success{background:#f0fdf4;border-color:#bbf7d0}.ub-col--success.ub-col--over{border-color:#22c55e;background:#dcfce7}.ub-col__header{padding:12px 14px 10px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ub-col__title{display:flex;align-items:center;gap:7px;margin-bottom:2px}.ub-col__dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.ub-col__label{font-size:12px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.04em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-col__count{font-size:11px;font-weight:600;color:#fff;background:#94a3b8;border-radius:10px;padding:1px 7px;flex-shrink:0}.ub-col__summary{font-size:11px;color:#64748b;font-weight:500;margin-top:2px}.ub-col__cards{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:60px}.ub-col__cards::-webkit-scrollbar{width:4px}.ub-col__cards::-webkit-scrollbar-track{background:transparent}.ub-col__cards::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}.ub-col__empty{text-align:center;padding:24px 12px;color:#94a3b8;font-size:12px;border:1.5px dashed #e2e8f0;border-radius:8px;margin:4px 0}.ub-card{position:relative;background:#fff;border:1.5px solid #e2e8f0;border-radius:8px;padding:11px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:box-shadow .12s,border-color .12s,opacity .12s,transform .12s}.ub-card[draggable=true]{cursor:grab}.ub-card[draggable=true]:active{cursor:grabbing}.ub-card:hover{border-color:#94a3b8;box-shadow:0 2px 8px #00000012}.ub-card:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.ub-card--dragging{opacity:.4;transform:scale(.98);box-shadow:none}.ub-card--success{border-left:3px solid #22c55e}.ub-card__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:4px}.ub-card__title{font-size:13px;font-weight:600;color:#1e293b;line-height:1.35;flex:1;min-width:0;word-break:break-word}.ub-card:hover .ub-card__title{color:#2563eb}.ub-card__top-right{flex-shrink:0;margin-top:-2px}.ub-card__status-row{margin-bottom:5px}.ub-card__contact{font-size:12px;color:#475569;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__property{font-size:11px;color:#94a3b8;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ub-card__next-step{display:flex;align-items:flex-start;gap:4px;font-size:11px;color:#64748b;margin-bottom:6px;line-height:1.4}.ub-card__next-step svg{flex-shrink:0;margin-top:1px;color:#94a3b8}.ub-card__footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px;padding-top:6px;border-top:1px solid #f1f5f9}.ub-card__value{font-size:12px;font-weight:700;color:#0f172a}.ub-card__activity{font-size:11px;color:#94a3b8}.ub-card__activity--stale{color:#d97706;font-weight:600}.ub-skeleton{display:flex;gap:12px;padding-bottom:16px}.ub-col-skeleton{flex:0 0 280px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.ub-col-skeleton__header,.ub-col-skeleton__card{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:ub-shimmer 1.4s infinite}.ub-col-skeleton__header{height:32px;border-radius:6px}.ub-col-skeleton__card{height:90px;border-radius:8px}@keyframes ub-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.ub-col-skeleton__header,.ub-col-skeleton__card{animation:none}}.ub-message{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px;color:#64748b;font-size:14px;text-align:center}.ub-message p{margin:0}.ub-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(max-width:640px){.ub-board{flex-direction:column;overflow-x:hidden;overflow-y:auto;height:auto;align-items:stretch}.ub-col{flex:none;min-width:0;max-width:100%;width:100%;max-height:none}.ub-skeleton{flex-direction:column}.ub-col-skeleton{flex:none;width:100%}}\n"]
34527
+ }]
34528
+ }],
34529
+ propDecorators: {
34530
+ columns: [{
34531
+ type: i0.Input,
34532
+ args: [{
34533
+ isSignal: true,
34534
+ alias: "columns",
34535
+ required: true
34536
+ }]
34537
+ }],
34538
+ itemKey: [{
34539
+ type: i0.Input,
34540
+ args: [{
34541
+ isSignal: true,
34542
+ alias: "itemKey",
34543
+ required: true
34544
+ }]
34545
+ }],
34546
+ itemLabel: [{
34547
+ type: i0.Input,
34548
+ args: [{
34549
+ isSignal: true,
34550
+ alias: "itemLabel",
34551
+ required: true
34552
+ }]
34553
+ }],
34554
+ cardActions: [{
34555
+ type: i0.Input,
34556
+ args: [{
34557
+ isSignal: true,
34558
+ alias: "cardActions",
34559
+ required: false
34560
+ }]
34561
+ }],
34562
+ loading: [{
34563
+ type: i0.Input,
34564
+ args: [{
34565
+ isSignal: true,
34566
+ alias: "loading",
34567
+ required: false
34568
+ }]
34569
+ }],
34570
+ error: [{
34571
+ type: i0.Input,
34572
+ args: [{
34573
+ isSignal: true,
34574
+ alias: "error",
34575
+ required: false
34576
+ }]
34577
+ }],
34578
+ readOnly: [{
34579
+ type: i0.Input,
34580
+ args: [{
34581
+ isSignal: true,
34582
+ alias: "readOnly",
34583
+ required: false
34584
+ }]
34585
+ }],
34586
+ moveDisabled: [{
34587
+ type: i0.Input,
34588
+ args: [{
34589
+ isSignal: true,
34590
+ alias: "moveDisabled",
34591
+ required: false
34592
+ }]
34593
+ }],
34594
+ canMove: [{
34595
+ type: i0.Input,
34596
+ args: [{
34597
+ isSignal: true,
34598
+ alias: "canMove",
34599
+ required: false
34600
+ }]
34601
+ }],
34602
+ ariaLabel: [{
34603
+ type: i0.Input,
34604
+ args: [{
34605
+ isSignal: true,
34606
+ alias: "ariaLabel",
34607
+ required: false
34608
+ }]
34609
+ }],
34610
+ emptyMessage: [{
34611
+ type: i0.Input,
34612
+ args: [{
34613
+ isSignal: true,
34614
+ alias: "emptyMessage",
34615
+ required: false
34616
+ }]
34617
+ }],
34618
+ emptyColumnText: [{
34619
+ type: i0.Input,
34620
+ args: [{
34621
+ isSignal: true,
34622
+ alias: "emptyColumnText",
34623
+ required: false
34624
+ }]
34625
+ }],
34626
+ itemNoun: [{
34627
+ type: i0.Input,
34628
+ args: [{
34629
+ isSignal: true,
34630
+ alias: "itemNoun",
34631
+ required: false
34632
+ }]
34633
+ }],
34634
+ itemNounPlural: [{
34635
+ type: i0.Input,
34636
+ args: [{
34637
+ isSignal: true,
34638
+ alias: "itemNounPlural",
34639
+ required: false
34640
+ }]
34641
+ }],
34642
+ retryLabel: [{
34643
+ type: i0.Input,
34644
+ args: [{
34645
+ isSignal: true,
34646
+ alias: "retryLabel",
34647
+ required: false
34648
+ }]
34649
+ }],
34650
+ cardClick: [{
34651
+ type: i0.Output,
34652
+ args: ["cardClick"]
34653
+ }],
34654
+ cardAction: [{
34655
+ type: i0.Output,
34656
+ args: ["cardAction"]
34657
+ }],
34658
+ itemMove: [{
34659
+ type: i0.Output,
34660
+ args: ["itemMove"]
34661
+ }],
34662
+ retry: [{
34663
+ type: i0.Output,
34664
+ args: ["retry"]
34665
+ }],
34666
+ card: [{
34667
+ type: i0.ContentChild,
34668
+ args: [i0.forwardRef(() => BoardCardDirective), { isSignal: true }]
34669
+ }]
34670
+ }
34671
+ });
33954
34672
  let nextId = 0;
33955
34673
  var ReadonlyFieldsetComponent = class ReadonlyFieldsetComponent {
33956
34674
  constructor() {
@@ -37781,6 +38499,6 @@ i0.ɵɵngDeclareClassMetadata({
37781
38499
  }]
37782
38500
  }
37783
38501
  });
37784
- export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PasswordRequirementsComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
38502
+ export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BoardCardDirective, BoardComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, ModalComponent, MoreMenuComponent, MultiSelectComponent, PHONE_NUMBER_AREA_CODE_LENGTH, PHONE_NUMBER_ZIP_LENGTH, PageComponent, PaginationComponent, PanelInfoListComponent, PasswordRequirementsComponent, PdfHotspotComponent, PhoneNumberPickerComponent, PillTabsComponent, ProgressBarComponent, ProgressRingComponent, QrCodeComponent, QuickFilterTabsComponent, RICH_TEXT_OPTIONS, RadioComponent, RadioGroupComponent, RadioMatrixComponent, RadioOptionContentDirective, ReadonlyFieldsetComponent, RichTextEditorComponent, SEMANTIC_BADGE_MAP, SearchInputComponent, SectionHeaderComponent, SelectComponent, ShowComponent, SidePanelComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, buildDefaultSchedule, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, fileMatchesAccept, formatAddress, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours };
37785
38503
 
37786
38504
  //# sourceMappingURL=forgeroute-ui.mjs.map