@magmonium/one 0.4.102 → 0.4.103

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/fesm2022/{magmonium-one-attribute-value-BXEWw7xP.mjs → magmonium-one-attribute-value-D3-h8ve6.mjs} +3 -3
  2. package/fesm2022/{magmonium-one-attribute-value-BXEWw7xP.mjs.map → magmonium-one-attribute-value-D3-h8ve6.mjs.map} +1 -1
  3. package/fesm2022/{magmonium-one-base-checkbox-CIUMxkzu.mjs → magmonium-one-base-checkbox-Bwl2LUSC.mjs} +2 -2
  4. package/fesm2022/{magmonium-one-base-checkbox-CIUMxkzu.mjs.map → magmonium-one-base-checkbox-Bwl2LUSC.mjs.map} +1 -1
  5. package/fesm2022/{magmonium-one-base-dropdown-BMsV5USo.mjs → magmonium-one-base-dropdown-Cw6z6tBU.mjs} +10 -10
  6. package/fesm2022/magmonium-one-base-dropdown-Cw6z6tBU.mjs.map +1 -0
  7. package/fesm2022/{magmonium-one-base-input-BeyBAbV4.mjs → magmonium-one-base-input-BP-CVJlM.mjs} +2 -1
  8. package/fesm2022/{magmonium-one-base-input-BeyBAbV4.mjs.map → magmonium-one-base-input-BP-CVJlM.mjs.map} +1 -1
  9. package/fesm2022/{magmonium-one-base-text-BBeMl8XM.mjs → magmonium-one-base-text-D6Ep6NEn.mjs} +2 -2
  10. package/fesm2022/{magmonium-one-base-text-BBeMl8XM.mjs.map → magmonium-one-base-text-D6Ep6NEn.mjs.map} +1 -1
  11. package/fesm2022/{magmonium-one-button-DC_fLy-J.mjs → magmonium-one-button-CJG1vPHS.mjs} +7 -7
  12. package/fesm2022/{magmonium-one-button-DC_fLy-J.mjs.map → magmonium-one-button-CJG1vPHS.mjs.map} +1 -1
  13. package/fesm2022/{magmonium-one-checkbox-C85FEuTs.mjs → magmonium-one-checkbox-ZM0KfqIQ.mjs} +7 -7
  14. package/fesm2022/magmonium-one-checkbox-ZM0KfqIQ.mjs.map +1 -0
  15. package/fesm2022/{magmonium-one-color-utl-DMLkkE-z.mjs → magmonium-one-color-utl-Bo4uumN1.mjs} +2 -2
  16. package/fesm2022/{magmonium-one-color-utl-DMLkkE-z.mjs.map → magmonium-one-color-utl-Bo4uumN1.mjs.map} +1 -1
  17. package/fesm2022/{magmonium-one-directives-CJK7xDPK.mjs → magmonium-one-directives-BxxQs2S4.mjs} +4 -4
  18. package/fesm2022/{magmonium-one-directives-CJK7xDPK.mjs.map → magmonium-one-directives-BxxQs2S4.mjs.map} +1 -1
  19. package/fesm2022/{magmonium-one-group-qu3xLiI8.mjs → magmonium-one-group-D5QIFnbR.mjs} +7 -7
  20. package/fesm2022/{magmonium-one-group-qu3xLiI8.mjs.map → magmonium-one-group-D5QIFnbR.mjs.map} +1 -1
  21. package/fesm2022/{magmonium-one-header-BC-74GOn.mjs → magmonium-one-header-BGTP8_Uw.mjs} +4 -4
  22. package/fesm2022/{magmonium-one-header-BC-74GOn.mjs.map → magmonium-one-header-BGTP8_Uw.mjs.map} +1 -1
  23. package/fesm2022/{magmonium-one-icon-CXFTG4mD.mjs → magmonium-one-icon-C8FRmxpW.mjs} +4 -4
  24. package/fesm2022/{magmonium-one-icon-CXFTG4mD.mjs.map → magmonium-one-icon-C8FRmxpW.mjs.map} +1 -1
  25. package/fesm2022/{magmonium-one-image-editor-BAF7cdC2.mjs → magmonium-one-image-editor-C4l92aUj.mjs} +4 -4
  26. package/fesm2022/{magmonium-one-image-editor-BAF7cdC2.mjs.map → magmonium-one-image-editor-C4l92aUj.mjs.map} +1 -1
  27. package/fesm2022/{magmonium-one-label-BNxbDSwc.mjs → magmonium-one-label-mLyqV5U_.mjs} +2 -2
  28. package/fesm2022/{magmonium-one-label-BNxbDSwc.mjs.map → magmonium-one-label-mLyqV5U_.mjs.map} +1 -1
  29. package/fesm2022/{magmonium-one-m-ref-CoK96ogW.mjs → magmonium-one-m-ref-DQLJ12Cj.mjs} +2 -2
  30. package/fesm2022/{magmonium-one-m-ref-CoK96ogW.mjs.map → magmonium-one-m-ref-DQLJ12Cj.mjs.map} +1 -1
  31. package/fesm2022/{magmonium-one-menu-D_HAqfel.mjs → magmonium-one-menu-BqT-XVvZ.mjs} +6 -6
  32. package/fesm2022/{magmonium-one-menu-D_HAqfel.mjs.map → magmonium-one-menu-BqT-XVvZ.mjs.map} +1 -1
  33. package/fesm2022/{magmonium-one-multi-range-DqtW4U_x.mjs → magmonium-one-multi-range-BMn1iVZ4.mjs} +5 -4
  34. package/fesm2022/magmonium-one-multi-range-BMn1iVZ4.mjs.map +1 -0
  35. package/fesm2022/{magmonium-one-options-asset-DWjdYQe0.mjs → magmonium-one-options-asset-iITooSr4.mjs} +2 -2
  36. package/fesm2022/{magmonium-one-options-asset-DWjdYQe0.mjs.map → magmonium-one-options-asset-iITooSr4.mjs.map} +1 -1
  37. package/fesm2022/{magmonium-one-otp-DOPvjYJz.mjs → magmonium-one-otp-xQgDDbDC.mjs} +7 -7
  38. package/fesm2022/magmonium-one-otp-xQgDDbDC.mjs.map +1 -0
  39. package/fesm2022/{magmonium-one-password-BqdyEDF6.mjs → magmonium-one-password-lZ5OEevh.mjs} +8 -8
  40. package/fesm2022/magmonium-one-password-lZ5OEevh.mjs.map +1 -0
  41. package/fesm2022/{magmonium-one-radio-DGTbRRXb.mjs → magmonium-one-radio-bTivHHZH.mjs} +3 -3
  42. package/fesm2022/{magmonium-one-radio-DGTbRRXb.mjs.map → magmonium-one-radio-bTivHHZH.mjs.map} +1 -1
  43. package/fesm2022/{magmonium-one-range-Dw4YACtP.mjs → magmonium-one-range-8y-IUMjf.mjs} +4 -4
  44. package/fesm2022/{magmonium-one-range-Dw4YACtP.mjs.map → magmonium-one-range-8y-IUMjf.mjs.map} +1 -1
  45. package/fesm2022/{magmonium-one-selector-QB49Ju9l.mjs → magmonium-one-selector-x0wB0KrY.mjs} +4 -4
  46. package/fesm2022/{magmonium-one-selector-QB49Ju9l.mjs.map → magmonium-one-selector-x0wB0KrY.mjs.map} +1 -1
  47. package/fesm2022/{magmonium-one-text-CMULvvAr.mjs → magmonium-one-text-BTAJl4eW.mjs} +8 -8
  48. package/fesm2022/magmonium-one-text-BTAJl4eW.mjs.map +1 -0
  49. package/fesm2022/{magmonium-one-text-output-DiA4R1pw.mjs → magmonium-one-text-output-DP06NTMe.mjs} +4 -4
  50. package/fesm2022/{magmonium-one-text-output-DiA4R1pw.mjs.map → magmonium-one-text-output-DP06NTMe.mjs.map} +1 -1
  51. package/fesm2022/magmonium-one-theme-LIc0f731.mjs +1 -0
  52. package/fesm2022/{magmonium-one-toggle-sUSXzxMl.mjs → magmonium-one-toggle-CqEqyEtf.mjs} +2 -2
  53. package/fesm2022/{magmonium-one-toggle-sUSXzxMl.mjs.map → magmonium-one-toggle-CqEqyEtf.mjs.map} +1 -1
  54. package/fesm2022/magmonium-one.mjs +60 -60
  55. package/fesm2022/magmonium-one.mjs.map +1 -1
  56. package/package.json +1 -1
  57. package/types/magmonium-one.d.ts +3 -1
  58. package/fesm2022/magmonium-one-base-dropdown-BMsV5USo.mjs.map +0 -1
  59. package/fesm2022/magmonium-one-checkbox-C85FEuTs.mjs.map +0 -1
  60. package/fesm2022/magmonium-one-multi-range-DqtW4U_x.mjs.map +0 -1
  61. package/fesm2022/magmonium-one-otp-DOPvjYJz.mjs.map +0 -1
  62. package/fesm2022/magmonium-one-password-BqdyEDF6.mjs.map +0 -1
  63. package/fesm2022/magmonium-one-text-CMULvvAr.mjs.map +0 -1
  64. package/fesm2022/magmonium-one-theme-DEgFM1wD.mjs +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-text-output-DiA4R1pw.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/text-output/ui/text-output.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { TranslateService } from '../../../services/translate';\nimport { ConfigComponent } from '../../../lib/components/config-component';\nimport { Config } from '../../../type/config/config-type';\nimport { LAYOUT_ASSET_FOLDER } from '../../../enum';\nimport { toAttrBool } from '../../../functions/config/attribute-value';\nimport { resolvePallet } from '../../../lib/theme/lib/color-utl';\n\nexport type TextOutputAlign = 'left' | 'right' | 'center';\n\n// Variants are roles, not styles: each one says what the text is doing on the\n// page, and the Section it sits in decides how big that role renders. Every\n// size below is therefore an `em` multiple of the inherited Section font-size\n// — a `lead` in a compact Section stays proportionally a lead — which is the\n// one rule the plain (undefined) variant keeps by inheriting outright.\n//\n// - `lead` opening paragraph that introduces the block under it\n// - `big` one-line statement — a number, a verdict, a headline that is\n// not a SectionHeader\n// - `bold` emphasis at body size, for the line that must be read first\n// - `footer` annotation under the thing it describes — a field's validation\n// message, a caption, a disclaimer; 0.75 of body, body colour\n// - `footnote` aside the reader may skip — source, legal line, small print;\n// 0.6 of body, body colour\n// - `link` text that goes somewhere on click — an affordance rather than\n// a size, so it is the one role that stays inline, takes focus,\n// and emits `clicked`\n// - `link-small` the same affordance for a link that trails the content it\n// belongs to rather than carrying a line of its own — a \"see\n// all\", an \"edit\" beside a field; body size like `link`\nexport type TextOutputVariant =\n | 'lead'\n | 'big'\n | 'bold'\n | 'footer'\n | 'footnote'\n | 'link'\n | 'link-small';\n\n// Weight tokens of the type scale. Applied after the variant, so it overrides\n// the weight a role implies (`lead` light, `big` semibold, `bold` bold).\nexport type TextOutputFontWeight =\n | 'light'\n | 'normal'\n | 'medium'\n | 'semibold'\n | 'bold';\n\nexport interface TextOutputConfig extends Config {\n label?: string;\n noTranslate?: boolean;\n align?: TextOutputAlign;\n variant?: TextOutputVariant;\n color?: string;\n fontWeight?: TextOutputFontWeight;\n}\n\n@Component({\n selector: 'm-text-output',\n imports: [],\n template: `\n <div\n class=\"m-text-output\"\n [style.color]=\"resolvedColorPallet().color\"\n [innerHTML]=\"html()\"\n ></div>\n `,\n styleUrl: './text-output.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'm-text-output-host',\n '[class.is-design-mode]': 'isDesignMode',\n '[class.align-left]': 'resolvedAlign() === \"left\"',\n '[class.align-right]': 'resolvedAlign() === \"right\"',\n '[class.align-center]': 'resolvedAlign() === \"center\"',\n '[class.variant-lead]': 'resolvedVariant() === \"lead\"',\n '[class.variant-big]': 'resolvedVariant() === \"big\"',\n '[class.variant-bold]': 'resolvedVariant() === \"bold\"',\n '[class.variant-footer]': 'resolvedVariant() === \"footer\"',\n '[class.variant-footnote]': 'resolvedVariant() === \"footnote\"',\n '[class.variant-link]': 'resolvedVariant() === \"link\"',\n '[class.variant-link-small]': 'resolvedVariant() === \"link-small\"',\n '[class.weight-light]': 'resolvedFontWeight() === \"light\"',\n '[class.weight-normal]': 'resolvedFontWeight() === \"normal\"',\n '[class.weight-medium]': 'resolvedFontWeight() === \"medium\"',\n '[class.weight-semibold]': 'resolvedFontWeight() === \"semibold\"',\n '[class.weight-bold]': 'resolvedFontWeight() === \"bold\"',\n '[class.has-color]': '!!(color() ?? config()?.color)',\n '[class.is-truncated]': '!!truncate()',\n // Only a link is reachable and announced as one. Every other variant is a\n // size, and a focus stop on plain text is a tab stop that does nothing.\n '[attr.role]': 'isLink() ? \"link\" : null',\n '[attr.tabindex]': 'isLink() ? 0 : null',\n '(click)': 'onClick()',\n '(keydown.enter)': 'onClick()',\n '[style.--m-text-output-color]': 'resolvedColorPallet().color',\n '[style.--m-text-output-color-contrast]': 'resolvedColorPallet().contrastColor',\n '[style.--m-text-output-color-opposite]': 'resolvedColorPallet().oppositeColor',\n },\n})\nexport class TextOutputComponent extends ConfigComponent<TextOutputConfig> {\n override subFolder = LAYOUT_ASSET_FOLDER.text_output;\n override config = model<Partial<TextOutputConfig>>();\n private readonly translateService = inject(TranslateService);\n\n readonly align = input<TextOutputAlign | undefined>(undefined);\n readonly variant = input<TextOutputVariant | undefined>(undefined);\n // A theme colour key (`error`, `warning`, `success`, …) or a raw CSS colour,\n // resolved the same way an Icon's or a Logo's is so a token follows the\n // active theme instead of freezing one theme's hex into a template.\n readonly color = input<string | undefined>(undefined);\n readonly fontWeight = input<TextOutputFontWeight | undefined>(undefined);\n // `label` is the text itself, so a one-off TextOutput needs no asset behind\n // it (ADR 0010). Numeric display values are stringified before entering the\n // text and translation pipeline.\n readonly label = input<string | number | undefined>(undefined);\n readonly noTranslate = input<boolean | string | undefined>(undefined);\n // Values for the message's `<name>` / `<$name>` placeholders. An input and\n // deliberately not a TextOutputConfig key: an asset is resolved by name and\n // shared across every Control that names it, and these differ per render\n // (ADR 0020). The query-string form (`min_length?len=6`) still works and\n // still loses to this on a shared placeholder, that being the precedence\n // TranslateService already had. Bind a named member — an object literal in a\n // template is refused by `no-inline-config` (ADR 0010).\n readonly params = input<Record<string, string> | undefined>(undefined);\n // One line, cut with an ellipsis at the box's edge rather than wrapping or\n // spilling into a neighbour. For text whose length says nothing about the\n // layout — a bound path drawn as `{store.a.b.c}` on the design Canvas.\n readonly truncate = input<boolean | undefined>(undefined);\n\n readonly resolvedAlign = computed<TextOutputAlign>(\n () => this.align() ?? this.config()?.align ?? 'left'\n );\n\n protected readonly resolvedVariant = computed<TextOutputVariant | undefined>(\n () => this.variant() ?? this.config()?.variant\n );\n\n protected readonly resolvedFontWeight = computed<\n TextOutputFontWeight | undefined\n >(() => this.fontWeight() ?? this.config()?.fontWeight);\n\n // Both link roles are the same affordance, so both take the focus stop, the\n // `role=\"link\"` and the `clicked` output; only their size differs.\n protected readonly isLink = computed(() => {\n const variant = this.resolvedVariant();\n return variant === 'link' || variant === 'link-small';\n });\n\n /**\n * Fired by a `link` variant and by nothing else. A text that is not a link\n * draws no affordance and takes no focus, so a click on it is a click on\n * prose — emitting there would be a control only a mouse could find.\n *\n * Where the link goes to a route instead, the caller attaches `routerLink`\n * and binds nothing here: one click means one thing.\n */\n readonly clicked = output<void>();\n\n protected onClick(): void {\n if (this.isLink()) this.clicked.emit();\n }\n\n protected readonly resolvedColorPallet = computed(() =>\n resolvePallet(\n this.color() ?? this.config()?.color ?? this.defaultColor,\n this.themeStore.color()\n )\n );\n\n protected override resolveComponentOverrides(): Partial<TextOutputConfig> {\n const overrides: Partial<TextOutputConfig> = {};\n const align = this.align();\n if (align !== undefined) overrides.align = align;\n const label = this.label();\n if (label !== undefined) overrides.label = String(label);\n const noTranslate = toAttrBool(this.noTranslate());\n if (noTranslate !== undefined) overrides.noTranslate = noTranslate;\n const variant = this.variant();\n if (variant !== undefined) overrides.variant = variant;\n const color = this.color();\n if (color !== undefined) overrides.color = color;\n const fontWeight = this.fontWeight();\n if (fontWeight !== undefined) overrides.fontWeight = fontWeight;\n return overrides;\n }\n\n protected readonly resolvedLabel = computed(() => this.config()?.label);\n protected readonly shouldTranslate = computed(\n () => !this.config()?.noTranslate\n );\n protected readonly html = computed(() => {\n const label = this.resolvedLabel();\n return this.shouldTranslate()\n ? this.translateService.translateToHtml(label, this.params())\n : this.translateService.toSafeHtml(label);\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"magmonium-one-text-output-DP06NTMe.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/text-output/ui/text-output.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport { TranslateService } from '../../../services/translate';\nimport { ConfigComponent } from '../../../lib/components/config-component';\nimport { Config } from '../../../type/config/config-type';\nimport { LAYOUT_ASSET_FOLDER } from '../../../enum';\nimport { toAttrBool } from '../../../functions/config/attribute-value';\nimport { resolvePallet } from '../../../lib/theme/lib/color-utl';\n\nexport type TextOutputAlign = 'left' | 'right' | 'center';\n\n// Variants are roles, not styles: each one says what the text is doing on the\n// page, and the Section it sits in decides how big that role renders. Every\n// size below is therefore an `em` multiple of the inherited Section font-size\n// — a `lead` in a compact Section stays proportionally a lead — which is the\n// one rule the plain (undefined) variant keeps by inheriting outright.\n//\n// - `lead` opening paragraph that introduces the block under it\n// - `big` one-line statement — a number, a verdict, a headline that is\n// not a SectionHeader\n// - `bold` emphasis at body size, for the line that must be read first\n// - `footer` annotation under the thing it describes — a field's validation\n// message, a caption, a disclaimer; 0.75 of body, body colour\n// - `footnote` aside the reader may skip — source, legal line, small print;\n// 0.6 of body, body colour\n// - `link` text that goes somewhere on click — an affordance rather than\n// a size, so it is the one role that stays inline, takes focus,\n// and emits `clicked`\n// - `link-small` the same affordance for a link that trails the content it\n// belongs to rather than carrying a line of its own — a \"see\n// all\", an \"edit\" beside a field; body size like `link`\nexport type TextOutputVariant =\n | 'lead'\n | 'big'\n | 'bold'\n | 'footer'\n | 'footnote'\n | 'link'\n | 'link-small';\n\n// Weight tokens of the type scale. Applied after the variant, so it overrides\n// the weight a role implies (`lead` light, `big` semibold, `bold` bold).\nexport type TextOutputFontWeight =\n | 'light'\n | 'normal'\n | 'medium'\n | 'semibold'\n | 'bold';\n\nexport interface TextOutputConfig extends Config {\n label?: string;\n noTranslate?: boolean;\n align?: TextOutputAlign;\n variant?: TextOutputVariant;\n color?: string;\n fontWeight?: TextOutputFontWeight;\n}\n\n@Component({\n selector: 'm-text-output',\n imports: [],\n template: `\n <div\n class=\"m-text-output\"\n [style.color]=\"resolvedColorPallet().color\"\n [innerHTML]=\"html()\"\n ></div>\n `,\n styleUrl: './text-output.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'm-text-output-host',\n '[class.is-design-mode]': 'isDesignMode',\n '[class.align-left]': 'resolvedAlign() === \"left\"',\n '[class.align-right]': 'resolvedAlign() === \"right\"',\n '[class.align-center]': 'resolvedAlign() === \"center\"',\n '[class.variant-lead]': 'resolvedVariant() === \"lead\"',\n '[class.variant-big]': 'resolvedVariant() === \"big\"',\n '[class.variant-bold]': 'resolvedVariant() === \"bold\"',\n '[class.variant-footer]': 'resolvedVariant() === \"footer\"',\n '[class.variant-footnote]': 'resolvedVariant() === \"footnote\"',\n '[class.variant-link]': 'resolvedVariant() === \"link\"',\n '[class.variant-link-small]': 'resolvedVariant() === \"link-small\"',\n '[class.weight-light]': 'resolvedFontWeight() === \"light\"',\n '[class.weight-normal]': 'resolvedFontWeight() === \"normal\"',\n '[class.weight-medium]': 'resolvedFontWeight() === \"medium\"',\n '[class.weight-semibold]': 'resolvedFontWeight() === \"semibold\"',\n '[class.weight-bold]': 'resolvedFontWeight() === \"bold\"',\n '[class.has-color]': '!!(color() ?? config()?.color)',\n '[class.is-truncated]': '!!truncate()',\n // Only a link is reachable and announced as one. Every other variant is a\n // size, and a focus stop on plain text is a tab stop that does nothing.\n '[attr.role]': 'isLink() ? \"link\" : null',\n '[attr.tabindex]': 'isLink() ? 0 : null',\n '(click)': 'onClick()',\n '(keydown.enter)': 'onClick()',\n '[style.--m-text-output-color]': 'resolvedColorPallet().color',\n '[style.--m-text-output-color-contrast]': 'resolvedColorPallet().contrastColor',\n '[style.--m-text-output-color-opposite]': 'resolvedColorPallet().oppositeColor',\n },\n})\nexport class TextOutputComponent extends ConfigComponent<TextOutputConfig> {\n override subFolder = LAYOUT_ASSET_FOLDER.text_output;\n override config = model<Partial<TextOutputConfig>>();\n private readonly translateService = inject(TranslateService);\n\n readonly align = input<TextOutputAlign | undefined>(undefined);\n readonly variant = input<TextOutputVariant | undefined>(undefined);\n // A theme colour key (`error`, `warning`, `success`, …) or a raw CSS colour,\n // resolved the same way an Icon's or a Logo's is so a token follows the\n // active theme instead of freezing one theme's hex into a template.\n readonly color = input<string | undefined>(undefined);\n readonly fontWeight = input<TextOutputFontWeight | undefined>(undefined);\n // `label` is the text itself, so a one-off TextOutput needs no asset behind\n // it (ADR 0010). Numeric display values are stringified before entering the\n // text and translation pipeline.\n readonly label = input<string | number | undefined>(undefined);\n readonly noTranslate = input<boolean | string | undefined>(undefined);\n // Values for the message's `<name>` / `<$name>` placeholders. An input and\n // deliberately not a TextOutputConfig key: an asset is resolved by name and\n // shared across every Control that names it, and these differ per render\n // (ADR 0020). The query-string form (`min_length?len=6`) still works and\n // still loses to this on a shared placeholder, that being the precedence\n // TranslateService already had. Bind a named member — an object literal in a\n // template is refused by `no-inline-config` (ADR 0010).\n readonly params = input<Record<string, string> | undefined>(undefined);\n // One line, cut with an ellipsis at the box's edge rather than wrapping or\n // spilling into a neighbour. For text whose length says nothing about the\n // layout — a bound path drawn as `{store.a.b.c}` on the design Canvas.\n readonly truncate = input<boolean | undefined>(undefined);\n\n readonly resolvedAlign = computed<TextOutputAlign>(\n () => this.align() ?? this.config()?.align ?? 'left'\n );\n\n protected readonly resolvedVariant = computed<TextOutputVariant | undefined>(\n () => this.variant() ?? this.config()?.variant\n );\n\n protected readonly resolvedFontWeight = computed<\n TextOutputFontWeight | undefined\n >(() => this.fontWeight() ?? this.config()?.fontWeight);\n\n // Both link roles are the same affordance, so both take the focus stop, the\n // `role=\"link\"` and the `clicked` output; only their size differs.\n protected readonly isLink = computed(() => {\n const variant = this.resolvedVariant();\n return variant === 'link' || variant === 'link-small';\n });\n\n /**\n * Fired by a `link` variant and by nothing else. A text that is not a link\n * draws no affordance and takes no focus, so a click on it is a click on\n * prose — emitting there would be a control only a mouse could find.\n *\n * Where the link goes to a route instead, the caller attaches `routerLink`\n * and binds nothing here: one click means one thing.\n */\n readonly clicked = output<void>();\n\n protected onClick(): void {\n if (this.isLink()) this.clicked.emit();\n }\n\n protected readonly resolvedColorPallet = computed(() =>\n resolvePallet(\n this.color() ?? this.config()?.color ?? this.defaultColor,\n this.themeStore.color()\n )\n );\n\n protected override resolveComponentOverrides(): Partial<TextOutputConfig> {\n const overrides: Partial<TextOutputConfig> = {};\n const align = this.align();\n if (align !== undefined) overrides.align = align;\n const label = this.label();\n if (label !== undefined) overrides.label = String(label);\n const noTranslate = toAttrBool(this.noTranslate());\n if (noTranslate !== undefined) overrides.noTranslate = noTranslate;\n const variant = this.variant();\n if (variant !== undefined) overrides.variant = variant;\n const color = this.color();\n if (color !== undefined) overrides.color = color;\n const fontWeight = this.fontWeight();\n if (fontWeight !== undefined) overrides.fontWeight = fontWeight;\n return overrides;\n }\n\n protected readonly resolvedLabel = computed(() => this.config()?.label);\n protected readonly shouldTranslate = computed(\n () => !this.config()?.noTranslate\n );\n protected readonly html = computed(() => {\n const label = this.resolvedLabel();\n return this.shouldTranslate()\n ? this.translateService.translateToHtml(label, this.params())\n : this.translateService.toSafeHtml(label);\n });\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "./magmonium-one-color-utl-Bo4uumN1.mjs";
@@ -1,4 +1,4 @@
1
- import { t as BaseInputComponent, u as TranslatePipe } from "./magmonium-one-base-input-BeyBAbV4.mjs";
1
+ import { t as BaseInputComponent, u as TranslatePipe } from "./magmonium-one-base-input-BP-CVJlM.mjs";
2
2
  import * as i0 from "@angular/core";
3
3
  import { ChangeDetectionStrategy, Component, input, model } from "@angular/core";
4
4
  var ToggleInputComponent = class ToggleInputComponent extends BaseInputComponent {
@@ -226,4 +226,4 @@ i0.ɵɵngDeclareClassMetadata({
226
226
  });
227
227
  export { ToggleInputComponent };
228
228
 
229
- //# sourceMappingURL=magmonium-one-toggle-sUSXzxMl.mjs.map
229
+ //# sourceMappingURL=magmonium-one-toggle-CqEqyEtf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"magmonium-one-toggle-sUSXzxMl.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/toggle/toggle.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n ModelSignal,\n} from '@angular/core';\nimport { ToggleInput } from '../../model/input';\nimport { TranslatePipe } from '../../../../pipe/translate';\nimport {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { BaseInputComponent } from '../../lib/base-input';\n\n@Component({\n selector: 'm-toggle-input',\n template: `\n @if (config(); as toggle) {\n <div class=\"toggle\">\n <input\n [id]=\"toggle.name ?? ''\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n type=\"checkbox\"\n />\n <label [attr.for]=\"toggle.name || null\">{{\n toggle.label | translate\n }}</label>\n </div>\n }\n `,\n imports: [TranslatePipe],\n styleUrl: './toggle.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleInputComponent\n extends BaseInputComponent<ToggleInput>\n implements FormCheckboxControl\n{\n public value = undefined;\n public checked = model<boolean>(false) as ModelSignal<boolean>;\n public override config = input<Partial<ToggleInput> | undefined>();\n public override required = input<boolean>(false);\n public override disabled = input<boolean>(false);\n public override invalid = input<boolean>(false);\n public override touched = model<boolean>(false);\n public override focused = input<boolean>(false);\n public override errors = input<readonly WithOptionalFieldTree<ValidationError>[]>(\n []\n );\n\n /** Required by FormCheckboxControl interface */\n // public readonly checked: ModelSignal<boolean> = this.value; // Already defined above\n\n constructor() {\n super();\n }\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target?.checked ?? false);\n }\n}\n"],"mappings":";;;AAqCA,IAAa,uBAAb,MAAa,6BACH,mBAA+B;CAGhC,QAAQ;CACR,UAAU,MAAe,KAAK;CACrB,SAAS,MAAyC,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAClD,WAAW,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,WAAW,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,SAAS,MACvB,CAAA,GACD,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAKD,cAAA;EACE,MAAK;CACP;CAEU,SAAS,OAAY;EAC7B,MAAM,SAAS,MAAM;EACrB,KAAK,QAAQ,IAAI,QAAQ,WAAW,KAAK;CAC3C;CA1BW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA;GAAA,SAAA;GAAA,SAAA;EAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UAnBrB;;;;;;;;;;;;;;;EAcT,UAAA;EAAA,QAAA,CAAA,+6GAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MACS;GAAa,MAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EArBhC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAgB,UAChB;;;;;;;;;;;;;;;GAcT,SACQ,CAAC,aAAa;GAAC,iBAEP,wBAAwB;GAAM,QAAA,CAAA,+6GAAA;EAAA,CAAA"}
1
+ {"version":3,"file":"magmonium-one-toggle-CqEqyEtf.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/toggle/toggle.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n input,\n model,\n ModelSignal,\n} from '@angular/core';\nimport { ToggleInput } from '../../model/input';\nimport { TranslatePipe } from '../../../../pipe/translate';\nimport {\n FormCheckboxControl,\n ValidationError,\n WithOptionalFieldTree,\n} from '@angular/forms/signals';\nimport { BaseInputComponent } from '../../lib/base-input';\n\n@Component({\n selector: 'm-toggle-input',\n template: `\n @if (config(); as toggle) {\n <div class=\"toggle\">\n <input\n [id]=\"toggle.name ?? ''\"\n [checked]=\"checked()\"\n (change)=\"onChange($event)\"\n type=\"checkbox\"\n />\n <label [attr.for]=\"toggle.name || null\">{{\n toggle.label | translate\n }}</label>\n </div>\n }\n `,\n imports: [TranslatePipe],\n styleUrl: './toggle.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ToggleInputComponent\n extends BaseInputComponent<ToggleInput>\n implements FormCheckboxControl\n{\n public value = undefined;\n public checked = model<boolean>(false) as ModelSignal<boolean>;\n public override config = input<Partial<ToggleInput> | undefined>();\n public override required = input<boolean>(false);\n public override disabled = input<boolean>(false);\n public override invalid = input<boolean>(false);\n public override touched = model<boolean>(false);\n public override focused = input<boolean>(false);\n public override errors = input<readonly WithOptionalFieldTree<ValidationError>[]>(\n []\n );\n\n /** Required by FormCheckboxControl interface */\n // public readonly checked: ModelSignal<boolean> = this.value; // Already defined above\n\n constructor() {\n super();\n }\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.checked.set(target?.checked ?? false);\n }\n}\n"],"mappings":";;;AAqCA,IAAa,uBAAb,MAAa,6BACH,mBAA+B;CAGhC,QAAQ;CACR,UAAU,MAAe,KAAK;CACrB,SAAS,MAAyC,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAClD,WAAW,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,WAAW,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAChC,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,UAAU,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CAC/B,SAAS,MACvB,CAAA,GACD,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CAKD,cAAA;EACE,MAAK;CACP;CAEU,SAAS,OAAY;EAC7B,MAAM,SAAS,MAAM;EACrB,KAAK,QAAQ,IAAI,QAAQ,WAAW,KAAK;CAC3C;CA1BW,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAoB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAApB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAoB,cAAA;EAAA,UAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA;GAAA,SAAA;GAAA,SAAA;EAAA;EAAA,iBAAA;EAAA,UAAA;EAAA,UAnBrB;;;;;;;;;;;;;;;EAcT,UAAA;EAAA,QAAA,CAAA,+6GAAA;EAAA,cAAA,CAAA;GAAA,MAAA;GAAA,MACS;GAAa,MAAA;EAAA,CAAA;EAAA,iBAAA,GAAA,wBAAA;CAAA,CAAA;;AAIZ,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EArBhC,MAAA;EACW,MAAA,CAAA;GAAA,UAAA;GAAgB,UAChB;;;;;;;;;;;;;;;GAcT,SACQ,CAAC,aAAa;GAAC,iBAEP,wBAAwB;GAAM,QAAA,CAAA,+6GAAA;EAAA,CAAA"}
@@ -1,29 +1,29 @@
1
1
  import { t as __exportAll } from "./magmonium-one-rolldown-runtime-DpJrqANO.mjs";
2
- import { $ as OPTIONS_SOURCE, A as wcTierOf, B as AppRelationType, C as buildWcBaseUrl, D as setWcLocalPort, E as recordDefinedWcTier, F as isWebComponent, G as IS_DESIGN_MODE, H as FOLDER_PICK_LISTENER, I as APP_CONTEXT_REF, J as LOGIN_COMPONENT, K as IS_SIDE_PANEL, L as APP_LINK, M as isLocalhost, N as isTierPreview, O as setWcTier, P as isUrlLocalhost, Q as ONE_ASSET_BASE_URL, R as ASSET_BASE_URL, S as HttpService, T as definedWcTierOf, U as HOST_SESSION, V as COMPONENT_INPUT_REGISTRY, W as ICON_SOURCE, X as MODAL_STORE_REF, Y as LOGIN_STORE, Z as NAV_STORE_REF, _ as AssetStore, a as resolveIconSize, at as WC_SEARCH_GROUPS, b as isJson, c as toCssLength, ct as Assets, d as TranslateService, et as SEARCH_QUERY, f as BrowserLocaleService, g as miniMarkToHtml, h as miniMarkInlineToHtml, i as isSize, it as WC_BUNDLE, j as getTierFromPreviewPath, k as wcLocalBaseOf, l as toLength, lt as DEFAULT_SIZE, m as escapeHtml, nt as TRANSLATION_SOURCE, o as resolveSize, ot as FORM_ASSET_FOLDER, p as browserLocale, q as LOADING_ACTIONS_REF, r as coerceSize, rt as USER_STORE_REF, s as resolveSpacing, st as LAYOUT_ASSET_FOLDER, t as BaseInputComponent, tt as SEARCH_RESULTS_EVENT, u as TranslatePipe, ut as Size, v as SharedStoreRegistry, w as definedWcBundleOf, x as ACCESS_DOMAINS, y as StorageService, z as AppAvailability } from "./magmonium-one-base-input-BeyBAbV4.mjs";
3
- import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-QB49Ju9l.mjs";
2
+ import { $ as OPTIONS_SOURCE, A as wcTierOf, B as AppRelationType, C as buildWcBaseUrl, D as setWcLocalPort, E as recordDefinedWcTier, F as isWebComponent, G as IS_DESIGN_MODE, H as FOLDER_PICK_LISTENER, I as APP_CONTEXT_REF, J as LOGIN_COMPONENT, K as IS_SIDE_PANEL, L as APP_LINK, M as isLocalhost, N as isTierPreview, O as setWcTier, P as isUrlLocalhost, Q as ONE_ASSET_BASE_URL, R as ASSET_BASE_URL, S as HttpService, T as definedWcTierOf, U as HOST_SESSION, V as COMPONENT_INPUT_REGISTRY, W as ICON_SOURCE, X as MODAL_STORE_REF, Y as LOGIN_STORE, Z as NAV_STORE_REF, _ as AssetStore, a as resolveIconSize, at as WC_SEARCH_GROUPS, b as isJson, c as toCssLength, ct as Assets, d as TranslateService, et as SEARCH_QUERY, f as BrowserLocaleService, g as miniMarkToHtml, h as miniMarkInlineToHtml, i as isSize, it as WC_BUNDLE, j as getTierFromPreviewPath, k as wcLocalBaseOf, l as toLength, lt as DEFAULT_SIZE, m as escapeHtml, nt as TRANSLATION_SOURCE, o as resolveSize, ot as FORM_ASSET_FOLDER, p as browserLocale, q as LOADING_ACTIONS_REF, r as coerceSize, rt as USER_STORE_REF, s as resolveSpacing, st as LAYOUT_ASSET_FOLDER, t as BaseInputComponent, tt as SEARCH_RESULTS_EVENT, u as TranslatePipe, ut as Size, v as SharedStoreRegistry, w as definedWcBundleOf, x as ACCESS_DOMAINS, y as StorageService, z as AppAvailability } from "./magmonium-one-base-input-BP-CVJlM.mjs";
3
+ import { a as OverlayService, c as DeviceService, i as OverlayRef, n as Direction, o as ScrollService, r as ThemeService, s as DomService, t as SelectorDirective } from "./magmonium-one-selector-x0wB0KrY.mjs";
4
4
  import { t as FileService } from "./magmonium-one-file.service-D39FjShR.mjs";
5
- import { C as isLightAppColor, D as readableAppColor, E as normalizeAppColor, O as rebuildLogoGlyph, S as appLogoShadowColor, T as logoGlyphMaskUrl, _ as AppLogoState, a as calculateLuminance, b as LOGO_GLYPH_MAX_BYTES, c as hexToRgb, d as derivePropertyName, f as getProperty, g as APP_THEME_COLOR, h as APP_LOGO_SOURCE, i as deriveOppositeColor, k as ThemeDataService, l as hslToRgb, m as ThemeStore, n as resolvePallet, o as rgbToHex, p as setProperty, r as deriveContrastColor, s as rgbToHsl, t as applyColorsToElement, u as parseColor, v as appThemeColorFactory, w as isReadableOn, x as appColorBrand, y as paintAppColor } from "./magmonium-one-color-utl-DMLkkE-z.mjs";
6
- import "./magmonium-one-theme-DEgFM1wD.mjs";
7
- import { _ as TimeAgoPipe, a as nextSectionTableSort, c as sectionTableFrozenCount, d as SectionTableSortDirection, f as AssetUrlPipe, g as MoneyPipe, h as PercentagePipe, i as defaultSectionTableSort, l as sortSectionTableRows, m as SignColorPipe, n as ToListPipe, o as sectionTableColumnId, p as CompactNumberPipe, r as SectionTableSortPipe, s as sectionTableColumnWidths, t as LabelComponent, u as SECTION_TABLE_VARIANTS } from "./magmonium-one-label-BNxbDSwc.mjs";
8
- import { a as SIZE_CONTEXT, c as SHARED_ICONS, i as APP_LOGO_ICON, n as CustomIconClass, o as injectParentSize, r as IconComponent, s as provideSizeContext, t as CustomIconEditComponent } from "./magmonium-one-icon-CXFTG4mD.mjs";
9
- import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-BXEWw7xP.mjs";
10
- import { a as ACTION_BUTTON_HOST, c as isButtonName, d as BadgeComponent, f as formatBadgeCount, i as BUTTON_GROUP_HOST, l as enumValue, n as SECTION_FORM_CONTEXT, p as shouldShowBadge, r as ImgComponent, s as actionName, t as ButtonComponent, u as ReactiveElementComponent } from "./magmonium-one-button-DC_fLy-J.mjs";
11
- import { t as MRefDirective } from "./magmonium-one-m-ref-CoK96ogW.mjs";
12
- import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-DWjdYQe0.mjs";
5
+ import { C as isLightAppColor, D as readableAppColor, E as normalizeAppColor, O as rebuildLogoGlyph, S as appLogoShadowColor, T as logoGlyphMaskUrl, _ as AppLogoState, a as calculateLuminance, b as LOGO_GLYPH_MAX_BYTES, c as hexToRgb, d as derivePropertyName, f as getProperty, g as APP_THEME_COLOR, h as APP_LOGO_SOURCE, i as deriveOppositeColor, k as ThemeDataService, l as hslToRgb, m as ThemeStore, n as resolvePallet, o as rgbToHex, p as setProperty, r as deriveContrastColor, s as rgbToHsl, t as applyColorsToElement, u as parseColor, v as appThemeColorFactory, w as isReadableOn, x as appColorBrand, y as paintAppColor } from "./magmonium-one-color-utl-Bo4uumN1.mjs";
6
+ import "./magmonium-one-theme-LIc0f731.mjs";
7
+ import { _ as TimeAgoPipe, a as nextSectionTableSort, c as sectionTableFrozenCount, d as SectionTableSortDirection, f as AssetUrlPipe, g as MoneyPipe, h as PercentagePipe, i as defaultSectionTableSort, l as sortSectionTableRows, m as SignColorPipe, n as ToListPipe, o as sectionTableColumnId, p as CompactNumberPipe, r as SectionTableSortPipe, s as sectionTableColumnWidths, t as LabelComponent, u as SECTION_TABLE_VARIANTS } from "./magmonium-one-label-mLyqV5U_.mjs";
8
+ import { a as SIZE_CONTEXT, c as SHARED_ICONS, i as APP_LOGO_ICON, n as CustomIconClass, o as injectParentSize, r as IconComponent, s as provideSizeContext, t as CustomIconEditComponent } from "./magmonium-one-icon-C8FRmxpW.mjs";
9
+ import { i as resolveConfigAsset, n as toAttrNumber, r as ConfigComponent, t as toAttrBool } from "./magmonium-one-attribute-value-D3-h8ve6.mjs";
10
+ import { a as ACTION_BUTTON_HOST, c as isButtonName, d as BadgeComponent, f as formatBadgeCount, i as BUTTON_GROUP_HOST, l as enumValue, n as SECTION_FORM_CONTEXT, p as shouldShowBadge, r as ImgComponent, s as actionName, t as ButtonComponent, u as ReactiveElementComponent } from "./magmonium-one-button-CJG1vPHS.mjs";
11
+ import { t as MRefDirective } from "./magmonium-one-m-ref-DQLJ12Cj.mjs";
12
+ import { i as OptionsSourceDirective, n as normalizeAssetOptions, r as presetDefaultOption, t as assetOptions } from "./magmonium-one-options-asset-iITooSr4.mjs";
13
13
  import { t as InputType } from "./magmonium-one-input-DqHPorA1.mjs";
14
- import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-C85FEuTs.mjs";
15
- import { a as ToolTipDirective, c as DragListItemDirective, d as MarginDirective, f as PaddingDirective, i as PositionDirective, l as DragListDirective, n as stringToColor, o as FileUploadDirective, p as SPACING_INWARD, r as HighlightDirective, s as AutosizeDirective, t as MHeroColorDirective, u as DraggableDirective } from "./magmonium-one-directives-CJK7xDPK.mjs";
16
- import { t as HeaderComponent } from "./magmonium-one-header-BC-74GOn.mjs";
17
- import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-qu3xLiI8.mjs";
18
- import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-D_HAqfel.mjs";
19
- import { i as getScrollParent, n as activeElementWithin, r as classListSignal, t as BaseTextInputComponent } from "./magmonium-one-base-text-BBeMl8XM.mjs";
20
- import { t as TextOutputComponent } from "./magmonium-one-text-output-DiA4R1pw.mjs";
21
- import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-CIUMxkzu.mjs";
22
- import { t as RadioInputComponent } from "./magmonium-one-radio-DGTbRRXb.mjs";
23
- import { t as TextInputComponent } from "./magmonium-one-text-CMULvvAr.mjs";
24
- import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-DqtW4U_x.mjs";
25
- import { t as RangeInputComponent } from "./magmonium-one-range-Dw4YACtP.mjs";
26
- import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-BMsV5USo.mjs";
14
+ import { r as PLACED_CHECKBOX, t as CheckboxInputComponent } from "./magmonium-one-checkbox-ZM0KfqIQ.mjs";
15
+ import { a as ToolTipDirective, c as DragListItemDirective, d as MarginDirective, f as PaddingDirective, i as PositionDirective, l as DragListDirective, n as stringToColor, o as FileUploadDirective, p as SPACING_INWARD, r as HighlightDirective, s as AutosizeDirective, t as MHeroColorDirective, u as DraggableDirective } from "./magmonium-one-directives-BxxQs2S4.mjs";
16
+ import { t as HeaderComponent } from "./magmonium-one-header-BGTP8_Uw.mjs";
17
+ import { i as mergeUniqueWith, n as mergeUnique, r as mergeUniqueBy, t as ButtonGroupComponent } from "./magmonium-one-group-D5QIFnbR.mjs";
18
+ import { n as ContextMenuBoxComponent, r as MenuComponent, t as ContextMenuComponent } from "./magmonium-one-menu-BqT-XVvZ.mjs";
19
+ import { i as getScrollParent, n as activeElementWithin, r as classListSignal, t as BaseTextInputComponent } from "./magmonium-one-base-text-D6Ep6NEn.mjs";
20
+ import { t as TextOutputComponent } from "./magmonium-one-text-output-DP06NTMe.mjs";
21
+ import { t as BaseCheckboxInputComponent } from "./magmonium-one-base-checkbox-Bwl2LUSC.mjs";
22
+ import { t as RadioInputComponent } from "./magmonium-one-radio-bTivHHZH.mjs";
23
+ import { t as TextInputComponent } from "./magmonium-one-text-BTAJl4eW.mjs";
24
+ import { r as BaseArrayInputComponent, t as MultiRangeInputComponent } from "./magmonium-one-multi-range-BMn1iVZ4.mjs";
25
+ import { t as RangeInputComponent } from "./magmonium-one-range-8y-IUMjf.mjs";
26
+ import { n as DROPDOWN_IMPORTS, r as DROPDOWN_TEMPLATE, t as BaseDropdownComponent } from "./magmonium-one-base-dropdown-Cw6z6tBU.mjs";
27
27
  import { o as isEditableImage, s as outputSize } from "./magmonium-one-image-frame-BTSaUSAi.mjs";
28
28
  import * as i0 from "@angular/core";
29
29
  import { ApplicationRef, CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, DOCUMENT, DestroyRef, Directive, ElementRef, EventEmitter, HostAttributeToken, HostBinding, HostListener, Injectable, InjectionToken, Injector, Input, LOCALE_ID, Output, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, afterEveryRender, afterNextRender, afterRenderEffect, booleanAttribute, computed, contentChild, contentChildren, createComponent, effect, forwardRef, inject, input, inputBinding, linkedSignal, makeEnvironmentProviders, model, numberAttribute, output, outputBinding, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection, reflectComponentType, runInInjectionContext, signal, twoWayBinding, untracked, viewChild, viewChildren } from "@angular/core";
@@ -743,12 +743,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
743
743
  try {
744
744
  switch (type) {
745
745
  case InputType.RADIO: {
746
- const { RadioInputComponent } = await import("./magmonium-one-radio-DGTbRRXb.mjs").then((n) => n.n);
746
+ const { RadioInputComponent } = await import("./magmonium-one-radio-bTivHHZH.mjs").then((n) => n.n);
747
747
  this.createDynamicComponent(seq, RadioInputComponent);
748
748
  break;
749
749
  }
750
750
  case InputType.TOGGLE: {
751
- const { ToggleInputComponent } = await import("./magmonium-one-toggle-sUSXzxMl.mjs");
751
+ const { ToggleInputComponent } = await import("./magmonium-one-toggle-CqEqyEtf.mjs");
752
752
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
753
753
  break;
754
754
  }
@@ -758,12 +758,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
758
758
  break;
759
759
  }
760
760
  case InputType.PASSWORD: {
761
- const { PasswordInputComponent } = await import("./magmonium-one-password-BqdyEDF6.mjs");
761
+ const { PasswordInputComponent } = await import("./magmonium-one-password-lZ5OEevh.mjs");
762
762
  this.createDynamicComponent(seq, PasswordInputComponent);
763
763
  break;
764
764
  }
765
765
  case InputType.OTP: {
766
- const { OtpInputComponent } = await import("./magmonium-one-otp-DOPvjYJz.mjs");
766
+ const { OtpInputComponent } = await import("./magmonium-one-otp-xQgDDbDC.mjs");
767
767
  this.createDynamicComponent(seq, OtpInputComponent);
768
768
  break;
769
769
  }
@@ -773,7 +773,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
773
773
  break;
774
774
  }
775
775
  case InputType.CHECKBOX: {
776
- const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-C85FEuTs.mjs").then((n) => n.n);
776
+ const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-ZM0KfqIQ.mjs").then((n) => n.n);
777
777
  this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
778
778
  break;
779
779
  }
@@ -788,12 +788,12 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
788
788
  break;
789
789
  }
790
790
  case InputType.RANGE: {
791
- const { RangeInputComponent } = await import("./magmonium-one-range-Dw4YACtP.mjs").then((n) => n.n);
791
+ const { RangeInputComponent } = await import("./magmonium-one-range-8y-IUMjf.mjs").then((n) => n.n);
792
792
  this.createDynamicComponent(seq, RangeInputComponent);
793
793
  break;
794
794
  }
795
795
  case InputType.MULTI_RANGE: {
796
- const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-DqtW4U_x.mjs").then((n) => n.n);
796
+ const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-BMn1iVZ4.mjs").then((n) => n.n);
797
797
  this.createDynamicComponent(seq, MultiRangeInputComponent);
798
798
  break;
799
799
  }
@@ -844,7 +844,7 @@ var SectionFormItemComponent = class SectionFormItemComponent extends ConfigComp
844
844
  break;
845
845
  }
846
846
  default: {
847
- const { TextInputComponent } = await import("./magmonium-one-text-CMULvvAr.mjs").then((n) => n.n);
847
+ const { TextInputComponent } = await import("./magmonium-one-text-BTAJl4eW.mjs").then((n) => n.n);
848
848
  this.createDynamicComponent(seq, TextInputComponent);
849
849
  break;
850
850
  }
@@ -4026,7 +4026,7 @@ var ClearableInputComponent = class ClearableInputComponent extends BaseTextInpu
4026
4026
  }
4027
4027
  </div>
4028
4028
  @if (showErrors()) {
4029
- @for (error of errors(); track $index) {
4029
+ @if (shownError(); as error) {
4030
4030
  <m-text-output
4031
4031
  variant="footer"
4032
4032
  color="error"
@@ -4180,7 +4180,7 @@ i0.ɵɵngDeclareClassMetadata({
4180
4180
  }
4181
4181
  </div>
4182
4182
  @if (showErrors()) {
4183
- @for (error of errors(); track $index) {
4183
+ @if (shownError(); as error) {
4184
4184
  <m-text-output
4185
4185
  variant="footer"
4186
4186
  color="error"
@@ -12264,7 +12264,7 @@ var DropdownInputComponent = class DropdownInputComponent extends BaseDropdownCo
12264
12264
  outputs: { value: "valueChange" },
12265
12265
  usesInheritance: true,
12266
12266
  ngImport: i0,
12267
- template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n",
12267
+ template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @if (shownError(); as error) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n",
12268
12268
  isInline: true,
12269
12269
  styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"],
12270
12270
  dependencies: [
@@ -20630,7 +20630,7 @@ var TextareaInputComponent = class TextareaInputComponent extends BaseTextInputC
20630
20630
  ></textarea>
20631
20631
  </div>
20632
20632
  @if (showErrors()) {
20633
- @for (error of errors(); track $index) {
20633
+ @if (shownError(); as error) {
20634
20634
  <m-text-output
20635
20635
  variant="footer"
20636
20636
  color="error"
@@ -20738,7 +20738,7 @@ i0.ɵɵngDeclareClassMetadata({
20738
20738
  ></textarea>
20739
20739
  </div>
20740
20740
  @if (showErrors()) {
20741
- @for (error of errors(); track $index) {
20741
+ @if (shownError(); as error) {
20742
20742
  <m-text-output
20743
20743
  variant="footer"
20744
20744
  color="error"
@@ -21833,7 +21833,7 @@ var DateInputComponent = class DateInputComponent extends BaseTextInputComponent
21833
21833
  />
21834
21834
  </div>
21835
21835
  @if (showErrors()) {
21836
- @for (error of errors(); track $index) {
21836
+ @if (shownError(); as error) {
21837
21837
  <m-text-output
21838
21838
  variant="footer"
21839
21839
  color="error"
@@ -21970,7 +21970,7 @@ i0.ɵɵngDeclareClassMetadata({
21970
21970
  />
21971
21971
  </div>
21972
21972
  @if (showErrors()) {
21973
- @for (error of errors(); track $index) {
21973
+ @if (shownError(); as error) {
21974
21974
  <m-text-output
21975
21975
  variant="footer"
21976
21976
  color="error"
@@ -22182,7 +22182,7 @@ var CheckboxGroupComponent = class CheckboxGroupComponent extends BaseInputCompo
22182
22182
  }
22183
22183
  </div>
22184
22184
  @if (showErrors()) {
22185
- @for (error of errors(); track $index) {
22185
+ @if (shownError(); as error) {
22186
22186
  <m-text-output
22187
22187
  variant="footer"
22188
22188
  color="error"
@@ -22285,7 +22285,7 @@ i0.ɵɵngDeclareClassMetadata({
22285
22285
  }
22286
22286
  </div>
22287
22287
  @if (showErrors()) {
22288
- @for (error of errors(); track $index) {
22288
+ @if (shownError(); as error) {
22289
22289
  <m-text-output
22290
22290
  variant="footer"
22291
22291
  color="error"
@@ -22372,7 +22372,7 @@ var MultiselectInputComponent = class MultiselectInputComponent extends BaseDrop
22372
22372
  outputs: { value: "valueChange" },
22373
22373
  usesInheritance: true,
22374
22374
  ngImport: i0,
22375
- template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n",
22375
+ template: "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @if (shownError(); as error) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n",
22376
22376
  isInline: true,
22377
22377
  styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}:host{display:contents}.trigger-wrap{position:relative;--m-text-input-padding-right: 2.25em }.trigger-wrap m-button{position:absolute;right:0;top:0;bottom:0;--m-button-size: 1em !important;height:100%;border-radius:0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0;--m-button-radius: 0 var(--m-input-radius, calc(var(--input-size, 1em) * .5)) var(--m-input-radius, calc(var(--input-size, 1em) * .5)) 0}\n"],
22378
22378
  dependencies: [
@@ -23681,7 +23681,7 @@ var ColorPickerInputComponent = class ColorPickerInputComponent extends BaseText
23681
23681
  <m-button [disabled]="disabled()" [config]="pickerIcon()" />
23682
23682
  </div>
23683
23683
  @if (showErrors()) {
23684
- @for (error of errors(); track $index) {
23684
+ @if (shownError(); as error) {
23685
23685
  <m-text-output
23686
23686
  variant="footer"
23687
23687
  color="error"
@@ -23842,7 +23842,7 @@ i0.ɵɵngDeclareClassMetadata({
23842
23842
  <m-button [disabled]="disabled()" [config]="pickerIcon()" />
23843
23843
  </div>
23844
23844
  @if (showErrors()) {
23845
- @for (error of errors(); track $index) {
23845
+ @if (shownError(); as error) {
23846
23846
  <m-text-output
23847
23847
  variant="footer"
23848
23848
  color="error"
@@ -24003,12 +24003,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
24003
24003
  const seq = ++this.dynamicSeq;
24004
24004
  switch (this.config()?.type) {
24005
24005
  case InputType.RADIO: {
24006
- const { RadioInputComponent } = await import("./magmonium-one-radio-DGTbRRXb.mjs").then((n) => n.n);
24006
+ const { RadioInputComponent } = await import("./magmonium-one-radio-bTivHHZH.mjs").then((n) => n.n);
24007
24007
  this.createDynamicComponent(seq, RadioInputComponent);
24008
24008
  break;
24009
24009
  }
24010
24010
  case InputType.TOGGLE: {
24011
- const { ToggleInputComponent } = await import("./magmonium-one-toggle-sUSXzxMl.mjs");
24011
+ const { ToggleInputComponent } = await import("./magmonium-one-toggle-CqEqyEtf.mjs");
24012
24012
  this.createDynamicComponent(seq, ToggleInputComponent, [], true);
24013
24013
  break;
24014
24014
  }
@@ -24018,12 +24018,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
24018
24018
  break;
24019
24019
  }
24020
24020
  case InputType.PASSWORD: {
24021
- const { PasswordInputComponent } = await import("./magmonium-one-password-BqdyEDF6.mjs");
24021
+ const { PasswordInputComponent } = await import("./magmonium-one-password-lZ5OEevh.mjs");
24022
24022
  this.createDynamicComponent(seq, PasswordInputComponent);
24023
24023
  break;
24024
24024
  }
24025
24025
  case InputType.OTP: {
24026
- const { OtpInputComponent } = await import("./magmonium-one-otp-DOPvjYJz.mjs");
24026
+ const { OtpInputComponent } = await import("./magmonium-one-otp-xQgDDbDC.mjs");
24027
24027
  this.createDynamicComponent(seq, OtpInputComponent);
24028
24028
  break;
24029
24029
  }
@@ -24033,7 +24033,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
24033
24033
  break;
24034
24034
  }
24035
24035
  case InputType.CHECKBOX: {
24036
- const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-C85FEuTs.mjs").then((n) => n.n);
24036
+ const { CheckboxInputComponent } = await import("./magmonium-one-checkbox-ZM0KfqIQ.mjs").then((n) => n.n);
24037
24037
  this.createDynamicComponent(seq, CheckboxInputComponent, [], true);
24038
24038
  break;
24039
24039
  }
@@ -24048,12 +24048,12 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
24048
24048
  break;
24049
24049
  }
24050
24050
  case InputType.RANGE: {
24051
- const { RangeInputComponent } = await import("./magmonium-one-range-Dw4YACtP.mjs").then((n) => n.n);
24051
+ const { RangeInputComponent } = await import("./magmonium-one-range-8y-IUMjf.mjs").then((n) => n.n);
24052
24052
  this.createDynamicComponent(seq, RangeInputComponent);
24053
24053
  break;
24054
24054
  }
24055
24055
  case InputType.MULTI_RANGE: {
24056
- const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-DqtW4U_x.mjs").then((n) => n.n);
24056
+ const { MultiRangeInputComponent } = await import("./magmonium-one-multi-range-BMn1iVZ4.mjs").then((n) => n.n);
24057
24057
  this.createDynamicComponent(seq, MultiRangeInputComponent);
24058
24058
  break;
24059
24059
  }
@@ -24104,7 +24104,7 @@ var WrapperInputComponent = class WrapperInputComponent extends ConfigComponent
24104
24104
  break;
24105
24105
  }
24106
24106
  default: {
24107
- const { TextInputComponent } = await import("./magmonium-one-text-CMULvvAr.mjs").then((n) => n.n);
24107
+ const { TextInputComponent } = await import("./magmonium-one-text-BTAJl4eW.mjs").then((n) => n.n);
24108
24108
  this.createDynamicComponent(seq, TextInputComponent);
24109
24109
  break;
24110
24110
  }
@@ -24616,7 +24616,7 @@ var RadioGroupComponent = class RadioGroupComponent extends BaseTextInputCompone
24616
24616
  }
24617
24617
  </div>
24618
24618
  @if (showErrors()) {
24619
- @for (error of errors(); track $index) {
24619
+ @if (shownError(); as error) {
24620
24620
  <m-text-output
24621
24621
  variant="footer"
24622
24622
  color="error"
@@ -24717,7 +24717,7 @@ i0.ɵɵngDeclareClassMetadata({
24717
24717
  }
24718
24718
  </div>
24719
24719
  @if (showErrors()) {
24720
- @for (error of errors(); track $index) {
24720
+ @if (shownError(); as error) {
24721
24721
  <m-text-output
24722
24722
  variant="footer"
24723
24723
  color="error"
@@ -25710,7 +25710,7 @@ var RatingInputComponent = class RatingInputComponent extends BaseInputComponent
25710
25710
  },
25711
25711
  usesInheritance: true,
25712
25712
  ngImport: i0,
25713
- template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [params]=\"rating.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div\n class=\"rating\"\n [class.rating--error]=\"showErrors()\"\n [class.rating--enlarge]=\"enlarged()\"\n [style.--rating-color-filled]=\"filledColor()\"\n >\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: (star + 1).toString() }\"\n [attr.aria-pressed]=\"(ratingValue() ?? -1) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n",
25713
+ template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [params]=\"rating.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div\n class=\"rating\"\n [class.rating--error]=\"showErrors()\"\n [class.rating--enlarge]=\"enlarged()\"\n [style.--rating-color-filled]=\"filledColor()\"\n >\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: (star + 1).toString() }\"\n [attr.aria-pressed]=\"(ratingValue() ?? -1) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @if (shownError(); as error) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n",
25714
25714
  styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:var(--rating-color-filled, #FFB800);stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--enlarge .rating__star,.rating--enlarge .rating__star-svg{width:56px;height:56px}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"],
25715
25715
  dependencies: [
25716
25716
  {
@@ -25770,7 +25770,7 @@ i0.ɵɵngDeclareClassMetadata({
25770
25770
  ],
25771
25771
  encapsulation: ViewEncapsulation.None,
25772
25772
  changeDetection: ChangeDetectionStrategy.OnPush,
25773
- template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [params]=\"rating.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div\n class=\"rating\"\n [class.rating--error]=\"showErrors()\"\n [class.rating--enlarge]=\"enlarged()\"\n [style.--rating-color-filled]=\"filledColor()\"\n >\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: (star + 1).toString() }\"\n [attr.aria-pressed]=\"(ratingValue() ?? -1) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n",
25773
+ template: "@if (config(); as rating) {\n @if (rating.label) {\n <m-label\n [for]=\"rating.name ?? ''\"\n [placeholder]=\"rating.label\"\n [params]=\"rating.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n\n <div\n class=\"rating\"\n [class.rating--error]=\"showErrors()\"\n [class.rating--enlarge]=\"enlarged()\"\n [style.--rating-color-filled]=\"filledColor()\"\n >\n <div\n class=\"rating__stars\"\n [class.rating__stars--interactive]=\"interactive()\"\n [class.rating__stars--disabled]=\"disabled()\"\n (mouseleave)=\"onLeave()\"\n >\n <!-- Hidden SVG for per-star gradient defs -->\n <svg width=\"0\" height=\"0\" aria-hidden=\"true\" class=\"rating__defs\">\n <defs>\n @for (star of stars; track star) {\n <linearGradient [id]=\"'star-grad-' + star\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--filled\" />\n <stop [attr.offset]=\"starFill(star) + '%'\" class=\"rating__stop--empty\" />\n </linearGradient>\n }\n </defs>\n </svg>\n\n @for (star of stars; track star) {\n <button\n class=\"rating__star\"\n type=\"button\"\n [attr.aria-label]=\"'rate-star-out-of-5' | translate: { star: (star + 1).toString() }\"\n [attr.aria-pressed]=\"(ratingValue() ?? -1) >= star\"\n [attr.disabled]=\"(!interactive()) ? true : null\"\n (click)=\"rate(star)\"\n (mouseenter)=\"onHover(star)\"\n >\n <svg\n class=\"rating__star-svg\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <polygon\n class=\"rating__star-shape\"\n [attr.fill]=\"'url(#star-grad-' + star + ')'\"\n points=\"12,2.5 15.27,9.14 22.6,10.13 17.3,15.26 18.54,22.56 12,19.13 5.46,22.56 6.7,15.26 1.4,10.13 8.73,9.14\"\n />\n </svg>\n </button>\n }\n </div>\n </div>\n\n @if (showErrors()) {\n @if (shownError(); as error) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n}\n",
25774
25774
  styles: ["@keyframes toggle-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes thumb-slide{0%{transform:translate(0) scale(1)}50%{transform:translate(.3em) scale(.9)}to{transform:translate(.6em) scale(1)}}.rating{display:inline-flex;flex-direction:column;gap:6px}.rating__defs{display:block;width:0;height:0;overflow:hidden;pointer-events:none;flex-shrink:0}.rating__stop--filled{stop-color:var(--rating-color-filled, #FFB800);stop-opacity:1}.rating__stop--empty{stop-color:#e0e0e0;stop-opacity:1}.rating__stars{position:relative;display:inline-flex;align-items:center;gap:4px}.rating__star{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background:none;border:none;cursor:default;outline:none;flex-shrink:0}.rating__star-svg{width:28px;height:28px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.08));transition:opacity .15s ease,transform .12s ease}.rating__star-shape{stroke:#0000000f;stroke-width:.5px}.rating__stars--interactive .rating__star{cursor:pointer;border-radius:4px}.rating__stars--interactive .rating__star:focus-visible{outline:2px solid var(--m-mm);outline-offset:2px;border-radius:4px}.rating__stars--interactive .rating__star:hover .rating__star-svg,.rating__stars--interactive .rating__star:focus-visible .rating__star-svg{transform:scale(1.15);filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}.rating__stars--disabled{opacity:.5;pointer-events:none}.rating__stars--disabled .rating__stop--filled{stop-color:#bdbdbd}.rating--enlarge .rating__star,.rating--enlarge .rating__star-svg{width:56px;height:56px}.rating--error .rating__stop--filled{stop-color:var(--m-error)}\n"]
25775
25775
  }]
25776
25776
  }],
@@ -25952,7 +25952,7 @@ var ComponentInputComponent = class ComponentInputComponent extends BaseTextInpu
25952
25952
  }
25953
25953
  <m-button (click)="openModal()" [config]="buttonConfig()" />
25954
25954
  @if (showErrors()) {
25955
- @for (error of errors(); track $index) {
25955
+ @if (shownError(); as error) {
25956
25956
  <m-text-output
25957
25957
  variant="footer"
25958
25958
  color="error"
@@ -26056,7 +26056,7 @@ i0.ɵɵngDeclareClassMetadata({
26056
26056
  }
26057
26057
  <m-button (click)="openModal()" [config]="buttonConfig()" />
26058
26058
  @if (showErrors()) {
26059
- @for (error of errors(); track $index) {
26059
+ @if (shownError(); as error) {
26060
26060
  <m-text-output
26061
26061
  variant="footer"
26062
26062
  color="error"
@@ -26495,7 +26495,7 @@ var FileUploadInputComponent = class FileUploadInputComponent extends BaseInputC
26495
26495
  openEditor = async (file, size) => {
26496
26496
  const modalStore = this.modalStore;
26497
26497
  if (!modalStore) return void 0;
26498
- const { ImageEditorComponent } = await import("./magmonium-one-image-editor-BAF7cdC2.mjs");
26498
+ const { ImageEditorComponent } = await import("./magmonium-one-image-editor-C4l92aUj.mjs");
26499
26499
  const ratio = String(this.config()?.ratio ?? "");
26500
26500
  return new Promise((resolve) => {
26501
26501
  const modalRef = new ModalRef();
@@ -26671,7 +26671,7 @@ var FileUploadInputComponent = class FileUploadInputComponent extends BaseInputC
26671
26671
  />
26672
26672
  }
26673
26673
  @if (showErrors()) {
26674
- @for (error of errors(); track $index) {
26674
+ @if (shownError(); as error) {
26675
26675
  <m-text-output
26676
26676
  variant="footer"
26677
26677
  color="error"
@@ -26881,7 +26881,7 @@ i0.ɵɵngDeclareClassMetadata({
26881
26881
  />
26882
26882
  }
26883
26883
  @if (showErrors()) {
26884
- @for (error of errors(); track $index) {
26884
+ @if (shownError(); as error) {
26885
26885
  <m-text-output
26886
26886
  variant="footer"
26887
26887
  color="error"