@forgeroute/ui 0.4.51 → 0.4.52

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.
@@ -3403,7 +3403,7 @@ var CheckboxComponent = class CheckboxComponent {
3403
3403
  }
3404
3404
  `,
3405
3405
  isInline: true,
3406
- styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px;vertical-align:top}.cb-group{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.cb-legend{padding:0;margin:0 0 8px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1.2}.cb-required{color:#dc2626;margin-left:2px}.cb-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-options{display:flex;flex-direction:column;gap:10px}.cb-options.cb-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.cb-field.cb-has-trailing{display:flex}.cb-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.cb-trailing{display:inline-flex;align-items:center;flex-shrink:0}.cb-option{display:flex;flex-direction:column;gap:4px}.cb-group-desc{margin-left:0}.cb-indent{margin-left:29px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#dc2626}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{position:relative;vertical-align:top;display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #7c8ba1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"],
3406
+ styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px;vertical-align:top}.cb-group{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.cb-legend{padding:0;margin:0 0 8px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1.2}.cb-required{color:#dc2626;margin-left:2px}.cb-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-options{display:flex;flex-direction:column;gap:10px}.cb-options.cb-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.cb-field.cb-has-trailing{display:flex}.cb-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.cb-trailing{display:inline-flex;align-items:center;flex-shrink:0}.cb-option{display:flex;flex-direction:column;gap:4px}.cb-group-desc{margin-left:0}.cb-indent{margin-left:29px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#dc2626}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{position:relative;vertical-align:top;display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;box-sizing:border-box;width:20px;height:20px;border:2px solid #7c8ba1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"],
3407
3407
  dependencies: [{
3408
3408
  kind: "directive",
3409
3409
  type: NgTemplateOutlet,
@@ -3543,7 +3543,7 @@ i0.ɵɵngDeclareClassMetadata({
3543
3543
  </div>
3544
3544
  }
3545
3545
  `,
3546
- styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px;vertical-align:top}.cb-group{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.cb-legend{padding:0;margin:0 0 8px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1.2}.cb-required{color:#dc2626;margin-left:2px}.cb-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-options{display:flex;flex-direction:column;gap:10px}.cb-options.cb-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.cb-field.cb-has-trailing{display:flex}.cb-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.cb-trailing{display:inline-flex;align-items:center;flex-shrink:0}.cb-option{display:flex;flex-direction:column;gap:4px}.cb-group-desc{margin-left:0}.cb-indent{margin-left:29px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#dc2626}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{position:relative;vertical-align:top;display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;width:20px;height:20px;border:2px solid #7c8ba1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"]
3546
+ styles: [".cb-field{display:inline-flex;flex-direction:column;gap:4px;vertical-align:top}.cb-group{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;border:0;min-width:0}.cb-legend{padding:0;margin:0 0 8px;font-size:.8125rem;font-weight:600;color:#374151;line-height:1.2}.cb-required{color:#dc2626;margin-left:2px}.cb-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-options{display:flex;flex-direction:column;gap:10px}.cb-options.cb-horizontal{flex-direction:row;flex-wrap:wrap;gap:8px 20px}.cb-field.cb-has-trailing{display:flex}.cb-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.cb-trailing{display:inline-flex;align-items:center;flex-shrink:0}.cb-option{display:flex;flex-direction:column;gap:4px}.cb-group-desc{margin-left:0}.cb-indent{margin-left:29px}.cb-desc{margin:0 0 0 29px;font-size:.75rem;line-height:1.4;color:#64748b}.cb-desc-error{color:#dc2626}.cb-error .cb-box:not(.cb-checked){border-color:#ef4444}.cb-wrap{position:relative;vertical-align:top;display:inline-flex;align-items:center;gap:9px;cursor:pointer;-webkit-user-select:none;user-select:none}.cb-wrap.cb-disabled{cursor:not-allowed;opacity:.5}.cb-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cb-wrap:has(.cb-hidden:focus-visible) .cb-box{outline:2px solid #3b82f6;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.cb-wrap{position:relative}.cb-hidden{width:44px;height:44px;margin:0;clip:auto;overflow:visible;left:-12px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;z-index:1}.cb-wrap.cb-disabled .cb-hidden{cursor:not-allowed}}.cb-box{flex-shrink:0;box-sizing:border-box;width:20px;height:20px;border:2px solid #7c8ba1;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;transition:background .12s,border-color .12s}.cb-box.cb-checked,.cb-box.cb-indeterminate{background:#3b82f6;border-color:#3b82f6}.cb-wrap:hover .cb-box:not(.cb-checked):not(.cb-disabled){border-color:#3b82f6}@media(max-width:640px),(pointer:coarse){.cb-box{position:relative}.cb-box:after{content:\"\";position:absolute;inset:-12px}}.cb-label{font-size:.875rem;color:#334155;line-height:1.4}\n"]
3547
3547
  }]
3548
3548
  }],
3549
3549
  ctorParameters: () => [],
@@ -8462,7 +8462,7 @@ var DetailCardComponent = class DetailCardComponent {
8462
8462
  </div>
8463
8463
  `,
8464
8464
  isInline: true,
8465
- 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:.8125rem;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-x:hidden;overflow-y:auto;max-height:var(--dc-body-max-height, none)}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.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"],
8465
+ 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:.8125rem;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{box-sizing:border-box;padding:16px 18px;min-height:0;overflow-x:hidden;overflow-y:auto;max-height:var(--dc-body-max-height, none)}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.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"],
8466
8466
  dependencies: [{
8467
8467
  kind: "component",
8468
8468
  type: ButtonComponent,
@@ -8562,7 +8562,7 @@ i0.ɵɵngDeclareClassMetadata({
8562
8562
  <div class="dc-footer" [class.dc-footer--hidden]="!isOpen()" [style.background]="footerBackground() || null"><ng-content select="[card-footer]" /></div>
8563
8563
  </div>
8564
8564
  `,
8565
- 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:.8125rem;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-x:hidden;overflow-y:auto;max-height:var(--dc-body-max-height, none)}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.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"]
8565
+ 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:.8125rem;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{box-sizing:border-box;padding:16px 18px;min-height:0;overflow-x:hidden;overflow-y:auto;max-height:var(--dc-body-max-height, none)}.dc-footer{padding:10px 18px;border-top:1px solid #f1f5f9}.dc-footer:empty,.dc-footer.dc-footer--hidden{display:none}.dc-has-bg .dc-footer{border-top-color:#94a3b859}@media(max-width:480px){.dc-footer{padding:10px 14px}.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"]
8566
8566
  }]
8567
8567
  }],
8568
8568
  propDecorators: {
@@ -11752,7 +11752,7 @@ var DataTableComponent = class DataTableComponent {
11752
11752
  const active = this._activeTab();
11753
11753
  const keys = Object.keys(counts).length > 0 && active && !present.includes(active) ? [...present, active] : present;
11754
11754
  if (!keys.length) return [];
11755
- const toLabel = (s) => this._columnBadgeLabel(s) ?? s.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
11755
+ const toLabel = (s) => this._columnBadgeLabel(s) ?? (/[a-z]/.test(s) ? s : s.toLowerCase()).replace(/([a-z])([A-Z])/g, "$1 $2").replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
11756
11756
  const singleValue = keys.length === 1;
11757
11757
  return [{
11758
11758
  value: "",
@@ -15722,7 +15722,7 @@ var AudioPlayerComponent = class AudioPlayerComponent {
15722
15722
  @if (failed()) {
15723
15723
  <p class="ap-error" role="alert">Audio could not be played.</p>
15724
15724
  } @else {
15725
- <audio class="ap-audio" controls [attr.preload]="preload()" [src]="src() || null" [attr.aria-label]="ariaLabel() || null"
15725
+ <audio class="ap-audio" controls [attr.preload]="preload()" [attr.src]="src() || null" [attr.aria-label]="ariaLabel() || null"
15726
15726
  (error)="onError()">
15727
15727
  Your browser does not support the audio element.
15728
15728
  </audio>
@@ -15749,7 +15749,7 @@ i0.ɵɵngDeclareClassMetadata({
15749
15749
  @if (failed()) {
15750
15750
  <p class="ap-error" role="alert">Audio could not be played.</p>
15751
15751
  } @else {
15752
- <audio class="ap-audio" controls [attr.preload]="preload()" [src]="src() || null" [attr.aria-label]="ariaLabel() || null"
15752
+ <audio class="ap-audio" controls [attr.preload]="preload()" [attr.src]="src() || null" [attr.aria-label]="ariaLabel() || null"
15753
15753
  (error)="onError()">
15754
15754
  Your browser does not support the audio element.
15755
15755
  </audio>
@@ -18468,8 +18468,9 @@ var AlertComponent = class AlertComponent {
18468
18468
  </div>
18469
18469
  `,
18470
18470
  isInline: true,
18471
- styles: [":host{display:block}.alert{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:8px;border-left:4px solid transparent;font-size:13px;line-height:1.5}.alert--info{background:#dbeafe;border-color:#3b82f6;color:#1e3a8a}.alert--success{background:#dcfce7;border-color:#22c55e;color:#14532d}.alert--warning{background:#ffedd5;border-color:#f97316;color:#7c2d12}.alert--danger{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}.alert--neutral{background:#f1f5f9;border-color:#64748b;color:#334155}.alert--fill{height:100%;box-sizing:border-box}.alert--compact{padding:8px 12px;gap:8px;font-size:12.5px;line-height:1.4}.alert-content{flex:1;display:flex;flex-direction:column;gap:2px}.alert-title{font-weight:700}.alert-body{opacity:.9;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.alert-body--inline{display:block}.alert-body--inline>*{vertical-align:middle}.alert-dismiss{flex-shrink:0;background:none;border:none;cursor:pointer;padding:2px;border-radius:4px;color:inherit;opacity:.6;display:flex;align-items:center;transition:opacity .15s}.alert-dismiss:hover{opacity:1}.alert-dismiss:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.alert-dismiss{position:relative}.alert-dismiss:after{content:\"\";position:absolute;inset:-13px}}\n"],
18472
- changeDetection: i0.ChangeDetectionStrategy.OnPush
18471
+ styles: ["ui-alert{display:block}ui-alert .alert{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:8px;border-left:4px solid transparent;font-size:13px;line-height:1.5}ui-alert .alert--info{background:#dbeafe;border-color:#3b82f6;color:#1e3a8a}ui-alert .alert--success{background:#dcfce7;border-color:#22c55e;color:#14532d}ui-alert .alert--warning{background:#ffedd5;border-color:#f97316;color:#7c2d12}ui-alert .alert--danger{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}ui-alert .alert--neutral{background:#f1f5f9;border-color:#64748b;color:#334155}ui-alert .alert--fill{height:100%;box-sizing:border-box}ui-alert .alert--compact{padding:8px 12px;gap:8px;font-size:12.5px;line-height:1.4}ui-alert .alert-content{flex:1;display:flex;flex-direction:column;gap:2px}ui-alert .alert-title{font-weight:700}ui-alert .alert-body{opacity:.9;display:flex;align-items:center;flex-wrap:wrap;gap:8px}ui-alert .alert-body--inline{display:block}ui-alert .alert-body--inline>*{vertical-align:middle}ui-alert .alert-dismiss{flex-shrink:0;background:none;border:none;cursor:pointer;padding:2px;border-radius:4px;color:inherit;opacity:.6;display:flex;align-items:center;transition:opacity .15s}ui-alert .alert-dismiss:hover{opacity:1}ui-alert .alert-dismiss:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(pointer:coarse),(max-width:480px){ui-alert .alert-dismiss{position:relative}ui-alert .alert-dismiss:after{content:\"\";position:absolute;inset:-13px}}\n"],
18472
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
18473
+ encapsulation: i0.ViewEncapsulation.None
18473
18474
  });
18474
18475
  }
18475
18476
  };
@@ -18484,6 +18485,7 @@ i0.ɵɵngDeclareClassMetadata({
18484
18485
  selector: "ui-alert",
18485
18486
  standalone: true,
18486
18487
  changeDetection: ChangeDetectionStrategy.OnPush,
18488
+ encapsulation: ViewEncapsulation.None,
18487
18489
  template: `
18488
18490
  <div class="alert" [class]="'alert alert--' + variant()" [class.alert--compact]="compact()" [class.alert--fill]="fill()" [attr.role]="quiet() ? null : (variant() === 'danger' ? 'alert' : 'status')">
18489
18491
  <div class="alert-content">
@@ -18499,7 +18501,7 @@ i0.ɵɵngDeclareClassMetadata({
18499
18501
  }
18500
18502
  </div>
18501
18503
  `,
18502
- styles: [":host{display:block}.alert{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:8px;border-left:4px solid transparent;font-size:13px;line-height:1.5}.alert--info{background:#dbeafe;border-color:#3b82f6;color:#1e3a8a}.alert--success{background:#dcfce7;border-color:#22c55e;color:#14532d}.alert--warning{background:#ffedd5;border-color:#f97316;color:#7c2d12}.alert--danger{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}.alert--neutral{background:#f1f5f9;border-color:#64748b;color:#334155}.alert--fill{height:100%;box-sizing:border-box}.alert--compact{padding:8px 12px;gap:8px;font-size:12.5px;line-height:1.4}.alert-content{flex:1;display:flex;flex-direction:column;gap:2px}.alert-title{font-weight:700}.alert-body{opacity:.9;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.alert-body--inline{display:block}.alert-body--inline>*{vertical-align:middle}.alert-dismiss{flex-shrink:0;background:none;border:none;cursor:pointer;padding:2px;border-radius:4px;color:inherit;opacity:.6;display:flex;align-items:center;transition:opacity .15s}.alert-dismiss:hover{opacity:1}.alert-dismiss:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(pointer:coarse),(max-width:480px){.alert-dismiss{position:relative}.alert-dismiss:after{content:\"\";position:absolute;inset:-13px}}\n"]
18504
+ styles: ["ui-alert{display:block}ui-alert .alert{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:8px;border-left:4px solid transparent;font-size:13px;line-height:1.5}ui-alert .alert--info{background:#dbeafe;border-color:#3b82f6;color:#1e3a8a}ui-alert .alert--success{background:#dcfce7;border-color:#22c55e;color:#14532d}ui-alert .alert--warning{background:#ffedd5;border-color:#f97316;color:#7c2d12}ui-alert .alert--danger{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}ui-alert .alert--neutral{background:#f1f5f9;border-color:#64748b;color:#334155}ui-alert .alert--fill{height:100%;box-sizing:border-box}ui-alert .alert--compact{padding:8px 12px;gap:8px;font-size:12.5px;line-height:1.4}ui-alert .alert-content{flex:1;display:flex;flex-direction:column;gap:2px}ui-alert .alert-title{font-weight:700}ui-alert .alert-body{opacity:.9;display:flex;align-items:center;flex-wrap:wrap;gap:8px}ui-alert .alert-body--inline{display:block}ui-alert .alert-body--inline>*{vertical-align:middle}ui-alert .alert-dismiss{flex-shrink:0;background:none;border:none;cursor:pointer;padding:2px;border-radius:4px;color:inherit;opacity:.6;display:flex;align-items:center;transition:opacity .15s}ui-alert .alert-dismiss:hover{opacity:1}ui-alert .alert-dismiss:focus-visible{outline:2px solid currentColor;outline-offset:2px}@media(pointer:coarse),(max-width:480px){ui-alert .alert-dismiss{position:relative}ui-alert .alert-dismiss:after{content:\"\";position:absolute;inset:-13px}}\n"]
18503
18505
  }]
18504
18506
  }],
18505
18507
  propDecorators: {
@@ -18660,7 +18662,7 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
18660
18662
  this._el = inject(ElementRef);
18661
18663
  this._searchSub = null;
18662
18664
  this.zipCtl.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => {
18663
- this._zipEdited.set(true);
18665
+ if (v !== this._zip()) this._zipEdited.set(true);
18664
18666
  this._typed(this.zipCtl, this._zip, v, 5);
18665
18667
  });
18666
18668
  this.areaCtl.valueChanges.pipe(takeUntilDestroyed()).subscribe((v) => this._typed(this.areaCtl, this._area, v, 3));
@@ -18692,6 +18694,9 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
18692
18694
  event.preventDefault();
18693
18695
  this.submit();
18694
18696
  }
18697
+ onFieldBlur(from) {
18698
+ if (this.mode() === from) this.touched.set(true);
18699
+ }
18695
18700
  onBeforeInput(event) {
18696
18701
  const e = event;
18697
18702
  if (e.inputType?.startsWith("insertText") && e.data && /\D/.test(e.data)) e.preventDefault();
@@ -18928,13 +18933,13 @@ var PhoneNumberPickerComponent = class PhoneNumberPickerComponent {
18928
18933
  label="ZIP code" [required]="true" [maxlength]="5" type="text" inputmode="numeric" autocomplete="postal-code"
18929
18934
  placeholder="78701" [formControl]="zipCtl" [error]="fieldError()" [showErrors]="touched()"
18930
18935
  hint="We'll look for numbers near this ZIP code. Edit it if you want a different area."
18931
- (blurred)="touched.set(true)" data-testid="pn-zip" />
18936
+ (blurred)="onFieldBlur('zip')" data-testid="pn-zip" />
18932
18937
  } @else {
18933
18938
  <ui-text-input
18934
18939
  label="Area code" [required]="true" [maxlength]="3" type="text" inputmode="numeric" autocomplete="off"
18935
18940
  placeholder="512" [formControl]="areaCtl" [error]="fieldError()" [showErrors]="touched()"
18936
18941
  hint="We'll look for numbers in this area code."
18937
- (blurred)="touched.set(true)" data-testid="pn-area" />
18942
+ (blurred)="onFieldBlur('area-code')" data-testid="pn-area" />
18938
18943
  }
18939
18944
  </div>
18940
18945
  </div>
@@ -19226,13 +19231,13 @@ i0.ɵɵngDeclareClassMetadata({
19226
19231
  label="ZIP code" [required]="true" [maxlength]="5" type="text" inputmode="numeric" autocomplete="postal-code"
19227
19232
  placeholder="78701" [formControl]="zipCtl" [error]="fieldError()" [showErrors]="touched()"
19228
19233
  hint="We'll look for numbers near this ZIP code. Edit it if you want a different area."
19229
- (blurred)="touched.set(true)" data-testid="pn-zip" />
19234
+ (blurred)="onFieldBlur('zip')" data-testid="pn-zip" />
19230
19235
  } @else {
19231
19236
  <ui-text-input
19232
19237
  label="Area code" [required]="true" [maxlength]="3" type="text" inputmode="numeric" autocomplete="off"
19233
19238
  placeholder="512" [formControl]="areaCtl" [error]="fieldError()" [showErrors]="touched()"
19234
19239
  hint="We'll look for numbers in this area code."
19235
- (blurred)="touched.set(true)" data-testid="pn-area" />
19240
+ (blurred)="onFieldBlur('area-code')" data-testid="pn-area" />
19236
19241
  }
19237
19242
  </div>
19238
19243
  </div>
@@ -19556,6 +19561,8 @@ var PillTabsComponent = class PillTabsComponent {
19556
19561
  this.ariaLabel = input(null, ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
19557
19562
  this.name = input("pill-tabs-" + Math.random().toString(36).slice(2), ...ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []);
19558
19563
  this.noWrap = input(false, ...ngDevMode ? [{ debugName: "noWrap" }] : /* istanbul ignore next */ []);
19564
+ this.orientation = input("horizontal", ...ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []);
19565
+ this.vertical = () => this.orientation() === "vertical";
19559
19566
  this.tabChange = output();
19560
19567
  this.canScrollStart = signal(false, ...ngDevMode ? [{ debugName: "canScrollStart" }] : /* istanbul ignore next */ []);
19561
19568
  this.canScrollEnd = signal(false, ...ngDevMode ? [{ debugName: "canScrollEnd" }] : /* istanbul ignore next */ []);
@@ -19592,14 +19599,15 @@ var PillTabsComponent = class PillTabsComponent {
19592
19599
  }
19593
19600
  onKeydown(e) {
19594
19601
  const enabled = this.tabs().filter((t) => !t.disabled);
19602
+ const [nextKey, prevKey] = this.vertical() ? ["ArrowDown", "ArrowUp"] : ["ArrowRight", "ArrowLeft"];
19595
19603
  if (!enabled.length || ![
19596
- "ArrowRight",
19597
- "ArrowLeft",
19604
+ nextKey,
19605
+ prevKey,
19598
19606
  "Home",
19599
19607
  "End"
19600
19608
  ].includes(e.key)) return;
19601
19609
  const current = Math.max(0, enabled.findIndex((t) => t.key === this.activeKey()));
19602
- const next = e.key === "Home" ? 0 : e.key === "End" ? enabled.length - 1 : (current + (e.key === "ArrowRight" ? 1 : -1) + enabled.length) % enabled.length;
19610
+ const next = e.key === "Home" ? 0 : e.key === "End" ? enabled.length - 1 : (current + (e.key === nextKey ? 1 : -1) + enabled.length) % enabled.length;
19603
19611
  e.preventDefault();
19604
19612
  const key = enabled[next].key;
19605
19613
  this.select(key);
@@ -19657,13 +19665,20 @@ var PillTabsComponent = class PillTabsComponent {
19657
19665
  isSignal: true,
19658
19666
  isRequired: false,
19659
19667
  transformFunction: null
19668
+ },
19669
+ orientation: {
19670
+ classPropertyName: "orientation",
19671
+ publicName: "orientation",
19672
+ isSignal: true,
19673
+ isRequired: false,
19674
+ transformFunction: null
19660
19675
  }
19661
19676
  },
19662
19677
  outputs: { tabChange: "tabChange" },
19663
19678
  ngImport: i0,
19664
19679
  template: `
19665
- <div class="pill-wrap">
19666
- <div class="pill-tabs" [class.pill-tabs--nowrap]="noWrap()" role="tablist" [attr.aria-label]="ariaLabel()" (keydown)="onKeydown($event)" (scroll)="updateOverflow()">
19680
+ <div class="pill-wrap" [class.pill-wrap--vertical]="vertical()">
19681
+ <div class="pill-tabs" [class.pill-tabs--nowrap]="noWrap()" [class.pill-tabs--vertical]="vertical()" role="tablist" [attr.aria-label]="ariaLabel()" [attr.aria-orientation]="vertical() ? 'vertical' : null" (keydown)="onKeydown($event)" (scroll)="updateOverflow()">
19667
19682
  @for (tab of tabs(); track tab.key) {
19668
19683
  <button type="button" class="pill-tab" role="tab"
19669
19684
  [id]="name() + '-' + tab.key"
@@ -19692,7 +19707,7 @@ var PillTabsComponent = class PillTabsComponent {
19692
19707
  </div>
19693
19708
  `,
19694
19709
  isInline: true,
19695
- styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tabs--nowrap .pill-tab{flex:0 0 auto;white-space:nowrap}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}.pill-tab:last-child .pill-info-tip{left:auto;right:0}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"],
19710
+ styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tabs--nowrap .pill-tab{flex:0 0 auto;white-space:nowrap}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}.pill-tab:last-child .pill-info-tip{left:auto;right:0}.pill-wrap--vertical .pill-fade{display:none}.pill-tabs.pill-tabs--vertical{flex-direction:column;flex-wrap:nowrap;overflow:visible;gap:4px;padding-bottom:0}.pill-tabs--vertical .pill-tab{width:100%;justify-content:flex-start;border-radius:10px;text-align:left}.pill-tabs--vertical .pill-tab .pill-count{margin-left:auto}.pill-tabs--vertical .pill-tab .pill-info-tip{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.pill-tabs--vertical .pill-tab:last-child .pill-info-tip{left:calc(100% + 8px);right:auto}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"],
19696
19711
  changeDetection: i0.ChangeDetectionStrategy.OnPush
19697
19712
  });
19698
19713
  }
@@ -19709,8 +19724,8 @@ i0.ɵɵngDeclareClassMetadata({
19709
19724
  standalone: true,
19710
19725
  changeDetection: ChangeDetectionStrategy.OnPush,
19711
19726
  template: `
19712
- <div class="pill-wrap">
19713
- <div class="pill-tabs" [class.pill-tabs--nowrap]="noWrap()" role="tablist" [attr.aria-label]="ariaLabel()" (keydown)="onKeydown($event)" (scroll)="updateOverflow()">
19727
+ <div class="pill-wrap" [class.pill-wrap--vertical]="vertical()">
19728
+ <div class="pill-tabs" [class.pill-tabs--nowrap]="noWrap()" [class.pill-tabs--vertical]="vertical()" role="tablist" [attr.aria-label]="ariaLabel()" [attr.aria-orientation]="vertical() ? 'vertical' : null" (keydown)="onKeydown($event)" (scroll)="updateOverflow()">
19714
19729
  @for (tab of tabs(); track tab.key) {
19715
19730
  <button type="button" class="pill-tab" role="tab"
19716
19731
  [id]="name() + '-' + tab.key"
@@ -19738,7 +19753,7 @@ i0.ɵɵngDeclareClassMetadata({
19738
19753
  <span class="pill-fade pill-fade--end" [class.visible]="canScrollEnd()" aria-hidden="true" data-testid="pill-fade-end"></span>
19739
19754
  </div>
19740
19755
  `,
19741
- styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tabs--nowrap .pill-tab{flex:0 0 auto;white-space:nowrap}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}.pill-tab:last-child .pill-info-tip{left:auto;right:0}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"]
19756
+ styles: [".pill-wrap{position:relative}.pill-fade{position:absolute;top:0;bottom:0;width:28px;pointer-events:none;opacity:0;transition:opacity .15s}.pill-fade.visible{opacity:1}.pill-fade--start{left:0;background:linear-gradient(to right,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-fade--end{right:0;background:linear-gradient(to left,var(--ui-pill-tabs-fade, #fff),transparent)}.pill-tabs{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.pill-tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;scrollbar-width:none}.pill-tabs::-webkit-scrollbar{display:none}}.pill-tabs--nowrap .pill-tab{flex:0 0 auto;white-space:nowrap}.pill-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;border:1px solid #e2e8f0;background:#fff;font-size:.8125rem;font-weight:500;color:#64748b;cursor:pointer;transition:all .15s;font-family:inherit}.pill-tab:hover:not(.disabled):not(.active){background:#f8fafc;border-color:#94a3b8}.pill-tab:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.pill-tab .pill-count{background:#e2e8f0;color:#475569;font-size:.7rem;font-weight:600;padding:1px 6px;border-radius:999px;line-height:1.4}.pill-tab.active{background:#1e293b;color:#fff;border-color:#1e293b}.pill-tab.active .pill-count{background:#fff3;color:#fff}.pill-tab.active:hover{background:#1e293b;color:#fff}.pill-tab.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pill-tab .pill-info-icon{flex-shrink:0;opacity:.7}.pill-tab:hover .pill-info-icon,.pill-tab:focus-visible .pill-info-icon{opacity:1}.pill-tab .pill-info-tip{position:absolute;left:0;top:calc(100% + 8px);z-index:20;width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#1e293b;color:#fff;font-size:.75rem;font-weight:400;line-height:1.45;text-align:left;white-space:normal;box-shadow:0 4px 12px #0f172a40;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s,visibility .12s}.pill-tab:hover .pill-info-tip,.pill-tab:focus-visible .pill-info-tip{opacity:1;visibility:visible}.pill-tab:last-child .pill-info-tip{left:auto;right:0}.pill-wrap--vertical .pill-fade{display:none}.pill-tabs.pill-tabs--vertical{flex-direction:column;flex-wrap:nowrap;overflow:visible;gap:4px;padding-bottom:0}.pill-tabs--vertical .pill-tab{width:100%;justify-content:flex-start;border-radius:10px;text-align:left}.pill-tabs--vertical .pill-tab .pill-count{margin-left:auto}.pill-tabs--vertical .pill-tab .pill-info-tip{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}.pill-tabs--vertical .pill-tab:last-child .pill-info-tip{left:calc(100% + 8px);right:auto}@media(pointer:coarse),(max-width:480px){.pill-tab{min-height:44px}}\n"]
19742
19757
  }]
19743
19758
  }],
19744
19759
  ctorParameters: () => [],
@@ -19783,6 +19798,14 @@ i0.ɵɵngDeclareClassMetadata({
19783
19798
  required: false
19784
19799
  }]
19785
19800
  }],
19801
+ orientation: [{
19802
+ type: i0.Input,
19803
+ args: [{
19804
+ isSignal: true,
19805
+ alias: "orientation",
19806
+ required: false
19807
+ }]
19808
+ }],
19786
19809
  tabChange: [{
19787
19810
  type: i0.Output,
19788
19811
  args: ["tabChange"]
@@ -24890,6 +24913,13 @@ var MultiSelectComponent = class MultiSelectComponent {
24890
24913
  onDocumentClick(event) {
24891
24914
  if (this._open() && !this.el.nativeElement.contains(event.target)) this.close();
24892
24915
  }
24916
+ onEscape(event) {
24917
+ if (!this._open()) return;
24918
+ event.preventDefault();
24919
+ event.stopPropagation();
24920
+ this.close();
24921
+ this.el.nativeElement.querySelector(".ms-trigger")?.focus();
24922
+ }
24893
24923
  toggleOpen() {
24894
24924
  if (this.disabled()) return;
24895
24925
  if (this._open()) this.close();
@@ -25033,32 +25063,40 @@ var MultiSelectComponent = class MultiSelectComponent {
25033
25063
  class="ms-trigger"
25034
25064
  [class.ms-open]="_open()"
25035
25065
  [disabled]="disabled()"
25066
+ aria-haspopup="listbox"
25036
25067
  [attr.aria-expanded]="_open()"
25068
+ [attr.aria-controls]="_open() ? _id + '-list' : null"
25037
25069
  [attr.aria-labelledby]="label() ? _id + '-label' : null"
25038
- (click)="toggleOpen()">
25070
+ [attr.aria-describedby]="error() ? _id + '-error' : (hint() ? _id + '-hint' : null)"
25071
+ [attr.aria-invalid]="error() ? 'true' : null"
25072
+ [attr.aria-required]="required() ? 'true' : null"
25073
+ (click)="toggleOpen()"
25074
+ (keydown.escape)="onEscape($event)">
25039
25075
  <span class="ms-placeholder">{{ _selectedSet().size ? _selectedSet().size + ' selected' : placeholder() }}</span>
25040
25076
  <svg class="ms-chevron" [class.ms-chevron-open]="_open()" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
25041
25077
  </button>
25042
25078
 
25043
25079
  @if (_open()) {
25044
- <div class="ms-dropdown" role="listbox" aria-multiselectable="true">
25080
+ <div class="ms-dropdown" [id]="_id + '-list'" (keydown.escape)="onEscape($event)">
25045
25081
  @if (searchable()) {
25046
25082
  <div class="ms-search-wrap">
25047
25083
  <input
25048
25084
  class="ms-search"
25049
25085
  type="text"
25050
25086
  [placeholder]="searchPlaceholder()"
25087
+ [attr.aria-label]="searchPlaceholder()"
25051
25088
  [value]="_query()"
25052
25089
  (input)="_query.set($any($event.target).value)" />
25053
25090
  </div>
25054
25091
  }
25055
- <div class="ms-options">
25092
+ <div class="ms-options" role="listbox" aria-multiselectable="true" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25056
25093
  @for (opt of _filteredOptions(); track opt.value) {
25057
- <div class="ms-option" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25094
+ <div class="ms-option" role="option" [attr.aria-selected]="_selectedSet().has(opt.value)" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25058
25095
  <ui-checkbox
25059
25096
  [label]="opt.label"
25060
25097
  [checked]="_selectedSet().has(opt.value)"
25061
25098
  (checkedChange)="toggleValue(opt.value)" />
25099
+ @if (opt.description) { <p class="ms-option-desc">{{ opt.description }}</p> }
25062
25100
  </div>
25063
25101
  } @empty {
25064
25102
  <div class="ms-empty">No options found</div>
@@ -25069,14 +25107,14 @@ var MultiSelectComponent = class MultiSelectComponent {
25069
25107
  </div>
25070
25108
 
25071
25109
  @if (error()) {
25072
- <p class="ms-desc ms-desc-error" role="alert">{{ error() }}</p>
25110
+ <p class="ms-desc ms-desc-error" [id]="_id + '-error'" role="alert">{{ error() }}</p>
25073
25111
  } @else if (hint()) {
25074
- <p class="ms-desc">{{ hint() }}</p>
25112
+ <p class="ms-desc" [id]="_id + '-hint'">{{ hint() }}</p>
25075
25113
  }
25076
25114
  </div>
25077
25115
  `,
25078
25116
  isInline: true,
25079
- styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"],
25117
+ styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-option-desc{margin:2px 0 0 26px;font-size:.75rem;line-height:1.4;color:#64748b}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"],
25080
25118
  dependencies: [{
25081
25119
  kind: "component",
25082
25120
  type: ChipComponent,
@@ -25163,32 +25201,40 @@ i0.ɵɵngDeclareClassMetadata({
25163
25201
  class="ms-trigger"
25164
25202
  [class.ms-open]="_open()"
25165
25203
  [disabled]="disabled()"
25204
+ aria-haspopup="listbox"
25166
25205
  [attr.aria-expanded]="_open()"
25206
+ [attr.aria-controls]="_open() ? _id + '-list' : null"
25167
25207
  [attr.aria-labelledby]="label() ? _id + '-label' : null"
25168
- (click)="toggleOpen()">
25208
+ [attr.aria-describedby]="error() ? _id + '-error' : (hint() ? _id + '-hint' : null)"
25209
+ [attr.aria-invalid]="error() ? 'true' : null"
25210
+ [attr.aria-required]="required() ? 'true' : null"
25211
+ (click)="toggleOpen()"
25212
+ (keydown.escape)="onEscape($event)">
25169
25213
  <span class="ms-placeholder">{{ _selectedSet().size ? _selectedSet().size + ' selected' : placeholder() }}</span>
25170
25214
  <svg class="ms-chevron" [class.ms-chevron-open]="_open()" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
25171
25215
  </button>
25172
25216
 
25173
25217
  @if (_open()) {
25174
- <div class="ms-dropdown" role="listbox" aria-multiselectable="true">
25218
+ <div class="ms-dropdown" [id]="_id + '-list'" (keydown.escape)="onEscape($event)">
25175
25219
  @if (searchable()) {
25176
25220
  <div class="ms-search-wrap">
25177
25221
  <input
25178
25222
  class="ms-search"
25179
25223
  type="text"
25180
25224
  [placeholder]="searchPlaceholder()"
25225
+ [attr.aria-label]="searchPlaceholder()"
25181
25226
  [value]="_query()"
25182
25227
  (input)="_query.set($any($event.target).value)" />
25183
25228
  </div>
25184
25229
  }
25185
- <div class="ms-options">
25230
+ <div class="ms-options" role="listbox" aria-multiselectable="true" [attr.aria-labelledby]="label() ? _id + '-label' : null">
25186
25231
  @for (opt of _filteredOptions(); track opt.value) {
25187
- <div class="ms-option" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25232
+ <div class="ms-option" role="option" [attr.aria-selected]="_selectedSet().has(opt.value)" [class.ms-option-selected]="_selectedSet().has(opt.value)">
25188
25233
  <ui-checkbox
25189
25234
  [label]="opt.label"
25190
25235
  [checked]="_selectedSet().has(opt.value)"
25191
25236
  (checkedChange)="toggleValue(opt.value)" />
25237
+ @if (opt.description) { <p class="ms-option-desc">{{ opt.description }}</p> }
25192
25238
  </div>
25193
25239
  } @empty {
25194
25240
  <div class="ms-empty">No options found</div>
@@ -25199,13 +25245,13 @@ i0.ɵɵngDeclareClassMetadata({
25199
25245
  </div>
25200
25246
 
25201
25247
  @if (error()) {
25202
- <p class="ms-desc ms-desc-error" role="alert">{{ error() }}</p>
25248
+ <p class="ms-desc ms-desc-error" [id]="_id + '-error'" role="alert">{{ error() }}</p>
25203
25249
  } @else if (hint()) {
25204
- <p class="ms-desc">{{ hint() }}</p>
25250
+ <p class="ms-desc" [id]="_id + '-hint'">{{ hint() }}</p>
25205
25251
  }
25206
25252
  </div>
25207
25253
  `,
25208
- styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"]
25254
+ styles: [":host{display:block}.ms-field{display:flex;flex-direction:column;gap:6px}.ms-label{font-size:.8125rem;font-weight:600;color:#374151;line-height:1}.ms-required{color:#dc2626;margin-left:2px}.ms-tags{display:flex;flex-wrap:wrap;gap:6px}.ms-wrap{position:relative}.ms-trigger{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;padding:9px 10px 9px 12px;font-size:.875rem;font-family:inherit;text-align:left;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;outline:none;transition:border-color .15s,box-shadow .15s}.ms-trigger:focus-visible,.ms-trigger.ms-open{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ms-has-error .ms-trigger{border-color:#ef4444}.ms-disabled .ms-trigger{opacity:.5;cursor:not-allowed}.ms-placeholder{color:#64748b}.ms-chevron{color:#64748b;flex-shrink:0;margin-left:8px;transition:transform .2s ease}.ms-chevron-open{transform:rotate(180deg)}.ms-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;display:flex;flex-direction:column;max-height:260px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 4px 16px #0f172a1a}.ms-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0}.ms-search{width:100%;box-sizing:border-box;padding:7px 10px;font-size:.8125rem;font-family:inherit;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ms-search::placeholder{color:#64748b;opacity:1}.ms-search:focus{border-color:#3b82f6}.ms-options{overflow-y:auto;padding:4px 0}.ms-option{padding:7px 12px;font-size:.8125rem}.ms-option:hover{background:#f8fafc}.ms-option-selected{background:#eff6ff}.ms-option-desc{margin:2px 0 0 26px;font-size:.75rem;line-height:1.4;color:#64748b}.ms-empty{padding:16px;text-align:center;color:#94a3b8;font-size:.8125rem}.ms-desc{margin:0;font-size:.75rem;line-height:1.4;color:#64748b}.ms-desc-error{color:#dc2626}@media(max-width:480px){.ms-trigger,.ms-search{font-size:1rem}}\n"]
25209
25255
  }]
25210
25256
  }],
25211
25257
  propDecorators: {
@@ -26037,6 +26083,329 @@ i0.ɵɵngDeclareClassMetadata({
26037
26083
  }]
26038
26084
  }
26039
26085
  });
26086
+ var TextTemplatePickerComponent = class TextTemplatePickerComponent {
26087
+ constructor() {
26088
+ this.variables = input([], ...ngDevMode ? [{ debugName: "variables" }] : /* istanbul ignore next */ []);
26089
+ this.label = input("Insert variable", ...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
26090
+ this.searchPlaceholder = input("Search variables...", ...ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []);
26091
+ this.disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
26092
+ this.picked = output();
26093
+ this._id = `ttp-${Math.random().toString(36).slice(2, 8)}`;
26094
+ this._open = signal(false, ...ngDevMode ? [{ debugName: "_open" }] : /* istanbul ignore next */ []);
26095
+ this._query = signal("", ...ngDevMode ? [{ debugName: "_query" }] : /* istanbul ignore next */ []);
26096
+ this._active = signal(0, ...ngDevMode ? [{ debugName: "_active" }] : /* istanbul ignore next */ []);
26097
+ this._top = signal(null, ...ngDevMode ? [{ debugName: "_top" }] : /* istanbul ignore next */ []);
26098
+ this._bottom = signal(null, ...ngDevMode ? [{ debugName: "_bottom" }] : /* istanbul ignore next */ []);
26099
+ this._left = signal(0, ...ngDevMode ? [{ debugName: "_left" }] : /* istanbul ignore next */ []);
26100
+ this._width = signal(320, ...ngDevMode ? [{ debugName: "_width" }] : /* istanbul ignore next */ []);
26101
+ this._maxHeight = signal(360, ...ngDevMode ? [{ debugName: "_maxHeight" }] : /* istanbul ignore next */ []);
26102
+ this.host = inject(ElementRef);
26103
+ this.injector = inject(Injector);
26104
+ this._matches = computed(() => {
26105
+ const q = TextTemplatePickerComponent.fold(this._query().trim());
26106
+ return q ? this.variables().filter((v) => TextTemplatePickerComponent.fold(v.label).includes(q)) : this.variables();
26107
+ }, ...ngDevMode ? [{ debugName: "_matches" }] : /* istanbul ignore next */ []);
26108
+ this._rows = computed(() => {
26109
+ const rows = [];
26110
+ let last;
26111
+ this._matches().forEach((v, index) => {
26112
+ if (v.group && v.group !== last) rows.push({
26113
+ kind: "group",
26114
+ key: "g:" + v.group,
26115
+ text: v.group
26116
+ });
26117
+ last = v.group;
26118
+ rows.push({
26119
+ kind: "option",
26120
+ key: "o:" + v.value,
26121
+ text: v.label,
26122
+ variable: v,
26123
+ index
26124
+ });
26125
+ });
26126
+ return rows;
26127
+ }, ...ngDevMode ? [{ debugName: "_rows" }] : /* istanbul ignore next */ []);
26128
+ this._activeId = computed(() => this._matches().length ? `${this._id}-o${this._active()}` : null, ...ngDevMode ? [{ debugName: "_activeId" }] : /* istanbul ignore next */ []);
26129
+ this._status = computed(() => {
26130
+ const n = this._matches().length;
26131
+ return n === 0 ? "No variables found" : n === 1 ? "1 variable" : `${n} variables`;
26132
+ }, ...ngDevMode ? [{ debugName: "_status" }] : /* istanbul ignore next */ []);
26133
+ this.onAnyScroll = (event) => {
26134
+ if (!(event.target instanceof Node && this.host.nativeElement.contains(event.target))) this.close(false);
26135
+ };
26136
+ inject(DestroyRef).onDestroy(() => window.removeEventListener("scroll", this.onAnyScroll, true));
26137
+ }
26138
+ static fold(s) {
26139
+ return s.normalize("NFD").replace(/[̀-ͯ]/g, "").toLowerCase();
26140
+ }
26141
+ toggle() {
26142
+ if (this.disabled()) return;
26143
+ if (this._open()) this.close(false);
26144
+ else this.openList();
26145
+ }
26146
+ openFromKey(event) {
26147
+ event.preventDefault();
26148
+ if (!this._open() && !this.disabled()) this.openList();
26149
+ }
26150
+ openList() {
26151
+ this._query.set("");
26152
+ this._active.set(0);
26153
+ this.place();
26154
+ this._open.set(true);
26155
+ window.addEventListener("scroll", this.onAnyScroll, true);
26156
+ afterNextRender(() => this.host.nativeElement.querySelector(".ttp-search")?.focus(), { injector: this.injector });
26157
+ }
26158
+ place() {
26159
+ const r = this.host.nativeElement.querySelector(".ttp-trigger").getBoundingClientRect();
26160
+ const vw = window.innerWidth, vh = window.innerHeight, gap = 6, margin = 8;
26161
+ const below = vh - r.bottom - gap - margin, above = r.top - gap - margin;
26162
+ const up = below < 260 && above > below;
26163
+ const room = Math.max(160, up ? above : below);
26164
+ const width = Math.min(Math.max(r.width, 320), vw - 16);
26165
+ this._width.set(width);
26166
+ this._left.set(Math.min(Math.max(margin, r.left), vw - width - margin));
26167
+ this._maxHeight.set(Math.min(360, room));
26168
+ this._top.set(up ? null : r.bottom + gap);
26169
+ this._bottom.set(up ? vh - r.top + gap : null);
26170
+ }
26171
+ onQuery(value) {
26172
+ this._query.set(value);
26173
+ this._active.set(0);
26174
+ this.scrollActive();
26175
+ }
26176
+ onSearchKey(event) {
26177
+ const n = this._matches().length;
26178
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
26179
+ event.preventDefault();
26180
+ if (n) this._active.set((this._active() + (event.key === "ArrowDown" ? 1 : -1) + n) % n);
26181
+ this.scrollActive();
26182
+ } else if (event.key === "Home" || event.key === "End") {
26183
+ if (n) {
26184
+ event.preventDefault();
26185
+ this._active.set(event.key === "Home" ? 0 : n - 1);
26186
+ this.scrollActive();
26187
+ }
26188
+ } else if (event.key === "Enter") {
26189
+ event.preventDefault();
26190
+ const v = this._matches()[this._active()];
26191
+ if (v) this.pick(v);
26192
+ } else if (event.key === "Tab") this.close(false);
26193
+ }
26194
+ pick(variable) {
26195
+ this.picked.emit(variable.value);
26196
+ this.close(true);
26197
+ }
26198
+ onEscape(event) {
26199
+ event.preventDefault();
26200
+ event.stopPropagation();
26201
+ this.close(true);
26202
+ }
26203
+ close(refocus) {
26204
+ this._open.set(false);
26205
+ this._query.set("");
26206
+ window.removeEventListener("scroll", this.onAnyScroll, true);
26207
+ if (refocus) this.host.nativeElement.querySelector(".ttp-trigger")?.focus();
26208
+ }
26209
+ scrollActive() {
26210
+ afterNextRender(() => this.host.nativeElement.querySelector(".ttp-active")?.scrollIntoView({ block: "nearest" }), { injector: this.injector });
26211
+ }
26212
+ onDocumentClick(event) {
26213
+ if (this._open() && !this.host.nativeElement.contains(event.target)) this.close(false);
26214
+ }
26215
+ onResize() {
26216
+ if (this._open()) this.close(false);
26217
+ }
26218
+ static {
26219
+ this.ɵfac = i0.ɵɵngDeclareFactory({
26220
+ minVersion: "12.0.0",
26221
+ version: "22.2.2",
26222
+ ngImport: i0,
26223
+ type: TextTemplatePickerComponent,
26224
+ deps: [],
26225
+ target: i0.ɵɵFactoryTarget.Component
26226
+ });
26227
+ }
26228
+ static {
26229
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
26230
+ minVersion: "17.0.0",
26231
+ version: "22.2.2",
26232
+ type: TextTemplatePickerComponent,
26233
+ isStandalone: true,
26234
+ selector: "ui-text-template-picker",
26235
+ inputs: {
26236
+ variables: {
26237
+ classPropertyName: "variables",
26238
+ publicName: "variables",
26239
+ isSignal: true,
26240
+ isRequired: false,
26241
+ transformFunction: null
26242
+ },
26243
+ label: {
26244
+ classPropertyName: "label",
26245
+ publicName: "label",
26246
+ isSignal: true,
26247
+ isRequired: false,
26248
+ transformFunction: null
26249
+ },
26250
+ searchPlaceholder: {
26251
+ classPropertyName: "searchPlaceholder",
26252
+ publicName: "searchPlaceholder",
26253
+ isSignal: true,
26254
+ isRequired: false,
26255
+ transformFunction: null
26256
+ },
26257
+ disabled: {
26258
+ classPropertyName: "disabled",
26259
+ publicName: "disabled",
26260
+ isSignal: true,
26261
+ isRequired: false,
26262
+ transformFunction: null
26263
+ }
26264
+ },
26265
+ outputs: { picked: "picked" },
26266
+ host: { listeners: {
26267
+ "document:click": "onDocumentClick($event)",
26268
+ "window:resize": "onResize()"
26269
+ } },
26270
+ ngImport: i0,
26271
+ template: `
26272
+ <button type="button" class="ttp-trigger" [class.ttp-open]="_open()" [disabled]="disabled()"
26273
+ aria-haspopup="listbox" [attr.aria-expanded]="_open()" [attr.aria-controls]="_open() ? _id + '-list' : null"
26274
+ (click)="toggle()" (keydown.arrowDown)="openFromKey($event)">
26275
+ <span>{{ label() }}</span>
26276
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
26277
+ </button>
26278
+
26279
+ @if (_open()) {
26280
+ <div class="ttp-panel" [style.top.px]="_top()" [style.bottom.px]="_bottom()" [style.left.px]="_left()" [style.width.px]="_width()"
26281
+ [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)">
26282
+ <div class="ttp-search-wrap">
26283
+ <input #search class="ttp-search" type="text" role="combobox" autocomplete="off" aria-autocomplete="list" aria-expanded="true"
26284
+ [attr.aria-controls]="_id + '-list'" [attr.aria-activedescendant]="_activeId()" [attr.aria-label]="searchPlaceholder()"
26285
+ [placeholder]="searchPlaceholder()" [value]="_query()"
26286
+ (input)="onQuery($any($event.target).value)" (keydown)="onSearchKey($event)" />
26287
+ </div>
26288
+ <div class="ttp-list" role="listbox" [id]="_id + '-list'" [attr.aria-label]="label()">
26289
+ @for (row of _rows(); track row.key) {
26290
+ @if (row.kind === 'group') {
26291
+ <div class="ttp-group" role="presentation">{{ row.text }}</div>
26292
+ } @else {
26293
+ <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_active() === row.index"
26294
+ [attr.aria-selected]="_active() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26295
+ {{ row.text }}
26296
+ </div>
26297
+ }
26298
+ } @empty {
26299
+ <div class="ttp-empty">No variables match "{{ _query().trim() }}"</div>
26300
+ }
26301
+ </div>
26302
+ <div class="ttp-status" role="status" aria-live="polite">{{ _status() }}</div>
26303
+ </div>
26304
+ }
26305
+ `,
26306
+ isInline: true,
26307
+ styles: [":host{display:inline-block}.ttp-trigger{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;min-height:36px;box-sizing:border-box;font:inherit;font-size:.875rem;font-weight:500;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.ttp-trigger:hover{background:#f8fafc}.ttp-trigger:focus-visible,.ttp-trigger.ttp-open{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ttp-trigger:disabled{opacity:.5;cursor:not-allowed}.ttp-trigger svg{flex-shrink:0;color:#64748b}.ttp-panel{position:fixed;z-index:10000;display:flex;flex-direction:column;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;max-width:calc(100vw - 16px)}.ttp-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ttp-search{width:100%;box-sizing:border-box;padding:8px 10px;font:inherit;font-size:.875rem;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ttp-search::placeholder{color:#64748b;opacity:1}.ttp-search:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ttp-list{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1 1 auto}.ttp-group{position:sticky;top:0;padding:6px 14px;font-size:.6875rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#64748b;background:#f8fafc;border-bottom:1px solid #f1f5f9}.ttp-option{padding:10px 14px;font-size:.875rem;color:#1e293b;cursor:pointer;border-bottom:1px solid #f1f5f9}.ttp-option.ttp-active{background:#eff6ff;color:#2563eb}.ttp-empty{padding:16px;text-align:center;font-size:.8125rem;color:#64748b}.ttp-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(pointer:coarse),(max-width:768px){.ttp-trigger{min-height:44px}.ttp-option{padding:13px 14px}.ttp-search{font-size:1rem;min-height:44px}}\n"],
26308
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
26309
+ });
26310
+ }
26311
+ };
26312
+ i0.ɵɵngDeclareClassMetadata({
26313
+ minVersion: "12.0.0",
26314
+ version: "22.2.2",
26315
+ ngImport: i0,
26316
+ type: TextTemplatePickerComponent,
26317
+ decorators: [{
26318
+ type: Component,
26319
+ args: [{
26320
+ selector: "ui-text-template-picker",
26321
+ standalone: true,
26322
+ changeDetection: ChangeDetectionStrategy.OnPush,
26323
+ template: `
26324
+ <button type="button" class="ttp-trigger" [class.ttp-open]="_open()" [disabled]="disabled()"
26325
+ aria-haspopup="listbox" [attr.aria-expanded]="_open()" [attr.aria-controls]="_open() ? _id + '-list' : null"
26326
+ (click)="toggle()" (keydown.arrowDown)="openFromKey($event)">
26327
+ <span>{{ label() }}</span>
26328
+ <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><polyline points="6 9 12 15 18 9"/></svg>
26329
+ </button>
26330
+
26331
+ @if (_open()) {
26332
+ <div class="ttp-panel" [style.top.px]="_top()" [style.bottom.px]="_bottom()" [style.left.px]="_left()" [style.width.px]="_width()"
26333
+ [style.max-height.px]="_maxHeight()" (keydown.escape)="onEscape($event)">
26334
+ <div class="ttp-search-wrap">
26335
+ <input #search class="ttp-search" type="text" role="combobox" autocomplete="off" aria-autocomplete="list" aria-expanded="true"
26336
+ [attr.aria-controls]="_id + '-list'" [attr.aria-activedescendant]="_activeId()" [attr.aria-label]="searchPlaceholder()"
26337
+ [placeholder]="searchPlaceholder()" [value]="_query()"
26338
+ (input)="onQuery($any($event.target).value)" (keydown)="onSearchKey($event)" />
26339
+ </div>
26340
+ <div class="ttp-list" role="listbox" [id]="_id + '-list'" [attr.aria-label]="label()">
26341
+ @for (row of _rows(); track row.key) {
26342
+ @if (row.kind === 'group') {
26343
+ <div class="ttp-group" role="presentation">{{ row.text }}</div>
26344
+ } @else {
26345
+ <div class="ttp-option" role="option" [id]="_id + '-o' + row.index" [class.ttp-active]="_active() === row.index"
26346
+ [attr.aria-selected]="_active() === row.index" (mousedown)="$event.preventDefault()" (click)="pick(row.variable!)" (mouseenter)="_active.set(row.index!)">
26347
+ {{ row.text }}
26348
+ </div>
26349
+ }
26350
+ } @empty {
26351
+ <div class="ttp-empty">No variables match "{{ _query().trim() }}"</div>
26352
+ }
26353
+ </div>
26354
+ <div class="ttp-status" role="status" aria-live="polite">{{ _status() }}</div>
26355
+ </div>
26356
+ }
26357
+ `,
26358
+ styles: [":host{display:inline-block}.ttp-trigger{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;min-height:36px;box-sizing:border-box;font:inherit;font-size:.875rem;font-weight:500;color:#1e293b;background:#fff;border:1px solid #7c8ba1;border-radius:8px;cursor:pointer;transition:border-color .15s,box-shadow .15s}.ttp-trigger:hover{background:#f8fafc}.ttp-trigger:focus-visible,.ttp-trigger.ttp-open{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ttp-trigger:disabled{opacity:.5;cursor:not-allowed}.ttp-trigger svg{flex-shrink:0;color:#64748b}.ttp-panel{position:fixed;z-index:10000;display:flex;flex-direction:column;box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 4px 6px #0000000a,0 12px 28px #0000001a;max-width:calc(100vw - 16px)}.ttp-search-wrap{padding:8px;border-bottom:1px solid #e2e8f0;flex-shrink:0}.ttp-search{width:100%;box-sizing:border-box;padding:8px 10px;font:inherit;font-size:.875rem;color:#1e293b;border:1px solid #7c8ba1;border-radius:6px;outline:none}.ttp-search::placeholder{color:#64748b;opacity:1}.ttp-search:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61f}.ttp-list{overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1 1 auto}.ttp-group{position:sticky;top:0;padding:6px 14px;font-size:.6875rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#64748b;background:#f8fafc;border-bottom:1px solid #f1f5f9}.ttp-option{padding:10px 14px;font-size:.875rem;color:#1e293b;cursor:pointer;border-bottom:1px solid #f1f5f9}.ttp-option.ttp-active{background:#eff6ff;color:#2563eb}.ttp-empty{padding:16px;text-align:center;font-size:.8125rem;color:#64748b}.ttp-status{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media(pointer:coarse),(max-width:768px){.ttp-trigger{min-height:44px}.ttp-option{padding:13px 14px}.ttp-search{font-size:1rem;min-height:44px}}\n"]
26359
+ }]
26360
+ }],
26361
+ ctorParameters: () => [],
26362
+ propDecorators: {
26363
+ variables: [{
26364
+ type: i0.Input,
26365
+ args: [{
26366
+ isSignal: true,
26367
+ alias: "variables",
26368
+ required: false
26369
+ }]
26370
+ }],
26371
+ label: [{
26372
+ type: i0.Input,
26373
+ args: [{
26374
+ isSignal: true,
26375
+ alias: "label",
26376
+ required: false
26377
+ }]
26378
+ }],
26379
+ searchPlaceholder: [{
26380
+ type: i0.Input,
26381
+ args: [{
26382
+ isSignal: true,
26383
+ alias: "searchPlaceholder",
26384
+ required: false
26385
+ }]
26386
+ }],
26387
+ disabled: [{
26388
+ type: i0.Input,
26389
+ args: [{
26390
+ isSignal: true,
26391
+ alias: "disabled",
26392
+ required: false
26393
+ }]
26394
+ }],
26395
+ picked: [{
26396
+ type: i0.Output,
26397
+ args: ["picked"]
26398
+ }],
26399
+ onDocumentClick: [{
26400
+ type: HostListener,
26401
+ args: ["document:click", ["$event"]]
26402
+ }],
26403
+ onResize: [{
26404
+ type: HostListener,
26405
+ args: ["window:resize"]
26406
+ }]
26407
+ }
26408
+ });
26040
26409
  const FOCUSABLE = "input:not([type=\"hidden\"]), select, textarea, button, [tabindex]:not([tabindex=\"-1\"]), [contenteditable=\"true\"]";
26041
26410
  var FormComponent = class FormComponent {
26042
26411
  constructor() {
@@ -26058,7 +26427,8 @@ var FormComponent = class FormComponent {
26058
26427
  let target;
26059
26428
  if (marked.matches(FOCUSABLE)) target = FormComponent._usable(marked) ? marked : void 0;
26060
26429
  else target = Array.from(marked.querySelectorAll(FOCUSABLE)).find((c) => FormComponent._usable(c));
26061
- if (target && !found.includes(target)) found.push(target);
26430
+ const sameGroup = (t) => target instanceof HTMLInputElement && target.type === "radio" && t instanceof HTMLInputElement && t.type === "radio" && t.name === target.name && t.form === target.form;
26431
+ if (target && !found.some((t) => t === target || sameGroup(t))) found.push(target);
26062
26432
  }
26063
26433
  return found;
26064
26434
  }
@@ -26398,6 +26768,7 @@ var ListItemComponent = class ListItemComponent {
26398
26768
  this.iconColor = input("slate", ...ngDevMode ? [{ debugName: "iconColor" }] : /* istanbul ignore next */ []);
26399
26769
  this.iconD = () => this.icon() ? iconPath(this.icon()) ?? null : null;
26400
26770
  this.select = output();
26771
+ this.pressable = () => this.interactive() && this.leading() === "none";
26401
26772
  this.visibleDetails = () => this.details().map((d) => typeof d === "string" ? {
26402
26773
  text: d,
26403
26774
  d: null,
@@ -26411,6 +26782,16 @@ var ListItemComponent = class ListItemComponent {
26411
26782
  get _borderedClass() {
26412
26783
  return this.bordered();
26413
26784
  }
26785
+ onRowClick(e) {
26786
+ if (!this.pressable()) return;
26787
+ if (e.target.closest("[list-item-action], [li-action]")) return;
26788
+ this.select.emit();
26789
+ }
26790
+ onRowKey(e) {
26791
+ if (!this.pressable() || e.target !== e.currentTarget) return;
26792
+ e.preventDefault();
26793
+ this.select.emit();
26794
+ }
26414
26795
  static {
26415
26796
  this.ɵfac = i0.ɵɵngDeclareFactory({
26416
26797
  minVersion: "12.0.0",
@@ -26567,7 +26948,9 @@ var ListItemComponent = class ListItemComponent {
26567
26948
  }
26568
26949
  </ng-template>
26569
26950
 
26570
- <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
26951
+ <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--pressable]="pressable()"
26952
+ [attr.role]="pressable() ? 'button' : null" [attr.tabindex]="pressable() ? 0 : null"
26953
+ (click)="onRowClick($event)" (keydown.enter)="onRowKey($event)" (keydown.space)="onRowKey($event)" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
26571
26954
 
26572
26955
  @if (!interactive()) {
26573
26956
  <ng-container [ngTemplateOutlet]="tile" />
@@ -26605,7 +26988,7 @@ var ListItemComponent = class ListItemComponent {
26605
26988
  </div>
26606
26989
  `,
26607
26990
  isInline: true,
26608
- 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"],
26991
+ 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-row.li-row--pressable{cursor:pointer}.li-row.li-row--pressable:focus-visible{outline:2px solid var(--primary, #2563eb);outline-offset:-2px}.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"],
26609
26992
  dependencies: [{
26610
26993
  kind: "component",
26611
26994
  type: BadgeComponent,
@@ -26668,7 +27051,9 @@ i0.ɵɵngDeclareClassMetadata({
26668
27051
  }
26669
27052
  </ng-template>
26670
27053
 
26671
- <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
27054
+ <div class="li-row" [class.li-row--highlighted]="highlighted()" [class.li-row--pressable]="pressable()"
27055
+ [attr.role]="pressable() ? 'button' : null" [attr.tabindex]="pressable() ? 0 : null"
27056
+ (click)="onRowClick($event)" (keydown.enter)="onRowKey($event)" (keydown.space)="onRowKey($event)" [class.li-row--static]="!interactive()" [class.li-row--wrap]="wrapText() || !interactive()">
26672
27057
 
26673
27058
  @if (!interactive()) {
26674
27059
  <ng-container [ngTemplateOutlet]="tile" />
@@ -26705,7 +27090,7 @@ i0.ɵɵngDeclareClassMetadata({
26705
27090
 
26706
27091
  </div>
26707
27092
  `,
26708
- 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"]
27093
+ 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-row.li-row--pressable{cursor:pointer}.li-row.li-row--pressable:focus-visible{outline:2px solid var(--primary, #2563eb);outline-offset:-2px}.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"]
26709
27094
  }]
26710
27095
  }],
26711
27096
  propDecorators: {
@@ -33231,7 +33616,10 @@ var DateRangePickerComponent = class DateRangePickerComponent {
33231
33616
  source: this.selectedPreset,
33232
33617
  computation: (_, previous) => previous === void 0
33233
33618
  });
33234
- this.popoverVisible = computed(() => this.showPresets() && this.selectedPreset() === "custom" && !this.popoverDismissed(), ...ngDevMode ? [{ debugName: "popoverVisible" }] : /* istanbul ignore next */ []);
33619
+ this.popoverVisible = computed(() => {
33620
+ const dismissed = this.popoverDismissed();
33621
+ return this.showPresets() && this.selectedPreset() === "custom" && !dismissed;
33622
+ }, ...ngDevMode ? [{ debugName: "popoverVisible" }] : /* istanbul ignore next */ []);
33235
33623
  this.popTop = signal(0, ...ngDevMode ? [{ debugName: "popTop" }] : /* istanbul ignore next */ []);
33236
33624
  this.popRight = signal(16, ...ngDevMode ? [{ debugName: "popRight" }] : /* istanbul ignore next */ []);
33237
33625
  this.host = inject(ElementRef);
@@ -33424,7 +33812,8 @@ var DateRangePickerComponent = class DateRangePickerComponent {
33424
33812
  "activeKey",
33425
33813
  "ariaLabel",
33426
33814
  "name",
33427
- "noWrap"
33815
+ "noWrap",
33816
+ "orientation"
33428
33817
  ],
33429
33818
  outputs: ["tabChange"]
33430
33819
  },
@@ -40421,7 +40810,8 @@ var CalendarComponent = class CalendarComponent {
40421
40810
  "activeKey",
40422
40811
  "ariaLabel",
40423
40812
  "name",
40424
- "noWrap"
40813
+ "noWrap",
40814
+ "orientation"
40425
40815
  ],
40426
40816
  outputs: ["tabChange"]
40427
40817
  },
@@ -44457,7 +44847,8 @@ var SetupWizardComponent = class SetupWizardComponent {
44457
44847
  "activeKey",
44458
44848
  "ariaLabel",
44459
44849
  "name",
44460
- "noWrap"
44850
+ "noWrap",
44851
+ "orientation"
44461
44852
  ],
44462
44853
  outputs: ["tabChange"]
44463
44854
  },
@@ -46081,12 +46472,12 @@ var EmailTemplateEditorComponent = class EmailTemplateEditorComponent {
46081
46472
 
46082
46473
  <div class="form-field">
46083
46474
  <ui-text-input label="Name" [required]="true" [(ngModel)]="name" [readonly]="!canWrite()" [maxlength]="maxTextLength()"
46084
- [placeholder]="namePlaceholder()" [error]="nameErrorShown()" (blurred)="nameTouched.set(true)" />
46475
+ [placeholder]="namePlaceholder()" [error]="nameErrorShown()" [showErrors]="nameTouched() || submitAttempted()" (blurred)="nameTouched.set(true)" />
46085
46476
  </div>
46086
46477
 
46087
46478
  <div class="form-field">
46088
46479
  <ui-text-input label="Subject" [required]="true" [(ngModel)]="subject" [readonly]="!canWrite()" [maxlength]="maxTextLength()"
46089
- [placeholder]="subjectPlaceholder()" [error]="subjectErrorShown()" (blurred)="subjectTouched.set(true)">
46480
+ [placeholder]="subjectPlaceholder()" [error]="subjectErrorShown()" [showErrors]="subjectTouched() || submitAttempted()" (blurred)="subjectTouched.set(true)">
46090
46481
  </ui-text-input>
46091
46482
  </div>
46092
46483
 
@@ -46333,12 +46724,12 @@ var EmailTemplateEditorComponent = class EmailTemplateEditorComponent {
46333
46724
  }
46334
46725
  </section>
46335
46726
 
46336
- <!-- RIGHT PANEL: Blocks, Variables, Video -->
46337
- <aside class="panel-right" aria-label="Blocks, variables and video">
46727
+ <!-- RIGHT PANEL: Blocks, Variables, Video (the word video appears only while the Video tab is on) -->
46728
+ <aside class="panel-right" [attr.aria-label]="videosEnabled() ? 'Blocks, variables and video' : 'Blocks and variables'">
46338
46729
  @if (!canWrite()) {
46339
46730
  <div class="right-panel-body" data-testid="tpl-readonly-tools-note">
46340
46731
  <h4 class="right-section-title">Read only</h4>
46341
- <p class="right-section-hint">Blocks, variables and videos can only be added to a template you can edit.</p>
46732
+ <p class="right-section-hint">{{ videosEnabled() ? 'Blocks, variables and videos can only be added to a template you can edit.' : 'Blocks and variables can only be added to a template you can edit.' }}</p>
46342
46733
  </div>
46343
46734
  } @else {
46344
46735
  <div class="right-tabs" role="tablist" aria-label="Right panel sections">
@@ -46653,7 +47044,8 @@ var EmailTemplateEditorComponent = class EmailTemplateEditorComponent {
46653
47044
  "activeKey",
46654
47045
  "ariaLabel",
46655
47046
  "name",
46656
- "noWrap"
47047
+ "noWrap",
47048
+ "orientation"
46657
47049
  ],
46658
47050
  outputs: ["tabChange"]
46659
47051
  },
@@ -46865,12 +47257,12 @@ i0.ɵɵngDeclareClassMetadata({
46865
47257
 
46866
47258
  <div class="form-field">
46867
47259
  <ui-text-input label="Name" [required]="true" [(ngModel)]="name" [readonly]="!canWrite()" [maxlength]="maxTextLength()"
46868
- [placeholder]="namePlaceholder()" [error]="nameErrorShown()" (blurred)="nameTouched.set(true)" />
47260
+ [placeholder]="namePlaceholder()" [error]="nameErrorShown()" [showErrors]="nameTouched() || submitAttempted()" (blurred)="nameTouched.set(true)" />
46869
47261
  </div>
46870
47262
 
46871
47263
  <div class="form-field">
46872
47264
  <ui-text-input label="Subject" [required]="true" [(ngModel)]="subject" [readonly]="!canWrite()" [maxlength]="maxTextLength()"
46873
- [placeholder]="subjectPlaceholder()" [error]="subjectErrorShown()" (blurred)="subjectTouched.set(true)">
47265
+ [placeholder]="subjectPlaceholder()" [error]="subjectErrorShown()" [showErrors]="subjectTouched() || submitAttempted()" (blurred)="subjectTouched.set(true)">
46874
47266
  </ui-text-input>
46875
47267
  </div>
46876
47268
 
@@ -47117,12 +47509,12 @@ i0.ɵɵngDeclareClassMetadata({
47117
47509
  }
47118
47510
  </section>
47119
47511
 
47120
- <!-- RIGHT PANEL: Blocks, Variables, Video -->
47121
- <aside class="panel-right" aria-label="Blocks, variables and video">
47512
+ <!-- RIGHT PANEL: Blocks, Variables, Video (the word video appears only while the Video tab is on) -->
47513
+ <aside class="panel-right" [attr.aria-label]="videosEnabled() ? 'Blocks, variables and video' : 'Blocks and variables'">
47122
47514
  @if (!canWrite()) {
47123
47515
  <div class="right-panel-body" data-testid="tpl-readonly-tools-note">
47124
47516
  <h4 class="right-section-title">Read only</h4>
47125
- <p class="right-section-hint">Blocks, variables and videos can only be added to a template you can edit.</p>
47517
+ <p class="right-section-hint">{{ videosEnabled() ? 'Blocks, variables and videos can only be added to a template you can edit.' : 'Blocks and variables can only be added to a template you can edit.' }}</p>
47126
47518
  </div>
47127
47519
  } @else {
47128
47520
  <div class="right-tabs" role="tablist" aria-label="Right panel sections">
@@ -47535,6 +47927,6 @@ i0.ɵɵngDeclareClassMetadata({
47535
47927
  }]
47536
47928
  }
47537
47929
  });
47538
- export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BoardCardDirective, BoardComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CardListItemComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_EMAIL_TEMPLATE_BLOCK_GROUPS, DEFAULT_EMAIL_TEMPLATE_VARIABLE_GROUPS, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EMAIL_BLOCK_DRAG_TYPE, EMAIL_TEMPLATE_MAX_BODY, EMAIL_TEMPLATE_MAX_TEXT, EMAIL_TEMPLATE_START_TEXT, EmailTemplateEditorComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FixedFooterComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IDX_BEHAVIOR_SIGNALS, INTEGRATION_CATALOG, INTEGRATION_FIELD_DEFS, INTEGRATION_GROUP_ORDER, INTEGRATION_OPTION_DEFS, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, ImportSourceGridComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, MAX_EMAIL_ADDRESS_LENGTH, ModalComponent, MoreMenuComponent, MultiSelectComponent, NOTES_MAX_LENGTH, NotesComponent, OptionCardComponent, 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, SETUP_DONE_KEY, SETUP_INTEGRATIONS, SearchInputComponent, SectionHeaderComponent, SelectComponent, SetupWizardComponent, SetupWizardStepDirective, SetupWizardStepHeaderDirective, ShowComponent, SidePanelComponent, SidebarLayoutComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, blockHasContent, buildDefaultSchedule, buildPreviewDocument, buildVideoBlockHtml, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, escapeHtml, fileMatchesAccept, formatAddress, formatCategoryLabel, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, formatVideoDuration, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, insideEditorBlock, integrationPlainText, integrationsForApp, integrationsOnlyFor, isBlockDrag, isValidEmailAddress, isWebUrl, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours, serializedTextLength, setupIntegrations, splitIntro };
47930
+ export { ActionBarComponent, AlertComponent, AppShellComponent, AudioPlayerComponent, AvatarComponent, BADGE_VARIANT_STYLES, BadgeComponent, BarRowComponent, BoardCardDirective, BoardComponent, BulkMessagePanelComponent, BusinessHoursComponent, ButtonComponent, CalendarComponent, CardListItemComponent, CheckboxComponent, CheckboxTrailingDirective, ChipComponent, ChipGroupComponent, ColorInputComponent, ColumnFilterComponent, ColumnsComponent, ComboboxComponent, ConfirmOutletComponent, ConfirmService, ContactPickerComponent, DEFAULT_EMAIL_TEMPLATE_BLOCK_GROUPS, DEFAULT_EMAIL_TEMPLATE_VARIABLE_GROUPS, DEFAULT_PASSWORD_RULES, DROPDOWN_GROUP, DataTableComponent, DateInputComponent, DateRangePickerComponent, DatetimeInputComponent, DetailCardComponent, DiscountSelectorComponent, DividerComponent, DropdownComponent, EMAIL_BLOCK_DRAG_TYPE, EMAIL_TEMPLATE_MAX_BODY, EMAIL_TEMPLATE_MAX_TEXT, EMAIL_TEMPLATE_START_TEXT, EmailTemplateEditorComponent, EmptyStateComponent, ErrorComponent, ErrorStateComponent, FORGEROUTE_CONFIG, FadeComponent, FileInputComponent, FixedFooterComponent, FormColSpanDirective, FormComponent, FormRowComponent, FormSectionComponent, HintComponent, IDX_BEHAVIOR_SIGNALS, INTEGRATION_CATALOG, INTEGRATION_FIELD_DEFS, INTEGRATION_GROUP_ORDER, INTEGRATION_OPTION_DEFS, IconComponent, ImageComponent, ImageGalleryComponent, ImageGalleryDialogComponent, ImagePreviewComponent, ImageRepositionComponent, ImportExportComponent, ImportSourceGridComponent, KpiCardComponent, LAYOUT_GAP_PX, ListComponent, ListItemComponent, LiveRegionComponent, MAX_EMAIL_ADDRESS_LENGTH, ModalComponent, MoreMenuComponent, MultiSelectComponent, NOTES_MAX_LENGTH, NotesComponent, OptionCardComponent, 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, SETUP_DONE_KEY, SETUP_INTEGRATIONS, SearchInputComponent, SectionHeaderComponent, SelectComponent, SetupWizardComponent, SetupWizardStepDirective, SetupWizardStepHeaderDirective, ShowComponent, SidePanelComponent, SidebarLayoutComponent, SignaturePadComponent, SkeletonComponent, StackComponent, StarComponent, StepperComponent, TableToolbarComponent, TextComponent, TextInputComponent, TextTemplatePickerComponent, TextareaInputComponent, TimeInputComponent, TimelineComponent, ToastComponent, ToastService, ToggleBadgeComponent, ToggleComponent, TooltipDirective, US_STATES, UiFieldValidity, acceptLabel, appShellGroupsStorageKey, autoVariant, blockHasContent, buildDefaultSchedule, buildPreviewDocument, buildVideoBlockHtml, builtInActionIcon, businessTimeOptions, createFieldReveal, decodeFilterValues, digitsOnly, downloadBlob, encodeFilterValue, encodeFilterValues, errorContextInterceptor, escapeHtml, fileMatchesAccept, formatAddress, formatCategoryLabel, formatCurrency, formatFileSize, formatIsoDate, formatIsoDateTime, formatTime, formatVideoDuration, getEligibleIds, getEligibleOptions, getErrorMessage, humanReadableMessage, iconPath, insideEditorBlock, integrationPlainText, integrationsForApp, integrationsOnlyFor, isBlockDrag, isValidEmailAddress, isWebUrl, isoKey, issueToErrors, maxLengthIssue, normalizeHexColor, parseBizHours, parseIso, parseTime, passwordMeetsRules, pluralize, provideForgerouteToast, reorderItems, requiredIssue, resolveLayoutGap, resolvePreset, serializeBizHours, serializedTextLength, setupIntegrations, splitIntro };
47539
47931
 
47540
47932
  //# sourceMappingURL=forgeroute-ui.mjs.map