@magmonium/one 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/assets/buttons/no.json +1 -1
  2. package/assets/buttons/yes.json +1 -1
  3. package/assets/i18n/ar.json +33 -0
  4. package/assets/i18n/de.json +33 -0
  5. package/assets/i18n/en.json +33 -0
  6. package/assets/i18n/es.json +33 -0
  7. package/assets/i18n/fr.json +33 -0
  8. package/assets/i18n/hi.json +33 -0
  9. package/assets/i18n/it.json +33 -0
  10. package/assets/i18n/ja.json +33 -0
  11. package/assets/i18n/ko.json +33 -0
  12. package/assets/i18n/nl.json +33 -0
  13. package/assets/i18n/pl.json +33 -0
  14. package/assets/i18n/pt.json +33 -0
  15. package/assets/i18n/ru.json +33 -0
  16. package/assets/i18n/tr.json +33 -0
  17. package/assets/i18n/zh.json +33 -0
  18. package/assets/index.json +1 -1
  19. package/assets/patterns/alphanumeric.json +5 -0
  20. package/assets/patterns/digits-only.json +5 -0
  21. package/assets/patterns/email.json +5 -0
  22. package/assets/patterns/hex-color.json +6 -0
  23. package/assets/patterns/iban.json +6 -0
  24. package/assets/patterns/letters-only.json +5 -0
  25. package/assets/patterns/no-whitespace.json +5 -0
  26. package/assets/patterns/phone-e164.json +5 -0
  27. package/assets/patterns/postal-code-loose.json +6 -0
  28. package/assets/patterns/slug.json +5 -0
  29. package/assets/patterns/strong-password.json +5 -0
  30. package/assets/patterns/url.json +5 -0
  31. package/fesm2022/{magmonium-one-magmonium-one-CgJtuPEF.mjs → magmonium-one-magmonium-one-DV45kimz.mjs} +442 -158
  32. package/fesm2022/magmonium-one-magmonium-one-DV45kimz.mjs.map +1 -0
  33. package/fesm2022/{magmonium-one-otp-DjC2iX42.mjs → magmonium-one-otp-_zwgEGu3.mjs} +18 -6
  34. package/fesm2022/magmonium-one-otp-_zwgEGu3.mjs.map +1 -0
  35. package/fesm2022/{magmonium-one-password-BsaeoGHN.mjs → magmonium-one-password-Pk0hhC0A.mjs} +18 -6
  36. package/fesm2022/magmonium-one-password-Pk0hhC0A.mjs.map +1 -0
  37. package/fesm2022/{magmonium-one-toggle-Ds299_0s.mjs → magmonium-one-toggle-CovjN1j6.mjs} +2 -2
  38. package/fesm2022/{magmonium-one-toggle-Ds299_0s.mjs.map → magmonium-one-toggle-CovjN1j6.mjs.map} +1 -1
  39. package/fesm2022/magmonium-one.mjs +1 -1
  40. package/package.json +1 -1
  41. package/types/magmonium-one.d.ts +103 -8
  42. package/fesm2022/magmonium-one-magmonium-one-CgJtuPEF.mjs.map +0 -1
  43. package/fesm2022/magmonium-one-otp-DjC2iX42.mjs.map +0 -1
  44. package/fesm2022/magmonium-one-password-BsaeoGHN.mjs.map +0 -1
@@ -64,6 +64,9 @@ const FORM_ASSET_FOLDER = {
64
64
  // Choices a Field points at by name, shared across every form that names
65
65
  // the same list (AssetOptions).
66
66
  options: 'options',
67
+ // Shapes a Field's value may take, named the same way and resolved at build
68
+ // rather than at runtime (AssetPatterns, libs/one ADR 0017).
69
+ patterns: 'patterns',
67
70
  };
68
71
 
69
72
  var AppRelationType;
@@ -876,6 +879,13 @@ class TranslateService {
876
879
  return '';
877
880
  if (typeof value === 'number')
878
881
  return value.toString();
882
+ // YAML `label: true`/`false` compile to booleans; those names are also
883
+ // real i18n keys ("Yes"/"No"), so coerce rather than throw. Any other
884
+ // non-string used to crash in parseTranslationKey / key.split.
885
+ if (typeof value === 'boolean')
886
+ value = String(value);
887
+ else if (typeof value !== 'string')
888
+ return '';
879
889
  const { key, params } = this.parseTranslationKey(value);
880
890
  const translations = this.mergedTranslations();
881
891
  const result = key
@@ -2272,7 +2282,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
2272
2282
  class TranslatePipe {
2273
2283
  translateService = inject(TranslateService);
2274
2284
  transform(value, config) {
2275
- return value ? this.translateService.translate(value, config) : '';
2285
+ // Only nullish / empty-string skip — boolean `false` and `0` are not
2286
+ // translation keys, and TranslateService already rejects non-strings.
2287
+ if (value == null || value === '')
2288
+ return '';
2289
+ return this.translateService.translate(value, config);
2276
2290
  }
2277
2291
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TranslatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2278
2292
  static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.9", ngImport: i0, type: TranslatePipe, isStandalone: true, name: "translate", pure: false });
@@ -4337,12 +4351,24 @@ const CONFIRM_COMPONENT = new InjectionToken('CONFIRM_COMPONENT');
4337
4351
  const MODAL_REF = new InjectionToken('MODAL_REF');
4338
4352
  class ModalRef {
4339
4353
  closeCallback;
4354
+ changeCallback;
4355
+ /** Commit a result and dismiss (single-pick, confirm, …). */
4340
4356
  close(result) {
4341
4357
  this.closeCallback?.(result);
4342
4358
  }
4359
+ /**
4360
+ * Commit a result without dismissing. Multi-pick panels use this so each
4361
+ * tick updates the field while the panel stays open.
4362
+ */
4363
+ change(result) {
4364
+ this.changeCallback?.(result);
4365
+ }
4343
4366
  onClose(callback) {
4344
4367
  this.closeCallback = callback;
4345
4368
  }
4369
+ onChange(callback) {
4370
+ this.changeCallback = callback;
4371
+ }
4346
4372
  }
4347
4373
 
4348
4374
  /**
@@ -5105,13 +5131,29 @@ const SIZE_LENGTH = {
5105
5131
  * `derivedSize` ended in `default: return size`, which is how `1.3rem` and
5106
5132
  * `full-width` ended up in the assets. Lengths that are not Sizes go through
5107
5133
  * `toLength` instead.
5134
+ *
5135
+ * Non-Size values (empty string, legacy options like `xxs`/`n`) must not win
5136
+ * over the default: `size ?? DEFAULT` still picks them, and callers then write
5137
+ * `calc(undefined * 1.1)` onto Icons — glyph in the DOM, size zero on screen.
5108
5138
  */
5109
5139
  function resolveSize(size) {
5110
- return SIZE_LENGTH[size ?? DEFAULT_SIZE];
5140
+ return SIZE_LENGTH[isSize(size) ? size : DEFAULT_SIZE];
5111
5141
  }
5112
5142
  function isSize(value) {
5113
5143
  return (value === Size.SMALL || value === Size.MEDIUM || value === Size.LARGE);
5114
5144
  }
5145
+ /**
5146
+ * First real Size among the candidates, else the default. Used by Section /
5147
+ * SectionForm / ButtonGroup so a bad `configs.size` (empty string, legacy
5148
+ * option) never becomes SIZE_CONTEXT and zero out every Icon underneath.
5149
+ */
5150
+ function coerceSize(...candidates) {
5151
+ for (const candidate of candidates) {
5152
+ if (isSize(candidate))
5153
+ return candidate;
5154
+ }
5155
+ return DEFAULT_SIZE;
5156
+ }
5115
5157
  /**
5116
5158
  * A free CSS length for the things that are spacing or geometry rather than
5117
5159
  * Size — FlexContainer's gap, Jumbotron's margin and radius. Knows nothing
@@ -5226,7 +5268,8 @@ class IconComponent {
5226
5268
  effect(this.applySize);
5227
5269
  }
5228
5270
  applySize = () => {
5229
- const size = this.sizeContext?.size() ?? DEFAULT_SIZE;
5271
+ const raw = this.sizeContext?.size();
5272
+ const size = isSize(raw) ? raw : DEFAULT_SIZE;
5230
5273
  this.elementRef.nativeElement.style.setProperty('--m-icon-size', `calc(${resolveSize(size)} * 1.1)`);
5231
5274
  };
5232
5275
  updateElement = () => {
@@ -6524,7 +6567,7 @@ class ButtonComponent extends ReactiveElementComponent {
6524
6567
  }
6525
6568
  formatBadgeCount = (count, max = 99) => formatBadgeCount(count, max);
6526
6569
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
6527
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "m-button,m-one-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, nav: { classPropertyName: "nav", publicName: "nav", isSignal: true, isRequired: false, transformFunction: null }, navParams: { classPropertyName: "navParams", publicName: "navParams", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, one: { classPropertyName: "one", publicName: "one", isSignal: true, isRequired: false, transformFunction: null }, remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, isRightIcon: { classPropertyName: "isRightIcon", publicName: "isRightIcon", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, imgSrc: { classPropertyName: "imgSrc", publicName: "imgSrc", isSignal: true, isRequired: false, transformFunction: null }, nonClickable: { classPropertyName: "nonClickable", publicName: "nonClickable", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", clicked: "clicked" }, viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (config(); as config) {\n <!-- One branch for every in-app target: `mRef` names a NavId and the store\n reads the NavKind off that node to decide route vs panel (ADR 0014). -->\n @if (config.nav) {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"config.disabled\"\n [mRef]=\"config.nav\"\n [mRefParams]=\"config.navParams\"\n [attr.aria-label]=\"config.label | translate\"\n mRefLinkActive=\"tab\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n } @else if (config.href) {\n <a\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [href]=\"config.href\"\n [attr.aria-label]=\"config.label | translate\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"config.label | translate\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n }\n}\n\n<ng-template #buttonContent let-button=\"button\">\n @if (button.imgSrc) {\n <div class=\"button-icon button-icon--img\">\n <m-img [src]=\"button.imgSrc\" [remote]=\"button.remote\" [alt]=\"button.label || button.name || ''\" />\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n } @else if (buttonIcon(); as icon) {\n <div class=\"button-icon\">\n @if (isFromOne()) {\n <m-one-icon [config]=\"icon\" />\n } @else {\n <m-icon [config]=\"icon\" />\n }\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n }\n @if (button.label && !button.iconOnly) {\n <span class=\"button-label {{ button.labelClass || '' }}\">\n {{ button.noTranslate ? button.label : (button.label | translate) }}\n </span>\n }\n @if (!buttonIcon() && button.badge && button.badge.count) {\n <m-badge [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'static' }\">{{\n formatBadgeCount(button.badge.count)\n }}</m-badge>\n }\n</ng-template>\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;box-sizing:border-box;overflow:hidden;transition:box-shadow .15s ease;--m-btn-size: var(--m-button-size, 1em);--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-mm)));--m-btn-color-contrast: var(--m-button-color-contrast, var(--m-one-button-color-contrast, #ffffff));--m-btn-color-opposite: var(--m-button-color-opposite, var(--m-one-button-color-opposite, #e1b941));--m-btn-h: calc(var(--m-btn-size) * 2.25);width:var(--m-button-width, var(--m-one-button-width, auto));min-width:0;height:var(--m-btn-h);font-size:var(--m-btn-size)}:host-context(.inverse),:host-context(.tabs-inverse),:host.inverse{--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-inverse-text)))}:host:has(.full-width){display:flex;width:100%}:host:has(.only-icon),:host:has(.toggle){width:var(--m-btn-h);min-width:var(--m-btn-h)}:host:has(.has-badge){overflow:visible}:host:has(.stacked),:host:has(.toggle){height:auto}:host:has(button.primary:focus-visible){box-shadow:0 0 0 calc(var(--m-btn-size) * .125) color-mix(in srgb,var(--m-btn-color) 35%,transparent)}button:not(.get):not(.toggle){height:calc(var(--input-size, var(--m-btn-size)) * 2);min-height:calc(var(--input-size, var(--m-btn-size)) * 2);border-width:max(1px,var(--input-size, var(--m-btn-size)) * .0625);border-radius:calc(var(--input-size, var(--m-btn-size)) * .4);padding:calc(var(--input-size, var(--m-btn-size)) * .5) calc(var(--input-size, var(--m-btn-size)) * .5);gap:calc(var(--input-size, var(--m-btn-size)) * .375);font-size:var(--input-size, var(--m-btn-size));border-color:var(--m-btn-color);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}button:not(.get):not(.toggle):hover:not(:disabled){background-color:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle):focus-visible:not(:disabled),button:not(.get):not(.toggle):focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-btn-color) 20%,transparent)}button:not(.get):not(.toggle):disabled{opacity:.6;cursor:not-allowed}button:not(.get):not(.toggle){height:auto;padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * 1.25);gap:calc(var(--m-btn-size) * .375);border-style:solid;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;appearance:none;width:100%;height:100%;min-height:0;padding:0 calc(var(--m-btn-size) * 1.25);border-width:2px;border-radius:4px;color:var(--m-btn-color);font-weight:600;line-height:1;-webkit-user-select:none;user-select:none;position:relative;outline:none;box-shadow:var(--m-button-shadow, var(--m-one-button-shadow, none));transition:filter .15s ease,background .15s ease}button:not(.get):not(.toggle):hover:not(:disabled){filter:brightness(1.04)}button:not(.get):not(.toggle):active:not(:disabled){transform:scale(.97)}button:not(.get):not(.toggle):disabled{opacity:.35;cursor:not-allowed;pointer-events:none;filter:grayscale(80%)}button:not(.get):not(.toggle).read-only{pointer-events:none!important;cursor:default!important;transform:none!important;box-shadow:none!important;background:transparent!important;border-color:transparent!important;opacity:1!important}button:not(.get):not(.toggle).read-only .button-icon{transform:none!important;color:inherit!important}button:not(.get):not(.toggle).primary{background:var(--m-btn-color);border-color:var(--m-btn-color);color:var(--m-btn-color-contrast)}button:not(.get):not(.toggle).primary:hover:not(:disabled){filter:none;background:color-mix(in srgb,var(--m-btn-color) 88%,black);border-color:color-mix(in srgb,var(--m-btn-color) 88%,black)}button:not(.get):not(.toggle).primary:active:not(:disabled){filter:brightness(.94);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab){background:transparent;border-color:transparent;color:var(--m-btn-color);box-shadow:none}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary{border:2px solid color-mix(in srgb,var(--m-btn-color) 15%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 40%,transparent);background:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:active:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 50%,transparent);background:color-mix(in srgb,var(--m-btn-color) 12%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost){background:transparent;border-color:var(--m-btn-color);color:var(--m-btn-color)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).tab{background:var(--m-backdrop-border);border-color:var(--m-backdrop-border);color:var(--m-btn-color)}button:not(.get):not(.toggle).tab:hover:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 82%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 82%,black);filter:none}button:not(.get):not(.toggle).tab:active:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 70%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 70%,black);transform:scale(.97)}button:not(.get):not(.toggle).segmented .button-icon,button:not(.get):not(.toggle).badge-accent .button-icon,button:not(.get):not(.toggle).with-right-icon .button-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--m-btn-color-opposite);order:1}button:not(.get):not(.toggle).segmented .button-label,button:not(.get):not(.toggle).badge-accent .button-label,button:not(.get):not(.toggle).with-right-icon .button-label{order:-1}button:not(.get):not(.toggle).segmented.primary .button-icon,button:not(.get):not(.toggle).badge-accent.primary .button-icon,button:not(.get):not(.toggle).with-right-icon.primary .button-icon{color:var(--m-btn-color-opposite)}button:not(.get):not(.toggle).with-left-icon .button-icon{order:-1}button:not(.get):not(.toggle).with-left-icon .button-label{order:1}button:not(.get):not(.toggle).stacked{flex-direction:column;gap:calc(var(--m-btn-size) * .3);height:auto;min-height:var(--m-btn-h);padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * .875)}button:not(.get):not(.toggle).stacked .button-label{font-size:calc(var(--m-btn-size) * .8)}button:not(.get):not(.toggle).only-icon{padding:0;border-width:2px;aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center}button:not(.get):not(.toggle).only-icon m-icon,button:not(.get):not(.toggle).only-icon m-one-icon{display:inline-flex}m-badge{--m-badge-height: 1.5em;--m-badge-min-width: 1.5em;--m-badge-padding: 0 .3em;--m-badge-gap: .1em}.button-label{display:inline-flex;align-items:center;line-height:normal;font-size:inherit;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button-icon{position:relative;display:inline-flex;align-items:center;justify-content:center}.button-icon--img{width:calc(var(--m-btn-size) * 1.75);height:calc(var(--m-btn-size) * 1.75);overflow:hidden}.button-icon--img m-img{width:100%;height:100%;display:block}.get{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--m-btn-h);padding:0 min(var(--m-btn-size) * 1.75,2rem);border-radius:4px;background:linear-gradient(135deg,var(--m-mm),var(--m-focus),var(--m-success),var(--m-mm));background-size:200% auto;color:#fff;font-size:calc(var(--m-btn-size) * .8);font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:none;cursor:pointer;white-space:nowrap;line-height:1;transition:background-position .2s ease,transform .15s ease}.get:hover{background-position:right center}.get:active{transform:scale(.97)}.toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;padding:0 min(var(--m-btn-size),1.25rem);border-radius:4px;box-shadow:none;color:var(--m-btn-color, var(--m-text-secondary));opacity:.65;font-family:inherit;font-size:var(--m-btn-size);font-weight:600;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;transition:background .15s ease,color .15s ease,opacity .15s ease;min-width:0}.toggle .button-icon{flex-shrink:0}.toggle .button-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-width:0}.toggle:hover:not(:disabled){background:var(--m-button-hover-background, rgba(0, 0, 0, .025));color:var(--m-button-hover-color, var(--m-text));opacity:1}.toggle.primary{background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:hover:not(:disabled){background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:active:not(:disabled){transform:scale(.97)}.toggle:disabled{opacity:.3;cursor:not-allowed}@container togglegroup (max-width: 320px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}@media(max-width:600px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => IconComponent), selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: i0.forwardRef(() => BadgeComponent), selector: "m-badge", inputs: ["config"], outputs: ["configChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => RouterModule) }, { kind: "directive", type: i0.forwardRef(() => MRefDirective), selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => ImgComponent), selector: "m-img", inputs: ["src", "data", "dataType", "alt", "priority", "fill", "width", "height", "remote", "ngSrcset", "sizes"] }, { kind: "pipe", type: i0.forwardRef(() => TranslatePipe), name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6570
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ButtonComponent, isStandalone: true, selector: "m-button,m-one-button", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, labelClass: { classPropertyName: "labelClass", publicName: "labelClass", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, nav: { classPropertyName: "nav", publicName: "nav", isSignal: true, isRequired: false, transformFunction: null }, navParams: { classPropertyName: "navParams", publicName: "navParams", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, one: { classPropertyName: "one", publicName: "one", isSignal: true, isRequired: false, transformFunction: null }, remote: { classPropertyName: "remote", publicName: "remote", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, isRightIcon: { classPropertyName: "isRightIcon", publicName: "isRightIcon", isSignal: true, isRequired: false, transformFunction: null }, iconOnly: { classPropertyName: "iconOnly", publicName: "iconOnly", isSignal: true, isRequired: false, transformFunction: null }, stacked: { classPropertyName: "stacked", publicName: "stacked", isSignal: true, isRequired: false, transformFunction: null }, imgSrc: { classPropertyName: "imgSrc", publicName: "imgSrc", isSignal: true, isRequired: false, transformFunction: null }, nonClickable: { classPropertyName: "nonClickable", publicName: "nonClickable", isSignal: true, isRequired: false, transformFunction: null }, inverted: { classPropertyName: "inverted", publicName: "inverted", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange", clicked: "clicked" }, viewQueries: [{ propertyName: "button", first: true, predicate: ["button"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (config(); as config) {\n <!-- One branch for every in-app target: `mRef` names a NavId and the store\n reads the NavKind off that node to decide route vs panel (ADR 0014). -->\n @if (config.nav) {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"config.disabled\"\n [mRef]=\"config.nav\"\n [mRefParams]=\"config.navParams\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n mRefLinkActive=\"tab\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n } @else if (config.href) {\n <a\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [href]=\"config.href\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n }\n}\n\n<ng-template #buttonContent let-button=\"button\">\n @if (button.imgSrc) {\n <div class=\"button-icon button-icon--img\">\n <m-img [src]=\"button.imgSrc\" [remote]=\"button.remote\" [alt]=\"button.label || button.name || ''\" />\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n } @else if (buttonIcon(); as icon) {\n <div class=\"button-icon\">\n @if (isFromOne()) {\n <m-one-icon [config]=\"icon\" />\n } @else {\n <m-icon [config]=\"icon\" />\n }\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n }\n @if (button.label && !button.iconOnly) {\n <span class=\"button-label {{ button.labelClass || '' }}\">\n {{ button.noTranslate ? button.label : (button.label | translate) }}\n </span>\n }\n @if (!buttonIcon() && button.badge && button.badge.count) {\n <m-badge [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'static' }\">{{\n formatBadgeCount(button.badge.count)\n }}</m-badge>\n }\n</ng-template>\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;box-sizing:border-box;overflow:hidden;transition:box-shadow .15s ease;--m-btn-size: var(--m-button-size, 1em);--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-mm)));--m-btn-color-contrast: var(--m-button-color-contrast, var(--m-one-button-color-contrast, #ffffff));--m-btn-color-opposite: var(--m-button-color-opposite, var(--m-one-button-color-opposite, #e1b941));--m-btn-h: calc(var(--m-btn-size) * 2.25);width:var(--m-button-width, var(--m-one-button-width, auto));min-width:0;height:var(--m-btn-h);font-size:var(--m-btn-size)}:host-context(.inverse),:host-context(.tabs-inverse),:host.inverse{--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-inverse-text)))}:host:has(.full-width){display:flex;width:100%}:host:has(.only-icon),:host:has(.toggle){width:var(--m-btn-h);min-width:var(--m-btn-h)}:host:has(.has-badge){overflow:visible}:host:has(.stacked),:host:has(.toggle){height:auto}:host:has(button.primary:focus-visible){box-shadow:0 0 0 calc(var(--m-btn-size) * .125) color-mix(in srgb,var(--m-btn-color) 35%,transparent)}button:not(.get):not(.toggle){height:calc(var(--input-size, var(--m-btn-size)) * 2);min-height:calc(var(--input-size, var(--m-btn-size)) * 2);border-width:max(1px,var(--input-size, var(--m-btn-size)) * .0625);border-radius:calc(var(--input-size, var(--m-btn-size)) * .4);padding:calc(var(--input-size, var(--m-btn-size)) * .5) calc(var(--input-size, var(--m-btn-size)) * .5);gap:calc(var(--input-size, var(--m-btn-size)) * .375);font-size:var(--input-size, var(--m-btn-size));border-color:var(--m-btn-color);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}button:not(.get):not(.toggle):hover:not(:disabled){background-color:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle):focus-visible:not(:disabled),button:not(.get):not(.toggle):focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-btn-color) 20%,transparent)}button:not(.get):not(.toggle):disabled{opacity:.6;cursor:not-allowed}button:not(.get):not(.toggle){height:auto;padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * 1.25);gap:calc(var(--m-btn-size) * .375);border-style:solid;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;appearance:none;width:100%;height:100%;min-height:0;padding:0 calc(var(--m-btn-size) * 1.25);border-width:2px;border-radius:4px;color:var(--m-btn-color);font-weight:600;line-height:1;-webkit-user-select:none;user-select:none;position:relative;outline:none;box-shadow:var(--m-button-shadow, var(--m-one-button-shadow, none));transition:filter .15s ease,background .15s ease}button:not(.get):not(.toggle):hover:not(:disabled){filter:brightness(1.04)}button:not(.get):not(.toggle):active:not(:disabled){transform:scale(.97)}button:not(.get):not(.toggle):disabled{opacity:.35;cursor:not-allowed;pointer-events:none;filter:grayscale(80%)}button:not(.get):not(.toggle).read-only{pointer-events:none!important;cursor:default!important;transform:none!important;box-shadow:none!important;background:transparent!important;border-color:transparent!important;opacity:1!important}button:not(.get):not(.toggle).read-only .button-icon{transform:none!important;color:inherit!important}button:not(.get):not(.toggle).primary{background:var(--m-btn-color);border-color:var(--m-btn-color);color:var(--m-btn-color-contrast)}button:not(.get):not(.toggle).primary:hover:not(:disabled){filter:none;background:color-mix(in srgb,var(--m-btn-color) 88%,black);border-color:color-mix(in srgb,var(--m-btn-color) 88%,black)}button:not(.get):not(.toggle).primary:active:not(:disabled){filter:brightness(.94);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab){background:transparent;border-color:transparent;color:var(--m-btn-color);box-shadow:none}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary{border:2px solid color-mix(in srgb,var(--m-btn-color) 15%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 40%,transparent);background:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:active:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 50%,transparent);background:color-mix(in srgb,var(--m-btn-color) 12%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost){background:transparent;border-color:var(--m-btn-color);color:var(--m-btn-color)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).tab{background:var(--m-backdrop-border);border-color:var(--m-backdrop-border);color:var(--m-btn-color)}button:not(.get):not(.toggle).tab:hover:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 82%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 82%,black);filter:none}button:not(.get):not(.toggle).tab:active:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 70%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 70%,black);transform:scale(.97)}button:not(.get):not(.toggle).segmented .button-icon,button:not(.get):not(.toggle).badge-accent .button-icon,button:not(.get):not(.toggle).with-right-icon .button-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--m-btn-color-opposite);order:1}button:not(.get):not(.toggle).segmented .button-label,button:not(.get):not(.toggle).badge-accent .button-label,button:not(.get):not(.toggle).with-right-icon .button-label{order:-1}button:not(.get):not(.toggle).segmented.primary .button-icon,button:not(.get):not(.toggle).badge-accent.primary .button-icon,button:not(.get):not(.toggle).with-right-icon.primary .button-icon{color:var(--m-btn-color-opposite)}button:not(.get):not(.toggle).with-left-icon .button-icon{order:-1}button:not(.get):not(.toggle).with-left-icon .button-label{order:1}button:not(.get):not(.toggle).stacked{flex-direction:column;gap:calc(var(--m-btn-size) * .3);height:auto;min-height:var(--m-btn-h);padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * .875)}button:not(.get):not(.toggle).stacked .button-label{font-size:calc(var(--m-btn-size) * .8)}button:not(.get):not(.toggle).only-icon{padding:0;border-width:2px;aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center}button:not(.get):not(.toggle).only-icon m-icon,button:not(.get):not(.toggle).only-icon m-one-icon{display:inline-flex}m-badge{--m-badge-height: 1.5em;--m-badge-min-width: 1.5em;--m-badge-padding: 0 .3em;--m-badge-gap: .1em}.button-label{display:inline-flex;align-items:center;line-height:normal;font-size:inherit;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button-icon{position:relative;display:inline-flex;align-items:center;justify-content:center}.button-icon--img{width:calc(var(--m-btn-size) * 1.75);height:calc(var(--m-btn-size) * 1.75);overflow:hidden}.button-icon--img m-img{width:100%;height:100%;display:block}.get{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--m-btn-h);padding:0 min(var(--m-btn-size) * 1.75,2rem);border-radius:4px;background:linear-gradient(135deg,var(--m-mm),var(--m-focus),var(--m-success),var(--m-mm));background-size:200% auto;color:#fff;font-size:calc(var(--m-btn-size) * .8);font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:none;cursor:pointer;white-space:nowrap;line-height:1;transition:background-position .2s ease,transform .15s ease}.get:hover{background-position:right center}.get:active{transform:scale(.97)}.toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;padding:0 min(var(--m-btn-size),1.25rem);border-radius:4px;box-shadow:none;color:var(--m-btn-color, var(--m-text-secondary));opacity:.65;font-family:inherit;font-size:var(--m-btn-size);font-weight:600;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;transition:background .15s ease,color .15s ease,opacity .15s ease;min-width:0}.toggle .button-icon{flex-shrink:0}.toggle .button-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-width:0}.toggle:hover:not(:disabled){background:var(--m-button-hover-background, rgba(0, 0, 0, .025));color:var(--m-button-hover-color, var(--m-text));opacity:1}.toggle.primary{background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:hover:not(:disabled){background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:active:not(:disabled){transform:scale(.97)}.toggle:disabled{opacity:.3;cursor:not-allowed}@container togglegroup (max-width: 320px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}@media(max-width:600px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => IconComponent), selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: i0.forwardRef(() => BadgeComponent), selector: "m-badge", inputs: ["config"], outputs: ["configChange"] }, { kind: "ngmodule", type: i0.forwardRef(() => RouterModule) }, { kind: "directive", type: i0.forwardRef(() => MRefDirective), selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => ImgComponent), selector: "m-img", inputs: ["src", "data", "dataType", "alt", "priority", "fill", "width", "height", "remote", "ngSrcset", "sizes"] }, { kind: "pipe", type: i0.forwardRef(() => TranslatePipe), name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
6528
6571
  }
6529
6572
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ButtonComponent, decorators: [{
6530
6573
  type: Component,
@@ -6536,7 +6579,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
6536
6579
  MRefDirective,
6537
6580
  forwardRef(() => NgTemplateOutlet),
6538
6581
  forwardRef(() => ImgComponent),
6539
- ], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (config(); as config) {\n <!-- One branch for every in-app target: `mRef` names a NavId and the store\n reads the NavKind off that node to decide route vs panel (ADR 0014). -->\n @if (config.nav) {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"config.disabled\"\n [mRef]=\"config.nav\"\n [mRefParams]=\"config.navParams\"\n [attr.aria-label]=\"config.label | translate\"\n mRefLinkActive=\"tab\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n } @else if (config.href) {\n <a\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [href]=\"config.href\"\n [attr.aria-label]=\"config.label | translate\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"config.label | translate\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n }\n}\n\n<ng-template #buttonContent let-button=\"button\">\n @if (button.imgSrc) {\n <div class=\"button-icon button-icon--img\">\n <m-img [src]=\"button.imgSrc\" [remote]=\"button.remote\" [alt]=\"button.label || button.name || ''\" />\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n } @else if (buttonIcon(); as icon) {\n <div class=\"button-icon\">\n @if (isFromOne()) {\n <m-one-icon [config]=\"icon\" />\n } @else {\n <m-icon [config]=\"icon\" />\n }\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n }\n @if (button.label && !button.iconOnly) {\n <span class=\"button-label {{ button.labelClass || '' }}\">\n {{ button.noTranslate ? button.label : (button.label | translate) }}\n </span>\n }\n @if (!buttonIcon() && button.badge && button.badge.count) {\n <m-badge [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'static' }\">{{\n formatBadgeCount(button.badge.count)\n }}</m-badge>\n }\n</ng-template>\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;box-sizing:border-box;overflow:hidden;transition:box-shadow .15s ease;--m-btn-size: var(--m-button-size, 1em);--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-mm)));--m-btn-color-contrast: var(--m-button-color-contrast, var(--m-one-button-color-contrast, #ffffff));--m-btn-color-opposite: var(--m-button-color-opposite, var(--m-one-button-color-opposite, #e1b941));--m-btn-h: calc(var(--m-btn-size) * 2.25);width:var(--m-button-width, var(--m-one-button-width, auto));min-width:0;height:var(--m-btn-h);font-size:var(--m-btn-size)}:host-context(.inverse),:host-context(.tabs-inverse),:host.inverse{--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-inverse-text)))}:host:has(.full-width){display:flex;width:100%}:host:has(.only-icon),:host:has(.toggle){width:var(--m-btn-h);min-width:var(--m-btn-h)}:host:has(.has-badge){overflow:visible}:host:has(.stacked),:host:has(.toggle){height:auto}:host:has(button.primary:focus-visible){box-shadow:0 0 0 calc(var(--m-btn-size) * .125) color-mix(in srgb,var(--m-btn-color) 35%,transparent)}button:not(.get):not(.toggle){height:calc(var(--input-size, var(--m-btn-size)) * 2);min-height:calc(var(--input-size, var(--m-btn-size)) * 2);border-width:max(1px,var(--input-size, var(--m-btn-size)) * .0625);border-radius:calc(var(--input-size, var(--m-btn-size)) * .4);padding:calc(var(--input-size, var(--m-btn-size)) * .5) calc(var(--input-size, var(--m-btn-size)) * .5);gap:calc(var(--input-size, var(--m-btn-size)) * .375);font-size:var(--input-size, var(--m-btn-size));border-color:var(--m-btn-color);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}button:not(.get):not(.toggle):hover:not(:disabled){background-color:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle):focus-visible:not(:disabled),button:not(.get):not(.toggle):focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-btn-color) 20%,transparent)}button:not(.get):not(.toggle):disabled{opacity:.6;cursor:not-allowed}button:not(.get):not(.toggle){height:auto;padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * 1.25);gap:calc(var(--m-btn-size) * .375);border-style:solid;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;appearance:none;width:100%;height:100%;min-height:0;padding:0 calc(var(--m-btn-size) * 1.25);border-width:2px;border-radius:4px;color:var(--m-btn-color);font-weight:600;line-height:1;-webkit-user-select:none;user-select:none;position:relative;outline:none;box-shadow:var(--m-button-shadow, var(--m-one-button-shadow, none));transition:filter .15s ease,background .15s ease}button:not(.get):not(.toggle):hover:not(:disabled){filter:brightness(1.04)}button:not(.get):not(.toggle):active:not(:disabled){transform:scale(.97)}button:not(.get):not(.toggle):disabled{opacity:.35;cursor:not-allowed;pointer-events:none;filter:grayscale(80%)}button:not(.get):not(.toggle).read-only{pointer-events:none!important;cursor:default!important;transform:none!important;box-shadow:none!important;background:transparent!important;border-color:transparent!important;opacity:1!important}button:not(.get):not(.toggle).read-only .button-icon{transform:none!important;color:inherit!important}button:not(.get):not(.toggle).primary{background:var(--m-btn-color);border-color:var(--m-btn-color);color:var(--m-btn-color-contrast)}button:not(.get):not(.toggle).primary:hover:not(:disabled){filter:none;background:color-mix(in srgb,var(--m-btn-color) 88%,black);border-color:color-mix(in srgb,var(--m-btn-color) 88%,black)}button:not(.get):not(.toggle).primary:active:not(:disabled){filter:brightness(.94);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab){background:transparent;border-color:transparent;color:var(--m-btn-color);box-shadow:none}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary{border:2px solid color-mix(in srgb,var(--m-btn-color) 15%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 40%,transparent);background:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:active:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 50%,transparent);background:color-mix(in srgb,var(--m-btn-color) 12%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost){background:transparent;border-color:var(--m-btn-color);color:var(--m-btn-color)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).tab{background:var(--m-backdrop-border);border-color:var(--m-backdrop-border);color:var(--m-btn-color)}button:not(.get):not(.toggle).tab:hover:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 82%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 82%,black);filter:none}button:not(.get):not(.toggle).tab:active:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 70%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 70%,black);transform:scale(.97)}button:not(.get):not(.toggle).segmented .button-icon,button:not(.get):not(.toggle).badge-accent .button-icon,button:not(.get):not(.toggle).with-right-icon .button-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--m-btn-color-opposite);order:1}button:not(.get):not(.toggle).segmented .button-label,button:not(.get):not(.toggle).badge-accent .button-label,button:not(.get):not(.toggle).with-right-icon .button-label{order:-1}button:not(.get):not(.toggle).segmented.primary .button-icon,button:not(.get):not(.toggle).badge-accent.primary .button-icon,button:not(.get):not(.toggle).with-right-icon.primary .button-icon{color:var(--m-btn-color-opposite)}button:not(.get):not(.toggle).with-left-icon .button-icon{order:-1}button:not(.get):not(.toggle).with-left-icon .button-label{order:1}button:not(.get):not(.toggle).stacked{flex-direction:column;gap:calc(var(--m-btn-size) * .3);height:auto;min-height:var(--m-btn-h);padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * .875)}button:not(.get):not(.toggle).stacked .button-label{font-size:calc(var(--m-btn-size) * .8)}button:not(.get):not(.toggle).only-icon{padding:0;border-width:2px;aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center}button:not(.get):not(.toggle).only-icon m-icon,button:not(.get):not(.toggle).only-icon m-one-icon{display:inline-flex}m-badge{--m-badge-height: 1.5em;--m-badge-min-width: 1.5em;--m-badge-padding: 0 .3em;--m-badge-gap: .1em}.button-label{display:inline-flex;align-items:center;line-height:normal;font-size:inherit;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button-icon{position:relative;display:inline-flex;align-items:center;justify-content:center}.button-icon--img{width:calc(var(--m-btn-size) * 1.75);height:calc(var(--m-btn-size) * 1.75);overflow:hidden}.button-icon--img m-img{width:100%;height:100%;display:block}.get{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--m-btn-h);padding:0 min(var(--m-btn-size) * 1.75,2rem);border-radius:4px;background:linear-gradient(135deg,var(--m-mm),var(--m-focus),var(--m-success),var(--m-mm));background-size:200% auto;color:#fff;font-size:calc(var(--m-btn-size) * .8);font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:none;cursor:pointer;white-space:nowrap;line-height:1;transition:background-position .2s ease,transform .15s ease}.get:hover{background-position:right center}.get:active{transform:scale(.97)}.toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;padding:0 min(var(--m-btn-size),1.25rem);border-radius:4px;box-shadow:none;color:var(--m-btn-color, var(--m-text-secondary));opacity:.65;font-family:inherit;font-size:var(--m-btn-size);font-weight:600;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;transition:background .15s ease,color .15s ease,opacity .15s ease;min-width:0}.toggle .button-icon{flex-shrink:0}.toggle .button-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-width:0}.toggle:hover:not(:disabled){background:var(--m-button-hover-background, rgba(0, 0, 0, .025));color:var(--m-button-hover-color, var(--m-text));opacity:1}.toggle.primary{background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:hover:not(:disabled){background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:active:not(:disabled){transform:scale(.97)}.toggle:disabled{opacity:.3;cursor:not-allowed}@container togglegroup (max-width: 320px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}@media(max-width:600px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}\n"] }]
6582
+ ], encapsulation: ViewEncapsulation.Emulated, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (config(); as config) {\n <!-- One branch for every in-app target: `mRef` names a NavId and the store\n reads the NavKind off that node to decide route vs panel (ADR 0014). -->\n @if (config.nav) {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"config.disabled\"\n [mRef]=\"config.nav\"\n [mRefParams]=\"config.navParams\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n mRefLinkActive=\"tab\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n } @else if (config.href) {\n <a\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [href]=\"config.href\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </a>\n } @else {\n <button\n type=\"button\"\n class=\"{{ className() }}\"\n [attr.data-testid]=\"config.name + '-btn'\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"config.noTranslate ? config.label : (config.label | translate)\"\n (keydown.enter)=\"onClick()\"\n (click)=\"onClick()\"\n #button\n >\n <ng-container *ngTemplateOutlet=\"buttonContent; context: { button: config }\"></ng-container>\n </button>\n }\n}\n\n<ng-template #buttonContent let-button=\"button\">\n @if (button.imgSrc) {\n <div class=\"button-icon button-icon--img\">\n <m-img [src]=\"button.imgSrc\" [remote]=\"button.remote\" [alt]=\"button.label || button.name || ''\" />\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n } @else if (buttonIcon(); as icon) {\n <div class=\"button-icon\">\n @if (isFromOne()) {\n <m-one-icon [config]=\"icon\" />\n } @else {\n <m-icon [config]=\"icon\" />\n }\n @if (button.badge && button.badge.count) {\n <m-badge\n [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'absolute' }\"\n >{{ formatBadgeCount(button.badge.count) }}</m-badge\n >\n }\n </div>\n }\n @if (button.label && !button.iconOnly) {\n <span class=\"button-label {{ button.labelClass || '' }}\">\n {{ button.noTranslate ? button.label : (button.label | translate) }}\n </span>\n }\n @if (!buttonIcon() && button.badge && button.badge.count) {\n <m-badge [config]=\"{ variant: button.badge.variant ?? 'danger', position: 'static' }\">{{\n formatBadgeCount(button.badge.count)\n }}</m-badge>\n }\n</ng-template>\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;box-sizing:border-box;overflow:hidden;transition:box-shadow .15s ease;--m-btn-size: var(--m-button-size, 1em);--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-mm)));--m-btn-color-contrast: var(--m-button-color-contrast, var(--m-one-button-color-contrast, #ffffff));--m-btn-color-opposite: var(--m-button-color-opposite, var(--m-one-button-color-opposite, #e1b941));--m-btn-h: calc(var(--m-btn-size) * 2.25);width:var(--m-button-width, var(--m-one-button-width, auto));min-width:0;height:var(--m-btn-h);font-size:var(--m-btn-size)}:host-context(.inverse),:host-context(.tabs-inverse),:host.inverse{--m-btn-color: var(--m-button-color, var(--m-one-button-color, var(--m-inverse-text)))}:host:has(.full-width){display:flex;width:100%}:host:has(.only-icon),:host:has(.toggle){width:var(--m-btn-h);min-width:var(--m-btn-h)}:host:has(.has-badge){overflow:visible}:host:has(.stacked),:host:has(.toggle){height:auto}:host:has(button.primary:focus-visible){box-shadow:0 0 0 calc(var(--m-btn-size) * .125) color-mix(in srgb,var(--m-btn-color) 35%,transparent)}button:not(.get):not(.toggle){height:calc(var(--input-size, var(--m-btn-size)) * 2);min-height:calc(var(--input-size, var(--m-btn-size)) * 2);border-width:max(1px,var(--input-size, var(--m-btn-size)) * .0625);border-radius:calc(var(--input-size, var(--m-btn-size)) * .4);padding:calc(var(--input-size, var(--m-btn-size)) * .5) calc(var(--input-size, var(--m-btn-size)) * .5);gap:calc(var(--input-size, var(--m-btn-size)) * .375);font-size:var(--input-size, var(--m-btn-size));border-color:var(--m-btn-color);transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}button:not(.get):not(.toggle):hover:not(:disabled){background-color:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle):focus-visible:not(:disabled),button:not(.get):not(.toggle):focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-btn-color) 20%,transparent)}button:not(.get):not(.toggle):disabled{opacity:.6;cursor:not-allowed}button:not(.get):not(.toggle){height:auto;padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * 1.25);gap:calc(var(--m-btn-size) * .375);border-style:solid;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;cursor:pointer;appearance:none;width:100%;height:100%;min-height:0;padding:0 calc(var(--m-btn-size) * 1.25);border-width:2px;border-radius:4px;color:var(--m-btn-color);font-weight:600;line-height:1;-webkit-user-select:none;user-select:none;position:relative;outline:none;box-shadow:var(--m-button-shadow, var(--m-one-button-shadow, none));transition:filter .15s ease,background .15s ease}button:not(.get):not(.toggle):hover:not(:disabled){filter:brightness(1.04)}button:not(.get):not(.toggle):active:not(:disabled){transform:scale(.97)}button:not(.get):not(.toggle):disabled{opacity:.35;cursor:not-allowed;pointer-events:none;filter:grayscale(80%)}button:not(.get):not(.toggle).read-only{pointer-events:none!important;cursor:default!important;transform:none!important;box-shadow:none!important;background:transparent!important;border-color:transparent!important;opacity:1!important}button:not(.get):not(.toggle).read-only .button-icon{transform:none!important;color:inherit!important}button:not(.get):not(.toggle).primary{background:var(--m-btn-color);border-color:var(--m-btn-color);color:var(--m-btn-color-contrast)}button:not(.get):not(.toggle).primary:hover:not(:disabled){filter:none;background:color-mix(in srgb,var(--m-btn-color) 88%,black);border-color:color-mix(in srgb,var(--m-btn-color) 88%,black)}button:not(.get):not(.toggle).primary:active:not(:disabled){filter:brightness(.94);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab){background:transparent;border-color:transparent;color:var(--m-btn-color);box-shadow:none}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary{border:2px solid color-mix(in srgb,var(--m-btn-color) 15%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 40%,transparent);background:color-mix(in srgb,var(--m-btn-color) 6%,transparent)}button:not(.get):not(.toggle).ghost:not(.primary):not(.tab).secondary:active:not(:disabled){border-color:color-mix(in srgb,var(--m-btn-color) 50%,transparent);background:color-mix(in srgb,var(--m-btn-color) 12%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost){background:transparent;border-color:var(--m-btn-color);color:var(--m-btn-color)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):hover:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 8%,transparent)}button:not(.get):not(.toggle).secondary:not(.primary):not(.ghost):active:not(:disabled){background:color-mix(in srgb,var(--m-btn-color) 14%,transparent);transform:scale(.97)}button:not(.get):not(.toggle).tab{background:var(--m-backdrop-border);border-color:var(--m-backdrop-border);color:var(--m-btn-color)}button:not(.get):not(.toggle).tab:hover:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 82%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 82%,black);filter:none}button:not(.get):not(.toggle).tab:active:not(:disabled){background:color-mix(in srgb,var(--m-backdrop-border) 70%,black);border-color:color-mix(in srgb,var(--m-backdrop-border) 70%,black);transform:scale(.97)}button:not(.get):not(.toggle).segmented .button-icon,button:not(.get):not(.toggle).badge-accent .button-icon,button:not(.get):not(.toggle).with-right-icon .button-icon{display:inline-flex;align-items:center;justify-content:center;color:var(--m-btn-color-opposite);order:1}button:not(.get):not(.toggle).segmented .button-label,button:not(.get):not(.toggle).badge-accent .button-label,button:not(.get):not(.toggle).with-right-icon .button-label{order:-1}button:not(.get):not(.toggle).segmented.primary .button-icon,button:not(.get):not(.toggle).badge-accent.primary .button-icon,button:not(.get):not(.toggle).with-right-icon.primary .button-icon{color:var(--m-btn-color-opposite)}button:not(.get):not(.toggle).with-left-icon .button-icon{order:-1}button:not(.get):not(.toggle).with-left-icon .button-label{order:1}button:not(.get):not(.toggle).stacked{flex-direction:column;gap:calc(var(--m-btn-size) * .3);height:auto;min-height:var(--m-btn-h);padding:calc(var(--m-btn-size) * .625) calc(var(--m-btn-size) * .875)}button:not(.get):not(.toggle).stacked .button-label{font-size:calc(var(--m-btn-size) * .8)}button:not(.get):not(.toggle).only-icon{padding:0;border-width:2px;aspect-ratio:1;display:inline-flex;align-items:center;justify-content:center}button:not(.get):not(.toggle).only-icon m-icon,button:not(.get):not(.toggle).only-icon m-one-icon{display:inline-flex}m-badge{--m-badge-height: 1.5em;--m-badge-min-width: 1.5em;--m-badge-padding: 0 .3em;--m-badge-gap: .1em}.button-label{display:inline-flex;align-items:center;line-height:normal;font-size:inherit;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button-icon{position:relative;display:inline-flex;align-items:center;justify-content:center}.button-icon--img{width:calc(var(--m-btn-size) * 1.75);height:calc(var(--m-btn-size) * 1.75);overflow:hidden}.button-icon--img m-img{width:100%;height:100%;display:block}.get{appearance:none;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;height:var(--m-btn-h);padding:0 min(var(--m-btn-size) * 1.75,2rem);border-radius:4px;background:linear-gradient(135deg,var(--m-mm),var(--m-focus),var(--m-success),var(--m-mm));background-size:200% auto;color:#fff;font-size:calc(var(--m-btn-size) * .8);font-weight:600;letter-spacing:.06em;text-transform:uppercase;border:none;cursor:pointer;white-space:nowrap;line-height:1;transition:background-position .2s ease,transform .15s ease}.get:hover{background-position:right center}.get:active{transform:scale(.97)}.toggle{appearance:none;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;padding:0 min(var(--m-btn-size),1.25rem);border-radius:4px;box-shadow:none;color:var(--m-btn-color, var(--m-text-secondary));opacity:.65;font-family:inherit;font-size:var(--m-btn-size);font-weight:600;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none;transition:background .15s ease,color .15s ease,opacity .15s ease;min-width:0}.toggle .button-icon{flex-shrink:0}.toggle .button-label{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;min-width:0}.toggle:hover:not(:disabled){background:var(--m-button-hover-background, rgba(0, 0, 0, .025));color:var(--m-button-hover-color, var(--m-text));opacity:1}.toggle.primary{background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:hover:not(:disabled){background:var(--m-button-active-background, var(--m-mm));color:var(--m-button-active-color, #ffffff);opacity:1}.toggle.primary:active:not(:disabled){transform:scale(.97)}.toggle:disabled{opacity:.3;cursor:not-allowed}@container togglegroup (max-width: 320px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}@media(max-width:600px){.toggle.with-left-icon .button-label,.toggle.with-right-icon .button-label{display:none!important}}\n"] }]
6540
6583
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], labelClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelClass", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], nav: [{ type: i0.Input, args: [{ isSignal: true, alias: "nav", required: false }] }], navParams: [{ type: i0.Input, args: [{ isSignal: true, alias: "navParams", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], one: [{ type: i0.Input, args: [{ isSignal: true, alias: "one", required: false }] }], remote: [{ type: i0.Input, args: [{ isSignal: true, alias: "remote", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], isRightIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "isRightIcon", required: false }] }], iconOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOnly", required: false }] }], stacked: [{ type: i0.Input, args: [{ isSignal: true, alias: "stacked", required: false }] }], imgSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "imgSrc", required: false }] }], nonClickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "nonClickable", required: false }] }], inverted: [{ type: i0.Input, args: [{ isSignal: true, alias: "inverted", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }], button: [{ type: i0.ViewChild, args: ['button', { isSignal: true }] }] } });
6541
6584
 
6542
6585
  /**
@@ -7291,10 +7334,7 @@ class ButtonGroupComponent extends ConfigComponent {
7291
7334
  vertical = input(...(ngDevMode ? [undefined, { debugName: "vertical" }] : /* istanbul ignore next */ []));
7292
7335
  size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
7293
7336
  parentSize = injectParentSize();
7294
- resolvedSize = computed(() => this.size() ??
7295
- this.config()?.size ??
7296
- this.parentSize?.size() ??
7297
- DEFAULT_SIZE, ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
7337
+ resolvedSize = computed(() => coerceSize(this.size(), this.config()?.size, this.parentSize?.size()), ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
7298
7338
  sizeLength = computed(() => resolveSize(this.resolvedSize()), ...(ngDevMode ? [{ debugName: "sizeLength" }] : /* istanbul ignore next */ []));
7299
7339
  subFolder = 'button_groups';
7300
7340
  clicked = output();
@@ -8386,32 +8426,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
8386
8426
  `, imports: [TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}label{display:flex;align-items:center;gap:calc(var(--m-label-size, var(--input-size, 1em)) * .375);width:var(--m-label-width, var(--m-text-input-label-width, auto));margin:var(--m-label-margin, var(--m-text-input-label-margin, 0 0 calc(var(--m-label-size, var(--input-size, 1em)) * .5)));font-size:var(--m-label-font-size, calc(var(--m-label-size, var(--input-size, 1em)) * .85));font-weight:var(--m-label-weight, var(--m-text-input-label-weight, 500));line-height:1.4;cursor:pointer;color:var(--m-label-color, var(--m-text))}label.required:before{content:\"*\";color:var(--m-error);font-weight:600}label.disabled{color:var(--m-text-secondary);cursor:not-allowed}label .label__swatch{width:1em;height:1em;border-radius:calc(var(--m-label-size, var(--input-size, 1em)) * .4);border:1px solid var(--m-border);flex-shrink:0}\n"] }]
8387
8427
  }], propDecorators: { for: [{ type: i0.Input, args: [{ isSignal: true, alias: "for", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
8388
8428
 
8389
- class ErrorsComponent {
8390
- errors = input([], ...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
8391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ErrorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8392
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ErrorsComponent, isStandalone: true, selector: "m-input-errors", inputs: { errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
8393
- <div class="input-error">
8394
- @for (error of errors(); track $index) {
8395
- {{ error.message | translate }}
8396
- }
8397
- </div>
8398
- `, isInline: true, dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8429
+ class TextOutputComponent extends ConfigComponent {
8430
+ subFolder = LAYOUT_ASSET_FOLDER.text_output;
8431
+ config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
8432
+ translateService = inject(TranslateService);
8433
+ align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
8434
+ variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
8435
+ // A theme colour key (`error`, `warning`, `success`, …) or a raw CSS colour,
8436
+ // resolved the same way an Icon's or a Logo's is so a token follows the
8437
+ // active theme instead of freezing one theme's hex into a template.
8438
+ color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
8439
+ // `label` is the text itself, so a one-off TextOutput needs no asset behind
8440
+ // it (ADR 0010). MiniMark is a single string whatever it renders to, which
8441
+ // is what lets it ride on the tag at all.
8442
+ label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
8443
+ noTranslate = input(undefined, ...(ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []));
8444
+ resolvedAlign = computed(() => this.align() ?? this.config()?.align ?? 'left', ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
8445
+ resolvedVariant = computed(() => this.variant() ?? this.config()?.variant, ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
8446
+ resolvedColor = computed(() => {
8447
+ const color = this.color() ?? this.config()?.color;
8448
+ if (!color)
8449
+ return null;
8450
+ return resolvePallet(color, this.themeStore.color()).color;
8451
+ }, ...(ngDevMode ? [{ debugName: "resolvedColor" }] : /* istanbul ignore next */ []));
8452
+ resolveComponentOverrides() {
8453
+ const overrides = {};
8454
+ const align = this.align();
8455
+ if (align !== undefined)
8456
+ overrides.align = align;
8457
+ const label = this.label();
8458
+ if (label !== undefined)
8459
+ overrides.label = label;
8460
+ const noTranslate = toAttrBool(this.noTranslate());
8461
+ if (noTranslate !== undefined)
8462
+ overrides.noTranslate = noTranslate;
8463
+ const variant = this.variant();
8464
+ if (variant !== undefined)
8465
+ overrides.variant = variant;
8466
+ const color = this.color();
8467
+ if (color !== undefined)
8468
+ overrides.color = color;
8469
+ return overrides;
8470
+ }
8471
+ resolvedLabel = computed(() => this.config()?.label, ...(ngDevMode ? [{ debugName: "resolvedLabel" }] : /* istanbul ignore next */ []));
8472
+ shouldTranslate = computed(() => !this.config()?.noTranslate, ...(ngDevMode ? [{ debugName: "shouldTranslate" }] : /* istanbul ignore next */ []));
8473
+ html = computed(() => {
8474
+ const label = this.resolvedLabel();
8475
+ return this.shouldTranslate()
8476
+ ? this.translateService.translateToHtml(label)
8477
+ : this.translateService.toSafeHtml(label);
8478
+ }, ...(ngDevMode ? [{ debugName: "html" }] : /* istanbul ignore next */ []));
8479
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextOutputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
8480
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: TextOutputComponent, isStandalone: true, selector: "m-text-output", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, host: { properties: { "class.is-design-mode": "isDesignMode", "class.align-left": "resolvedAlign() === \"left\"", "class.align-right": "resolvedAlign() === \"right\"", "class.align-center": "resolvedAlign() === \"center\"", "class.variant-footer": "resolvedVariant() === \"footer\"", "style.--m-text-output-color": "resolvedColor()" }, classAttribute: "m-text-output-host" }, usesInheritance: true, ngImport: i0, template: ` <div class="m-text-output" [innerHTML]="html()"></div> `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host(.is-design-mode){display:block;min-width:1em;min-height:1em}:host(.align-left) .m-text-output{text-align:left}:host(.align-center) .m-text-output{text-align:center}:host(.align-right) .m-text-output{text-align:right}:host{font-size:inherit}:host(.variant-footer){display:block;font-size:.8em;margin-top:.25rem}:host(.variant-footer) .m-text-output{line-height:1.35}.m-text-output{color:var(--m-text-output-color, var(--m-text));font-size:inherit;line-height:1.5}.m-text-output>:first-child{margin-top:0}.m-text-output>:last-child{margin-bottom:0}.m-text-output p,.m-text-output ul,.m-text-output blockquote,.m-text-output h1,.m-text-output h2,.m-text-output h3,.m-text-output h4,.m-text-output h5,.m-text-output h6{margin:0 0 1rem}.m-text-output ul{padding-left:1.5rem;list-style-type:disc;list-style-position:outside}.m-text-output li{margin-bottom:.25rem}.m-text-output li:last-child{margin-bottom:0}.m-text-output a{color:var(--m-text-output-link-color, var(--m-mm));text-decoration:underline}.m-text-output a:hover{text-decoration:none}.m-text-output blockquote{padding-left:1rem;border-left:1px solid var(--m-border);color:var(--m-text-output-color, var(--m-text-secondary))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8399
8481
  }
8400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ErrorsComponent, decorators: [{
8482
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextOutputComponent, decorators: [{
8401
8483
  type: Component,
8402
- args: [{
8403
- selector: 'm-input-errors',
8404
- template: `
8405
- <div class="input-error">
8406
- @for (error of errors(); track $index) {
8407
- {{ error.message | translate }}
8408
- }
8409
- </div>
8410
- `,
8411
- imports: [TranslatePipe],
8412
- changeDetection: ChangeDetectionStrategy.OnPush,
8413
- }]
8414
- }], propDecorators: { errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
8484
+ args: [{ selector: 'm-text-output', imports: [], template: ` <div class="m-text-output" [innerHTML]="html()"></div> `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
8485
+ class: 'm-text-output-host',
8486
+ '[class.is-design-mode]': 'isDesignMode',
8487
+ '[class.align-left]': 'resolvedAlign() === "left"',
8488
+ '[class.align-right]': 'resolvedAlign() === "right"',
8489
+ '[class.align-center]': 'resolvedAlign() === "center"',
8490
+ '[class.variant-footer]': 'resolvedVariant() === "footer"',
8491
+ '[style.--m-text-output-color]': 'resolvedColor()',
8492
+ }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host(.is-design-mode){display:block;min-width:1em;min-height:1em}:host(.align-left) .m-text-output{text-align:left}:host(.align-center) .m-text-output{text-align:center}:host(.align-right) .m-text-output{text-align:right}:host{font-size:inherit}:host(.variant-footer){display:block;font-size:.8em;margin-top:.25rem}:host(.variant-footer) .m-text-output{line-height:1.35}.m-text-output{color:var(--m-text-output-color, var(--m-text));font-size:inherit;line-height:1.5}.m-text-output>:first-child{margin-top:0}.m-text-output>:last-child{margin-bottom:0}.m-text-output p,.m-text-output ul,.m-text-output blockquote,.m-text-output h1,.m-text-output h2,.m-text-output h3,.m-text-output h4,.m-text-output h5,.m-text-output h6{margin:0 0 1rem}.m-text-output ul{padding-left:1.5rem;list-style-type:disc;list-style-position:outside}.m-text-output li{margin-bottom:.25rem}.m-text-output li:last-child{margin-bottom:0}.m-text-output a{color:var(--m-text-output-link-color, var(--m-mm));text-decoration:underline}.m-text-output a:hover{text-decoration:none}.m-text-output blockquote{padding-left:1rem;border-left:1px solid var(--m-border);color:var(--m-text-output-color, var(--m-text-secondary))}\n"] }]
8493
+ }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }] } });
8415
8494
 
8416
8495
  class ClearableInputComponent extends BaseTextInputComponent {
8417
8496
  value = model('', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
@@ -8481,9 +8560,15 @@ class ClearableInputComponent extends BaseTextInputComponent {
8481
8560
  }
8482
8561
  </div>
8483
8562
  @if (showErrors()) {
8484
- <m-input-errors [errors]="errors()" />
8563
+ @for (error of errors(); track $index) {
8564
+ <m-text-output
8565
+ variant="footer"
8566
+ color="error"
8567
+ [label]="error.message"
8568
+ />
8569
+ }
8485
8570
  }
8486
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;padding:var(--m-input-clear-padding, var(--m-text-input-padding, .625em 1.25em ));padding-right:var(--m-input-clear-padding-right, var(--m-text-input-padding-right, 1.25em ))}.input-wrapper.has-value{padding-right:0}.input-wrapper{background:var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)));border-color:var(--m-input-clear-border, var(--m-text-input-border, var(--m-input-color, var(--m-mm))));border-radius:var(--m-input-clear-radius, var(--m-text-input-radius, .4em ));transition:var(--m-input-clear-transition, var(--m-text-input-transition, border-color .2s ease, box-shadow .2s ease));min-height:var(--m-input-clear-min-height, var(--m-text-input-min-height, 2.25em ));height:var(--m-input-clear-height, var(--m-text-input-height, 2.25em ))}.input-wrapper:hover{border-color:var(--m-input-clear-hover-border, var(--m-text-input-hover-border, color-mix(in srgb, var(--m-input-color, var(--m-mm)) 45%, rgba(0, 0, 0, .12))));background:var(--m-input-clear-hover-background, var(--m-text-input-hover-background, var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)))))}.input-wrapper:focus-within{border-color:var(--m-input-clear-focus-border, var(--m-text-input-focus-border, var(--m-focus)));box-shadow:var(--m-input-clear-shadow, var(--m-text-input-shadow, none));background:var(--m-input-clear-focus-background, var(--m-text-input-focus-background, var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)))))}.input-wrapper .m-icon{--m-icon-size: var(--m-input-clear-icon-size, var(--m-input-clear-size, 1.1em )) !important;color:var(--m-input-clear-icon-color, var(--m-text-input-icon-color, inherit));opacity:var(--m-input-clear-icon-opacity, var(--m-text-input-icon-opacity, 1));flex-shrink:0;transition:opacity .2s ease}.input-wrapper:focus-within .m-icon{opacity:var(--m-input-clear-icon-focus-opacity, var(--m-text-input-icon-focus-opacity, 1))}.input-wrapper .m-one-button{height:100%;display:inline-flex;align-items:center;justify-content:center;--m-button-size: var(--m-input-clear-size, 1rem) !important;opacity:.5;transition:opacity .2s ease}.input-wrapper .m-one-button:hover{opacity:.8}.input-wrapper input{appearance:none;border:none;outline:none;flex:1;background:transparent;color:var(--m-input-clear-color, var(--m-text-input-color, var(--m-text)));font-family:inherit;font-weight:var(--m-input-clear-font-weight, var(--m-text-input-font-weight, inherit));font-size:var(--m-input-clear-size, 1em);padding:0;caret-color:var(--m-input-clear-caret-color, var(--m-text-input-caret-color, auto))}.input-wrapper input::placeholder{font-weight:var(--m-input-clear-placeholder-weight, var(--m-text-input-placeholder-weight, inherit));opacity:var(--m-input-clear-placeholder-opacity, var(--m-text-input-placeholder-opacity, inherit))}:host(.m-input--underlined) .input-wrapper{background:transparent;border:none;border-bottom:2px solid var(--m-backdrop-border);border-radius:0;min-height:auto;height:auto;transition:border-color .3s ease}:host(.m-input--underlined) .input-wrapper:focus-within{border-bottom-color:var(--m-mm);box-shadow:none}:host(.m-input--underlined) input{font-size:var(--m-input-clear-size, 1.125rem);font-weight:var(--m-input-clear-font-weight, var(--m-text-input-font-weight, 700));color:var(--m-input-clear-color, var(--m-text-input-color, var(--m-text)))}:host(.m-input--underlined) .m-icon{--m-icon-size: var(--m-input-clear-size, 1.125rem) !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8571
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;padding:var(--m-input-clear-padding, var(--m-text-input-padding, .625em 1.25em ));padding-right:var(--m-input-clear-padding-right, var(--m-text-input-padding-right, 1.25em ))}.input-wrapper.has-value{padding-right:0}.input-wrapper{background:var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)));border-color:var(--m-input-clear-border, var(--m-text-input-border, var(--m-input-color, var(--m-mm))));border-radius:var(--m-input-clear-radius, var(--m-text-input-radius, .4em ));transition:var(--m-input-clear-transition, var(--m-text-input-transition, border-color .2s ease, box-shadow .2s ease));min-height:var(--m-input-clear-min-height, var(--m-text-input-min-height, 2.25em ));height:var(--m-input-clear-height, var(--m-text-input-height, 2.25em ))}.input-wrapper:hover{border-color:var(--m-input-clear-hover-border, var(--m-text-input-hover-border, color-mix(in srgb, var(--m-input-color, var(--m-mm)) 45%, rgba(0, 0, 0, .12))));background:var(--m-input-clear-hover-background, var(--m-text-input-hover-background, var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)))))}.input-wrapper:focus-within{border-color:var(--m-input-clear-focus-border, var(--m-text-input-focus-border, var(--m-focus)));box-shadow:var(--m-input-clear-shadow, var(--m-text-input-shadow, none));background:var(--m-input-clear-focus-background, var(--m-text-input-focus-background, var(--m-input-clear-background, var(--m-text-input-background, var(--m-background)))))}.input-wrapper .m-icon{--m-icon-size: var(--m-input-clear-icon-size, var(--m-input-clear-size, 1.1em )) !important;color:var(--m-input-clear-icon-color, var(--m-text-input-icon-color, inherit));opacity:var(--m-input-clear-icon-opacity, var(--m-text-input-icon-opacity, 1));flex-shrink:0;transition:opacity .2s ease}.input-wrapper:focus-within .m-icon{opacity:var(--m-input-clear-icon-focus-opacity, var(--m-text-input-icon-focus-opacity, 1))}.input-wrapper .m-one-button{height:100%;display:inline-flex;align-items:center;justify-content:center;--m-button-size: var(--m-input-clear-size, 1rem) !important;opacity:.5;transition:opacity .2s ease}.input-wrapper .m-one-button:hover{opacity:.8}.input-wrapper input{appearance:none;border:none;outline:none;flex:1;background:transparent;color:var(--m-input-clear-color, var(--m-text-input-color, var(--m-text)));font-family:inherit;font-weight:var(--m-input-clear-font-weight, var(--m-text-input-font-weight, inherit));font-size:var(--m-input-clear-size, 1em);padding:0;caret-color:var(--m-input-clear-caret-color, var(--m-text-input-caret-color, auto))}.input-wrapper input::placeholder{font-weight:var(--m-input-clear-placeholder-weight, var(--m-text-input-placeholder-weight, inherit));opacity:var(--m-input-clear-placeholder-opacity, var(--m-text-input-placeholder-opacity, inherit))}:host(.m-input--underlined) .input-wrapper{background:transparent;border:none;border-bottom:2px solid var(--m-backdrop-border);border-radius:0;min-height:auto;height:auto;transition:border-color .3s ease}:host(.m-input--underlined) .input-wrapper:focus-within{border-bottom-color:var(--m-mm);box-shadow:none}:host(.m-input--underlined) input{font-size:var(--m-input-clear-size, 1.125rem);font-weight:var(--m-input-clear-font-weight, var(--m-text-input-font-weight, 700));color:var(--m-input-clear-color, var(--m-text-input-color, var(--m-text)))}:host(.m-input--underlined) .m-icon{--m-icon-size: var(--m-input-clear-size, 1.125rem) !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8487
8572
  }
8488
8573
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ClearableInputComponent, decorators: [{
8489
8574
  type: Component,
@@ -8527,11 +8612,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
8527
8612
  }
8528
8613
  </div>
8529
8614
  @if (showErrors()) {
8530
- <m-input-errors [errors]="errors()" />
8615
+ @for (error of errors(); track $index) {
8616
+ <m-text-output
8617
+ variant="footer"
8618
+ color="error"
8619
+ [label]="error.message"
8620
+ />
8621
+ }
8531
8622
  }
8532
8623
  `, imports: [
8533
8624
  LabelComponent,
8534
- ErrorsComponent,
8625
+ TextOutputComponent,
8535
8626
  IconComponent,
8536
8627
  ButtonComponent,
8537
8628
  TranslatePipe,
@@ -8638,7 +8729,7 @@ class SectionSearchComponent extends BaseTextInputComponent {
8638
8729
  </div>
8639
8730
  </div>
8640
8731
  }
8641
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar m-header{flex:1;min-width:0;font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}\n"], dependencies: [{ kind: "component", type: ClearableInputComponent, selector: "m-input-clear", inputs: ["value", "config", "required", "disabled", "readonly", "invalid", "focused", "touched", "errors", "icon", "placeholder", "type", "inputId"], outputs: ["valueChange", "touchedChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8732
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar m-header{flex:1;min-width:0;font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}\n"], dependencies: [{ kind: "component", type: ClearableInputComponent, selector: "m-input-clear", inputs: ["value", "config", "required", "disabled", "readonly", "invalid", "focused", "touched", "errors", "icon", "placeholder", "type", "inputId"], outputs: ["valueChange", "touchedChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate"], outputs: ["actionClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8642
8733
  }
8643
8734
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionSearchComponent, decorators: [{
8644
8735
  type: Component,
@@ -8668,7 +8759,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
8668
8759
  '[class.is-sticky]': 'isSticky()',
8669
8760
  '[class.has-sidepanel]': 'sidepanel()',
8670
8761
  '[class.no-border]': 'noBorder()',
8671
- }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar m-header{flex:1;min-width:0;font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}\n"] }]
8762
+ }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:flex;align-items:center;width:100%;grid-column:1/-1;box-sizing:border-box;min-height:var(--section-header-min-height, calc(var(--section-header-py, 1rem) * 2 + 1.375rem));border-bottom:1px solid var(--m-section-search-border, var(--m-backdrop-border));padding:var(--section-header-py, .75rem) var(--section-px, 1rem);--m-header-size: 1rem}:host.has-sidepanel{padding-right:50px}:host(.no-border){border-bottom:none}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-search__bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;width:100%}.section-search__bar m-header{flex:1;min-width:0;font-size:1rem}.section-search__bar .section-search__toggle{flex-shrink:0;--m-button-size: 1rem !important}.section-search__field{display:flex;align-items:center;width:100%}.section-search__field m-input-clear{width:100%}\n"] }]
8672
8763
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], searchLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchLabel", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], debounce: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounce", required: false }] }], startOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "startOpen", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }] } });
8673
8764
 
8674
8765
  function isWithinBoundary(value, draggable, axis) {
@@ -11186,10 +11277,9 @@ class SectionComponent extends ConfigComponent {
11186
11277
  align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
11187
11278
  size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
11188
11279
  parentSize = injectParentSize();
11189
- resolvedSize = computed(() => this.size() ??
11190
- this.config()?.size ??
11191
- this.parentSize?.size() ??
11192
- DEFAULT_SIZE, ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
11280
+ // Size is Section/Form/ButtonGroup only (ADR 0008). Icons underneath read
11281
+ // this via SIZE_CONTEXT — they never declare a Size of their own.
11282
+ resolvedSize = computed(() => coerceSize(this.size(), this.config()?.size, this.parentSize?.size()), ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
11193
11283
  sizeLength = computed(() => resolveSize(this.resolvedSize()), ...(ngDevMode ? [{ debugName: "sizeLength" }] : /* istanbul ignore next */ []));
11194
11284
  resolvedAlign = computed(() => this.align() ?? this.config()?.align ?? 'left', ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
11195
11285
  resolvedVariant = computed(() => this.variant() ?? this.config()?.variant ?? undefined, ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
@@ -11465,10 +11555,7 @@ class SectionButtonGroupComponent extends ConfigComponent {
11465
11555
  size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
11466
11556
  fullWidth = input(undefined, ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
11467
11557
  parentSize = injectParentSize();
11468
- resolvedSize = computed(() => this.size() ??
11469
- this.config()?.size ??
11470
- this.parentSize?.size() ??
11471
- DEFAULT_SIZE, ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
11558
+ resolvedSize = computed(() => coerceSize(this.size(), this.config()?.size, this.parentSize?.size()), ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
11472
11559
  sizeLength = computed(() => resolveSize(this.resolvedSize()), ...(ngDevMode ? [{ debugName: "sizeLength" }] : /* istanbul ignore next */ []));
11473
11560
  resolvedFullWidth = computed(() => toBool$1(this.fullWidth() ?? this.config()?.fullWidth), ...(ngDevMode ? [{ debugName: "resolvedFullWidth" }] : /* istanbul ignore next */ []));
11474
11561
  resolvedVertical = computed(() => this.vertical() ?? this.config()?.vertical ?? false, ...(ngDevMode ? [{ debugName: "resolvedVertical" }] : /* istanbul ignore next */ []));
@@ -11976,10 +12063,16 @@ class TextInputComponent extends BaseTextInputComponent {
11976
12063
  }
11977
12064
  </div>
11978
12065
  @if (showErrors() && !hideErrors()) {
11979
- <m-input-errors [errors]="errors()" />
12066
+ @for (error of errors(); track $index) {
12067
+ <m-text-output
12068
+ variant="footer"
12069
+ color="error"
12070
+ [label]="error.message"
12071
+ />
12072
+ }
11980
12073
  }
11981
12074
  }
11982
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;padding-left:var(--m-text-input-padding-left, calc(var(--input-size, 1em) * .5 * .7));padding-right:var(--m-text-input-padding-right, calc(var(--input-size, 1em) * .5 * .7));background:var(--m-text-input-background, var(--m-background));border-color:var(--m-text-input-border, var(--m-input-color, var(--m-mm)));transition:var(--m-text-input-transition, border-color .2s ease, box-shadow .2s ease)}.input-wrapper:hover{border-color:var(--m-text-input-hover-border, color-mix(in srgb, var(--m-input-color, var(--m-mm)) 45%, rgba(0, 0, 0, .12)));background:var(--m-text-input-hover-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper:focus-within{border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none);background:var(--m-text-input-focus-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper .m-icon{--m-icon-size: 1.1em !important;opacity:var(--m-text-input-icon-opacity, 1);transition:opacity .2s ease}.input-wrapper:focus-within .m-icon{opacity:var(--m-text-input-icon-focus-opacity, var(--m-text-input-icon-opacity, 1))}.input-wrapper input{appearance:none;color:var(--m-text-input-color, var(--m-text));font-weight:var(--m-text-input-font-weight, inherit);font-size:var(--input-size, 1em)}.input-wrapper input::placeholder{font-weight:var(--m-text-input-placeholder-weight, inherit);opacity:var(--m-text-input-placeholder-opacity, inherit)}.input-wrapper .input-prefix,.input-wrapper .input-suffix{font-size:.9rem;font-weight:700;color:var(--m-text-tertiary);-webkit-user-select:none;user-select:none;display:flex;align-items:center;flex-shrink:0}.input-wrapper .input-prefix{margin-right:.25rem}.input-wrapper .input-suffix{margin-left:.25rem}:host(.m-input--underlined) .input-wrapper{background:transparent;border:none;border-bottom:2px solid var(--m-backdrop-border);border-radius:0;padding:.5rem 0;min-height:auto;height:auto;transition:border-color .3s ease}:host(.m-input--underlined) .input-wrapper:focus-within{border-bottom-color:var(--m-mm);box-shadow:none}:host(.m-input--underlined) input{font-size:1.125rem;font-weight:700;color:var(--m-text)}:host(.m-input--underlined) .input-prefix,:host(.m-input--underlined) .input-suffix{color:var(--m-mm);font-weight:800;font-size:1rem}:host(.m-input--underlined) .input-indicator{display:flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;margin-left:.375em}:host(.m-input--underlined) .input-indicator--available{color:var(--m-success, #10b981)}:host(.m-input--underlined) .input-indicator .spinner{width:.875rem;height:.875rem;border:2px solid var(--m-border, rgba(255, 255, 255, .1));border-top-color:var(--m-focus, #14b8a6);border-radius:50%;animation:m-spin .8s linear infinite}@keyframes m-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12075
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;padding-left:var(--m-text-input-padding-left, calc(var(--input-size, 1em) * .5 * .7));padding-right:var(--m-text-input-padding-right, calc(var(--input-size, 1em) * .5 * .7));background:var(--m-text-input-background, var(--m-background));border-color:var(--m-text-input-border, var(--m-input-color, var(--m-mm)));transition:var(--m-text-input-transition, border-color .2s ease, box-shadow .2s ease)}.input-wrapper:hover{border-color:var(--m-text-input-hover-border, color-mix(in srgb, var(--m-input-color, var(--m-mm)) 45%, rgba(0, 0, 0, .12)));background:var(--m-text-input-hover-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper:focus-within{border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none);background:var(--m-text-input-focus-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper .m-icon{--m-icon-size: 1.1em !important;opacity:var(--m-text-input-icon-opacity, 1);transition:opacity .2s ease}.input-wrapper:focus-within .m-icon{opacity:var(--m-text-input-icon-focus-opacity, var(--m-text-input-icon-opacity, 1))}.input-wrapper input{appearance:none;color:var(--m-text-input-color, var(--m-text));font-weight:var(--m-text-input-font-weight, inherit);font-size:var(--input-size, 1em)}.input-wrapper input::placeholder{font-weight:var(--m-text-input-placeholder-weight, inherit);opacity:var(--m-text-input-placeholder-opacity, inherit)}.input-wrapper .input-prefix,.input-wrapper .input-suffix{font-size:.9rem;font-weight:700;color:var(--m-text-tertiary);-webkit-user-select:none;user-select:none;display:flex;align-items:center;flex-shrink:0}.input-wrapper .input-prefix{margin-right:.25rem}.input-wrapper .input-suffix{margin-left:.25rem}:host(.m-input--underlined) .input-wrapper{background:transparent;border:none;border-bottom:2px solid var(--m-backdrop-border);border-radius:0;padding:.5rem 0;min-height:auto;height:auto;transition:border-color .3s ease}:host(.m-input--underlined) .input-wrapper:focus-within{border-bottom-color:var(--m-mm);box-shadow:none}:host(.m-input--underlined) input{font-size:1.125rem;font-weight:700;color:var(--m-text)}:host(.m-input--underlined) .input-prefix,:host(.m-input--underlined) .input-suffix{color:var(--m-mm);font-weight:800;font-size:1rem}:host(.m-input--underlined) .input-indicator{display:flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;margin-left:.375em}:host(.m-input--underlined) .input-indicator--available{color:var(--m-success, #10b981)}:host(.m-input--underlined) .input-indicator .spinner{width:.875rem;height:.875rem;border:2px solid var(--m-border, rgba(255, 255, 255, .1));border-top-color:var(--m-focus, #14b8a6);border-radius:50%;animation:m-spin .8s linear infinite}@keyframes m-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11983
12076
  }
11984
12077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextInputComponent, decorators: [{
11985
12078
  type: Component,
@@ -12034,10 +12127,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12034
12127
  }
12035
12128
  </div>
12036
12129
  @if (showErrors() && !hideErrors()) {
12037
- <m-input-errors [errors]="errors()" />
12130
+ @for (error of errors(); track $index) {
12131
+ <m-text-output
12132
+ variant="footer"
12133
+ color="error"
12134
+ [label]="error.message"
12135
+ />
12136
+ }
12038
12137
  }
12039
12138
  }
12040
- `, imports: [LabelComponent, ErrorsComponent, IconComponent, TranslatePipe], host: {
12139
+ `, imports: [LabelComponent, TextOutputComponent, IconComponent, TranslatePipe], host: {
12041
12140
  '[class]': "config()?.variant ? 'm-input--' + config()?.variant : ''",
12042
12141
  }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;padding-left:var(--m-text-input-padding-left, calc(var(--input-size, 1em) * .5 * .7));padding-right:var(--m-text-input-padding-right, calc(var(--input-size, 1em) * .5 * .7));background:var(--m-text-input-background, var(--m-background));border-color:var(--m-text-input-border, var(--m-input-color, var(--m-mm)));transition:var(--m-text-input-transition, border-color .2s ease, box-shadow .2s ease)}.input-wrapper:hover{border-color:var(--m-text-input-hover-border, color-mix(in srgb, var(--m-input-color, var(--m-mm)) 45%, rgba(0, 0, 0, .12)));background:var(--m-text-input-hover-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper:focus-within{border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none);background:var(--m-text-input-focus-background, var(--m-text-input-background, var(--m-background)))}.input-wrapper .m-icon{--m-icon-size: 1.1em !important;opacity:var(--m-text-input-icon-opacity, 1);transition:opacity .2s ease}.input-wrapper:focus-within .m-icon{opacity:var(--m-text-input-icon-focus-opacity, var(--m-text-input-icon-opacity, 1))}.input-wrapper input{appearance:none;color:var(--m-text-input-color, var(--m-text));font-weight:var(--m-text-input-font-weight, inherit);font-size:var(--input-size, 1em)}.input-wrapper input::placeholder{font-weight:var(--m-text-input-placeholder-weight, inherit);opacity:var(--m-text-input-placeholder-opacity, inherit)}.input-wrapper .input-prefix,.input-wrapper .input-suffix{font-size:.9rem;font-weight:700;color:var(--m-text-tertiary);-webkit-user-select:none;user-select:none;display:flex;align-items:center;flex-shrink:0}.input-wrapper .input-prefix{margin-right:.25rem}.input-wrapper .input-suffix{margin-left:.25rem}:host(.m-input--underlined) .input-wrapper{background:transparent;border:none;border-bottom:2px solid var(--m-backdrop-border);border-radius:0;padding:.5rem 0;min-height:auto;height:auto;transition:border-color .3s ease}:host(.m-input--underlined) .input-wrapper:focus-within{border-bottom-color:var(--m-mm);box-shadow:none}:host(.m-input--underlined) input{font-size:1.125rem;font-weight:700;color:var(--m-text)}:host(.m-input--underlined) .input-prefix,:host(.m-input--underlined) .input-suffix{color:var(--m-mm);font-weight:800;font-size:1rem}:host(.m-input--underlined) .input-indicator{display:flex;align-items:center;justify-content:center;width:1.1em;height:1.1em;margin-left:.375em}:host(.m-input--underlined) .input-indicator--available{color:var(--m-success, #10b981)}:host(.m-input--underlined) .input-indicator .spinner{width:.875rem;height:.875rem;border:2px solid var(--m-border, rgba(255, 255, 255, .1));border-top-color:var(--m-focus, #14b8a6);border-radius:50%;animation:m-spin .8s linear infinite}@keyframes m-spin{to{transform:rotate(360deg)}}\n"] }]
12043
12142
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], hideErrors: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideErrors", required: false }] }] } });
@@ -12090,10 +12189,16 @@ class TextareaInputComponent extends BaseTextInputComponent {
12090
12189
  ></textarea>
12091
12190
  </div>
12092
12191
  @if (showErrors()) {
12093
- <m-input-errors [errors]="errors()" />
12192
+ @for (error of errors(); track $index) {
12193
+ <m-text-output
12194
+ variant="footer"
12195
+ color="error"
12196
+ [label]="error.message"
12197
+ />
12198
+ }
12094
12199
  }
12095
12200
  }
12096
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;--m-textarea-background: var(--m-textarea-input-background, var(--m-background));--m-textarea-padding: var(--m-textarea-input-padding, .375em 1.25em );--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, 2px solid var(--m-input-color, var(--m-mm)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: AutosizeDirective, selector: "[mAutosize]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12201
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;--m-textarea-background: var(--m-textarea-input-background, var(--m-background));--m-textarea-padding: var(--m-textarea-input-padding, .375em 1.25em );--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, 2px solid var(--m-input-color, var(--m-mm)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: AutosizeDirective, selector: "[mAutosize]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
12097
12202
  }
12098
12203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextareaInputComponent, decorators: [{
12099
12204
  type: Component,
@@ -12129,10 +12234,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
12129
12234
  ></textarea>
12130
12235
  </div>
12131
12236
  @if (showErrors()) {
12132
- <m-input-errors [errors]="errors()" />
12237
+ @for (error of errors(); track $index) {
12238
+ <m-text-output
12239
+ variant="footer"
12240
+ color="error"
12241
+ [label]="error.message"
12242
+ />
12243
+ }
12133
12244
  }
12134
12245
  }
12135
- `, imports: [LabelComponent, ErrorsComponent, IconComponent, AutosizeDirective], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;--m-textarea-background: var(--m-textarea-input-background, var(--m-background));--m-textarea-padding: var(--m-textarea-input-padding, .375em 1.25em );--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, 2px solid var(--m-input-color, var(--m-mm)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"] }]
12246
+ `, imports: [LabelComponent, TextOutputComponent, IconComponent, AutosizeDirective], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;--m-textarea-background: var(--m-textarea-input-background, var(--m-background));--m-textarea-padding: var(--m-textarea-input-padding, .375em 1.25em );--m-textarea-shadow: var(--m-textarea-input-shadow, none)}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;align-items:flex-start;position:relative;min-height:2em;height:auto;padding:var(--m-textarea-padding);gap:.375em;background:var(--m-textarea-background);border:var(--m-textarea-input-border, 2px solid var(--m-input-color, var(--m-mm)));box-shadow:var(--m-textarea-shadow)}.input-wrapper textarea{appearance:none;border:none;outline:none;flex:1;resize:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:1em;padding:0;line-height:1.5}.input-wrapper textarea:focus{box-shadow:none;background:transparent}.input-wrapper .m-icon{margin-top:.125rem;display:flex;align-items:center;justify-content:center;--m-icon-size: 1.1em !important}\n"] }]
12136
12247
  }] });
12137
12248
 
12138
12249
  var textarea = /*#__PURE__*/Object.freeze({
@@ -13030,10 +13141,16 @@ class DateInputComponent extends BaseTextInputComponent {
13030
13141
  />
13031
13142
  </div>
13032
13143
  @if (showErrors()) {
13033
- <m-input-errors [errors]="errors()" />
13144
+ @for (error of errors(); track $index) {
13145
+ <m-text-output
13146
+ variant="footer"
13147
+ color="error"
13148
+ [label]="error.message"
13149
+ />
13150
+ }
13034
13151
  }
13035
13152
  }
13036
- `, isInline: true, styles: [":host{display:contents}.input-wrapper{position:relative;padding-right:0!important;--m-text-input-padding-right: 2.25em }.input-wrapper input{width:100%;padding-right:var(--m-text-input-padding-right)!important;box-sizing:border-box}.input-wrapper input::placeholder{opacity:.5;font-style:italic}.input-wrapper>.m-button,.input-wrapper>.m-one-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13153
+ `, isInline: true, styles: [":host{display:contents}.input-wrapper{position:relative;padding-right:0!important;--m-text-input-padding-right: 2.25em }.input-wrapper input{width:100%;padding-right:var(--m-text-input-padding-right)!important;box-sizing:border-box}.input-wrapper input::placeholder{opacity:.5;font-style:italic}.input-wrapper>.m-button,.input-wrapper>.m-one-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13037
13154
  }
13038
13155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DateInputComponent, decorators: [{
13039
13156
  type: Component,
@@ -13073,12 +13190,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
13073
13190
  />
13074
13191
  </div>
13075
13192
  @if (showErrors()) {
13076
- <m-input-errors [errors]="errors()" />
13193
+ @for (error of errors(); track $index) {
13194
+ <m-text-output
13195
+ variant="footer"
13196
+ color="error"
13197
+ [label]="error.message"
13198
+ />
13199
+ }
13077
13200
  }
13078
13201
  }
13079
13202
  `, imports: [
13080
13203
  LabelComponent,
13081
- ErrorsComponent,
13204
+ TextOutputComponent,
13082
13205
  ButtonComponent,
13083
13206
  SelectorDirective,
13084
13207
  ], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:contents}.input-wrapper{position:relative;padding-right:0!important;--m-text-input-padding-right: 2.25em }.input-wrapper input{width:100%;padding-right:var(--m-text-input-padding-right)!important;box-sizing:border-box}.input-wrapper input::placeholder{opacity:.5;font-style:italic}.input-wrapper>.m-button,.input-wrapper>.m-one-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important}\n"] }]
@@ -13197,10 +13320,16 @@ class CheckboxInputComponent extends BaseCheckboxInputComponent {
13197
13320
  />
13198
13321
  </div>
13199
13322
  @if (showErrors()) {
13200
- <m-input-errors [errors]="errors()" />
13323
+ @for (error of errors(); track $index) {
13324
+ <m-text-output
13325
+ variant="footer"
13326
+ color="error"
13327
+ [label]="error.message"
13328
+ />
13329
+ }
13201
13330
  }
13202
13331
  }
13203
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-block}.checkbox{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding:2px}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:1em;height:1em;background-color:rgba(var(--m-checkbox-bg-rgb, 255, 255, 255),.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.4em;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 70%,transparent 30%);cursor:pointer;outline:none;box-sizing:border-box;flex-shrink:0;margin:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 15%,transparent 85%),0 2px 12px -3px #0000001a;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease,transform .2s ease;will-change:background-color,box-shadow}.checkbox input[type=checkbox]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0) rotate(-45deg);width:.5em;height:.25em;border-left:.12em solid var(--m-checkbox-input-color, #4169e1);border-bottom:.12em solid var(--m-checkbox-input-color, #4169e1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .15s ease;will-change:transform;box-shadow:0 .1em .1666666667em #0003,0 .05em .0833333333em #0000001a}.checkbox{--m-label-margin: 0}.checkbox input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 80%,transparent 20%);transform:translateY(-1px);box-shadow:0 4px 15px -3px #00000026,0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%),0 2px 12px -3px #0000001a;outline:none}.checkbox input[type=checkbox]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1);box-shadow:0 4px 15px -3px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 40%,transparent 60%);transform:scale(1.05)}.checkbox input[type=checkbox]:checked:after{transform:translate(-50%,-60%) scale(1) rotate(-45deg);border-color:#fff}.checkbox input[type=checkbox]:checked:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%);border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%)}.checkbox input[type=checkbox]:checked:active:not(:disabled):after{transform:translate(-50%,-60%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:indeterminate{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1)}.checkbox input[type=checkbox]:indeterminate:after{transform:translate(-50%,-50%) scale(1) rotate(0);width:.5em;height:0;border-left:none;border-bottom:.12em solid white}.checkbox input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 20%,transparent 80%)}.checkbox input[type=checkbox]:disabled:checked:after{opacity:.5}.checkbox{min-height:1em}.radio{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.radio input[type=radio]{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0;padding:0;position:relative;width:1em;height:1em;flex-shrink:0;box-sizing:border-box;background-color:transparent;border-radius:50%;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 40%,transparent 60%);cursor:pointer;outline:none;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease;will-change:background-color,box-shadow,border-color}.radio input[type=radio]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:.5em;height:.5em;background-color:var(--m-input-wrapper-color, #4169e1);border-radius:50%;transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .2s ease;will-change:transform}.radio{--m-label-margin: 0}.radio input[type=radio]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 60%,transparent 40%)}.radio input[type=radio]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%);outline:none}.radio input[type=radio]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked{border-color:var(--m-input-wrapper-color, #4169e1)}.radio input[type=radio]:checked:after{transform:translate(-50%,-50%) scale(1)}.radio input[type=radio]:checked:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:hover:not(:disabled):after{background-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 25%,transparent 75%)}.radio input[type=radio]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%)}.radio input[type=radio]:disabled:checked:after{opacity:.5}.radio{min-height:1em}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13332
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-block}.checkbox{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding:2px}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:1em;height:1em;background-color:rgba(var(--m-checkbox-bg-rgb, 255, 255, 255),.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.4em;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 70%,transparent 30%);cursor:pointer;outline:none;box-sizing:border-box;flex-shrink:0;margin:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 15%,transparent 85%),0 2px 12px -3px #0000001a;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease,transform .2s ease;will-change:background-color,box-shadow}.checkbox input[type=checkbox]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0) rotate(-45deg);width:.5em;height:.25em;border-left:.12em solid var(--m-checkbox-input-color, #4169e1);border-bottom:.12em solid var(--m-checkbox-input-color, #4169e1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .15s ease;will-change:transform;box-shadow:0 .1em .1666666667em #0003,0 .05em .0833333333em #0000001a}.checkbox{--m-label-margin: 0}.checkbox input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 80%,transparent 20%);transform:translateY(-1px);box-shadow:0 4px 15px -3px #00000026,0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%),0 2px 12px -3px #0000001a;outline:none}.checkbox input[type=checkbox]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1);box-shadow:0 4px 15px -3px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 40%,transparent 60%);transform:scale(1.05)}.checkbox input[type=checkbox]:checked:after{transform:translate(-50%,-60%) scale(1) rotate(-45deg);border-color:#fff}.checkbox input[type=checkbox]:checked:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%);border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%)}.checkbox input[type=checkbox]:checked:active:not(:disabled):after{transform:translate(-50%,-60%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:indeterminate{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1)}.checkbox input[type=checkbox]:indeterminate:after{transform:translate(-50%,-50%) scale(1) rotate(0);width:.5em;height:0;border-left:none;border-bottom:.12em solid white}.checkbox input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 20%,transparent 80%)}.checkbox input[type=checkbox]:disabled:checked:after{opacity:.5}.checkbox{min-height:1em}.radio{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.radio input[type=radio]{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0;padding:0;position:relative;width:1em;height:1em;flex-shrink:0;box-sizing:border-box;background-color:transparent;border-radius:50%;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 40%,transparent 60%);cursor:pointer;outline:none;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease;will-change:background-color,box-shadow,border-color}.radio input[type=radio]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:.5em;height:.5em;background-color:var(--m-input-wrapper-color, #4169e1);border-radius:50%;transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .2s ease;will-change:transform}.radio{--m-label-margin: 0}.radio input[type=radio]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 60%,transparent 40%)}.radio input[type=radio]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%);outline:none}.radio input[type=radio]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked{border-color:var(--m-input-wrapper-color, #4169e1)}.radio input[type=radio]:checked:after{transform:translate(-50%,-50%) scale(1)}.radio input[type=radio]:checked:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:hover:not(:disabled):after{background-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 25%,transparent 75%)}.radio input[type=radio]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%)}.radio input[type=radio]:disabled:checked:after{opacity:.5}.radio{min-height:1em}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13204
13333
  }
13205
13334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: CheckboxInputComponent, decorators: [{
13206
13335
  type: Component,
@@ -13224,10 +13353,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
13224
13353
  />
13225
13354
  </div>
13226
13355
  @if (showErrors()) {
13227
- <m-input-errors [errors]="errors()" />
13356
+ @for (error of errors(); track $index) {
13357
+ <m-text-output
13358
+ variant="footer"
13359
+ color="error"
13360
+ [label]="error.message"
13361
+ />
13362
+ }
13228
13363
  }
13229
13364
  }
13230
- `, imports: [LabelComponent, ErrorsComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-block}.checkbox{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding:2px}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:1em;height:1em;background-color:rgba(var(--m-checkbox-bg-rgb, 255, 255, 255),.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.4em;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 70%,transparent 30%);cursor:pointer;outline:none;box-sizing:border-box;flex-shrink:0;margin:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 15%,transparent 85%),0 2px 12px -3px #0000001a;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease,transform .2s ease;will-change:background-color,box-shadow}.checkbox input[type=checkbox]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0) rotate(-45deg);width:.5em;height:.25em;border-left:.12em solid var(--m-checkbox-input-color, #4169e1);border-bottom:.12em solid var(--m-checkbox-input-color, #4169e1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .15s ease;will-change:transform;box-shadow:0 .1em .1666666667em #0003,0 .05em .0833333333em #0000001a}.checkbox{--m-label-margin: 0}.checkbox input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 80%,transparent 20%);transform:translateY(-1px);box-shadow:0 4px 15px -3px #00000026,0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%),0 2px 12px -3px #0000001a;outline:none}.checkbox input[type=checkbox]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1);box-shadow:0 4px 15px -3px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 40%,transparent 60%);transform:scale(1.05)}.checkbox input[type=checkbox]:checked:after{transform:translate(-50%,-60%) scale(1) rotate(-45deg);border-color:#fff}.checkbox input[type=checkbox]:checked:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%);border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%)}.checkbox input[type=checkbox]:checked:active:not(:disabled):after{transform:translate(-50%,-60%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:indeterminate{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1)}.checkbox input[type=checkbox]:indeterminate:after{transform:translate(-50%,-50%) scale(1) rotate(0);width:.5em;height:0;border-left:none;border-bottom:.12em solid white}.checkbox input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 20%,transparent 80%)}.checkbox input[type=checkbox]:disabled:checked:after{opacity:.5}.checkbox{min-height:1em}.radio{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.radio input[type=radio]{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0;padding:0;position:relative;width:1em;height:1em;flex-shrink:0;box-sizing:border-box;background-color:transparent;border-radius:50%;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 40%,transparent 60%);cursor:pointer;outline:none;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease;will-change:background-color,box-shadow,border-color}.radio input[type=radio]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:.5em;height:.5em;background-color:var(--m-input-wrapper-color, #4169e1);border-radius:50%;transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .2s ease;will-change:transform}.radio{--m-label-margin: 0}.radio input[type=radio]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 60%,transparent 40%)}.radio input[type=radio]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%);outline:none}.radio input[type=radio]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked{border-color:var(--m-input-wrapper-color, #4169e1)}.radio input[type=radio]:checked:after{transform:translate(-50%,-50%) scale(1)}.radio input[type=radio]:checked:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:hover:not(:disabled):after{background-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 25%,transparent 75%)}.radio input[type=radio]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%)}.radio input[type=radio]:disabled:checked:after{opacity:.5}.radio{min-height:1em}\n"] }]
13365
+ `, imports: [LabelComponent, TextOutputComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:inline-block}.checkbox{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;padding:2px}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;width:1em;height:1em;background-color:rgba(var(--m-checkbox-bg-rgb, 255, 255, 255),.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:.4em;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 70%,transparent 30%);cursor:pointer;outline:none;box-sizing:border-box;flex-shrink:0;margin:2px;box-shadow:0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 15%,transparent 85%),0 2px 12px -3px #0000001a;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease,transform .2s ease;will-change:background-color,box-shadow}.checkbox input[type=checkbox]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0) rotate(-45deg);width:.5em;height:.25em;border-left:.12em solid var(--m-checkbox-input-color, #4169e1);border-bottom:.12em solid var(--m-checkbox-input-color, #4169e1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .15s ease;will-change:transform;box-shadow:0 .1em .1666666667em #0003,0 .05em .0833333333em #0000001a}.checkbox{--m-label-margin: 0}.checkbox input[type=checkbox]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 80%,transparent 20%);transform:translateY(-1px);box-shadow:0 4px 15px -3px #00000026,0 0 0 1px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%),0 2px 12px -3px #0000001a;outline:none}.checkbox input[type=checkbox]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1);box-shadow:0 4px 15px -3px color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 40%,transparent 60%);transform:scale(1.05)}.checkbox input[type=checkbox]:checked:after{transform:translate(-50%,-60%) scale(1) rotate(-45deg);border-color:#fff}.checkbox input[type=checkbox]:checked:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%);border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 90%,black 10%)}.checkbox input[type=checkbox]:checked:active:not(:disabled):after{transform:translate(-50%,-60%) scale(.85) rotate(-45deg)}.checkbox input[type=checkbox]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 25%,transparent 75%)}.checkbox input[type=checkbox]:indeterminate{border-color:var(--m-checkbox-input-color, #4169e1);background-color:var(--m-checkbox-input-color, #4169e1)}.checkbox input[type=checkbox]:indeterminate:after{transform:translate(-50%,-50%) scale(1) rotate(0);width:.5em;height:0;border-left:none;border-bottom:.12em solid white}.checkbox input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-checkbox-input-color, #4169e1) 20%,transparent 80%)}.checkbox input[type=checkbox]:disabled:checked:after{opacity:.5}.checkbox{min-height:1em}.radio{display:inline-flex;align-items:center;gap:.375em;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative}.radio input[type=radio]{appearance:none;-webkit-appearance:none;-moz-appearance:none;margin:0;padding:0;position:relative;width:1em;height:1em;flex-shrink:0;box-sizing:border-box;background-color:transparent;border-radius:50%;border:max(1px,1em * .0625) solid color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 40%,transparent 60%);cursor:pointer;outline:none;transition:background-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .2s ease;will-change:background-color,box-shadow,border-color}.radio input[type=radio]:after{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:.5em;height:.5em;background-color:var(--m-input-wrapper-color, #4169e1);border-radius:50%;transition:transform .25s cubic-bezier(.4,0,.2,1),background-color .2s ease;will-change:transform}.radio{--m-label-margin: 0}.radio input[type=radio]:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 60%,transparent 40%)}.radio input[type=radio]:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%);outline:none}.radio input[type=radio]:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked{border-color:var(--m-input-wrapper-color, #4169e1)}.radio input[type=radio]:checked:after{transform:translate(-50%,-50%) scale(1)}.radio input[type=radio]:checked:hover:not(:disabled){border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:hover:not(:disabled):after{background-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 90%,black 10%)}.radio input[type=radio]:checked:active:not(:disabled):after{transform:translate(-50%,-50%) scale(.85)}.radio input[type=radio]:checked:focus{box-shadow:0 0 0 .2em color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 25%,transparent 75%)}.radio input[type=radio]:disabled{opacity:.5;cursor:not-allowed;border-color:color-mix(in srgb,var(--m-input-wrapper-color, #4169e1) 20%,transparent 80%)}.radio input[type=radio]:disabled:checked:after{opacity:.5}.radio{min-height:1em}\n"] }]
13231
13366
  }], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }, { type: i0.Output, args: ["checkedChange"] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
13232
13367
 
13233
13368
  var checkbox = /*#__PURE__*/Object.freeze({
@@ -13693,10 +13828,16 @@ class DropdownInputComponent extends BaseInputComponent {
13693
13828
  <m-button [disabled]="disabled()" [config]="chevron()" />
13694
13829
  </div>
13695
13830
  @if (showErrors()) {
13696
- <m-input-errors [errors]="errors()" />
13831
+ @for (error of errors(); track $index) {
13832
+ <m-text-output
13833
+ variant="footer"
13834
+ color="error"
13835
+ [label]="error.message"
13836
+ />
13837
+ }
13697
13838
  }
13698
13839
  }
13699
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: TextInputComponent, selector: "m-text-input", inputs: ["value", "config", "required", "disabled", "invalid", "touched", "focused", "errors", "hideErrors"], outputs: ["valueChange", "touchedChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13840
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: TextInputComponent, selector: "m-text-input", inputs: ["value", "config", "required", "disabled", "invalid", "touched", "focused", "errors", "hideErrors"], outputs: ["valueChange", "touchedChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13700
13841
  }
13701
13842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: DropdownInputComponent, decorators: [{
13702
13843
  type: Component,
@@ -13735,12 +13876,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
13735
13876
  <m-button [disabled]="disabled()" [config]="chevron()" />
13736
13877
  </div>
13737
13878
  @if (showErrors()) {
13738
- <m-input-errors [errors]="errors()" />
13879
+ @for (error of errors(); track $index) {
13880
+ <m-text-output
13881
+ variant="footer"
13882
+ color="error"
13883
+ [label]="error.message"
13884
+ />
13885
+ }
13739
13886
  }
13740
13887
  }
13741
13888
  `, imports: [
13742
13889
  LabelComponent,
13743
- ErrorsComponent,
13890
+ TextOutputComponent,
13744
13891
  TextInputComponent,
13745
13892
  ButtonComponent,
13746
13893
  SelectorDirective,
@@ -14643,10 +14790,16 @@ class ColorPickerInputComponent extends BaseTextInputComponent {
14643
14790
  <m-button [disabled]="disabled()" [config]="pickerIcon()" />
14644
14791
  </div>
14645
14792
  @if (showErrors()) {
14646
- <m-input-errors [errors]="errors()" />
14793
+ @for (error of errors(); track $index) {
14794
+ <m-text-output
14795
+ variant="footer"
14796
+ color="error"
14797
+ [label]="error.message"
14798
+ />
14799
+ }
14647
14800
  }
14648
14801
  }
14649
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;gap:.5rem;height:2.5rem;min-height:2.5rem;padding:0 .75rem}.input-wrapper .m-icon{--m-icon-size: 1rem !important}.input-wrapper .m-button{--m-button-size: 1rem !important}.color-picker-trigger{appearance:none;border:none;outline:none;flex:1;height:100%;background:transparent;color:var(--m-text);font-family:inherit;font-size:1rem;padding:0}.color-picker-trigger:focus{border-color:transparent;box-shadow:none}.color-picker-trigger.has-icon{padding-left:0}.color-picker-trigger.error{color:var(--m-error)}.color-picker-trigger--open{color:var(--m-focus)}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14802
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%}.input-wrapper{display:flex;align-items:center;background:var(--m-background);height:calc(var(--input-size, 1em) * 2);min-height:calc(var(--input-size, 1em) * 2);border-width:max(1px,var(--input-size, 1em) * .0625);border-radius:calc(var(--input-size, 1em) * .4);padding:calc(var(--input-size, 1em) * .5) calc(var(--input-size, 1em) * .5);gap:calc(var(--input-size, 1em) * .375);font-size:var(--input-size, 1em);border-width:var(--m-input-border-width, 2px);border-radius:var(--m-input-radius, 4px);height:calc(var(--input-size, 1em) * 2.25);min-height:calc(var(--input-size, 1em) * 2.25);padding-top:0;padding-bottom:0;border-color:var(--m-input-color, var(--m-mm));transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease,opacity .2s ease}.input-wrapper:hover:not(:disabled){background-color:color-mix(in srgb,var(--m-input-color, var(--m-mm)) 6%,transparent)}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){box-shadow:0 0 0 2px color-mix(in srgb,var(--m-input-color, var(--m-mm)) 20%,transparent)}.input-wrapper:disabled{opacity:.6;cursor:not-allowed}.input-wrapper{border-style:solid;backdrop-filter:var(--m-text-input-backdrop-filter, none);-webkit-backdrop-filter:var(--m-text-input-backdrop-filter, none);box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(>m-one-button,>m-button,>.input-indicator,>.input-suffix,>m-icon:last-child){padding-right:0}.input-wrapper:focus-visible:not(:disabled),.input-wrapper:focus-within:not(:disabled){border-color:var(--m-text-input-focus-border, var(--m-focus));box-shadow:var(--m-text-input-shadow, none)}.input-wrapper:has(.error){border-color:var(--m-error);box-shadow:none}.input-wrapper:has(.error):focus-within{border-color:var(--m-error);box-shadow:none}.input-wrapper input,.input-wrapper textarea{flex:1;border:none;outline:none;background:transparent;color:var(--m-text);font-family:inherit;font-size:inherit;padding:0}.input-wrapper input:focus,.input-wrapper textarea:focus{border-color:transparent;box-shadow:none}.input-wrapper{width:100%;gap:.5rem;height:2.5rem;min-height:2.5rem;padding:0 .75rem}.input-wrapper .m-icon{--m-icon-size: 1rem !important}.input-wrapper .m-button{--m-button-size: 1rem !important}.color-picker-trigger{appearance:none;border:none;outline:none;flex:1;height:100%;background:transparent;color:var(--m-text);font-family:inherit;font-size:1rem;padding:0}.color-picker-trigger:focus{border-color:transparent;box-shadow:none}.color-picker-trigger.has-icon{padding-left:0}.color-picker-trigger.error{color:var(--m-error)}.color-picker-trigger--open{color:var(--m-focus)}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "directive", type: SelectorDirective, selector: "[mSelector]", inputs: ["mSelector", "disabled"], outputs: ["opened", "closed"], exportAs: ["mSelector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14650
14803
  }
14651
14804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ColorPickerInputComponent, decorators: [{
14652
14805
  type: Component,
@@ -14694,12 +14847,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
14694
14847
  <m-button [disabled]="disabled()" [config]="pickerIcon()" />
14695
14848
  </div>
14696
14849
  @if (showErrors()) {
14697
- <m-input-errors [errors]="errors()" />
14850
+ @for (error of errors(); track $index) {
14851
+ <m-text-output
14852
+ variant="footer"
14853
+ color="error"
14854
+ [label]="error.message"
14855
+ />
14856
+ }
14698
14857
  }
14699
14858
  }
14700
14859
  `, imports: [
14701
14860
  LabelComponent,
14702
- ErrorsComponent,
14861
+ TextOutputComponent,
14703
14862
  IconComponent,
14704
14863
  ButtonComponent,
14705
14864
  SelectorDirective,
@@ -14935,7 +15094,7 @@ class WrapperInputComponent extends ConfigComponent {
14935
15094
  break;
14936
15095
  }
14937
15096
  case InputType.TOGGLE: {
14938
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-Ds299_0s.mjs');
15097
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CovjN1j6.mjs');
14939
15098
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
14940
15099
  break;
14941
15100
  }
@@ -14947,12 +15106,12 @@ class WrapperInputComponent extends ConfigComponent {
14947
15106
  break;
14948
15107
  }
14949
15108
  case InputType.PASSWORD: {
14950
- const { PasswordInputComponent } = await import('./magmonium-one-password-BsaeoGHN.mjs');
15109
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Pk0hhC0A.mjs');
14951
15110
  this.createDynamicComponent(seq, PasswordInputComponent);
14952
15111
  break;
14953
15112
  }
14954
15113
  case InputType.OTP: {
14955
- const { OtpInputComponent } = await import('./magmonium-one-otp-DjC2iX42.mjs');
15114
+ const { OtpInputComponent } = await import('./magmonium-one-otp-_zwgEGu3.mjs');
14956
15115
  this.createDynamicComponent(seq, OtpInputComponent);
14957
15116
  break;
14958
15117
  }
@@ -15536,10 +15695,16 @@ class RadioGroupComponent extends BaseTextInputComponent {
15536
15695
  }
15537
15696
  </div>
15538
15697
  @if (showErrors()) {
15539
- <m-input-errors [errors]="errors()" />
15698
+ @for (error of errors(); track $index) {
15699
+ <m-text-output
15700
+ variant="footer"
15701
+ color="error"
15702
+ [label]="error.message"
15703
+ />
15704
+ }
15540
15705
  }
15541
15706
  }
15542
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.radio-group{display:flex;gap:1em}.radio-group.radio-group--vertical{flex-direction:column}\n"], dependencies: [{ kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15707
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.radio-group{display:flex;gap:1em}.radio-group.radio-group--vertical{flex-direction:column}\n"], dependencies: [{ kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15543
15708
  }
15544
15709
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RadioGroupComponent, decorators: [{
15545
15710
  type: Component,
@@ -15567,10 +15732,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
15567
15732
  }
15568
15733
  </div>
15569
15734
  @if (showErrors()) {
15570
- <m-input-errors [errors]="errors()" />
15735
+ @for (error of errors(); track $index) {
15736
+ <m-text-output
15737
+ variant="footer"
15738
+ color="error"
15739
+ [label]="error.message"
15740
+ />
15741
+ }
15571
15742
  }
15572
15743
  }
15573
- `, imports: [ErrorsComponent, NgComponentOutlet, LabelComponent, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.radio-group{display:flex;gap:1em}.radio-group.radio-group--vertical{flex-direction:column}\n"] }]
15744
+ `, imports: [TextOutputComponent, NgComponentOutlet, LabelComponent, TranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.radio-group{display:flex;gap:1em}.radio-group.radio-group--vertical{flex-direction:column}\n"] }]
15574
15745
  }], ctorParameters: () => [], propDecorators: { one: [{ type: i0.Input, args: [{ isSignal: true, alias: "one", required: false }] }] } });
15575
15746
 
15576
15747
  var radioGroup = /*#__PURE__*/Object.freeze({
@@ -16033,7 +16204,7 @@ class SelectableCardInputComponent extends BaseInputComponent {
16033
16204
  }
16034
16205
  </div>
16035
16206
  }
16036
- `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.selectable-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem}.selectable-card--vertical{flex-direction:column}.selectable-card__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border:2px solid var(--border, var(--m-border));border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--background, var(--m-background));transition:border-color .2s ease,box-shadow .2s ease,background .15s ease;box-sizing:border-box}.selectable-card__item:hover:not(.selectable-card__item--disabled){border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px color-mix(in srgb,var(--mm-color, var(--m-mm)) 20%,transparent 80%)}.selectable-card__item--selected{border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px var(--mm-color, var(--m-mm));background:color-mix(in srgb,var(--mm-color, var(--m-mm)) 5%,var(--background, var(--m-background)) 95%)}.selectable-card__item--selected:hover:not(.selectable-card__item--disabled){box-shadow:0 0 0 2px var(--mm-color, var(--m-mm))}.selectable-card__item:focus-visible{outline:2px solid var(--mm-color, var(--m-mm));outline-offset:2px}.selectable-card__item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.selectable-card__content{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem}.selectable-card__icon{flex-shrink:0;display:flex}.selectable-card__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectable-card__indicator{flex-shrink:0;display:flex;align-items:center}.selectable-card__indicator input[type=checkbox],.selectable-card__indicator input[type=radio]{appearance:none;-webkit-appearance:none;width:1.125rem;height:1.125rem;border:2px solid color-mix(in srgb,var(--mm-color, var(--m-mm)) 50%,transparent 50%);border-radius:.25rem;background:transparent;cursor:pointer;box-sizing:border-box;transition:background .2s ease,border-color .2s ease;position:relative;flex-shrink:0}.selectable-card__indicator input[type=checkbox][type=radio],.selectable-card__indicator input[type=radio][type=radio]{border-radius:50%}.selectable-card__indicator input[type=checkbox]:checked,.selectable-card__indicator input[type=radio]:checked{background:var(--mm-color, var(--m-mm));border-color:var(--mm-color, var(--m-mm))}.selectable-card__indicator input[type=checkbox]:checked:after,.selectable-card__indicator input[type=radio]:checked:after{content:\"\";position:absolute;top:50%;left:50%}.selectable-card__indicator input[type=checkbox][type=checkbox]:checked:after,.selectable-card__indicator input[type=radio][type=checkbox]:checked:after{width:.35rem;height:.2rem;border-left:2px solid white;border-bottom:2px solid white;transform:translate(-50%,-65%) rotate(-45deg)}.selectable-card__indicator input[type=checkbox][type=radio]:checked:after,.selectable-card__indicator input[type=radio][type=radio]:checked:after{width:.4rem;height:.4rem;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}.selectable-card__indicator input[type=checkbox]:disabled,.selectable-card__indicator input[type=radio]:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16207
+ `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;max-width:100%;min-width:0}.selectable-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.selectable-card--vertical{flex-direction:column;flex-wrap:nowrap}.selectable-card--vertical .selectable-card__item{width:100%;max-width:100%;min-width:0}.selectable-card__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border:2px solid var(--border, var(--m-border));border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--background, var(--m-background));transition:border-color .2s ease,box-shadow .2s ease,background .15s ease;box-sizing:border-box;max-width:100%;min-width:0}.selectable-card__item:hover:not(.selectable-card__item--disabled){border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px color-mix(in srgb,var(--mm-color, var(--m-mm)) 20%,transparent 80%)}.selectable-card__item--selected{border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px var(--mm-color, var(--m-mm));background:color-mix(in srgb,var(--mm-color, var(--m-mm)) 5%,var(--background, var(--m-background)) 95%)}.selectable-card__item--selected:hover:not(.selectable-card__item--disabled){box-shadow:0 0 0 2px var(--mm-color, var(--m-mm))}.selectable-card__item:focus-visible{outline:2px solid var(--mm-color, var(--m-mm));outline-offset:2px}.selectable-card__item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.selectable-card__content{flex:1;min-width:0;max-width:100%;display:flex;align-items:center;gap:.5rem}.selectable-card__content>*{flex:1;min-width:0;max-width:100%}.selectable-card__icon{flex-shrink:0;display:flex}.selectable-card__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectable-card__indicator{flex-shrink:0;display:flex;align-items:center}.selectable-card__indicator input[type=checkbox],.selectable-card__indicator input[type=radio]{appearance:none;-webkit-appearance:none;width:1.125rem;height:1.125rem;border:2px solid color-mix(in srgb,var(--mm-color, var(--m-mm)) 50%,transparent 50%);border-radius:.25rem;background:transparent;cursor:pointer;box-sizing:border-box;transition:background .2s ease,border-color .2s ease;position:relative;flex-shrink:0}.selectable-card__indicator input[type=checkbox][type=radio],.selectable-card__indicator input[type=radio][type=radio]{border-radius:50%}.selectable-card__indicator input[type=checkbox]:checked,.selectable-card__indicator input[type=radio]:checked{background:var(--mm-color, var(--m-mm));border-color:var(--mm-color, var(--m-mm))}.selectable-card__indicator input[type=checkbox]:checked:after,.selectable-card__indicator input[type=radio]:checked:after{content:\"\";position:absolute;top:50%;left:50%}.selectable-card__indicator input[type=checkbox][type=checkbox]:checked:after,.selectable-card__indicator input[type=radio][type=checkbox]:checked:after{width:.35rem;height:.2rem;border-left:2px solid white;border-bottom:2px solid white;transform:translate(-50%,-65%) rotate(-45deg)}.selectable-card__indicator input[type=checkbox][type=radio]:checked:after,.selectable-card__indicator input[type=radio][type=radio]:checked:after{width:.4rem;height:.4rem;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}.selectable-card__indicator input[type=checkbox]:disabled,.selectable-card__indicator input[type=radio]:disabled{opacity:.5;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16037
16208
  }
16038
16209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SelectableCardInputComponent, decorators: [{
16039
16210
  type: Component,
@@ -16091,7 +16262,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
16091
16262
  }
16092
16263
  </div>
16093
16264
  }
16094
- `, imports: [NgComponentOutlet, TranslatePipe, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.selectable-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem}.selectable-card--vertical{flex-direction:column}.selectable-card__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border:2px solid var(--border, var(--m-border));border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--background, var(--m-background));transition:border-color .2s ease,box-shadow .2s ease,background .15s ease;box-sizing:border-box}.selectable-card__item:hover:not(.selectable-card__item--disabled){border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px color-mix(in srgb,var(--mm-color, var(--m-mm)) 20%,transparent 80%)}.selectable-card__item--selected{border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px var(--mm-color, var(--m-mm));background:color-mix(in srgb,var(--mm-color, var(--m-mm)) 5%,var(--background, var(--m-background)) 95%)}.selectable-card__item--selected:hover:not(.selectable-card__item--disabled){box-shadow:0 0 0 2px var(--mm-color, var(--m-mm))}.selectable-card__item:focus-visible{outline:2px solid var(--mm-color, var(--m-mm));outline-offset:2px}.selectable-card__item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.selectable-card__content{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem}.selectable-card__icon{flex-shrink:0;display:flex}.selectable-card__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectable-card__indicator{flex-shrink:0;display:flex;align-items:center}.selectable-card__indicator input[type=checkbox],.selectable-card__indicator input[type=radio]{appearance:none;-webkit-appearance:none;width:1.125rem;height:1.125rem;border:2px solid color-mix(in srgb,var(--mm-color, var(--m-mm)) 50%,transparent 50%);border-radius:.25rem;background:transparent;cursor:pointer;box-sizing:border-box;transition:background .2s ease,border-color .2s ease;position:relative;flex-shrink:0}.selectable-card__indicator input[type=checkbox][type=radio],.selectable-card__indicator input[type=radio][type=radio]{border-radius:50%}.selectable-card__indicator input[type=checkbox]:checked,.selectable-card__indicator input[type=radio]:checked{background:var(--mm-color, var(--m-mm));border-color:var(--mm-color, var(--m-mm))}.selectable-card__indicator input[type=checkbox]:checked:after,.selectable-card__indicator input[type=radio]:checked:after{content:\"\";position:absolute;top:50%;left:50%}.selectable-card__indicator input[type=checkbox][type=checkbox]:checked:after,.selectable-card__indicator input[type=radio][type=checkbox]:checked:after{width:.35rem;height:.2rem;border-left:2px solid white;border-bottom:2px solid white;transform:translate(-50%,-65%) rotate(-45deg)}.selectable-card__indicator input[type=checkbox][type=radio]:checked:after,.selectable-card__indicator input[type=radio][type=radio]:checked:after{width:.4rem;height:.4rem;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}.selectable-card__indicator input[type=checkbox]:disabled,.selectable-card__indicator input[type=radio]:disabled{opacity:.5;cursor:not-allowed}\n"] }]
16265
+ `, imports: [NgComponentOutlet, TranslatePipe, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;max-width:100%;min-width:0}.selectable-card{display:flex;flex-direction:row;flex-wrap:wrap;gap:.75rem;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.selectable-card--vertical{flex-direction:column;flex-wrap:nowrap}.selectable-card--vertical .selectable-card__item{width:100%;max-width:100%;min-width:0}.selectable-card__item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border:2px solid var(--border, var(--m-border));border-radius:4px;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--background, var(--m-background));transition:border-color .2s ease,box-shadow .2s ease,background .15s ease;box-sizing:border-box;max-width:100%;min-width:0}.selectable-card__item:hover:not(.selectable-card__item--disabled){border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px color-mix(in srgb,var(--mm-color, var(--m-mm)) 20%,transparent 80%)}.selectable-card__item--selected{border-color:var(--mm-color, var(--m-mm));box-shadow:0 0 0 1px var(--mm-color, var(--m-mm));background:color-mix(in srgb,var(--mm-color, var(--m-mm)) 5%,var(--background, var(--m-background)) 95%)}.selectable-card__item--selected:hover:not(.selectable-card__item--disabled){box-shadow:0 0 0 2px var(--mm-color, var(--m-mm))}.selectable-card__item:focus-visible{outline:2px solid var(--mm-color, var(--m-mm));outline-offset:2px}.selectable-card__item--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.selectable-card__content{flex:1;min-width:0;max-width:100%;display:flex;align-items:center;gap:.5rem}.selectable-card__content>*{flex:1;min-width:0;max-width:100%}.selectable-card__icon{flex-shrink:0;display:flex}.selectable-card__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selectable-card__indicator{flex-shrink:0;display:flex;align-items:center}.selectable-card__indicator input[type=checkbox],.selectable-card__indicator input[type=radio]{appearance:none;-webkit-appearance:none;width:1.125rem;height:1.125rem;border:2px solid color-mix(in srgb,var(--mm-color, var(--m-mm)) 50%,transparent 50%);border-radius:.25rem;background:transparent;cursor:pointer;box-sizing:border-box;transition:background .2s ease,border-color .2s ease;position:relative;flex-shrink:0}.selectable-card__indicator input[type=checkbox][type=radio],.selectable-card__indicator input[type=radio][type=radio]{border-radius:50%}.selectable-card__indicator input[type=checkbox]:checked,.selectable-card__indicator input[type=radio]:checked{background:var(--mm-color, var(--m-mm));border-color:var(--mm-color, var(--m-mm))}.selectable-card__indicator input[type=checkbox]:checked:after,.selectable-card__indicator input[type=radio]:checked:after{content:\"\";position:absolute;top:50%;left:50%}.selectable-card__indicator input[type=checkbox][type=checkbox]:checked:after,.selectable-card__indicator input[type=radio][type=checkbox]:checked:after{width:.35rem;height:.2rem;border-left:2px solid white;border-bottom:2px solid white;transform:translate(-50%,-65%) rotate(-45deg)}.selectable-card__indicator input[type=checkbox][type=radio]:checked:after,.selectable-card__indicator input[type=radio][type=radio]:checked:after{width:.4rem;height:.4rem;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}.selectable-card__indicator input[type=checkbox]:disabled,.selectable-card__indicator input[type=radio]:disabled{opacity:.5;cursor:not-allowed}\n"] }]
16095
16266
  }], propDecorators: { element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }] } });
16096
16267
 
16097
16268
  var selectableCard = /*#__PURE__*/Object.freeze({
@@ -16149,11 +16320,11 @@ class RatingInputComponent extends BaseInputComponent {
16149
16320
  this.hoverValue.set(null);
16150
16321
  };
16151
16322
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RatingInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
16152
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: RatingInputComponent, isStandalone: true, selector: "m-rating-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange" }, usesInheritance: true, ngImport: i0, template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div class=\"rating\" [class.rating--error]=\"showErrors()\">\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: star.toString() }\"\n [attr.aria-pressed]=\"(value() ?? 0) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n <m-input-errors [errors]=\"errors()\" />\n }\n}\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:#ffb800;stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16323
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: RatingInputComponent, isStandalone: true, selector: "m-rating-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, focused: { classPropertyName: "focused", publicName: "focused", isSignal: true, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange" }, usesInheritance: true, ngImport: i0, template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div class=\"rating\" [class.rating--error]=\"showErrors()\">\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: star.toString() }\"\n [attr.aria-pressed]=\"(value() ?? 0) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:#ffb800;stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"], dependencies: [{ kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
16153
16324
  }
16154
16325
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: RatingInputComponent, decorators: [{
16155
16326
  type: Component,
16156
- args: [{ selector: 'm-rating-input', imports: [LabelComponent, ErrorsComponent, TranslatePipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div class=\"rating\" [class.rating--error]=\"showErrors()\">\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: star.toString() }\"\n [attr.aria-pressed]=\"(value() ?? 0) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n <m-input-errors [errors]=\"errors()\" />\n }\n}\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:#ffb800;stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"] }]
16327
+ args: [{ selector: 'm-rating-input', imports: [LabelComponent, TextOutputComponent, TranslatePipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div class=\"rating\" [class.rating--error]=\"showErrors()\">\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: star.toString() }\"\n [attr.aria-pressed]=\"(value() ?? 0) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:#ffb800;stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"] }]
16157
16328
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], focused: [{ type: i0.Input, args: [{ isSignal: true, alias: "focused", required: false }] }], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }] } });
16158
16329
 
16159
16330
  var ratingInput = /*#__PURE__*/Object.freeze({
@@ -16179,12 +16350,16 @@ class ComponentInputComponent extends BaseTextInputComponent {
16179
16350
  buttonConfig = computed(() => {
16180
16351
  const value = this.value();
16181
16352
  const config = this.config();
16353
+ // Multi-pick (PatternAsset names) lands as a list — join for the trigger.
16354
+ const label = Array.isArray(value)
16355
+ ? value.filter(Boolean).join(', ')
16356
+ : value;
16182
16357
  return {
16183
- label: value ? value : config?.placeholder,
16358
+ label: label || config?.placeholder,
16184
16359
  // The held value is shown as it is stored — an icon name, a
16185
16360
  // TranslationAsset key with its MessageVariable values riding on it.
16186
16361
  // The placeholder is the opposite: a key of ours, to be translated.
16187
- noTranslate: !!value,
16362
+ noTranslate: !!label,
16188
16363
  variant: 'secondary',
16189
16364
  one: true,
16190
16365
  icon: config?.iconFromValue && typeof value === 'string' && value
@@ -16205,6 +16380,8 @@ class ComponentInputComponent extends BaseTextInputComponent {
16205
16380
  if (!component) {
16206
16381
  return;
16207
16382
  }
16383
+ // string | string[] — icon/translation pickers close with a name; the
16384
+ // pattern picker changes with a multi-pick list (and may clear to []).
16208
16385
  const modalRef = new ModalRef();
16209
16386
  const trigger = {
16210
16387
  component,
@@ -16218,10 +16395,16 @@ class ComponentInputComponent extends BaseTextInputComponent {
16218
16395
  width: config?.panelWidth ?? '360px',
16219
16396
  })
16220
16397
  : this.modalStore.open({ ...trigger, config: { fullscreen: true } });
16398
+ const applyValue = (value) => {
16399
+ // Empty multi-pick is a real clear; only skip a missing dismiss.
16400
+ if (value === undefined)
16401
+ return;
16402
+ this.setValue(value);
16403
+ };
16404
+ // Live apply while the panel stays open (multi-pick).
16405
+ modalRef.onChange(applyValue);
16221
16406
  modalRef.onClose((value) => {
16222
- if (value) {
16223
- this.setValue(value);
16224
- }
16407
+ applyValue(value);
16225
16408
  if (isPanel) {
16226
16409
  this.modalStore.closePanel(modalId);
16227
16410
  }
@@ -16242,10 +16425,16 @@ class ComponentInputComponent extends BaseTextInputComponent {
16242
16425
  }
16243
16426
  <m-button (click)="openModal()" [config]="buttonConfig()" />
16244
16427
  @if (showErrors()) {
16245
- <m-input-errors [errors]="errors()" />
16428
+ @for (error of errors(); track $index) {
16429
+ <m-text-output
16430
+ variant="footer"
16431
+ color="error"
16432
+ [label]="error.message"
16433
+ />
16434
+ }
16246
16435
  }
16247
16436
  }
16248
- `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16437
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16249
16438
  }
16250
16439
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ComponentInputComponent, decorators: [{
16251
16440
  type: Component,
@@ -16260,10 +16449,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
16260
16449
  }
16261
16450
  <m-button (click)="openModal()" [config]="buttonConfig()" />
16262
16451
  @if (showErrors()) {
16263
- <m-input-errors [errors]="errors()" />
16452
+ @for (error of errors(); track $index) {
16453
+ <m-text-output
16454
+ variant="footer"
16455
+ color="error"
16456
+ [label]="error.message"
16457
+ />
16458
+ }
16264
16459
  }
16265
16460
  }
16266
- `, imports: [ButtonComponent, LabelComponent, ErrorsComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
16461
+ `, imports: [ButtonComponent, LabelComponent, TextOutputComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
16267
16462
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], component: [{ type: i0.Input, args: [{ isSignal: true, alias: "component", required: false }] }] } });
16268
16463
 
16269
16464
  var componentInput = /*#__PURE__*/Object.freeze({
@@ -16403,10 +16598,16 @@ class FileUploadInputComponent extends BaseTextInputComponent {
16403
16598
  }
16404
16599
  <m-button (click)="openPicker()" [config]="buttonConfig()" />
16405
16600
  @if (showErrors()) {
16406
- <m-input-errors [errors]="errors()" />
16601
+ @for (error of errors(); track $index) {
16602
+ <m-text-output
16603
+ variant="footer"
16604
+ color="error"
16605
+ [label]="error.message"
16606
+ />
16607
+ }
16407
16608
  }
16408
16609
  }
16409
- `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: ErrorsComponent, selector: "m-input-errors", inputs: ["errors"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16610
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "m-button,m-one-button", inputs: ["config", "color", "labelClass", "fullWidth", "nav", "navParams", "href", "disabled", "variant", "name", "baseUrl", "one", "remote", "label", "noTranslate", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "type"], outputs: ["configChange", "clicked"] }, { kind: "component", type: LabelComponent, selector: "m-label", inputs: ["for", "placeholder", "required", "disabled", "color"] }, { kind: "component", type: TextOutputComponent, selector: "m-text-output", inputs: ["config", "align", "variant", "color", "label", "noTranslate"], outputs: ["configChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16410
16611
  }
16411
16612
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: FileUploadInputComponent, decorators: [{
16412
16613
  type: Component,
@@ -16421,10 +16622,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
16421
16622
  }
16422
16623
  <m-button (click)="openPicker()" [config]="buttonConfig()" />
16423
16624
  @if (showErrors()) {
16424
- <m-input-errors [errors]="errors()" />
16625
+ @for (error of errors(); track $index) {
16626
+ <m-text-output
16627
+ variant="footer"
16628
+ color="error"
16629
+ [label]="error.message"
16630
+ />
16631
+ }
16425
16632
  }
16426
16633
  }
16427
- `, imports: [ButtonComponent, LabelComponent, ErrorsComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
16634
+ `, imports: [ButtonComponent, LabelComponent, TextOutputComponent], changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block}\n"] }]
16428
16635
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
16429
16636
 
16430
16637
  var fileUploadInput = /*#__PURE__*/Object.freeze({
@@ -16985,6 +17192,94 @@ const patternValidation = (schemaPath, regex, message = 'not-a-valid-pattern') =
16985
17192
  return null;
16986
17193
  return regex.test(value) ? null : { kind: 'pattern', message };
16987
17194
  });
17195
+ // Compiling a RegExp is not free and a Field re-validates on every keystroke,
17196
+ // so the same expression is built once. Safe to share an instance only because
17197
+ // `g` is refused at author time — a global RegExp carries `lastIndex` between
17198
+ // `.test()` calls and would alternate true/false on one value.
17199
+ const regexCache = new Map();
17200
+ const toRegExp = (rule) => {
17201
+ const key = `${rule.flags ?? ''}${rule.expression}`;
17202
+ const cached = regexCache.get(key);
17203
+ if (cached)
17204
+ return cached;
17205
+ try {
17206
+ const regex = new RegExp(rule.expression, rule.flags);
17207
+ regexCache.set(key, regex);
17208
+ return regex;
17209
+ }
17210
+ catch {
17211
+ // An expression the editor already refused cannot normally reach here. If
17212
+ // one does — hand-authored YAML, a bad merge — the Field must not lock the
17213
+ // form over a rule nobody can satisfy, so the rule is dropped instead.
17214
+ return null;
17215
+ }
17216
+ };
17217
+ /**
17218
+ * Any one of `rules` passing makes the value well-shaped (libs/one ADR 0017).
17219
+ * One rule speaks for itself; several cannot, so `message` names what the Field
17220
+ * as a whole wanted and is what shows.
17221
+ */
17222
+ const patternsValidation = (schemaPath, rules, message) => validate(schemaPath, (ctx) => {
17223
+ const value = ctx.value();
17224
+ // An empty value is `required`'s business, not a shape's. Without this a
17225
+ // Field with a pattern is required by accident.
17226
+ if (!value)
17227
+ return null;
17228
+ const usable = rules
17229
+ .map((rule) => ({ rule, regex: toRegExp(rule) }))
17230
+ .filter((entry) => Boolean(entry.regex));
17231
+ if (!usable.length)
17232
+ return null;
17233
+ if (usable.some((entry) => entry.regex.test(value)))
17234
+ return null;
17235
+ return {
17236
+ kind: 'pattern',
17237
+ message: usable.length > 1
17238
+ ? message ?? 'not-a-valid-pattern'
17239
+ : usable[0].rule.message,
17240
+ };
17241
+ });
17242
+
17243
+ /**
17244
+ * Reads a resolved Field config into the pair the schema needs, or `undefined`
17245
+ * when the Field declares no shape. A config arriving from YAML has been
17246
+ * through `JSON.parse` and is trusted no further than its shape here — a hand
17247
+ * written asset can put anything under `patterns`.
17248
+ */
17249
+ function readFieldPatterns(config) {
17250
+ const raw = config?.patterns;
17251
+ if (!Array.isArray(raw))
17252
+ return undefined;
17253
+ const rules = raw.filter((rule) => Boolean(rule) &&
17254
+ typeof rule.expression === 'string' &&
17255
+ Boolean(rule.expression));
17256
+ if (!rules.length)
17257
+ return undefined;
17258
+ const message = config?.patternMessage;
17259
+ return message ? { rules, message } : { rules };
17260
+ }
17261
+ /**
17262
+ * Identity by content, not by reference. A Field re-registers from an effect on
17263
+ * every config change, and `config()` is a fresh object each time — comparing
17264
+ * references would rebuild the whole FieldTree on every keystroke.
17265
+ */
17266
+ function samePatterns(a, b) {
17267
+ if (a === b)
17268
+ return true;
17269
+ if (!a || !b)
17270
+ return false;
17271
+ if (a.message !== b.message)
17272
+ return false;
17273
+ if (a.rules.length !== b.rules.length)
17274
+ return false;
17275
+ return a.rules.every((rule, index) => {
17276
+ const other = b.rules[index];
17277
+ return (rule.name === other.name &&
17278
+ rule.expression === other.expression &&
17279
+ rule.flags === other.flags &&
17280
+ rule.message === other.message);
17281
+ });
17282
+ }
16988
17283
 
16989
17284
  class SectionFormComponent extends ConfigComponent {
16990
17285
  // Same folder FormGroup resolves from: a form's asset is a form's asset
@@ -17028,9 +17323,13 @@ class SectionFormComponent extends ConfigComponent {
17028
17323
  // is announced once and its required flag can flip whenever the Field's
17029
17324
  // config or asset changes.
17030
17325
  requiredFields = signal([], ...(ngDevMode ? [{ debugName: "requiredFields" }] : /* istanbul ignore next */ []));
17326
+ // Keys whose Field declares accepted shapes, kept the same way and for the
17327
+ // same reason as `requiredFields` — the second declarative rule a Field asset
17328
+ // carries into the schema (libs/one ADR 0017).
17329
+ patternFields = signal({}, ...(ngDevMode ? [{ debugName: "patternFields" }] : /* istanbul ignore next */ []));
17031
17330
  // Untracked: items call this from their own effect, so reading these signals
17032
17331
  // plainly would make every item re-run whenever any sibling registers.
17033
- registerField = (name, required = false) => {
17332
+ registerField = (name, required = false, patterns) => {
17034
17333
  if (!name)
17035
17334
  return;
17036
17335
  untracked(() => {
@@ -17038,12 +17337,16 @@ class SectionFormComponent extends ConfigComponent {
17038
17337
  this.registeredFields.update((fields) => [...fields, name]);
17039
17338
  }
17040
17339
  this.setRequired(name, required);
17340
+ this.setPatterns(name, patterns);
17041
17341
  });
17042
17342
  };
17043
17343
  releaseField = (name) => {
17044
17344
  if (!name)
17045
17345
  return;
17046
- untracked(() => this.setRequired(name, false));
17346
+ untracked(() => {
17347
+ this.setRequired(name, false);
17348
+ this.setPatterns(name, undefined);
17349
+ });
17047
17350
  };
17048
17351
  setRequired = (name, required) => {
17049
17352
  const has = this.requiredFields().includes(name);
@@ -17051,16 +17354,40 @@ class SectionFormComponent extends ConfigComponent {
17051
17354
  return;
17052
17355
  this.requiredFields.update((fields) => required ? [...fields, name] : fields.filter((field) => field !== name));
17053
17356
  };
17054
- // The caller's own schema plus a `required` rule per Field that declares one.
17357
+ setPatterns = (name, patterns) => {
17358
+ const current = this.patternFields();
17359
+ const next = patterns?.rules.length ? patterns : undefined;
17360
+ if (samePatterns(current[name], next))
17361
+ return;
17362
+ this.patternFields.update((fields) => {
17363
+ const copy = { ...fields };
17364
+ if (next)
17365
+ copy[name] = next;
17366
+ else
17367
+ delete copy[name];
17368
+ return copy;
17369
+ });
17370
+ };
17371
+ // The caller's own schema plus the rules the Fields themselves declare.
17055
17372
  // Both, not either: a form given a `validation` schema still has to honour the
17056
- // attribute its markup was written with.
17373
+ // attributes its markup was written with.
17057
17374
  resolvedValidation = computed(() => {
17058
17375
  const own = this.validation();
17059
17376
  const requiredPaths = this.requiredFields();
17060
- if (!requiredPaths.length)
17377
+ const patternPaths = Object.entries(this.patternFields());
17378
+ if (!requiredPaths.length && !patternPaths.length)
17061
17379
  return own;
17062
17380
  return (path) => {
17063
- requiredValidation(path, requiredPaths);
17381
+ const tree = path;
17382
+ if (requiredPaths.length) {
17383
+ requiredValidation(tree, requiredPaths);
17384
+ }
17385
+ patternPaths.forEach(([key, { rules, message }]) => {
17386
+ const fieldPath = tree[key];
17387
+ if (!fieldPath)
17388
+ return;
17389
+ patternsValidation(fieldPath, rules, message);
17390
+ });
17064
17391
  if (own)
17065
17392
  apply(path, own);
17066
17393
  };
@@ -17135,17 +17462,14 @@ class SectionFormComponent extends ConfigComponent {
17135
17462
  event.stopPropagation();
17136
17463
  this.submitNow();
17137
17464
  };
17138
- resolvedSize = computed(() => this.size() ??
17139
- this.config()?.size ??
17140
- this.parentSize?.size() ??
17141
- DEFAULT_SIZE, ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
17465
+ resolvedSize = computed(() => coerceSize(this.size(), this.config()?.size, this.parentSize?.size()), ...(ngDevMode ? [{ debugName: "resolvedSize" }] : /* istanbul ignore next */ []));
17142
17466
  // Only write font-size when this form declares a Size. Otherwise leave the
17143
17467
  // host alone so the parent Section's font-size cascades to every input
17144
17468
  // (ADR 0008). Falling through to DEFAULT here used to pin inputs at `md`
17145
17469
  // and ignore Section size changes.
17146
17470
  sizeLength = computed(() => {
17147
17471
  const own = this.size() ?? this.config()?.size;
17148
- return own ? resolveSize(own) : null;
17472
+ return isSize(own) ? resolveSize(own) : null;
17149
17473
  }, ...(ngDevMode ? [{ debugName: "sizeLength" }] : /* istanbul ignore next */ []));
17150
17474
  resolvedAlign = computed(() => this.align() ?? this.config()?.align ?? 'left', ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
17151
17475
  resolvedVariant = computed(() => this.variant() ?? this.config()?.variant ?? undefined, ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
@@ -17424,6 +17748,10 @@ class SectionFormItemComponent extends ConfigComponent {
17424
17748
  const required = this.config()?.required;
17425
17749
  return required === true || `${required}` === 'true';
17426
17750
  }, ...(ngDevMode ? [{ debugName: "isRequired" }] : /* istanbul ignore next */ []));
17751
+ // Read off `config()` alone, unlike `required`, which also has a seat on the
17752
+ // tag. `patterns` is a list, and a list lives in the asset (ADR 0010) — the
17753
+ // rules were inlined there by FieldCompiler (libs/one ADR 0017).
17754
+ fieldPatterns = computed(() => readFieldPatterns(this.config()), ...(ngDevMode ? [{ debugName: "fieldPatterns" }] : /* istanbul ignore next */ []));
17427
17755
  isVisible = computed(() => {
17428
17756
  const acl = this.config()?.acl;
17429
17757
  if (!acl)
@@ -17469,7 +17797,9 @@ class SectionFormItemComponent extends ConfigComponent {
17469
17797
  // content-projected items cannot wire `(fieldKey)` like FormGroup. The
17470
17798
  // required flag rides along: `required` on the tag has to reach the
17471
17799
  // FieldTree, or the form is valid empty and every submit control unlocks.
17472
- this.sectionForm?.registerField(name, this.isRequired());
17800
+ // The accepted shapes ride along for the same reason — a rule the
17801
+ // FieldTree never hears about is a rule the form's validity ignores.
17802
+ this.sectionForm?.registerField(name, this.isRequired(), this.fieldPatterns());
17473
17803
  this.fieldKey.emit(name);
17474
17804
  }
17475
17805
  void this.field();
@@ -17556,7 +17886,7 @@ class SectionFormItemComponent extends ConfigComponent {
17556
17886
  break;
17557
17887
  }
17558
17888
  case InputType.TOGGLE: {
17559
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-Ds299_0s.mjs');
17889
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CovjN1j6.mjs');
17560
17890
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
17561
17891
  break;
17562
17892
  }
@@ -17568,12 +17898,12 @@ class SectionFormItemComponent extends ConfigComponent {
17568
17898
  break;
17569
17899
  }
17570
17900
  case InputType.PASSWORD: {
17571
- const { PasswordInputComponent } = await import('./magmonium-one-password-BsaeoGHN.mjs');
17901
+ const { PasswordInputComponent } = await import('./magmonium-one-password-Pk0hhC0A.mjs');
17572
17902
  this.createDynamicComponent(seq, PasswordInputComponent);
17573
17903
  break;
17574
17904
  }
17575
17905
  case InputType.OTP: {
17576
- const { OtpInputComponent } = await import('./magmonium-one-otp-DjC2iX42.mjs');
17906
+ const { OtpInputComponent } = await import('./magmonium-one-otp-_zwgEGu3.mjs');
17577
17907
  this.createDynamicComponent(seq, OtpInputComponent);
17578
17908
  break;
17579
17909
  }
@@ -23003,52 +23333,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
23003
23333
  }, template: "<div [class]=\"hostClass()\">\n <span class=\"m-key-value__key\"><ng-content select=\"[key]\" /></span>\n <span class=\"m-key-value__value\"><ng-content select=\"[value]\" /></span>\n</div>", styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:block;width:100%;--_kv-size: 1em;font-size:var(--_kv-size);line-height:1.4}.m-key-value{position:relative}.m-key-value__key{color:var(--m-text-tertiary);display:inline-block;min-width:0}.m-key-value__value{color:var(--m-text);display:inline-block;min-width:0}.m-key-value--bento{display:flex;flex-direction:column;gap:.35em;padding:.85em 1em}.m-key-value--bento .m-key-value__key{font-size:.75em;text-transform:uppercase;letter-spacing:.08em;font-weight:600;opacity:.85}.m-key-value--bento .m-key-value__value{font-size:1.65em;font-weight:700;line-height:1.15;letter-spacing:-.01em;background:linear-gradient(135deg,var(--m-text),color-mix(in srgb,var(--m-mm) 40%,var(--m-text)));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.m-key-value--pill{display:inline-flex;align-items:center;gap:.65em;width:auto;padding:.3em .85em;border-radius:999px;background:color-mix(in srgb,var(--m-background-lite) 60%,transparent);border:1px solid color-mix(in srgb,var(--m-border) 70%,transparent);transition:background .18s ease,border-color .18s ease}.m-key-value--pill:hover{background:color-mix(in srgb,var(--m-background-lite) 85%,transparent);border-color:color-mix(in srgb,var(--m-mm) 35%,var(--m-border))}.m-key-value--pill .m-key-value__key{font-weight:600;white-space:nowrap;letter-spacing:.01em}.m-key-value--pill .m-key-value__key:after{content:\"\";display:inline-block;width:1px;height:.95em;margin-left:.65em;background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--m-border) 90%,transparent),transparent);vertical-align:middle}.m-key-value--pill .m-key-value__value{white-space:nowrap;font-weight:600}.m-key-value--leader{display:flex;align-items:baseline;justify-content:space-between;gap:.75em;padding:.4em 0;transition:border-color .18s ease}.m-key-value--leader .m-key-value__key{white-space:nowrap;padding-right:.5em;font-weight:600;letter-spacing:.01em}.m-key-value--leader .m-key-value__value{white-space:nowrap;padding-left:.5em;font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-weight:600}\n"] }]
23004
23334
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }] } });
23005
23335
 
23006
- class TextOutputComponent extends ConfigComponent {
23007
- subFolder = LAYOUT_ASSET_FOLDER.text_output;
23008
- config = model(...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
23009
- translateService = inject(TranslateService);
23010
- align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
23011
- // `label` is the text itself, so a one-off TextOutput needs no asset behind
23012
- // it (ADR 0010). MiniMark is a single string whatever it renders to, which
23013
- // is what lets it ride on the tag at all.
23014
- label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
23015
- noTranslate = input(undefined, ...(ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []));
23016
- resolvedAlign = computed(() => this.align() ?? this.config()?.align ?? 'left', ...(ngDevMode ? [{ debugName: "resolvedAlign" }] : /* istanbul ignore next */ []));
23017
- resolveComponentOverrides() {
23018
- const overrides = {};
23019
- const align = this.align();
23020
- if (align !== undefined)
23021
- overrides.align = align;
23022
- const label = this.label();
23023
- if (label !== undefined)
23024
- overrides.label = label;
23025
- const noTranslate = toAttrBool(this.noTranslate());
23026
- if (noTranslate !== undefined)
23027
- overrides.noTranslate = noTranslate;
23028
- return overrides;
23029
- }
23030
- resolvedLabel = computed(() => this.config()?.label, ...(ngDevMode ? [{ debugName: "resolvedLabel" }] : /* istanbul ignore next */ []));
23031
- shouldTranslate = computed(() => !this.config()?.noTranslate, ...(ngDevMode ? [{ debugName: "shouldTranslate" }] : /* istanbul ignore next */ []));
23032
- html = computed(() => {
23033
- const label = this.resolvedLabel();
23034
- return this.shouldTranslate()
23035
- ? this.translateService.translateToHtml(label)
23036
- : this.translateService.toSafeHtml(label);
23037
- }, ...(ngDevMode ? [{ debugName: "html" }] : /* istanbul ignore next */ []));
23038
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextOutputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
23039
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.9", type: TextOutputComponent, isStandalone: true, selector: "m-text-output", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, host: { properties: { "class.is-design-mode": "isDesignMode", "class.align-left": "resolvedAlign() === \"left\"", "class.align-right": "resolvedAlign() === \"right\"", "class.align-center": "resolvedAlign() === \"center\"" }, classAttribute: "m-text-output-host" }, usesInheritance: true, ngImport: i0, template: ` <div class="m-text-output" [innerHTML]="html()"></div> `, isInline: true, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host(.is-design-mode){display:block;min-width:1em;min-height:1em}:host(.align-left) .m-text-output{text-align:left}:host(.align-center) .m-text-output{text-align:center}:host(.align-right) .m-text-output{text-align:right}:host{font-size:inherit}.m-text-output{color:var(--m-text-output-color, var(--m-text));font-size:inherit;line-height:1.5}.m-text-output>:first-child{margin-top:0}.m-text-output>:last-child{margin-bottom:0}.m-text-output p,.m-text-output ul,.m-text-output blockquote,.m-text-output h1,.m-text-output h2,.m-text-output h3,.m-text-output h4,.m-text-output h5,.m-text-output h6{margin:0 0 1rem}.m-text-output ul{padding-left:1.5rem;list-style-type:disc;list-style-position:outside}.m-text-output li{margin-bottom:.25rem}.m-text-output li:last-child{margin-bottom:0}.m-text-output a{color:var(--m-text-output-link-color, var(--m-mm));text-decoration:underline}.m-text-output a:hover{text-decoration:none}.m-text-output blockquote{padding-left:1rem;border-left:1px solid var(--m-border);color:var(--m-text-output-color, var(--m-text-secondary))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23040
- }
23041
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: TextOutputComponent, decorators: [{
23042
- type: Component,
23043
- args: [{ selector: 'm-text-output', imports: [], template: ` <div class="m-text-output" [innerHTML]="html()"></div> `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
23044
- class: 'm-text-output-host',
23045
- '[class.is-design-mode]': 'isDesignMode',
23046
- '[class.align-left]': 'resolvedAlign() === "left"',
23047
- '[class.align-right]': 'resolvedAlign() === "right"',
23048
- '[class.align-center]': 'resolvedAlign() === "center"',
23049
- }, styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host(.is-design-mode){display:block;min-width:1em;min-height:1em}:host(.align-left) .m-text-output{text-align:left}:host(.align-center) .m-text-output{text-align:center}:host(.align-right) .m-text-output{text-align:right}:host{font-size:inherit}.m-text-output{color:var(--m-text-output-color, var(--m-text));font-size:inherit;line-height:1.5}.m-text-output>:first-child{margin-top:0}.m-text-output>:last-child{margin-bottom:0}.m-text-output p,.m-text-output ul,.m-text-output blockquote,.m-text-output h1,.m-text-output h2,.m-text-output h3,.m-text-output h4,.m-text-output h5,.m-text-output h6{margin:0 0 1rem}.m-text-output ul{padding-left:1.5rem;list-style-type:disc;list-style-position:outside}.m-text-output li{margin-bottom:.25rem}.m-text-output li:last-child{margin-bottom:0}.m-text-output a{color:var(--m-text-output-link-color, var(--m-mm));text-decoration:underline}.m-text-output a:hover{text-decoration:none}.m-text-output blockquote{padding-left:1rem;border-left:1px solid var(--m-border);color:var(--m-text-output-color, var(--m-text-secondary))}\n"] }]
23050
- }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }] } });
23051
-
23052
23336
  class PwaInstallComponent {
23053
23337
  manifest = signal(null, ...(ngDevMode ? [{ debugName: "manifest" }] : /* istanbul ignore next */ []));
23054
23338
  state = signal('loading', ...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
@@ -30683,5 +30967,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
30683
30967
  * Generated bundle index. Do not edit.
30684
30968
  */
30685
30969
 
30686
- export { DomService as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COLOR_SCHEMES$1 as C, ChartComponent as D, ErrorsComponent as E, CheckboxInputComponent as F, ClearableInputComponent as G, ColComponent as H, ColorPickerInputComponent as I, CommentItemComponent as J, CommentsApiService as K, LabelComponent as L, CommentsComponent as M, CommentsStore as N, ComponentInputComponent as O, ComponentStepperComponent as P, ConfigComponent as Q, ConfirmComponent as R, ContextMenuComponent as S, TranslatePipe as T, CustomIconClass as U, CustomIconEditComponent as V, DEFAULT_SIZE as W, DashboardCardComponent as X, DateInputComponent as Y, DatePickerComponent as Z, DeviceService as _, BaseTextInputComponent as a, NAV_MAIN_BUTTONS as a$, Domain as a0, DotGridComponent as a1, DragListDirective as a2, DragListItemDirective as a3, DraggableDirective as a4, DropdownInputComponent as a5, FLEX_VARIANTS as a6, FOLDER_PICK_LISTENER as a7, FORM_ASSET_FOLDER as a8, FileService as a9, LOGIN_PROCESS as aA, LOGIN_STORE as aB, LanguageComponent as aC, LoginDataService as aD, LoginOneComponent as aE, LoginStore as aF, LogoComponent as aG, MAG_SOCKET_EVENT as aH, MHeroColorDirective as aI, MHeroComponent as aJ, MODAL_REF as aK, MODAL_STORE_REF as aL, MRefDirective as aM, MStepComponent as aN, MURL_PARAM as aO, MURL_SEP as aP, ManifestEnrichmentService as aQ, MenuComponent as aR, ModalDirective as aS, ModalRef as aT, ModalStore as aU, MoneyPipe as aV, MultiRangeInputComponent as aW, MurlUrlSerializer as aX, NAV_DEFAULT_MURL as aY, NAV_DISPLAY_ORDER as aZ, NAV_ID_SEP as a_, FileUploadDirective as aa, FileUploadInputComponent as ab, FlexComponent as ac, FlexItemComponent as ad, FormGroupComponent as ae, FrameComponent as af, FreezeService as ag, GEN_NAV_DISPLAY_ORDER as ah, GRID_BREAKPOINTS as ai, GetNavService as aj, HeaderComponent$1 as ak, HighlightDirective as al, HttpService as am, ICON_SOURCE as an, IS_DESIGN_MODE as ao, IS_SIDE_PANEL as ap, IconComponent as aq, ImgComponent as ar, InputType as as, InstrumentScoreComponent as at, InterceptorObservables as au, JumbotronComponent as av, KeyValueComponent as aw, LAYOUT_ASSET_FOLDER as ax, LOGIN_COMPONENT as ay, LOGIN_FORM_GROUP as az, ButtonComponent as b, SectionFilterComponent as b$, NAV_SEGMENT_RE as b0, NAV_STORE_REF as b1, NAV_WC_COMPONENTS as b2, NAV_WIDGET_MAP as b3, NavComponent as b4, NavDetailsComponent as b5, NavMenuComponent as b6, NavStore as b7, NavTrailComponent as b8, NothingComponent as b9, RangeInputComponent as bA, RatingInputComponent as bB, ReactiveElementComponent as bC, RemoteComponent as bD, RemoteLoaderService as bE, ResizeElementComponent as bF, RouteContainer as bG, RowComponent as bH, SEARCH_QUERY as bI, SEARCH_RESULTS_EVENT as bJ, SECTION_ACCORDION_GROUP as bK, SECTION_FORM_CONTEXT as bL, SHARED_ICONS as bM, SIZE_CONTEXT as bN, ScoreComponent as bO, ScrollComponent as bP, ScrollService as bQ, SearchPanelComponent as bR, SearchStore as bS, SearchUserPanelComponent as bT, SectionAccordionDirective as bU, SectionAccordionGroupDirective as bV, SectionBackComponent as bW, SectionBadgesComponent as bX, SectionButtonGroupComponent as bY, SectionCardComponent as bZ, SectionComponent as b_, NotificationElementComponent as ba, NotificationGroupComponent as bb, NotificationPopupComponent as bc, NotificationService as bd, NotificationStore as be, NotificationType as bf, NotificationWidgetComponent as bg, ONE_ASSET_BASE_URL as bh, OPTIONS_SOURCE as bi, OneApp as bj, OptionsSourceDirective as bk, OverlayBodyComponent as bl, OverlayRef as bm, OverlayService as bn, PLATFORM_BUTTON_NAV_IDS as bo, PLATFORM_EXTENSIBLE_NAV_IDS as bp, PLATFORM_NAV_MAP as bq, PLATFORM_ROOT_CHILDREN as br, PaginationComponent as bs, PanelComponent as bt, PlaygroundComponent as bu, PositionDirective as bv, PwaInstallComponent as bw, ROOT_NAV$1 as bx, RadioGroupComponent as by, RadioInputComponent as bz, APP_CONTEXT_REF as c, WIN_USER_TAB_KEY as c$, SectionFooterComponent as c0, SectionFormComponent as c1, SectionFormItemComponent as c2, SectionHeaderComponent as c3, SectionSearchComponent as c4, SectionStepperComponent as c5, SectionTabsComponent as c6, SectionToggleComponent as c7, SectionToggleItemDirective as c8, SelectableCardInputComponent as c9, TextareaInputComponent as cA, ThemeComponent as cB, ThemeService as cC, ThemeStore as cD, TimeAgoPipe as cE, TimelineComponent as cF, ToggleButtonComponent as cG, ToggleInputComponent as cH, ToggleRadioInputComponent as cI, ToolTipDirective as cJ, TooltipComponent as cK, TranslateService as cL, TreeGridComponent as cM, URL_SEP as cN, USER_STORE_REF as cO, USER_TAB_MAP as cP, UlComponent as cQ, UniverseComponent as cR, UserApiService as cS, UserAvatarComponent as cT, UserComponent as cU, UserNavComponent as cV, UserSettingsComponent as cW, UserStore as cX, WC_ROUTE_CHANGED_EVENT as cY, WC_SEARCH_GROUPS as cZ, WIN_USER_TAB_HOOK as c_, SelectorDirective as ca, SettingsSearchBarComponent as cb, SettingsSearchService as cc, Sex as cd, ShapeComponent as ce, SharedStoreRegistry as cf, SidePanelDirective as cg, Size as ch, SocketStore as ci, SortComponent as cj, StepComponent as ck, StepperComponent as cl, StepsComponent as cm, StorageService as cn, StrokeLinecap as co, StrokeLinejoin as cp, SummaryComponent as cq, SvgGeneratorComponent as cr, SvgGeneratorService as cs, SvgService as ct, TOTAL_COLUMNS as cu, TRANSLATION_SOURCE as cv, TableComponent as cw, TechnicalMeterComponent as cx, TextInputComponent as cy, TextOutputComponent as cz, ASSET_BASE_URL as d, loginState as d$, WatermarkComponent as d0, WcRouterStore as d1, WrapperInputComponent as d2, anchorNavId as d3, applyColorsToElement as d4, authGuard as d5, bootstrapMagApp as d6, bootstrapPwaInstall as d7, buildWcBaseUrl as d8, calculateLuminance as d9, getValue as dA, hasErrorComputed as dB, hexToRgb as dC, hslToRgb$1 as dD, initMagmoniumApp as dE, initialNotificationState as dF, initials as dG, injectAuthenticate as dH, injectInstallApp as dI, injectParentSize as dJ, injectScrollSticky as dK, isButtonName as dL, isCancelledComputed as dM, isExtensiblePlatformNavId as dN, isJson as dO, isLoadingComputed as dP, isLocalhost as dQ, isPlatformNavId as dR, isSize as dS, isTierPreview as dT, isUrlLocalhost as dU, isValidNavId as dV, isValidNavSegment as dW, isWebComponent as dX, linkToId as dY, linkToNav as dZ, loadingActions as d_, calculateRanks as da, cellText as db, checkFilterCondition as dc, childNavId as dd, classListSignal as de, createMap as df, createPlatformNavMap as dg, deriveAvatarGradient as dh, deriveContrastColor as di, deriveOppositeColor as dj, derivePropertyName as dk, emailValidation as dl, evaluate as dm, evaluateBool as dn, flattenTreeGridRows as dp, formatBadgeCount as dq, fullName as dr, generateClipPath as ds, generateTransform as dt, getClassList as du, getProperty as dv, getScrollParent as dw, getTierFromPreviewPath as dx, getTreeGridRow as dy, getUniqueId as dz, AccordionBodyDirective as e, mInterceptor as e0, manualValidation as e1, matchFieldValidation as e2, maxLengthValidation as e3, maxValidation as e4, mergePlatformNav as e5, mergeUnique as e6, mergeUniqueBy as e7, mergeUniqueWith as e8, minAgeValidation as e9, provideUserTabs as eA, publicGuard as eB, renderAddress as eC, requiredValidation as eD, resolveConfigAsset as eE, resolvePallet as eF, resolveSize as eG, rgbToHex as eH, rgbToHsl as eI, rowHasChildren as eJ, segmentsToNavId as eK, setProperty as eL, setTreeGridChildren as eM, settingsWidgets as eN, shouldShowBadge as eO, splitNavId as eP, stringToColor as eQ, toAttrBool as eR, toAttrNumber as eS, toCssLength as eT, toHostNavId as eU, toLength$1 as eV, toLocalNavId as eW, toggleTreeGridRow as eX, unfetchedPlatformNav as eY, urlValidation as eZ, minLengthValidation as ea, minValidation as eb, miniMarkToHtml as ec, navIdChain as ed, navIdFor as ee, navIdSegment as ef, navIdToRoutePath as eg, navIdToSegments as eh, navToId as ei, parentNavId as ej, parseAddress as ek, parseColor as el, patternValidation as em, platformNavWidgets as en, privateGuard as eo, processImageToSvg as ep, provideAppContext as eq, provideMagAppConfig as er, provideMagWcConfig as es, provideMagWcRoutes as et, provideModalComponents as eu, provideMurlUrlSerializer as ev, provideNavWidgets as ew, providePlatformNavWidgets as ex, provideSearch as ey, provideSizeContext as ez, AccordionComponent as f, AccordionGroupComponent as g, ActionComponent as h, AnimatedGraphsComponent as i, AppCardComponent as j, AppRelationType as k, AppTileComponent as l, AssetStore as m, AssetUrlPipe as n, Assets as o, AutosizeDirective as p, BadgeComponent as q, BandingComponent as r, BaseArrayInputComponent as s, BaseRootWebComponent as t, BaseWebComponent as u, ButtonGroupComponent as v, COMPONENT_INPUT_REGISTRY as w, CardComponent as x, CardWrapperComponent as y, CarouselComponent as z };
30687
- //# sourceMappingURL=magmonium-one-magmonium-one-CgJtuPEF.mjs.map
30970
+ export { DomService as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COLOR_SCHEMES$1 as C, CarouselComponent as D, ChartComponent as E, CheckboxInputComponent as F, ClearableInputComponent as G, ColComponent as H, ColorPickerInputComponent as I, CommentItemComponent as J, CommentsApiService as K, LabelComponent as L, CommentsComponent as M, CommentsStore as N, ComponentInputComponent as O, ComponentStepperComponent as P, ConfigComponent as Q, ConfirmComponent as R, ContextMenuComponent as S, TranslatePipe as T, CustomIconClass as U, CustomIconEditComponent as V, DEFAULT_SIZE as W, DashboardCardComponent as X, DateInputComponent as Y, DatePickerComponent as Z, DeviceService as _, BaseTextInputComponent as a, NAV_MAIN_BUTTONS as a$, Domain as a0, DotGridComponent as a1, DragListDirective as a2, DragListItemDirective as a3, DraggableDirective as a4, DropdownInputComponent as a5, FLEX_VARIANTS as a6, FOLDER_PICK_LISTENER as a7, FORM_ASSET_FOLDER as a8, FileService as a9, LOGIN_PROCESS as aA, LOGIN_STORE as aB, LanguageComponent as aC, LoginDataService as aD, LoginOneComponent as aE, LoginStore as aF, LogoComponent as aG, MAG_SOCKET_EVENT as aH, MHeroColorDirective as aI, MHeroComponent as aJ, MODAL_REF as aK, MODAL_STORE_REF as aL, MRefDirective as aM, MStepComponent as aN, MURL_PARAM as aO, MURL_SEP as aP, ManifestEnrichmentService as aQ, MenuComponent as aR, ModalDirective as aS, ModalRef as aT, ModalStore as aU, MoneyPipe as aV, MultiRangeInputComponent as aW, MurlUrlSerializer as aX, NAV_DEFAULT_MURL as aY, NAV_DISPLAY_ORDER as aZ, NAV_ID_SEP as a_, FileUploadDirective as aa, FileUploadInputComponent as ab, FlexComponent as ac, FlexItemComponent as ad, FormGroupComponent as ae, FrameComponent as af, FreezeService as ag, GEN_NAV_DISPLAY_ORDER as ah, GRID_BREAKPOINTS as ai, GetNavService as aj, HeaderComponent$1 as ak, HighlightDirective as al, HttpService as am, ICON_SOURCE as an, IS_DESIGN_MODE as ao, IS_SIDE_PANEL as ap, IconComponent as aq, ImgComponent as ar, InputType as as, InstrumentScoreComponent as at, InterceptorObservables as au, JumbotronComponent as av, KeyValueComponent as aw, LAYOUT_ASSET_FOLDER as ax, LOGIN_COMPONENT as ay, LOGIN_FORM_GROUP as az, TextOutputComponent as b, SectionFilterComponent as b$, NAV_SEGMENT_RE as b0, NAV_STORE_REF as b1, NAV_WC_COMPONENTS as b2, NAV_WIDGET_MAP as b3, NavComponent as b4, NavDetailsComponent as b5, NavMenuComponent as b6, NavStore as b7, NavTrailComponent as b8, NothingComponent as b9, RangeInputComponent as bA, RatingInputComponent as bB, ReactiveElementComponent as bC, RemoteComponent as bD, RemoteLoaderService as bE, ResizeElementComponent as bF, RouteContainer as bG, RowComponent as bH, SEARCH_QUERY as bI, SEARCH_RESULTS_EVENT as bJ, SECTION_ACCORDION_GROUP as bK, SECTION_FORM_CONTEXT as bL, SHARED_ICONS as bM, SIZE_CONTEXT as bN, ScoreComponent as bO, ScrollComponent as bP, ScrollService as bQ, SearchPanelComponent as bR, SearchStore as bS, SearchUserPanelComponent as bT, SectionAccordionDirective as bU, SectionAccordionGroupDirective as bV, SectionBackComponent as bW, SectionBadgesComponent as bX, SectionButtonGroupComponent as bY, SectionCardComponent as bZ, SectionComponent as b_, NotificationElementComponent as ba, NotificationGroupComponent as bb, NotificationPopupComponent as bc, NotificationService as bd, NotificationStore as be, NotificationType as bf, NotificationWidgetComponent as bg, ONE_ASSET_BASE_URL as bh, OPTIONS_SOURCE as bi, OneApp as bj, OptionsSourceDirective as bk, OverlayBodyComponent as bl, OverlayRef as bm, OverlayService as bn, PLATFORM_BUTTON_NAV_IDS as bo, PLATFORM_EXTENSIBLE_NAV_IDS as bp, PLATFORM_NAV_MAP as bq, PLATFORM_ROOT_CHILDREN as br, PaginationComponent as bs, PanelComponent as bt, PlaygroundComponent as bu, PositionDirective as bv, PwaInstallComponent as bw, ROOT_NAV$1 as bx, RadioGroupComponent as by, RadioInputComponent as bz, ButtonComponent as c, WatermarkComponent as c$, SectionFooterComponent as c0, SectionFormComponent as c1, SectionFormItemComponent as c2, SectionHeaderComponent as c3, SectionSearchComponent as c4, SectionStepperComponent as c5, SectionTabsComponent as c6, SectionToggleComponent as c7, SectionToggleItemDirective as c8, SelectableCardInputComponent as c9, ThemeComponent as cA, ThemeService as cB, ThemeStore as cC, TimeAgoPipe as cD, TimelineComponent as cE, ToggleButtonComponent as cF, ToggleInputComponent as cG, ToggleRadioInputComponent as cH, ToolTipDirective as cI, TooltipComponent as cJ, TranslateService as cK, TreeGridComponent as cL, URL_SEP as cM, USER_STORE_REF as cN, USER_TAB_MAP as cO, UlComponent as cP, UniverseComponent as cQ, UserApiService as cR, UserAvatarComponent as cS, UserComponent as cT, UserNavComponent as cU, UserSettingsComponent as cV, UserStore as cW, WC_ROUTE_CHANGED_EVENT as cX, WC_SEARCH_GROUPS as cY, WIN_USER_TAB_HOOK as cZ, WIN_USER_TAB_KEY as c_, SelectorDirective as ca, SettingsSearchBarComponent as cb, SettingsSearchService as cc, Sex as cd, ShapeComponent as ce, SharedStoreRegistry as cf, SidePanelDirective as cg, Size as ch, SocketStore as ci, SortComponent as cj, StepComponent as ck, StepperComponent as cl, StepsComponent as cm, StorageService as cn, StrokeLinecap as co, StrokeLinejoin as cp, SummaryComponent as cq, SvgGeneratorComponent as cr, SvgGeneratorService as cs, SvgService as ct, TOTAL_COLUMNS as cu, TRANSLATION_SOURCE as cv, TableComponent as cw, TechnicalMeterComponent as cx, TextInputComponent as cy, TextareaInputComponent as cz, APP_CONTEXT_REF as d, loginState as d$, WcRouterStore as d0, WrapperInputComponent as d1, anchorNavId as d2, applyColorsToElement as d3, authGuard as d4, bootstrapMagApp as d5, bootstrapPwaInstall as d6, buildWcBaseUrl as d7, calculateLuminance as d8, calculateRanks as d9, getValue as dA, hasErrorComputed as dB, hexToRgb as dC, hslToRgb$1 as dD, initMagmoniumApp as dE, initialNotificationState as dF, initials as dG, injectAuthenticate as dH, injectInstallApp as dI, injectParentSize as dJ, injectScrollSticky as dK, isButtonName as dL, isCancelledComputed as dM, isExtensiblePlatformNavId as dN, isJson as dO, isLoadingComputed as dP, isLocalhost as dQ, isPlatformNavId as dR, isSize as dS, isTierPreview as dT, isUrlLocalhost as dU, isValidNavId as dV, isValidNavSegment as dW, isWebComponent as dX, linkToId as dY, linkToNav as dZ, loadingActions as d_, cellText as da, checkFilterCondition as db, childNavId as dc, classListSignal as dd, coerceSize as de, createMap as df, createPlatformNavMap as dg, deriveAvatarGradient as dh, deriveContrastColor as di, deriveOppositeColor as dj, derivePropertyName as dk, emailValidation as dl, evaluate as dm, evaluateBool as dn, flattenTreeGridRows as dp, formatBadgeCount as dq, fullName as dr, generateClipPath as ds, generateTransform as dt, getClassList as du, getProperty as dv, getScrollParent as dw, getTierFromPreviewPath as dx, getTreeGridRow as dy, getUniqueId as dz, ASSET_BASE_URL as e, unfetchedPlatformNav as e$, mInterceptor as e0, manualValidation as e1, matchFieldValidation as e2, maxLengthValidation as e3, maxValidation as e4, mergePlatformNav as e5, mergeUnique as e6, mergeUniqueBy as e7, mergeUniqueWith as e8, minAgeValidation as e9, provideSizeContext as eA, provideUserTabs as eB, publicGuard as eC, readFieldPatterns as eD, renderAddress as eE, requiredValidation as eF, resolveConfigAsset as eG, resolvePallet as eH, resolveSize as eI, rgbToHex as eJ, rgbToHsl as eK, rowHasChildren as eL, samePatterns as eM, segmentsToNavId as eN, setProperty as eO, setTreeGridChildren as eP, settingsWidgets as eQ, shouldShowBadge as eR, splitNavId as eS, stringToColor as eT, toAttrBool as eU, toAttrNumber as eV, toCssLength as eW, toHostNavId as eX, toLength$1 as eY, toLocalNavId as eZ, toggleTreeGridRow as e_, minLengthValidation as ea, minValidation as eb, miniMarkToHtml as ec, navIdChain as ed, navIdFor as ee, navIdSegment as ef, navIdToRoutePath as eg, navIdToSegments as eh, navToId as ei, parentNavId as ej, parseAddress as ek, parseColor as el, patternValidation as em, patternsValidation as en, platformNavWidgets as eo, privateGuard as ep, processImageToSvg as eq, provideAppContext as er, provideMagAppConfig as es, provideMagWcConfig as et, provideMagWcRoutes as eu, provideModalComponents as ev, provideMurlUrlSerializer as ew, provideNavWidgets as ex, providePlatformNavWidgets as ey, provideSearch as ez, AccordionBodyDirective as f, urlValidation as f0, AccordionComponent as g, AccordionGroupComponent as h, ActionComponent as i, AnimatedGraphsComponent as j, AppCardComponent as k, AppRelationType as l, AppTileComponent as m, AssetStore as n, AssetUrlPipe as o, Assets as p, AutosizeDirective as q, BadgeComponent as r, BandingComponent as s, BaseArrayInputComponent as t, BaseRootWebComponent as u, BaseWebComponent as v, ButtonGroupComponent as w, COMPONENT_INPUT_REGISTRY as x, CardComponent as y, CardWrapperComponent as z };
30971
+ //# sourceMappingURL=magmonium-one-magmonium-one-DV45kimz.mjs.map