@magmonium/one 0.2.41 → 0.2.43

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.
@@ -37,7 +37,7 @@ var Assets;
37
37
  Assets["CSS"] = "css";
38
38
  })(Assets || (Assets = {}));
39
39
 
40
- // Single source for the six layout primitives' asset subFolder — each
40
+ // Single source for the layout primitives' asset subFolder — each
41
41
  // primitive's ConfigComponent.subFolder reads from here, and the m-one-ui
42
42
  // Design editor's codegen reads the same const when emitting ControlAssets,
43
43
  // so the two never drift apart (see libs/one ADR 0004).
@@ -53,6 +53,7 @@ const LAYOUT_ASSET_FOLDER = {
53
53
  section_hero: 'section_heroes',
54
54
  section_carousel: 'section_carousels',
55
55
  text_output: 'text_outputs',
56
+ list: 'lists',
56
57
  };
57
58
 
58
59
  // Single source for the asset subFolders a form and its Fields resolve by —
@@ -6830,7 +6831,7 @@ class SectionFormItemComponent extends ConfigComponent {
6830
6831
  break;
6831
6832
  }
6832
6833
  case InputType.TOGGLE: {
6833
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-XdWXZ3w3.mjs');
6834
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CFYMEJcZ.mjs');
6834
6835
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
6835
6836
  break;
6836
6837
  }
@@ -6842,12 +6843,12 @@ class SectionFormItemComponent extends ConfigComponent {
6842
6843
  break;
6843
6844
  }
6844
6845
  case InputType.PASSWORD: {
6845
- const { PasswordInputComponent } = await import('./magmonium-one-password-CniB1rrR.mjs');
6846
+ const { PasswordInputComponent } = await import('./magmonium-one-password-DUUhSEnp.mjs');
6846
6847
  this.createDynamicComponent(seq, PasswordInputComponent);
6847
6848
  break;
6848
6849
  }
6849
6850
  case InputType.OTP: {
6850
- const { OtpInputComponent } = await import('./magmonium-one-otp-BWGevRL7.mjs');
6851
+ const { OtpInputComponent } = await import('./magmonium-one-otp-COwJYVW6.mjs');
6851
6852
  this.createDynamicComponent(seq, OtpInputComponent);
6852
6853
  break;
6853
6854
  }
@@ -8668,7 +8669,10 @@ class SectionHeaderComponent {
8668
8669
  disableRule = input(...(ngDevMode ? [undefined, { debugName: "disableRule" }] : /* istanbul ignore next */ []));
8669
8670
  extraData = input(...(ngDevMode ? [undefined, { debugName: "extraData" }] : /* istanbul ignore next */ []));
8670
8671
  align = input(undefined, ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
8671
- alignment = computed(() => this.align() ?? this.sectionContext?.align?.() ?? 'left', ...(ngDevMode ? [{ debugName: "alignment" }] : /* istanbul ignore next */ []));
8672
+ // The header's own `align` alone. A Section's `align` places boxes its
8673
+ // body box, and the header's content box below — and a header whose text
8674
+ // followed it could not be left-aligned inside a centred Section at all.
8675
+ alignment = computed(() => this.align() ?? 'left', ...(ngDevMode ? [{ debugName: "alignment" }] : /* istanbul ignore next */ []));
8672
8676
  showBack = input(false, ...(ngDevMode ? [{ debugName: "showBack" }] : /* istanbul ignore next */ []));
8673
8677
  actionButton = input(...(ngDevMode ? [undefined, { debugName: "actionButton" }] : /* istanbul ignore next */ []));
8674
8678
  // The action Button's accessible name — it renders icon-only, so without a
@@ -8690,6 +8694,15 @@ class SectionHeaderComponent {
8690
8694
  sectionContext = inject(SECTION_CONTEXT, { optional: true });
8691
8695
  sidepanel = computed(() => this.sectionContext?.sidepanel() ?? false, ...(ngDevMode ? [{ debugName: "sidepanel" }] : /* istanbul ignore next */ []));
8692
8696
  noBorder = computed(() => this.sectionContext?.variant() === 'noBorder', ...(ngDevMode ? [{ debugName: "noBorder" }] : /* istanbul ignore next */ []));
8697
+ // Falls back to the Section's `maxWidth`: the header sits above the body and
8698
+ // the two are one column, so constraining the body alone left the heading
8699
+ // hanging off the edge of the content it titles. The border stays on the
8700
+ // host and keeps spanning the Section — only this inner box narrows.
8701
+ resolvedMaxWidth = computed(() => this.maxWidth() ?? this.sectionContext?.maxWidth?.(), ...(ngDevMode ? [{ debugName: "resolvedMaxWidth" }] : /* istanbul ignore next */ []));
8702
+ // Where that box sits once it is narrower than the row. The Section's
8703
+ // `align` — the same value that places `.m-section__body` — so header and
8704
+ // body stay in one column.
8705
+ boxAlign = computed(() => this.sectionContext?.align?.() ?? 'left', ...(ngDevMode ? [{ debugName: "boxAlign" }] : /* istanbul ignore next */ []));
8693
8706
  isSticky = computed(() => this.sticky() && this.scrollSticky(), ...(ngDevMode ? [{ debugName: "isSticky" }] : /* istanbul ignore next */ []));
8694
8707
  hasMenu = computed(() => !!this.menu() || !!this.menuName(), ...(ngDevMode ? [{ debugName: "hasMenu" }] : /* istanbul ignore next */ []));
8695
8708
  actionConfig = computed(() => {
@@ -8728,7 +8741,7 @@ class SectionHeaderComponent {
8728
8741
  this.accordion()?.toggle();
8729
8742
  }
8730
8743
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8731
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionHeaderComponent, isStandalone: true, selector: "m-section-header", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, subLabel: { classPropertyName: "subLabel", publicName: "subLabel", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: false, transformFunction: null }, menuName: { classPropertyName: "menuName", publicName: "menuName", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, actionButton: { classPropertyName: "actionButton", publicName: "actionButton", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", action: "action", back: "back" }, host: { properties: { "class.is-sticky-enabled": "sticky()", "class.is-sticky": "isSticky()", "class.has-menu": "hasMenu()", "class.align-left": "alignment() === \"left\"", "class.align-center": "alignment() === \"center\"", "class.align-right": "alignment() === \"right\"", "class.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()", "class.spacing": "spacing()" }, classAttribute: "m-section-header" }, ngImport: i0, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n <ng-content select=\"[sub]\" />\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n@if (spacing()) {\n <div class=\"section-header__container\" [style.max-width]=\"maxWidth()\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n </div>\n} @else {\n <ng-container [ngTemplateOutlet]=\"body\" />\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)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;margin:0 auto}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;padding:1rem 1.5rem}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ContextMenuComponent, selector: "m-context-menu, m-one-context-menu", inputs: ["toggle", "remote", "exclude", "visibilityRule", "disableRule", "extraData", "inverted"], outputs: ["toggleChange", "action"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "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", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8744
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: SectionHeaderComponent, isStandalone: true, selector: "m-section-header", inputs: { sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, level: { classPropertyName: "level", publicName: "level", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, subLabel: { classPropertyName: "subLabel", publicName: "subLabel", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, reverse: { classPropertyName: "reverse", publicName: "reverse", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, menu: { classPropertyName: "menu", publicName: "menu", isSignal: true, isRequired: false, transformFunction: null }, menuName: { classPropertyName: "menuName", publicName: "menuName", isSignal: true, isRequired: false, transformFunction: null }, visibilityRule: { classPropertyName: "visibilityRule", publicName: "visibilityRule", isSignal: true, isRequired: false, transformFunction: null }, disableRule: { classPropertyName: "disableRule", publicName: "disableRule", isSignal: true, isRequired: false, transformFunction: null }, extraData: { classPropertyName: "extraData", publicName: "extraData", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, actionButton: { classPropertyName: "actionButton", publicName: "actionButton", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick", action: "action", back: "back" }, host: { properties: { "class.is-sticky-enabled": "sticky()", "class.is-sticky": "isSticky()", "class.has-menu": "hasMenu()", "class.align-left": "alignment() === \"left\"", "class.align-center": "alignment() === \"center\"", "class.align-right": "alignment() === \"right\"", "class.has-sidepanel": "sidepanel()", "class.no-border": "noBorder()", "class.spacing": "spacing()", "class.box-center": "boxAlign() === \"center\"", "class.box-right": "boxAlign() === \"right\"", "style.--m-section-header-max-width": "resolvedMaxWidth()" }, classAttribute: "m-section-header" }, ngImport: i0, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\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:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ContextMenuComponent, selector: "m-context-menu, m-one-context-menu", inputs: ["toggle", "remote", "exclude", "visibilityRule", "disableRule", "extraData", "inverted"], outputs: ["toggleChange", "action"] }, { kind: "component", type: HeaderComponent$1, selector: "m-header", inputs: ["level", "label", "actionButton", "actionLabel", "noTranslate", "params"], outputs: ["actionClick"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "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", "params", "noNative", "icon", "isRightIcon", "iconOnly", "stacked", "imgSrc", "nonClickable", "inverted", "isSubmit", "tabindex"], outputs: ["configChange", "clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
8732
8745
  }
8733
8746
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: SectionHeaderComponent, decorators: [{
8734
8747
  type: Component,
@@ -8749,7 +8762,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
8749
8762
  '[class.has-sidepanel]': 'sidepanel()',
8750
8763
  '[class.no-border]': 'noBorder()',
8751
8764
  '[class.spacing]': 'spacing()',
8752
- }, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n <ng-content select=\"[sub]\" />\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n@if (spacing()) {\n <div class=\"section-header__container\" [style.max-width]=\"maxWidth()\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n </div>\n} @else {\n <ng-container [ngTemplateOutlet]=\"body\" />\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)}}:host{display:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;margin:0 auto}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;padding:1rem 1.5rem}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"] }]
8765
+ '[class.box-center]': 'boxAlign() === "center"',
8766
+ '[class.box-right]': 'boxAlign() === "right"',
8767
+ '[style.--m-section-header-max-width]': 'resolvedMaxWidth()',
8768
+ }, template: "<!-- One declaration of the row, rendered by whichever branch `spacing` picks.\n Hoisted into a template rather than written twice: an `<ng-content>` may\n appear once per selector in a component, so the duplicated copy caught\n nothing and a header projecting a title rendered it in the `spacing`\n branch alone. -->\n<ng-template #body>\n @if (accordion(); as accordionRef) {\n <div\n class=\"section-header__toggle\"\n [class.section-header__toggle--rotate]=\"toggleRotates()\"\n [class.section-header__toggle--open]=\"accordionRef.isOpen()\"\n [id]=\"accordionRef.headerId\"\n [attr.aria-expanded]=\"accordionRef.isOpen()\"\n [attr.aria-controls]=\"accordionRef.bodyId\"\n >\n <m-button\n [config]=\"{ icon: toggleIconName(), iconOnly: true, variant: 'ghost' }\"\n (clicked)=\"onToggleClick()\" />\n </div>\n }\n @if (showBack()) {\n <div class=\"section-header__back\">\n <m-button\n [config]=\"{ icon: 'arrow_back', iconOnly: true }\"\n (clicked)=\"back.emit()\" />\n </div>\n } @else if (icon(); as iconName) {\n <m-icon [name]=\"iconName\" />\n }\n <div\n class=\"section-header__title\"\n [class.section-header__title--reverse]=\"reverse()\"\n >\n <!-- The title slot is the catch-all rather than a `[label]` one: every\n header already projecting a heading writes it unselected, and a\n selector here would drop that content on the floor. What the design\n page emits \u2014 `<span label>` \u2014 is caught by it too, nothing else\n claiming the node. -->\n <ng-content />\n <!-- The written label, drawn beside the slot rather than as its\n `ng-content` fallback. A fallback renders only while *nothing* is\n projected, and the design Canvas always projects the slot span \u2014\n empty until a Control is dropped in it \u2014 so a fallback there would\n blank the label a header is still configured with. `label` answers\n instead, which no header projecting a title sets. -->\n @if (label()) {\n <m-header\n [level]=\"level()\"\n [label]=\"label()\"\n [params]=\"params()\"\n [noTranslate]=\"noTranslate()\" />\n }\n @if (subText(); as sub) {\n <span class=\"section-header__sub\">{{ sub }}</span>\n }\n </div>\n <!-- A FilterGroup projected into the header row, selected by tag rather than\n by an attribute \u2014 the same shape a Section catches its `m-action` with.\n A header has room for one icon and not for a row, so a group landing\n here is squeezed by placement (ADR 0025); nothing here enforces that,\n the caller binding `[squeeze]` on the tag it projects. -->\n <div class=\"section-header__filters\">\n <ng-content select=\"m-section-filter-group\" />\n </div>\n @if (actionConfig(); as action) {\n <div class=\"section-header__action\">\n <m-button [config]=\"action\" (clicked)=\"actionClick.emit()\" />\n </div>\n }\n @if (hasMenu()) {\n <div class=\"section-header__menu\">\n <m-context-menu\n [config]=\"menu()\"\n [name]=\"menuName()\"\n [visibilityRule]=\"visibilityRule()\"\n [disableRule]=\"disableRule()\"\n [extraData]=\"extraData()\"\n (action)=\"action.emit($event)\"\n />\n </div>\n }\n</ng-template>\n\n<!-- Always the same two boxes, whether or not a `maxWidth` is in force. The\n border and the sticky backdrop live on the host and keep spanning the\n Section's full width; only this container narrows and is placed by the\n Section's `align`, so the heading lines up with the body under it. -->\n<div class=\"section-header__container\">\n <div class=\"section-header__inner\">\n <ng-container [ngTemplateOutlet]=\"body\" />\n </div>\n</div>\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:flex;align-items:center;gap:.5rem;min-height:var(--section-header-min-height, calc(var(--section-header-py, .5rem) * 2 + 1.25rem));border-bottom:1px solid var(--m-backdrop-border);padding:var(--section-header-py, .85rem) var(--section-px, 1rem);width:100%;grid-column:1/-1}:host(.no-border){border-bottom:none}:host(.spacing){padding:0;width:100%}.section-header__container{width:100%;min-width:0;max-width:var(--m-section-header-max-width, none);margin-inline:0 auto}:host(.box-center) .section-header__container{margin-inline:auto}:host(.box-right) .section-header__container{margin-inline:auto 0}.section-header__inner{display:flex;align-items:center;gap:.5rem;width:100%;min-width:0}.section-header__inner .section-header__title{flex:1;min-width:0;gap:.5rem}:host(.spacing) .section-header__inner{padding:1rem 1.5rem}:host(.has-sidepanel){padding-right:50px}:host(.has-sidepanel.has-menu){padding-right:50px}:host(.spacing.has-sidepanel) .section-header__inner{padding-right:calc(1.5rem + 50px)}:host(.is-sticky-enabled){position:sticky;top:0;z-index:10}:host(.is-sticky-enabled){background:color-mix(in srgb,var(--m-background) 80%,transparent);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%)}.section-header__toggle{display:flex;flex-shrink:0}.section-header__toggle.section-header__toggle--rotate m-button{display:flex;transition:transform .3s cubic-bezier(.4,0,.2,1)}.section-header__toggle.section-header__toggle--rotate.section-header__toggle--open m-button{transform:rotate(180deg)}.section-header__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}m-header{min-width:0}.section-header__title--reverse{flex-direction:column-reverse}.section-header__sub{font-size:.8rem;color:var(--m-text-secondary);line-height:1.2}:host(.align-center){--m-header-justify: center}:host(.align-right){--m-header-justify: flex-end}:host(.has-menu){padding-right:0}:host(.spacing.has-menu) .section-header__inner{padding-right:0}.section-header__filters{display:contents}.section-header__filters m-section-filter-group{width:auto;flex-shrink:0;border-bottom:none}.section-header__back{display:flex;align-items:center;flex-shrink:0}.section-header__menu,.section-header__action{margin-left:auto;flex-shrink:0;display:flex;align-items:center}.section-header__action+.section-header__menu{margin-left:0}\n"] }]
8753
8769
  }], propDecorators: { sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], level: [{ type: i0.Input, args: [{ isSignal: true, alias: "level", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], subLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "subLabel", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }], params: [{ type: i0.Input, args: [{ isSignal: true, alias: "params", required: false }] }], reverse: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverse", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], menu: [{ type: i0.Input, args: [{ isSignal: true, alias: "menu", required: false }] }], menuName: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuName", required: false }] }], visibilityRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibilityRule", required: false }] }], disableRule: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableRule", required: false }] }], extraData: [{ type: i0.Input, args: [{ isSignal: true, alias: "extraData", required: false }] }], align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], showBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBack", required: false }] }], actionButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionButton", required: false }] }], actionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionLabel", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], actionClick: [{ type: i0.Output, args: ["actionClick"] }], action: [{ type: i0.Output, args: ["action"] }], back: [{ type: i0.Output, args: ["back"] }] } });
8754
8770
 
8755
8771
  const BACK_BTN = {
@@ -12284,6 +12300,35 @@ function filterList(selection, name) {
12284
12300
  function filterOne(selection, name) {
12285
12301
  return toList(selection?.[name])[0];
12286
12302
  }
12303
+ /**
12304
+ * One key read as the single number a Filter feeding a numeric target carries,
12305
+ * or `undefined` when the Filter holds nothing. What `filterOne` is for a
12306
+ * `string` target: a Filter's options are matched by `value` strings all the
12307
+ * way down (ADR 0026), so the text a group's map holds has to become a number
12308
+ * somewhere, and here is the one place it can be checked rather than asserted.
12309
+ *
12310
+ * Anything that is not a finite number reads as `undefined` — an empty string,
12311
+ * a label left behind by a variant flipped after a selection was made, `NaN`.
12312
+ * `Number('')` answering `0` is the convenient lie a numeric target must never
12313
+ * be handed: absent and zero are different answers to a query.
12314
+ */
12315
+ function filterNumber(selection, name) {
12316
+ return toNumber(toList(selection?.[name])[0]);
12317
+ }
12318
+ /**
12319
+ * One key read as the number list a `many` numeric target holds. What
12320
+ * `filterList` is for a `string[]` target, narrowed the way `filterNumber`
12321
+ * narrows `filterOne`.
12322
+ *
12323
+ * An entry that is not a finite number drops out rather than landing as `NaN`:
12324
+ * a list is what a query sends as repeated parameters, and a `NaN` among them
12325
+ * is a parameter no backend can read. An absent key still reads as empty.
12326
+ */
12327
+ function filterNumberList(selection, name) {
12328
+ return toList(selection?.[name])
12329
+ .map(toNumber)
12330
+ .filter((entry) => entry !== undefined);
12331
+ }
12287
12332
  /**
12288
12333
  * One Filter's own emit read as a list, whichever shape it was authored to
12289
12334
  * carry — a standalone `multiple` Filter emits its list and a single-select one
@@ -12339,6 +12384,12 @@ const toList = (value) => {
12339
12384
  return [];
12340
12385
  return (Array.isArray(value) ? value : [value]).map(String);
12341
12386
  };
12387
+ const toNumber = (value) => {
12388
+ if (value === undefined || value.trim() === '')
12389
+ return undefined;
12390
+ const parsed = Number(value);
12391
+ return Number.isFinite(parsed) ? parsed : undefined;
12392
+ };
12342
12393
 
12343
12394
  /**
12344
12395
  * What a squeezed FilterGroup opens: one row per Filter beneath it, drilling
@@ -15039,6 +15090,7 @@ class SectionComponent extends ConfigComponent {
15039
15090
  sidepanel: self.resolvedSidepanel,
15040
15091
  variant: self.resolvedVariant,
15041
15092
  align: self.resolvedAlign,
15093
+ maxWidth: self.resolvedMaxWidth,
15042
15094
  accordion: self.accordion,
15043
15095
  };
15044
15096
  },
@@ -15199,6 +15251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
15199
15251
  sidepanel: self.resolvedSidepanel,
15200
15252
  variant: self.resolvedVariant,
15201
15253
  align: self.resolvedAlign,
15254
+ maxWidth: self.resolvedMaxWidth,
15202
15255
  accordion: self.accordion,
15203
15256
  };
15204
15257
  },
@@ -18775,7 +18828,8 @@ class DropdownBoxComponent {
18775
18828
  (keydown.enter)="selectOption(option)"
18776
18829
  tabindex="0"
18777
18830
  >
18778
- @if (multiple()) {
18831
+ <!-- A group header is a row, never a choice: no box to tick. -->
18832
+ @if (multiple() && !option.disabled) {
18779
18833
  <input
18780
18834
  type="checkbox"
18781
18835
  class="dropdown-box__checkbox"
@@ -18815,7 +18869,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
18815
18869
  (keydown.enter)="selectOption(option)"
18816
18870
  tabindex="0"
18817
18871
  >
18818
- @if (multiple()) {
18872
+ <!-- A group header is a row, never a choice: no box to tick. -->
18873
+ @if (multiple() && !option.disabled) {
18819
18874
  <input
18820
18875
  type="checkbox"
18821
18876
  class="dropdown-box__checkbox"
@@ -20348,7 +20403,7 @@ class WrapperInputComponent extends ConfigComponent {
20348
20403
  break;
20349
20404
  }
20350
20405
  case InputType.TOGGLE: {
20351
- const { ToggleInputComponent } = await import('./magmonium-one-toggle-XdWXZ3w3.mjs');
20406
+ const { ToggleInputComponent } = await import('./magmonium-one-toggle-CFYMEJcZ.mjs');
20352
20407
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
20353
20408
  break;
20354
20409
  }
@@ -20360,12 +20415,12 @@ class WrapperInputComponent extends ConfigComponent {
20360
20415
  break;
20361
20416
  }
20362
20417
  case InputType.PASSWORD: {
20363
- const { PasswordInputComponent } = await import('./magmonium-one-password-CniB1rrR.mjs');
20418
+ const { PasswordInputComponent } = await import('./magmonium-one-password-DUUhSEnp.mjs');
20364
20419
  this.createDynamicComponent(seq, PasswordInputComponent);
20365
20420
  break;
20366
20421
  }
20367
20422
  case InputType.OTP: {
20368
- const { OtpInputComponent } = await import('./magmonium-one-otp-BWGevRL7.mjs');
20423
+ const { OtpInputComponent } = await import('./magmonium-one-otp-COwJYVW6.mjs');
20369
20424
  this.createDynamicComponent(seq, OtpInputComponent);
20370
20425
  break;
20371
20426
  }
@@ -21019,7 +21074,7 @@ var toggleRadio = /*#__PURE__*/Object.freeze({
21019
21074
  // Stand-ins for a card list that has no options yet — DesignMode only. They
21020
21075
  // carry no label: nothing is mapped to them yet, and a name shown here would
21021
21076
  // read as a choice the Field offers. Bare boxes say the shape and no more.
21022
- const DESIGN_STUB_IDS$1 = ['stub-1', 'stub-2', 'stub-3'];
21077
+ const DESIGN_STUB_IDS$2 = ['stub-1', 'stub-2', 'stub-3'];
21023
21078
  class SelectableCardInputComponent extends BaseInputComponent {
21024
21079
  element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
21025
21080
  data = input([], ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
@@ -21054,7 +21109,7 @@ class SelectableCardInputComponent extends BaseInputComponent {
21054
21109
  return data;
21055
21110
  const options = this.cardOptions();
21056
21111
  if (!options.length && this.isDesignMode) {
21057
- return DESIGN_STUB_IDS$1.map((id) => ({ id }));
21112
+ return DESIGN_STUB_IDS$2.map((id) => ({ id }));
21058
21113
  }
21059
21114
  return options.map((option) => ({
21060
21115
  id: option.value,
@@ -21653,81 +21708,215 @@ var fileUploadInput = /*#__PURE__*/Object.freeze({
21653
21708
  FileUploadInputComponent: FileUploadInputComponent
21654
21709
  });
21655
21710
 
21656
- function getClassList$2(config) {
21657
- const classList = [];
21658
- if (config?.variant) {
21659
- classList.push(config.variant);
21660
- }
21661
- if (config?.spacing) {
21662
- classList.push(config.spacing);
21663
- }
21711
+ /**
21712
+ * The list element's own classes: what it is, and which way its rows run.
21713
+ * The marker is drawn by the component rather than by `list-style`, so an
21714
+ * ordered list keeps its counter inside a flex container.
21715
+ */
21716
+ function getClassList$2(variant, orientation, config) {
21717
+ const classList = [
21718
+ 'm-list__list',
21719
+ `m-list__list--${variant}`,
21720
+ `m-list__list--${orientation}`,
21721
+ ];
21722
+ if (config?.align)
21723
+ classList.push(`align-${config.align}`);
21664
21724
  return classList.join(' ');
21665
21725
  }
21666
21726
 
21667
- class UlComponent extends ConfigComponent {
21727
+ // Stand-ins for a List whose collection is not bound yet — DesignMode only,
21728
+ // the reason a SectionCarousel draws its own: an empty list has no height, and
21729
+ // a Control with no rect cannot be selected or moved on a Canvas.
21730
+ const DESIGN_STUB_IDS$1 = ['stub-1', 'stub-2', 'stub-3'];
21731
+ // `toLength` only appends `em` to real numbers — a numeric string comes back
21732
+ // bare, yielding `gap: 2`. Design-editor text fields and YAML both hand over
21733
+ // strings, so narrow before converting (the FlexContainer's rule, ADR 0008:
21734
+ // a gap is spacing, never a Size).
21735
+ const resolveGap = (value) => {
21736
+ if (value === undefined || value === null || value === '')
21737
+ return undefined;
21738
+ if (typeof value !== 'string')
21739
+ return toLength$1(value);
21740
+ const trimmed = value.trim();
21741
+ return toLength$1(Number.isNaN(Number(trimmed)) ? value : Number(trimmed));
21742
+ };
21743
+ const toItem = (item, index) => typeof item === 'string' ? { id: `${index}`, label: item } : item;
21744
+ /**
21745
+ * An ordered or unordered list of rows, with the body of a row written inline
21746
+ * as a template, mounted per row as a component, or left as the row's own
21747
+ * label — the three ways a List is filled, over a collection that is either
21748
+ * authored in its asset or bound from a Screen.
21749
+ *
21750
+ * Its marker is drawn here rather than by `list-style`: the rows sit in a flex
21751
+ * container so `gap` and `orientation` mean anything at all, and a flex item
21752
+ * has no marker box. Which also makes `startIcon` a plain replacement for it.
21753
+ */
21754
+ class ListComponent extends ConfigComponent {
21755
+ subFolder = LAYOUT_ASSET_FOLDER.list;
21756
+ // The rows, mapped. Empty is the ordinary state before a binding resolves —
21757
+ // every read starts `undefined` — so nothing here treats it as an error.
21758
+ data = input(undefined, ...(ngDevMode ? [{ debugName: "data" }] : /* istanbul ignore next */ []));
21759
+ // A row rendered by a mounted component: a row is instantiated per item, so
21760
+ // the markup has nowhere to write its selector.
21761
+ element = input(...(ngDevMode ? [undefined, { debugName: "element" }] : /* istanbul ignore next */ []));
21762
+ // A row body written inline instead. `ng-content` has no reach here — it
21763
+ // projects once, so inside the `@for` it would land in one row and leave the
21764
+ // rest empty.
21765
+ template = input(...(ngDevMode ? [undefined, { debugName: "template" }] : /* istanbul ignore next */ []));
21766
+ // Every setting a List carries, as an input beside the `config` it also
21767
+ // reads — the SectionCarousel pattern, and for its reason: a Control drawn
21768
+ // on a Canvas emits its scalars onto the tag, and an input is the only thing
21769
+ // a tag can land one on (ADR 0010, no-inline-config-template).
21770
+ variant = input(undefined, ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
21771
+ orientation = input(undefined, ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
21772
+ gap = input(undefined, ...(ngDevMode ? [{ debugName: "gap" }] : /* istanbul ignore next */ []));
21773
+ startIcon = input(undefined, ...(ngDevMode ? [{ debugName: "startIcon" }] : /* istanbul ignore next */ []));
21668
21774
  items = input(undefined, ...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
21669
- template = input(undefined, ...(ngDevMode ? [{ debugName: "template" }] : /* istanbul ignore next */ []));
21670
- projectedTemplate = contentChild(TemplateRef, ...(ngDevMode ? [{ debugName: "projectedTemplate" }] : /* istanbul ignore next */ []));
21671
- resolvedTemplate = computed(() => this.template() ?? this.projectedTemplate(), ...(ngDevMode ? [{ debugName: "resolvedTemplate" }] : /* istanbul ignore next */ []));
21672
- subFolder = 'ul';
21673
- classNames = computed(() => getClassList$2(this.config()), ...(ngDevMode ? [{ debugName: "classNames" }] : /* istanbul ignore next */ []));
21674
- constructor() {
21675
- super();
21676
- }
21677
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
21678
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: UlComponent, isStandalone: true, selector: "m-ul", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
21679
- @if (items(); as items) {
21680
- <ul class="{{ classNames() }}">
21681
- @for (item of items; track $index) {
21682
- <li class="flex items-center flex-between">
21683
- <ng-container
21684
- *ngTemplateOutlet="
21685
- resolvedTemplate();
21686
- context: {
21687
- $implicit: item,
21688
- index: $index,
21689
- first: $first,
21690
- last: $last,
21691
- }
21692
- "
21693
- >
21694
- </ng-container>
21695
- </li>
21696
- }
21775
+ noTranslate = input(undefined, ...(ngDevMode ? [{ debugName: "noTranslate" }] : /* istanbul ignore next */ []));
21776
+ resolvedVariant = computed(() => this.variant() ?? this.config()?.variant ?? 'unordered', ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
21777
+ isOrdered = computed(() => this.resolvedVariant() === 'ordered', ...(ngDevMode ? [{ debugName: "isOrdered" }] : /* istanbul ignore next */ []));
21778
+ resolvedOrientation = computed(() => this.orientation() ?? this.config()?.orientation ?? 'vertical', ...(ngDevMode ? [{ debugName: "resolvedOrientation" }] : /* istanbul ignore next */ []));
21779
+ resolvedStartIcon = computed(() => this.startIcon() ?? this.config()?.startIcon, ...(ngDevMode ? [{ debugName: "resolvedStartIcon" }] : /* istanbul ignore next */ []));
21780
+ resolvedGap = computed(() => resolveGap(this.gap() ?? this.config()?.gap), ...(ngDevMode ? [{ debugName: "resolvedGap" }] : /* istanbul ignore next */ []));
21781
+ /**
21782
+ * What sits before a row, or nothing at all. A `menu` carries its glyphs
21783
+ * inside the row body, so it takes no marker unless one is named outright.
21784
+ */
21785
+ marker = computed(() => {
21786
+ if (this.resolvedStartIcon())
21787
+ return 'icon';
21788
+ const variant = this.resolvedVariant();
21789
+ if (variant === 'menu')
21790
+ return undefined;
21791
+ return variant === 'ordered' ? 'counter' : 'bullet';
21792
+ }, ...(ngDevMode ? [{ debugName: "marker" }] : /* istanbul ignore next */ []));
21793
+ // A bound `data` wins over the authored `items`, and both win over the
21794
+ // design stubs: what a caller passes at runtime is the more deliberate.
21795
+ rows = computed(() => {
21796
+ const bound = this.data();
21797
+ if (bound?.length)
21798
+ return bound;
21799
+ const authored = this.items() ?? this.config()?.items;
21800
+ if (authored?.length)
21801
+ return authored.map(toItem);
21802
+ if (bound || authored)
21803
+ return [];
21804
+ return this.isDesignMode
21805
+ ? DESIGN_STUB_IDS$1.map((id, i) => ({ id, label: `Item ${i + 1}` }))
21806
+ : [];
21807
+ }, ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
21808
+ classNames = computed(() => getClassList$2(this.resolvedVariant(), this.resolvedOrientation(), this.config()), ...(ngDevMode ? [{ debugName: "classNames" }] : /* istanbul ignore next */ []));
21809
+ rowInputs = (item) => ({
21810
+ ...(item.inputs ?? {}),
21811
+ });
21812
+ projectedTemplate = contentChild((TemplateRef), ...(ngDevMode ? [{ debugName: "projectedTemplate" }] : /* istanbul ignore next */ []));
21813
+ rowTemplate = computed(() => this.template() ?? this.projectedTemplate(), ...(ngDevMode ? [{ debugName: "rowTemplate" }] : /* istanbul ignore next */ []));
21814
+ rowContext = (item, index, first, last) => ({
21815
+ $implicit: item,
21816
+ item,
21817
+ row: item.row,
21818
+ index,
21819
+ first,
21820
+ last,
21821
+ });
21822
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
21823
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: ListComponent, isStandalone: true, selector: "m-list, m-one-list", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, element: { classPropertyName: "element", publicName: "element", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, startIcon: { classPropertyName: "startIcon", publicName: "startIcon", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, noTranslate: { classPropertyName: "noTranslate", publicName: "noTranslate", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--m-list-gap": "resolvedGap()" }, classAttribute: "m-list" }, queries: [{ propertyName: "projectedTemplate", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
21824
+ <ng-template #rowList>
21825
+ @for (item of rows(); track item.id; let i = $index) {
21826
+ <li class="m-list__item">
21827
+ @if (marker(); as kind) {
21828
+ <span class="m-list__marker" aria-hidden="true">
21829
+ @if (kind === 'icon') {
21830
+ <m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
21831
+ } @else if (kind === 'counter') {
21832
+ {{ i + 1 }}.
21833
+ } @else {
21834
+ &bull;
21835
+ }
21836
+ </span>
21837
+ }
21838
+ <span class="m-list__body">
21839
+ @if (element(); as row) {
21840
+ <ng-container
21841
+ *ngComponentOutlet="row; inputs: rowInputs(item)"
21842
+ />
21843
+ } @else if (rowTemplate(); as tpl) {
21844
+ <ng-container
21845
+ *ngTemplateOutlet="
21846
+ tpl;
21847
+ context: rowContext(item, i, $first, $last)
21848
+ "
21849
+ />
21850
+ } @else if (item.label; as label) {
21851
+ {{ noTranslate() ? label : (label | translate) }}
21852
+ }
21853
+ </span>
21854
+ </li>
21855
+ }
21856
+ </ng-template>
21857
+
21858
+ @if (isOrdered()) {
21859
+ <ol [class]="classNames()">
21860
+ <ng-container *ngTemplateOutlet="rowList" />
21861
+ </ol>
21862
+ } @else {
21863
+ <ul [class]="classNames()">
21864
+ <ng-container *ngTemplateOutlet="rowList" />
21697
21865
  </ul>
21698
21866
  }
21699
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21867
+ `, 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-list__list{display:flex;gap:var(--m-list-gap, 0);margin:0;padding:0;list-style:none}.m-list__list--vertical{flex-direction:column}.m-list__list--horizontal{flex-direction:row;flex-wrap:wrap}.m-list__list.align-center{align-items:center}.m-list__list.align-right{align-items:flex-end}.m-list__item{display:flex;align-items:flex-start;gap:.5em;min-width:0}.m-list__marker{flex:0 0 auto;display:flex;align-items:center;color:var(--m-text-tertiary);line-height:inherit}.m-list__body{flex:1 1 auto;min-width:0}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21700
21868
  }
21701
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UlComponent, decorators: [{
21869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: ListComponent, decorators: [{
21702
21870
  type: Component,
21703
- args: [{
21704
- selector: 'm-ul',
21705
- imports: [NgTemplateOutlet],
21706
- template: `
21707
- @if (items(); as items) {
21708
- <ul class="{{ classNames() }}">
21709
- @for (item of items; track $index) {
21710
- <li class="flex items-center flex-between">
21711
- <ng-container
21712
- *ngTemplateOutlet="
21713
- resolvedTemplate();
21714
- context: {
21715
- $implicit: item,
21716
- index: $index,
21717
- first: $first,
21718
- last: $last,
21719
- }
21720
- "
21721
- >
21722
- </ng-container>
21723
- </li>
21724
- }
21871
+ args: [{ selector: 'm-list, m-one-list', imports: [NgComponentOutlet, NgTemplateOutlet, IconComponent, TranslatePipe], template: `
21872
+ <ng-template #rowList>
21873
+ @for (item of rows(); track item.id; let i = $index) {
21874
+ <li class="m-list__item">
21875
+ @if (marker(); as kind) {
21876
+ <span class="m-list__marker" aria-hidden="true">
21877
+ @if (kind === 'icon') {
21878
+ <m-icon [name]="resolvedStartIcon()!" [baseUrl]="baseUrl()" />
21879
+ } @else if (kind === 'counter') {
21880
+ {{ i + 1 }}.
21881
+ } @else {
21882
+ &bull;
21883
+ }
21884
+ </span>
21885
+ }
21886
+ <span class="m-list__body">
21887
+ @if (element(); as row) {
21888
+ <ng-container
21889
+ *ngComponentOutlet="row; inputs: rowInputs(item)"
21890
+ />
21891
+ } @else if (rowTemplate(); as tpl) {
21892
+ <ng-container
21893
+ *ngTemplateOutlet="
21894
+ tpl;
21895
+ context: rowContext(item, i, $first, $last)
21896
+ "
21897
+ />
21898
+ } @else if (item.label; as label) {
21899
+ {{ noTranslate() ? label : (label | translate) }}
21900
+ }
21901
+ </span>
21902
+ </li>
21903
+ }
21904
+ </ng-template>
21905
+
21906
+ @if (isOrdered()) {
21907
+ <ol [class]="classNames()">
21908
+ <ng-container *ngTemplateOutlet="rowList" />
21909
+ </ol>
21910
+ } @else {
21911
+ <ul [class]="classNames()">
21912
+ <ng-container *ngTemplateOutlet="rowList" />
21725
21913
  </ul>
21726
21914
  }
21727
- `,
21728
- changeDetection: ChangeDetectionStrategy.OnPush,
21729
- }]
21730
- }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
21915
+ `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
21916
+ class: 'm-list',
21917
+ '[style.--m-list-gap]': 'resolvedGap()',
21918
+ }, 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-list__list{display:flex;gap:var(--m-list-gap, 0);margin:0;padding:0;list-style:none}.m-list__list--vertical{flex-direction:column}.m-list__list--horizontal{flex-direction:row;flex-wrap:wrap}.m-list__list.align-center{align-items:center}.m-list__list.align-right{align-items:flex-end}.m-list__item{display:flex;align-items:flex-start;gap:.5em;min-width:0}.m-list__marker{flex:0 0 auto;display:flex;align-items:center;color:var(--m-text-tertiary);line-height:inherit}.m-list__body{flex:1 1 auto;min-width:0}\n"] }]
21919
+ }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], element: [{ type: i0.Input, args: [{ isSignal: true, alias: "element", required: false }] }], template: [{ type: i0.Input, args: [{ isSignal: true, alias: "template", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], startIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "startIcon", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], noTranslate: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTranslate", required: false }] }], projectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }] } });
21731
21920
 
21732
21921
  const TOTAL_COLUMNS = 12;
21733
21922
 
@@ -29030,9 +29219,17 @@ class NavMenuComponent {
29030
29219
  return rawList;
29031
29220
  return rawList.filter((item) => item.label?.toLowerCase().includes(q));
29032
29221
  }, ...(ngDevMode ? [{ debugName: "navList" }] : /* istanbul ignore next */ []));
29222
+ // A List draws rows it was handed as ListItems; a NavRef reaches the row
29223
+ // body through `row`, which is what the template reads through `let-item`.
29224
+ rows = computed(() => (this.navList() ?? []).map((item, index) => ({
29225
+ // Index-suffixed: every row of one dynamic Nav shares its NavId, so the
29226
+ // NavRef alone is not a key.
29227
+ id: `${item.nav ?? item.href ?? item.label}-${index}`,
29228
+ row: item,
29229
+ })), ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
29033
29230
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29034
29231
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: NavMenuComponent, isStandalone: true, selector: "m-nav-menu", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, baseUrl: { classPropertyName: "baseUrl", publicName: "baseUrl", isSignal: true, isRequired: false, transformFunction: null }, filterBySearch: { classPropertyName: "filterBySearch", publicName: "filterBySearch", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
29035
- <ng-template #menuTemplate let-item let-index="index">
29232
+ <ng-template #menuTemplate let-item="row">
29036
29233
  <div class="nav-menu__item">
29037
29234
  @if (item.nav; as nav) {
29038
29235
  <!-- Icon and label share one NavRef so either click reaches the same place. -->
@@ -29067,14 +29264,14 @@ class NavMenuComponent {
29067
29264
  </div>
29068
29265
  </ng-template>
29069
29266
  <div class="nav-menu">
29070
- <m-ul [items]="navList()" [template]="menuTemplate" />
29267
+ <m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
29071
29268
  </div>
29072
- `, 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: MRefDirective, selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "component", type: UlComponent, selector: "m-ul", inputs: ["items", "template"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29269
+ `, 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "m-icon, m-one-icon", inputs: ["config", "name", "color", "size", "one", "baseUrl", "remote"], outputs: ["configChange"] }, { kind: "directive", type: MRefDirective, selector: "[mRef]", inputs: ["mRef", "mRefLinkActive", "mRefToggle", "mRefParams"] }, { kind: "component", type: ListComponent, selector: "m-list, m-one-list", inputs: ["data", "element", "template", "variant", "orientation", "gap", "startIcon", "items", "noTranslate"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
29073
29270
  }
29074
29271
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: NavMenuComponent, decorators: [{
29075
29272
  type: Component,
29076
29273
  args: [{ selector: 'm-nav-menu', template: `
29077
- <ng-template #menuTemplate let-item let-index="index">
29274
+ <ng-template #menuTemplate let-item="row">
29078
29275
  <div class="nav-menu__item">
29079
29276
  @if (item.nav; as nav) {
29080
29277
  <!-- Icon and label share one NavRef so either click reaches the same place. -->
@@ -29109,9 +29306,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
29109
29306
  </div>
29110
29307
  </ng-template>
29111
29308
  <div class="nav-menu">
29112
- <m-ul [items]="navList()" [template]="menuTemplate" />
29309
+ <m-list variant="menu" [data]="rows()" [template]="menuTemplate" />
29113
29310
  </div>
29114
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconComponent, MRefDirective, TranslatePipe, UlComponent], 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"] }]
29311
+ `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [IconComponent, MRefDirective, TranslatePipe, ListComponent], 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%}.nav-menu{padding:0;margin:0}.nav-menu ul{display:flex;flex-direction:column;gap:0;padding:0;margin:0}.nav-menu li{padding:0;list-style:none;width:100%;border-bottom:1px solid rgba(0,0,0,.02)}.nav-menu li:last-child{border-bottom:none}.nav-menu__item{display:flex;align-items:center;gap:.75rem;width:100%;position:relative;color:var(--m-text-secondary);background:transparent}.nav-menu__item:not(:has(.nav-menu__link)){padding:.625rem 1rem}.nav-menu__link{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;border-radius:0;transition:all .15s cubic-bezier(.4,0,.2,1);cursor:pointer;width:100%;color:inherit;text-decoration:none}.nav-menu__link:hover{background:#00000008;color:var(--m-text)}.nav-menu__link:hover .nav-menu__icon{color:var(--m-text)}.nav-menu__link:hover .nav-menu__label{color:var(--m-text);font-weight:600}.nav-menu__icon{display:flex;align-items:center;justify-content:center;color:var(--m-text-tertiary);transition:color .15s ease;width:1.15rem;height:1.15rem}.nav-menu__icon .m-icon{display:flex;align-items:center}.nav-menu__label{flex:1;display:block;width:100%;font-size:.8125rem;font-weight:500;letter-spacing:.01em;color:inherit;text-decoration:none}.nav-menu__item:has(.active){background:linear-gradient(90deg,color-mix(in srgb,var(--m-mm) 6%,transparent) 0%,color-mix(in srgb,var(--m-mm) 2%,transparent) 60%,transparent 100%);color:var(--m-mm);border-radius:0}.nav-menu__item:has(.active):after{content:\"\";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.05) 50%,transparent 100%);z-index:3}.nav-menu__item:has(.active) .nav-menu__icon{color:var(--m-mm);filter:drop-shadow(0 0 3px color-mix(in srgb,var(--m-mm) 20%,transparent))}.nav-menu__item:has(.active) .nav-menu__label{color:var(--m-mm);font-weight:700;letter-spacing:.015em}\n"] }]
29115
29312
  }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], baseUrl: [{ type: i0.Input, args: [{ isSignal: true, alias: "baseUrl", required: false }] }], filterBySearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterBySearch", required: false }] }] } });
29116
29313
 
29117
29314
  class SettingsSearchBarComponent {
@@ -34598,5 +34795,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
34598
34795
  * Generated bundle index. Do not edit.
34599
34796
  */
34600
34797
 
34601
- export { DEFAULT_NAV_PARAM as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_FILTER_RANGE_MODE as Z, DEFAULT_FILTER_VARIANT as _, BaseTextInputComponent as a, NAV_DEFAULT_MURL as a$, DEFAULT_NAV_SEGMENT as a0, DEFAULT_SIZE as a1, DashboardCardComponent as a2, DateInputComponent as a3, DatePickerComponent as a4, DeviceService as a5, DomService as a6, Domain as a7, DotGridComponent as a8, DragListDirective as a9, InputType as aA, InstrumentScoreComponent as aB, InterceptorObservables as aC, JumbotronComponent as aD, KeyValueComponent as aE, LAYOUT_ASSET_FOLDER as aF, LOGIN_COMPONENT as aG, LOGIN_STORE as aH, LanguageComponent as aI, LogoComponent as aJ, MAG_SOCKET_EVENT as aK, MHeroColorDirective as aL, MHeroComponent as aM, MODAL_REF as aN, MODAL_STORE_REF as aO, MRefDirective as aP, MStepComponent as aQ, MURL_PARAM as aR, MURL_SEP as aS, ManifestEnrichmentService as aT, MenuComponent as aU, ModalDirective as aV, ModalRef as aW, ModalStore as aX, MoneyPipe as aY, MultiRangeInputComponent as aZ, MurlUrlSerializer as a_, DragListItemDirective as aa, DraggableDirective as ab, DropdownInputComponent as ac, FILTER_GROUP_CONTEXT as ad, FILTER_RANGE_MODES as ae, FILTER_VARIANTS as af, FLEX_VARIANTS as ag, FOLDER_PICK_LISTENER as ah, FORM_ASSET_FOLDER as ai, FileService as aj, FileUploadDirective as ak, FileUploadInputComponent as al, FlexComponent as am, FlexItemComponent as an, FormGroupComponent as ao, FrameComponent as ap, FreezeService as aq, GRID_BREAKPOINTS as ar, GetNavService as as, HeaderComponent$1 as at, HighlightDirective as au, HttpService as av, ICON_SOURCE as aw, IS_SIDE_PANEL as ax, IconComponent as ay, ImgComponent as az, TextOutputComponent as b, SectionBackComponent as b$, NAV_ID_SEP as b0, NAV_MAIN_BUTTONS as b1, NAV_SEGMENT_RE as b2, NAV_STORE_REF as b3, NAV_WC_COMPONENTS as b4, NAV_WIDGET_MAP as b5, NavComponent as b6, NavDetailsComponent as b7, NavHeaderComponent as b8, NavMenuComponent as b9, PositionDirective as bA, PwaInstallComponent as bB, ROOT_NAV$1 as bC, RadioGroupComponent as bD, RadioInputComponent as bE, RangeInputComponent as bF, RatingInputComponent as bG, ReactiveElementComponent as bH, RemoteComponent as bI, RemoteLoaderService as bJ, ResizeElementComponent as bK, RouteContainer as bL, RowComponent as bM, SEARCH_QUERY as bN, SEARCH_RESULTS_EVENT as bO, SECTION_ACCORDION_GROUP as bP, SECTION_FORM_CONTEXT as bQ, SHARED_ICONS as bR, SIZE_CONTEXT as bS, ScoreComponent as bT, ScrollComponent as bU, ScrollService as bV, SearchPanelComponent as bW, SearchStore as bX, SearchUserPanelComponent as bY, SectionAccordionDirective as bZ, SectionAccordionGroupDirective as b_, NavStore as ba, NavTrailComponent as bb, NothingComponent as bc, NotificationElementComponent as bd, NotificationGroupComponent as be, NotificationPopupComponent as bf, NotificationService as bg, NotificationStore as bh, NotificationType as bi, NotificationWidgetComponent as bj, ONE_ASSET_BASE_URL as bk, OPTIONS_SOURCE as bl, OVERLAY_WIDGETS as bm, OneApp as bn, OptionsSourceDirective as bo, OverlayBodyComponent as bp, OverlayRef as bq, OverlayService as br, PLATFORM_BUTTON_NAV_IDS as bs, PLATFORM_EXTENSIBLE_NAV_IDS as bt, PLATFORM_NAV_MAP as bu, PLATFORM_ROOT_CHILDREN as bv, PaginationComponent as bw, PanelComponent as bx, PercentagePipe as by, PlaygroundComponent as bz, ButtonComponent as c, USER_TAB_MAP as c$, SectionBadgesComponent as c0, SectionButtonGroupComponent as c1, SectionCardComponent as c2, SectionCarouselComponent as c3, SectionComponent as c4, SectionFilterComponent as c5, SectionFilterGroupComponent as c6, SectionFilterMenuComponent as c7, SectionFilterPanelComponent as c8, SectionFilterRangePanelComponent as c9, StrokeLinecap as cA, StrokeLinejoin as cB, SummaryComponent as cC, SvgGeneratorComponent as cD, SvgGeneratorService as cE, SvgService as cF, TOTAL_COLUMNS as cG, TRANSLATION_SOURCE as cH, TableComponent as cI, TechnicalMeterComponent as cJ, TextInputComponent as cK, TextareaInputComponent as cL, ThemeComponent as cM, ThemeDataService as cN, ThemeService as cO, ThemeStore as cP, TimeAgoPipe as cQ, TimelineComponent as cR, ToggleButtonComponent as cS, ToggleInputComponent as cT, ToggleRadioInputComponent as cU, ToolTipDirective as cV, TooltipComponent as cW, TranslateService as cX, TreeGridComponent as cY, URL_SEP as cZ, USER_STORE_REF as c_, SectionFooterComponent as ca, SectionFormComponent as cb, SectionFormItemComponent as cc, SectionHeaderComponent as cd, SectionHeroComponent as ce, SectionPaginationComponent as cf, SectionSearchComponent as cg, SectionStepperComponent as ch, SectionTabsComponent as ci, SectionToggleComponent as cj, SectionToggleItemDirective as ck, SelectableCardInputComponent as cl, SelectorDirective as cm, SettingsSearchBarComponent as cn, SettingsSearchService as co, ShapeComponent as cp, SharedStoreRegistry as cq, SidePanelDirective as cr, Size as cs, SocketStore as ct, SortComponent as cu, StatComponent as cv, StepComponent as cw, StepperComponent as cx, StepsComponent as cy, StorageService as cz, APP_CONTEXT_REF as d, hasErrorComputed as d$, UlComponent as d0, UniverseComponent as d1, UserApiService as d2, UserAvatarComponent as d3, UserComponent as d4, UserNavComponent as d5, UserSettingsComponent as d6, UserStore as d7, WC_ROUTE_CHANGED_EVENT as d8, WC_SEARCH_GROUPS as d9, emailValidation as dA, evaluate as dB, evaluateBool as dC, filterHoldsList as dD, filterHoldsOneBound as dE, filterHoldsOptions as dF, filterHoldsRange as dG, filterList as dH, filterOne as dI, filterPanelOf as dJ, filterPanelWidth as dK, filterRange as dL, filterTreeGridRows as dM, filterValueList as dN, filterValues as dO, 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, getValue as d_, WIN_USER_TAB_HOOK as da, WIN_USER_TAB_KEY as db, WatermarkComponent as dc, WcRouterStore as dd, WrapperInputComponent as de, anchorNavId as df, applyColorsToElement as dg, bootstrapMagApp as dh, bootstrapPwaInstall as di, buildWcBaseUrl as dj, calculateLuminance as dk, calculateRanks as dl, cellText as dm, checkFilterCondition as dn, childNavId as dp, classListSignal as dq, coerceSize as dr, cornerEdge as ds, cornerSide as dt, createMap as du, createPlatformNavMap as dv, deriveAvatarGradient as dw, deriveContrastColor as dx, deriveOppositeColor as dy, derivePropertyName as dz, ASSET_BASE_URL as e, provideNavWidgets as e$, hexToRgb as e0, hslToRgb$1 as e1, initMagmoniumApp as e2, initialNotificationState as e3, initialState$2 as e4, initials as e5, injectAuthenticate as e6, injectInstallApp as e7, injectParentSize as e8, injectScrollSticky as e9, mergeUniqueWith as eA, minAgeValidation as eB, minLengthValidation as eC, minValidation as eD, miniMarkToHtml as eE, navIdChain as eF, navIdFor as eG, navIdSegment as eH, navIdToRoutePath as eI, navIdToSegments as eJ, navParamOf as eK, navToId as eL, parentNavId as eM, parseAddress as eN, parseColor as eO, parsePatternNames as eP, patternValidation as eQ, patternsValidation as eR, platformNavWidgets as eS, privateGuard as eT, processImageToSvg as eU, provideAppContext as eV, provideMagAppConfig as eW, provideMagWcConfig as eX, provideMagWcRoutes as eY, provideModalComponents as eZ, provideMurlUrlSerializer as e_, isButtonName as ea, isCancelledComputed as eb, isExtensiblePlatformNavId as ec, isJson as ed, isLoadingComputed as ee, isLocalhost as ef, isNavMenuConfig as eg, isNavRowsConfig as eh, isPlatformNavId as ei, isSize as ej, isTierPreview as ek, isUrlLocalhost as el, isValidNavId as em, isValidNavSegment as en, isWebComponent as eo, linkToId as ep, linkToNav as eq, loadingActions as er, mInterceptor as es, manualValidation as et, matchFieldValidation as eu, maxLengthValidation as ev, maxValidation as ew, mergePlatformNav as ex, mergeUnique as ey, mergeUniqueBy as ez, AccordionBodyDirective as f, provideOverlayWidgets as f0, providePlatformNavWidgets as f1, provideSearch as f2, provideSizeContext as f3, provideUserTabs as f4, publicGuard as f5, readFieldPatterns as f6, renderAddress as f7, requiredValidation as f8, resolveConfigAsset as f9, resolveIconSize as fa, resolvePallet as fb, resolvePatternRules as fc, resolveSize as fd, rgbToHex as fe, rgbToHsl as ff, rowHasChildren as fg, samePatterns as fh, segmentsToNavId as fi, setProperty as fj, setTreeGridChildren as fk, settingsWidgets as fl, shouldShowBadge as fm, splitNavId as fn, splitOnMatch as fo, stringToColor as fp, toAttrBool as fq, toAttrNumber as fr, toCssLength as fs, toHostNavId as ft, toLength$1 as fu, toLocalNavId as fv, toggleTreeGridRow as fw, unfetchedPlatformNav as fx, urlValidation as fy, 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, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
34602
- //# sourceMappingURL=magmonium-one-magmonium-one-9zQVQ0IY.mjs.map
34798
+ export { DEFAULT_NAV_PARAM as $, ACCESS_DOMAINS as A, BaseInputComponent as B, COMPONENT_INPUT_REGISTRY as C, CardComponent as D, CardWrapperComponent as E, CarouselComponent as F, ChartComponent as G, CheckboxInputComponent as H, IS_DESIGN_MODE as I, ClearableInputComponent as J, ColComponent as K, LabelComponent as L, ColorPickerInputComponent as M, CommentItemComponent as N, CommentsApiService as O, CommentsComponent as P, CommentsStore as Q, ComponentInputComponent as R, ComponentStepperComponent as S, TranslatePipe as T, ConfigComponent as U, ConfirmComponent as V, ContextMenuComponent as W, CustomIconClass as X, CustomIconEditComponent as Y, DEFAULT_FILTER_RANGE_MODE as Z, DEFAULT_FILTER_VARIANT as _, BaseTextInputComponent as a, MurlUrlSerializer as a$, DEFAULT_NAV_SEGMENT as a0, DEFAULT_SIZE as a1, DashboardCardComponent as a2, DateInputComponent as a3, DatePickerComponent as a4, DeviceService as a5, DomService as a6, Domain as a7, DotGridComponent as a8, DragListDirective as a9, InputType as aA, InstrumentScoreComponent as aB, InterceptorObservables as aC, JumbotronComponent as aD, KeyValueComponent as aE, LAYOUT_ASSET_FOLDER as aF, LOGIN_COMPONENT as aG, LOGIN_STORE as aH, LanguageComponent as aI, ListComponent as aJ, LogoComponent as aK, MAG_SOCKET_EVENT as aL, MHeroColorDirective as aM, MHeroComponent as aN, MODAL_REF as aO, MODAL_STORE_REF as aP, MRefDirective as aQ, MStepComponent as aR, MURL_PARAM as aS, MURL_SEP as aT, ManifestEnrichmentService as aU, MenuComponent as aV, ModalDirective as aW, ModalRef as aX, ModalStore as aY, MoneyPipe as aZ, MultiRangeInputComponent as a_, DragListItemDirective as aa, DraggableDirective as ab, DropdownInputComponent as ac, FILTER_GROUP_CONTEXT as ad, FILTER_RANGE_MODES as ae, FILTER_VARIANTS as af, FLEX_VARIANTS as ag, FOLDER_PICK_LISTENER as ah, FORM_ASSET_FOLDER as ai, FileService as aj, FileUploadDirective as ak, FileUploadInputComponent as al, FlexComponent as am, FlexItemComponent as an, FormGroupComponent as ao, FrameComponent as ap, FreezeService as aq, GRID_BREAKPOINTS as ar, GetNavService as as, HeaderComponent$1 as at, HighlightDirective as au, HttpService as av, ICON_SOURCE as aw, IS_SIDE_PANEL as ax, IconComponent as ay, ImgComponent as az, TextOutputComponent as b, SectionAccordionGroupDirective as b$, NAV_DEFAULT_MURL as b0, NAV_ID_SEP as b1, NAV_MAIN_BUTTONS as b2, NAV_SEGMENT_RE as b3, NAV_STORE_REF as b4, NAV_WC_COMPONENTS as b5, NAV_WIDGET_MAP as b6, NavComponent as b7, NavDetailsComponent as b8, NavHeaderComponent as b9, PlaygroundComponent as bA, PositionDirective as bB, PwaInstallComponent as bC, ROOT_NAV$1 as bD, RadioGroupComponent as bE, RadioInputComponent as bF, RangeInputComponent as bG, RatingInputComponent as bH, ReactiveElementComponent as bI, RemoteComponent as bJ, RemoteLoaderService as bK, ResizeElementComponent as bL, RouteContainer as bM, RowComponent as bN, SEARCH_QUERY as bO, SEARCH_RESULTS_EVENT as bP, SECTION_ACCORDION_GROUP as bQ, SECTION_FORM_CONTEXT as bR, SHARED_ICONS as bS, SIZE_CONTEXT as bT, ScoreComponent as bU, ScrollComponent as bV, ScrollService as bW, SearchPanelComponent as bX, SearchStore as bY, SearchUserPanelComponent as bZ, SectionAccordionDirective as b_, NavMenuComponent as ba, NavStore as bb, NavTrailComponent as bc, NothingComponent as bd, NotificationElementComponent as be, NotificationGroupComponent as bf, NotificationPopupComponent as bg, NotificationService as bh, NotificationStore as bi, NotificationType as bj, NotificationWidgetComponent as bk, ONE_ASSET_BASE_URL as bl, OPTIONS_SOURCE as bm, OVERLAY_WIDGETS as bn, OneApp as bo, OptionsSourceDirective as bp, OverlayBodyComponent as bq, OverlayRef as br, OverlayService as bs, PLATFORM_BUTTON_NAV_IDS as bt, PLATFORM_EXTENSIBLE_NAV_IDS as bu, PLATFORM_NAV_MAP as bv, PLATFORM_ROOT_CHILDREN as bw, PaginationComponent as bx, PanelComponent as by, PercentagePipe as bz, ButtonComponent as c, USER_STORE_REF as c$, SectionBackComponent as c0, SectionBadgesComponent as c1, SectionButtonGroupComponent as c2, SectionCardComponent as c3, SectionCarouselComponent as c4, SectionComponent as c5, SectionFilterComponent as c6, SectionFilterGroupComponent as c7, SectionFilterMenuComponent as c8, SectionFilterPanelComponent as c9, StorageService as cA, StrokeLinecap as cB, StrokeLinejoin as cC, SummaryComponent as cD, SvgGeneratorComponent as cE, SvgGeneratorService as cF, SvgService as cG, TOTAL_COLUMNS as cH, TRANSLATION_SOURCE as cI, TableComponent as cJ, TechnicalMeterComponent as cK, TextInputComponent as cL, TextareaInputComponent as cM, ThemeComponent as cN, ThemeDataService as cO, ThemeService as cP, ThemeStore as cQ, TimeAgoPipe as cR, TimelineComponent as cS, ToggleButtonComponent as cT, ToggleInputComponent as cU, ToggleRadioInputComponent as cV, ToolTipDirective as cW, TooltipComponent as cX, TranslateService as cY, TreeGridComponent as cZ, URL_SEP as c_, SectionFilterRangePanelComponent as ca, SectionFooterComponent as cb, SectionFormComponent as cc, SectionFormItemComponent as cd, SectionHeaderComponent as ce, SectionHeroComponent as cf, SectionPaginationComponent as cg, SectionSearchComponent as ch, SectionStepperComponent as ci, SectionTabsComponent as cj, SectionToggleComponent as ck, SectionToggleItemDirective as cl, SelectableCardInputComponent as cm, SelectorDirective as cn, SettingsSearchBarComponent as co, SettingsSearchService as cp, ShapeComponent as cq, SharedStoreRegistry as cr, SidePanelDirective as cs, Size as ct, SocketStore as cu, SortComponent as cv, StatComponent as cw, StepComponent as cx, StepperComponent as cy, StepsComponent as cz, APP_CONTEXT_REF as d, getTreeGridRow as d$, USER_TAB_MAP as d0, UniverseComponent as d1, UserApiService as d2, UserAvatarComponent as d3, UserComponent as d4, UserNavComponent as d5, UserSettingsComponent as d6, UserStore as d7, WC_ROUTE_CHANGED_EVENT as d8, WC_SEARCH_GROUPS as d9, derivePropertyName as dA, emailValidation as dB, evaluate as dC, evaluateBool as dD, filterHoldsList as dE, filterHoldsOneBound as dF, filterHoldsOptions as dG, filterHoldsRange as dH, filterList as dI, filterNumber as dJ, filterNumberList as dK, filterOne as dL, filterPanelOf as dM, filterPanelWidth as dN, filterRange as dO, filterTreeGridRows as dP, filterValueList as dQ, filterValues as dR, flattenTreeGridRows as dS, formatBadgeCount as dT, fullName as dU, generateClipPath as dV, generateTransform as dW, getClassList as dX, getProperty as dY, getScrollParent as dZ, getTierFromPreviewPath as d_, WIN_USER_TAB_HOOK as da, WIN_USER_TAB_KEY as db, WatermarkComponent as dc, WcRouterStore as dd, WrapperInputComponent as de, anchorNavId as df, applyColorsToElement as dg, assetOptions as dh, bootstrapMagApp as di, bootstrapPwaInstall as dj, buildWcBaseUrl as dk, calculateLuminance as dl, calculateRanks as dm, cellText as dn, checkFilterCondition as dp, childNavId as dq, classListSignal as dr, coerceSize as ds, cornerEdge as dt, cornerSide as du, createMap as dv, createPlatformNavMap as dw, deriveAvatarGradient as dx, deriveContrastColor as dy, deriveOppositeColor as dz, ASSET_BASE_URL as e, provideMagWcConfig as e$, getUniqueId as e0, getValue as e1, hasErrorComputed as e2, hexToRgb as e3, hslToRgb$1 as e4, initMagmoniumApp as e5, initialNotificationState as e6, initialState$2 as e7, initials as e8, injectAuthenticate as e9, mergePlatformNav as eA, mergeUnique as eB, mergeUniqueBy as eC, mergeUniqueWith as eD, minAgeValidation as eE, minLengthValidation as eF, minValidation as eG, miniMarkToHtml as eH, navIdChain as eI, navIdFor as eJ, navIdSegment as eK, navIdToRoutePath as eL, navIdToSegments as eM, navParamOf as eN, navToId as eO, normalizeAssetOptions as eP, parentNavId as eQ, parseAddress as eR, parseColor as eS, parsePatternNames as eT, patternValidation as eU, patternsValidation as eV, platformNavWidgets as eW, privateGuard as eX, processImageToSvg as eY, provideAppContext as eZ, provideMagAppConfig as e_, injectInstallApp as ea, injectParentSize as eb, injectScrollSticky as ec, isButtonName as ed, isCancelledComputed as ee, isExtensiblePlatformNavId as ef, isJson as eg, isLoadingComputed as eh, isLocalhost as ei, isNavMenuConfig as ej, isNavRowsConfig as ek, isPlatformNavId as el, isSize as em, isTierPreview as en, isUrlLocalhost as eo, isValidNavId as ep, isValidNavSegment as eq, isWebComponent as er, linkToId as es, linkToNav as et, loadingActions as eu, mInterceptor as ev, manualValidation as ew, matchFieldValidation as ex, maxLengthValidation as ey, maxValidation as ez, AccordionBodyDirective as f, provideMagWcRoutes as f0, provideModalComponents as f1, provideMurlUrlSerializer as f2, provideNavWidgets as f3, provideOverlayWidgets as f4, providePlatformNavWidgets as f5, provideSearch as f6, provideSizeContext as f7, provideUserTabs as f8, publicGuard as f9, toggleTreeGridRow as fA, unfetchedPlatformNav as fB, urlValidation as fC, readFieldPatterns as fa, renderAddress as fb, requiredValidation as fc, resolveConfigAsset as fd, resolveIconSize as fe, resolvePallet as ff, resolvePatternRules as fg, resolveSize as fh, rgbToHex as fi, rgbToHsl as fj, rowHasChildren as fk, samePatterns as fl, segmentsToNavId as fm, setProperty as fn, setTreeGridChildren as fo, settingsWidgets as fp, shouldShowBadge as fq, splitNavId as fr, splitOnMatch as fs, stringToColor as ft, toAttrBool as fu, toAttrNumber as fv, toCssLength as fw, toHostNavId as fx, toLength$1 as fy, toLocalNavId as fz, 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, AuthActivityPageComponent as q, AuthApiService as r, AuthStore as s, AutosizeDirective as t, BadgeComponent as u, BandingComponent as v, BaseArrayInputComponent as w, BaseRootWebComponent as x, BaseWebComponent as y, ButtonGroupComponent as z };
34799
+ //# sourceMappingURL=magmonium-one-magmonium-one-C5whWXef.mjs.map