@rt-tools/ui-kit-v2 0.1.0 → 0.3.0

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 (111) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2.mjs +313 -205
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  3. package/package.json +1 -1
  4. package/rt-tools-ui-kit-v2-0.3.0.tgz +0 -0
  5. package/src/lib/components/CONTEXT.md +49 -0
  6. package/src/lib/components/aside/CONTEXT.md +51 -0
  7. package/src/lib/components/aside/_rt-aside-overlay.scss +88 -0
  8. package/src/lib/components/aside/rt-aside.component.scss +19 -94
  9. package/src/lib/components/aside-section/CONTEXT.md +26 -0
  10. package/src/lib/components/autocomplete/CONTEXT.md +58 -0
  11. package/src/lib/components/bar-list/CONTEXT.md +27 -0
  12. package/src/lib/components/bar-list/rt-bar-list.component.scss +5 -2
  13. package/src/lib/components/bottom-sheet/CONTEXT.md +54 -0
  14. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +53 -53
  15. package/src/lib/components/button/CONTEXT.md +53 -0
  16. package/src/lib/components/button/rt-button.directive.scss +16 -0
  17. package/src/lib/components/calendar/CONTEXT.md +41 -0
  18. package/src/lib/components/calendar/rt-calendar.component.scss +96 -99
  19. package/src/lib/components/card/CONTEXT.md +34 -0
  20. package/src/lib/components/card/rt-card.component.scss +5 -2
  21. package/src/lib/components/chat/CONTEXT.md +41 -0
  22. package/src/lib/components/checkbox/CONTEXT.md +37 -0
  23. package/src/lib/components/checkbox/rt-checkbox.component.scss +7 -2
  24. package/src/lib/components/collapsible-text/CONTEXT.md +29 -0
  25. package/src/lib/components/confirm-popover/CONTEXT.md +47 -0
  26. package/src/lib/components/container/CONTEXT.md +42 -0
  27. package/src/lib/components/container/rt-container.component.scss +5 -69
  28. package/src/lib/components/counter/CONTEXT.md +40 -0
  29. package/src/lib/components/counter/rt-counter.component.scss +10 -9
  30. package/src/lib/components/counter-row/CONTEXT.md +24 -0
  31. package/src/lib/components/counter-row/rt-counter-row.component.scss +23 -22
  32. package/src/lib/components/date-picker/CONTEXT.md +41 -0
  33. package/src/lib/components/delta-view/CONTEXT.md +31 -0
  34. package/src/lib/components/detail-list/CONTEXT.md +29 -0
  35. package/src/lib/components/dialog/CONTEXT.md +50 -0
  36. package/src/lib/components/dialog/rt-dialog.component.scss +6 -2
  37. package/src/lib/components/download-link/CONTEXT.md +26 -0
  38. package/src/lib/components/empty-state/CONTEXT.md +35 -0
  39. package/src/lib/components/field/CONTEXT.md +72 -0
  40. package/src/lib/components/file-card/CONTEXT.md +28 -0
  41. package/src/lib/components/file-drop/CONTEXT.md +39 -0
  42. package/src/lib/components/file-input/CONTEXT.md +36 -0
  43. package/src/lib/components/file-list/CONTEXT.md +15 -0
  44. package/src/lib/components/filter-control/CONTEXT.md +33 -0
  45. package/src/lib/components/form-control/CONTEXT.md +50 -0
  46. package/src/lib/components/header/CONTEXT.md +36 -0
  47. package/src/lib/components/icon/CONTEXT.md +46 -0
  48. package/src/lib/components/icon/rt-icon.component.scss +3 -5
  49. package/src/lib/components/icon-button/CONTEXT.md +49 -0
  50. package/src/lib/components/icon-button/rt-icon-button.component.scss +14 -1
  51. package/src/lib/components/info-item/CONTEXT.md +30 -0
  52. package/src/lib/components/input/CONTEXT.md +47 -0
  53. package/src/lib/components/input-number/CONTEXT.md +52 -0
  54. package/src/lib/components/live-badge/CONTEXT.md +31 -0
  55. package/src/lib/components/live-badge/rt-live-badge.component.scss +5 -2
  56. package/src/lib/components/logo/CONTEXT.md +42 -0
  57. package/src/lib/components/logo/rt-logo.component.scss +4 -6
  58. package/src/lib/components/menu/CONTEXT.md +65 -0
  59. package/src/lib/components/message/CONTEXT.md +35 -0
  60. package/src/lib/components/message/rt-message.component.scss +5 -2
  61. package/src/lib/components/message-composer/CONTEXT.md +46 -0
  62. package/src/lib/components/money-list/CONTEXT.md +32 -0
  63. package/src/lib/components/multiselect/CONTEXT.md +43 -0
  64. package/src/lib/components/night-grid/CONTEXT.md +31 -0
  65. package/src/lib/components/night-grid/rt-night-grid.component.scss +5 -2
  66. package/src/lib/components/note/CONTEXT.md +27 -0
  67. package/src/lib/components/notifications-bell/CONTEXT.md +29 -0
  68. package/src/lib/components/page-header/CONTEXT.md +33 -0
  69. package/src/lib/components/pagination/CONTEXT.md +43 -0
  70. package/src/lib/components/photo-viewer/CONTEXT.md +30 -0
  71. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +95 -96
  72. package/src/lib/components/popover/CONTEXT.md +54 -0
  73. package/src/lib/components/rich-editor/CONTEXT.md +36 -0
  74. package/src/lib/components/section-nav/CONTEXT.md +27 -0
  75. package/src/lib/components/section-nav/rt-section-nav.component.scss +7 -1
  76. package/src/lib/components/select/CONTEXT.md +54 -0
  77. package/src/lib/components/skeleton/CONTEXT.md +41 -0
  78. package/src/lib/components/skeleton-wrapper/CONTEXT.md +24 -0
  79. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +5 -1
  80. package/src/lib/components/spinner/CONTEXT.md +39 -0
  81. package/src/lib/components/split-button/CONTEXT.md +39 -0
  82. package/src/lib/components/stat-tile/CONTEXT.md +35 -0
  83. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +5 -2
  84. package/src/lib/components/stepper/CONTEXT.md +36 -0
  85. package/src/lib/components/stepper/rt-stepper.component.scss +5 -2
  86. package/src/lib/components/table/CONTEXT.md +53 -0
  87. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +4 -2
  88. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +1 -1
  89. package/src/lib/components/tabs/CONTEXT.md +56 -0
  90. package/src/lib/components/tag/CONTEXT.md +47 -0
  91. package/src/lib/components/tag/rt-tag.component.scss +5 -2
  92. package/src/lib/components/textarea/CONTEXT.md +38 -0
  93. package/src/lib/components/theme-toggle/CONTEXT.md +28 -0
  94. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +5 -1
  95. package/src/lib/components/thread-list/CONTEXT.md +42 -0
  96. package/src/lib/components/timeline/CONTEXT.md +33 -0
  97. package/src/lib/components/timeline/rt-timeline.component.scss +5 -2
  98. package/src/lib/components/toast/CONTEXT.md +53 -0
  99. package/src/lib/components/toggle-button-group/CONTEXT.md +38 -0
  100. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +12 -7
  101. package/src/lib/components/toggle-switch/CONTEXT.md +35 -0
  102. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +7 -2
  103. package/src/lib/components/toolbar/CONTEXT.md +22 -0
  104. package/src/lib/components/tooltip/CONTEXT.md +34 -0
  105. package/src/lib/components/welcome-dialog/CONTEXT.md +20 -0
  106. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +6 -2
  107. package/src/lib/components/workspace/CONTEXT.md +46 -0
  108. package/src/lib/components/workspace-details/CONTEXT.md +42 -0
  109. package/styles/tokens.css +14 -0
  110. package/types/rt-tools-ui-kit-v2.d.ts +50 -29
  111. package/rt-tools-ui-kit-v2-0.1.0.tgz +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, InjectionToken, inject, Injector, RendererFactory2, Injectable, computed, numberAttribute, ElementRef, Directive, booleanAttribute, output, HostBinding, makeEnvironmentProviders, provideAppInitializer, DestroyRef, effect, ViewContainerRef, viewChild, forwardRef, Renderer2, afterNextRender, untracked, Pipe, HostListener, contentChild, TemplateRef, afterRenderEffect, linkedSignal, isSignal, LOCALE_ID, contentChildren, ViewChild, model } from '@angular/core';
2
+ import { input, ViewEncapsulation, ChangeDetectionStrategy, Component, signal, InjectionToken, inject, Injector, RendererFactory2, Injectable, computed, numberAttribute, ElementRef, Directive, booleanAttribute, output, HostBinding, makeEnvironmentProviders, provideAppInitializer, DestroyRef, ViewContainerRef, viewChild, forwardRef, Renderer2, afterNextRender, untracked, effect, Pipe, HostListener, contentChild, TemplateRef, afterRenderEffect, linkedSignal, isSignal, LOCALE_ID, contentChildren, ViewChild, model } from '@angular/core';
3
3
  import { BlockDirective, ElemDirective, ModDirective, PlatformService, StorageService, IDBStorageService, WINDOW } from '@rt-tools/core';
4
4
  import * as i1$1 from '@angular/cdk/overlay';
5
5
  import { Overlay, ScrollStrategyOptions, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
@@ -53,13 +53,13 @@ class RtAsideComponent {
53
53
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtAsideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtAsideComponent, isStandalone: true, selector: "rt-aside", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentLayout: { classPropertyName: "contentLayout", publicName: "contentLayout", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-aside" }, ngImport: i0, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}.rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-aside>rt-aside-header,.rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}.rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}.rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}.rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}.rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}.rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}.rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}.rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}.rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}.rt-aside,.rt-aside--size--sm,.rt-aside--size--md,.rt-aside--size--lg{width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtAsideComponent, isStandalone: true, selector: "rt-aside", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentLayout: { classPropertyName: "contentLayout", publicName: "contentLayout", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-aside" }, ngImport: i0, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}rt-aside{display:contents}rt-aside .rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}rt-aside .rt-aside>rt-aside-header,rt-aside .rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}rt-aside .rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}rt-aside .rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}rt-aside .rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}rt-aside .rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}rt-aside .rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}rt-aside .rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}rt-aside .rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}rt-aside .rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}@media(width<=768px){rt-aside .rt-aside,rt-aside .rt-aside--size--sm,rt-aside .rt-aside--size--md,rt-aside .rt-aside--size--lg{width:100dvw;max-width:100dvw}}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtAsideComponent, decorators: [{
59
59
  type: Component,
60
60
  args: [{ selector: 'rt-aside', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BlockDirective, ElemDirective, ModDirective], host: {
61
61
  class: BEM_BLOCK$1j,
62
- }, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}.rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-aside>rt-aside-header,.rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}.rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}.rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}.rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}.rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}.rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}.rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}.rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}.rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}.rt-aside,.rt-aside--size--sm,.rt-aside--size--md,.rt-aside--size--lg{width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}\n"] }]
62
+ }, template: "<div\n rtBlock=\"rt-aside\"\n qa-dataid=\"aside\"\n role=\"complementary\"\n [rtMod]=\"{ size: size(), content: contentLayout() }\"\n [style.--rt-aside-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content select=\"rt-aside-header\" />\n\n <div rtElem=\"content\" qa-dataid=\"aside-content\">\n <ng-content />\n </div>\n\n <ng-content select=\"rt-aside-footer\" />\n</div>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}:root{--rt-aside-width-sm: 400px;--rt-aside-width-md: 540px;--rt-aside-width-lg: 720px;--rt-aside-inset: var(--rt-space-lg);--rt-aside-content-gap: var(--rt-space-md)}rt-aside{display:contents}rt-aside .rt-aside{display:flex;width:var(--rt-aside-width, var(--rt-aside-width-md));min-width:0;max-width:100%;height:100%;flex-direction:column;padding:0;border:none;background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}rt-aside .rt-aside>rt-aside-header,rt-aside .rt-aside>rt-aside-footer{min-width:0;flex-shrink:0}rt-aside .rt-aside__content{display:flex;min-width:0;min-height:0;flex:1 1 auto;flex-direction:column;padding:var(--rt-aside-inset);gap:var(--rt-aside-content-gap);overflow-y:auto;overscroll-behavior:contain}rt-aside .rt-aside--size--sm{width:var(--rt-aside-width, var(--rt-aside-width-sm))}rt-aside .rt-aside--size--md{width:var(--rt-aside-width, var(--rt-aside-width-md))}rt-aside .rt-aside--size--lg{width:var(--rt-aside-width, var(--rt-aside-width-lg))}rt-aside .rt-aside--content--tabs .rt-aside__content{overflow:hidden;padding-block-end:0}rt-aside .rt-aside--content--tabs rt-tabs{min-height:0;flex:1 1 auto;margin-inline:calc(-1 * var(--rt-aside-inset))}rt-aside .rt-aside--content--tabs .rt-tabs__header{padding-inline:var(--rt-aside-inset)}rt-aside .rt-aside--content--tabs .rt-tabs__content{padding-bottom:var(--rt-aside-inset);padding-inline:var(--rt-aside-inset)}@media(width<=768px){rt-aside .rt-aside,rt-aside .rt-aside--size--sm,rt-aside .rt-aside--size--md,rt-aside .rt-aside--size--lg{width:100dvw;max-width:100dvw}}\n"] }]
63
63
  }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], contentLayout: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentLayout", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
64
64
 
65
65
  /** Длительность slide-out анимации; синхронизирована с `--rt-aside-animation-duration` в SCSS. */
@@ -738,6 +738,7 @@ const SIZES = Object.freeze({
738
738
  md: 20,
739
739
  lg: 24,
740
740
  xl: 32,
741
+ '2xl': 40,
741
742
  });
742
743
  const COLORS = Object.freeze({
743
744
  current: 'currentColor',
@@ -989,6 +990,8 @@ class RtIconButtonComponent {
989
990
  sm: 'sm',
990
991
  md: 'md',
991
992
  lg: 'lg',
993
+ xl: 'xl',
994
+ '2xl': '2xl',
992
995
  };
993
996
  return this.iconSize() ?? map[this.size()];
994
997
  }, /* @ts-ignore */
@@ -1069,13 +1072,13 @@ class RtIconButtonComponent {
1069
1072
  this.clicked.emit(event);
1070
1073
  }
1071
1074
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtIconButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1072
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtIconButtonComponent, isStandalone: true, selector: "rt-icon-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { classAttribute: "rt-icon-button" }, ngImport: i0, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;--rt-icon-button-size: 36px}:host .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}:host .rt-icon-button--sm{--rt-icon-button-size: 28px}:host .rt-icon-button--md{--rt-icon-button-size: 36px}:host .rt-icon-button--lg{--rt-icon-button-size: 44px}:host .rt-icon-button--circle{border-radius:var(--rt-radius-full)}:host .rt-icon-button--square{border-radius:var(--rt-radius-md)}:host .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}:host .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}:host .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}:host .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--danger{color:var(--rt-color-state-danger)}:host .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--success{color:var(--rt-color-state-success)}:host .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--warning{color:var(--rt-color-state-warning)}:host .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}:host .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}:host .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}:host .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type:
1075
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtIconButtonComponent, isStandalone: true, selector: "rt-icon-button", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: true, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, iconSize: { classPropertyName: "iconSize", publicName: "iconSize", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, host: { classAttribute: "rt-icon-button" }, ngImport: i0, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";rt-icon-button{display:inline-flex;--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}rt-icon-button .rt-icon-button--sm{--rt-icon-button-size: 28px}rt-icon-button .rt-icon-button--md{--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button--lg{--rt-icon-button-size: 44px}rt-icon-button .rt-icon-button--xl{--rt-icon-button-size: 52px}rt-icon-button .rt-icon-button--2xl{--rt-icon-button-size: 60px}rt-icon-button .rt-icon-button--circle{border-radius:var(--rt-radius-full)}rt-icon-button .rt-icon-button--square{border-radius:var(--rt-radius-md)}rt-icon-button .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}rt-icon-button .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}rt-icon-button .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}rt-icon-button .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger{color:var(--rt-color-state-danger)}rt-icon-button .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success{color:var(--rt-color-state-success)}rt-icon-button .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning{color:var(--rt-color-state-warning)}rt-icon-button .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}rt-icon-button .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-icon-button .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}rt-icon-button .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "component", type:
1073
1076
  // standalone components / directives
1074
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1077
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1075
1078
  }
1076
1079
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtIconButtonComponent, decorators: [{
1077
1080
  type: Component,
1078
- args: [{ selector: 'rt-icon-button', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
1081
+ args: [{ selector: 'rt-icon-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
1079
1082
  // standalone components / directives
1080
1083
  RtIconComponent,
1081
1084
  RtTooltipDirective,
@@ -1084,7 +1087,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1084
1087
  ModDirective,
1085
1088
  ], host: {
1086
1089
  class: BEM_BLOCK$1g,
1087
- }, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;--rt-icon-button-size: 36px}:host .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}:host .rt-icon-button--sm{--rt-icon-button-size: 28px}:host .rt-icon-button--md{--rt-icon-button-size: 36px}:host .rt-icon-button--lg{--rt-icon-button-size: 44px}:host .rt-icon-button--circle{border-radius:var(--rt-radius-full)}:host .rt-icon-button--square{border-radius:var(--rt-radius-md)}:host .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}:host .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}:host .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}:host .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--danger{color:var(--rt-color-state-danger)}:host .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--success{color:var(--rt-color-state-success)}:host .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--warning{color:var(--rt-color-state-warning)}:host .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}:host .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}:host .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}:host .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}:host .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"] }]
1090
+ }, template: "<button\n rtBlock=\"rt-icon-button\"\n qa-dataid=\"icon-button-control\"\n [rtTooltip]=\"tooltip()\"\n [rtMod]=\"bemMods()\"\n [type]=\"type()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-pressed]=\"active() ? 'true' : null\"\n [attr.tabindex]=\"tabIndex()\"\n (click)=\"onClick($event)\">\n @if (loading()) {\n <rt-icon rtElem=\"spinner\" name=\"spinner\" color=\"current\" [size]=\"resolvedIconSize()\" />\n } @else {\n <rt-icon rtElem=\"icon\" [color]=\"iconColor()\" [name]=\"icon()\" [size]=\"resolvedIconSize()\" />\n }\n @if (indicator()) {\n <span rtElem=\"indicator\" aria-hidden=\"true\"></span>\n }\n</button>\n", styles: ["@charset \"UTF-8\";rt-icon-button{display:inline-flex;--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button{position:relative;display:inline-flex;width:var(--rt-icon-button-size);height:var(--rt-icon-button-size);align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--rt-icon-button-color, var(--rt-color-text-primary));cursor:pointer;transition:background-color var(--rt-duration-fast) ease}rt-icon-button .rt-icon-button--sm{--rt-icon-button-size: 28px}rt-icon-button .rt-icon-button--md{--rt-icon-button-size: 36px}rt-icon-button .rt-icon-button--lg{--rt-icon-button-size: 44px}rt-icon-button .rt-icon-button--xl{--rt-icon-button-size: 52px}rt-icon-button .rt-icon-button--2xl{--rt-icon-button-size: 60px}rt-icon-button .rt-icon-button--circle{border-radius:var(--rt-radius-full)}rt-icon-button .rt-icon-button--square{border-radius:var(--rt-radius-md)}rt-icon-button .rt-icon-button--ghost:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--ghost.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--primary{background-color:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}rt-icon-button .rt-icon-button--primary:hover:not(:disabled){background-color:var(--rt-color-action-primary-hover)}rt-icon-button .rt-icon-button--secondary{background-color:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-primary)}rt-icon-button .rt-icon-button--secondary:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger{color:var(--rt-color-state-danger)}rt-icon-button .rt-icon-button--danger:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--danger.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success{color:var(--rt-color-state-success)}rt-icon-button .rt-icon-button--success:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--success.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning{color:var(--rt-color-state-warning)}rt-icon-button .rt-icon-button--warning:hover:not(:disabled){background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button--warning.rt-icon-button--active{background-color:var(--rt-icon-button-color-bg-hover)}rt-icon-button .rt-icon-button:disabled{cursor:not-allowed;opacity:.5}rt-icon-button .rt-icon-button:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-icon-button .rt-icon-button__spinner{--rt-icon-button-spin-duration: 1s;animation:rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite}rt-icon-button .rt-icon-button__indicator{position:absolute;width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-state-danger);inset-block-start:-2px;inset-inline-end:-2px;pointer-events:none}@keyframes rt-icon-button-spin{to{transform:rotate(360deg)}}\n"] }]
1088
1091
  }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: true }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconSize", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], indicator: [{ type: i0.Input, args: [{ isSignal: true, alias: "indicator", required: false }] }], clicked: [{ type: i0.Output, args: ["clicked"] }] } });
1089
1092
 
1090
1093
  const BEM_BLOCK$1f = 'rt-skeleton';
@@ -1120,7 +1123,13 @@ class RtSkeletonComponent {
1120
1123
  ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
1121
1124
  this.height = input(this.#sizeMap.sm, /* @ts-ignore */
1122
1125
  ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
1123
- this.borderRadius = input('xl', /* @ts-ignore */
1126
+ /**
1127
+ * Скругление. `null` — «не задано»: прямоугольник берёт `xl`, квадрат —
1128
+ * `sm` (пилюля из квадрата не квадрат). Умолчанием нельзя было держать сам
1129
+ * `xl`: тогда явный `xl` неотличим от невыставленного, и квадрату
1130
+ * приходилось прибивать `sm` жёстко — вход у него молча пропадал.
1131
+ */
1132
+ this.borderRadius = input(null, /* @ts-ignore */
1124
1133
  ...(ngDevMode ? [{ debugName: "borderRadius" }] : /* istanbul ignore next */ []));
1125
1134
  this.animation = input(true, { ...(ngDevMode ? { debugName: "animation" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1126
1135
  }
@@ -1168,15 +1177,16 @@ class RtSkeletonComponent {
1168
1177
  }
1169
1178
  }
1170
1179
  get hostBorderRadius() {
1171
- switch (this.shape()) {
1172
- case 'circle':
1173
- return '50%';
1174
- case 'square':
1175
- return this.#radiusMap.sm;
1176
- case 'rectangle':
1177
- default:
1178
- return this.#radiusMap[this.borderRadius()];
1180
+ // Круг задаётся именно скруглением, поэтому вход к нему не применяется:
1181
+ // любое другое значение перестало бы быть кругом.
1182
+ if (this.shape() === 'circle') {
1183
+ return '50%';
1179
1184
  }
1185
+ const requested = this.borderRadius();
1186
+ if (requested !== null) {
1187
+ return this.#radiusMap[requested];
1188
+ }
1189
+ return this.shape() === 'square' ? this.#radiusMap.sm : this.#radiusMap.xl;
1180
1190
  }
1181
1191
  #getSizeValue() {
1182
1192
  return this.#sizeMap[this.size()];
@@ -1244,19 +1254,20 @@ class RtSkeletonWrapperComponent {
1244
1254
  ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
1245
1255
  this.size = input('md', /* @ts-ignore */
1246
1256
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
1247
- this.borderRadius = input('xl', /* @ts-ignore */
1257
+ /** Как у `rt-skeleton`: `null` — «по фигуре», а не «без скругления». */
1258
+ this.borderRadius = input(null, /* @ts-ignore */
1248
1259
  ...(ngDevMode ? [{ debugName: "borderRadius" }] : /* istanbul ignore next */ []));
1249
1260
  this.animation = input(true, { ...(ngDevMode ? { debugName: "animation" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1250
1261
  this.isLoading = input(false, { ...(ngDevMode ? { debugName: "isLoading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1251
1262
  }
1252
1263
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSkeletonWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSkeletonWrapperComponent, isStandalone: true, selector: "rt-skeleton-wrapper", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-skeleton-wrapper" }, ngImport: i0, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: [":host{display:inline-flex;width:100%}\n"], dependencies: [{ kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1264
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSkeletonWrapperComponent, isStandalone: true, selector: "rt-skeleton-wrapper", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, borderRadius: { classPropertyName: "borderRadius", publicName: "borderRadius", isSignal: true, isRequired: false, transformFunction: null }, animation: { classPropertyName: "animation", publicName: "animation", isSignal: true, isRequired: false, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-skeleton-wrapper" }, ngImport: i0, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["@charset \"UTF-8\";.rt-skeleton-wrapper{display:inline-flex;width:100%}\n"], dependencies: [{ kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1254
1265
  }
1255
1266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSkeletonWrapperComponent, decorators: [{
1256
1267
  type: Component,
1257
1268
  args: [{ selector: 'rt-skeleton-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtSkeletonComponent], host: {
1258
1269
  class: BEM_BLOCK$1e,
1259
- }, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: [":host{display:inline-flex;width:100%}\n"] }]
1270
+ }, template: "@if (isLoading()) {\n <rt-skeleton\n qa-dataid=\"skeleton-wrapper-placeholder\"\n [width]=\"width()\"\n [height]=\"height()\"\n [shape]=\"shape()\"\n [size]=\"size()\"\n [borderRadius]=\"borderRadius()\"\n [animation]=\"animation()\" />\n} @else {\n <ng-content />\n}\n", styles: ["@charset \"UTF-8\";.rt-skeleton-wrapper{display:inline-flex;width:100%}\n"] }]
1260
1271
  }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], borderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderRadius", required: false }] }], animation: [{ type: i0.Input, args: [{ isSignal: true, alias: "animation", required: false }] }], isLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "isLoading", required: false }] }] } });
1261
1272
 
1262
1273
  /**
@@ -1426,13 +1437,13 @@ class RtTagComponent {
1426
1437
  this.closed.emit(event);
1427
1438
  }
1428
1439
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1429
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTagComponent, isStandalone: true, selector: "rt-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-tag" }, ngImport: i0, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}:host .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}:host .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}:host .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}:host .rt-tag--radius--none{border-radius:var(--rt-radius-none)}:host .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}:host .rt-tag--radius--md{border-radius:var(--rt-radius-md)}:host .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}:host .rt-tag--radius--full{border-radius:var(--rt-radius-full)}:host .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}:host .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}:host .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-tag--severity--secondary,:host .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}:host .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}:host .rt-tag__icon{flex-shrink:0}:host .rt-tag__icon-end{flex-shrink:0}:host .rt-tag__text{line-height:var(--rt-leading-none)}:host .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"], dependencies: [{ kind: "component", type:
1440
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTagComponent, isStandalone: true, selector: "rt-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconEnd: { classPropertyName: "iconEnd", publicName: "iconEnd", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-tag" }, ngImport: i0, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";rt-tag{display:inline-flex}rt-tag .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}rt-tag .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--none{border-radius:var(--rt-radius-none)}rt-tag .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--md{border-radius:var(--rt-radius-md)}rt-tag .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}rt-tag .rt-tag--radius--full{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-tag .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-tag .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-tag .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-tag .rt-tag--severity--secondary,rt-tag .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-tag .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}rt-tag .rt-tag__icon{flex-shrink:0}rt-tag .rt-tag__icon-end{flex-shrink:0}rt-tag .rt-tag__text{line-height:var(--rt-leading-none)}rt-tag .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"], dependencies: [{ kind: "component", type:
1430
1441
  // standalone components / directives
1431
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1442
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1432
1443
  }
1433
1444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTagComponent, decorators: [{
1434
1445
  type: Component,
1435
- args: [{ selector: 'rt-tag', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
1446
+ args: [{ selector: 'rt-tag', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
1436
1447
  // standalone components / directives
1437
1448
  RtIconComponent,
1438
1449
  RtIconButtonComponent,
@@ -1442,7 +1453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1442
1453
  TranslocoPipe,
1443
1454
  ], host: {
1444
1455
  class: BEM_BLOCK$1d,
1445
- }, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}:host .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}:host .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}:host .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}:host .rt-tag--radius--none{border-radius:var(--rt-radius-none)}:host .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}:host .rt-tag--radius--md{border-radius:var(--rt-radius-md)}:host .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}:host .rt-tag--radius--full{border-radius:var(--rt-radius-full)}:host .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}:host .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}:host .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-tag--severity--secondary,:host .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}:host .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}:host .rt-tag__icon{flex-shrink:0}:host .rt-tag__icon-end{flex-shrink:0}:host .rt-tag__text{line-height:var(--rt-leading-none)}:host .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"] }]
1456
+ }, template: "<span\n rtBlock=\"rt-tag\"\n qa-dataid=\"tag\"\n [attr.data-severity]=\"severity()\"\n [rtMod]=\"{\n severity: severity(),\n shape: shape(),\n appearance: appearance(),\n radius: radius(),\n closable: closable(),\n }\">\n @if (icon(); as iconName) {\n <rt-icon rtElem=\"icon\" size=\"sm\" [name]=\"iconName\" />\n }\n <span rtElem=\"text\" qa-dataid=\"tag-text\">{{ value() }}</span>\n @if (iconEnd(); as iconEndName) {\n <rt-icon rtElem=\"icon-end\" size=\"sm\" [name]=\"iconEndName\" />\n }\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"tag-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiRemove' | transloco\"\n (clicked)=\"onClose($event)\" />\n }\n</span>\n", styles: ["@charset \"UTF-8\";rt-tag{display:inline-flex}rt-tag .rt-tag{display:inline-flex;align-items:center;padding:var(--rt-space-1) var(--rt-space-2);border-radius:var(--rt-radius-md);background:var(--rt-neutral-100);color:var(--rt-neutral-700);font-size:var(--rt-text-sm);gap:var(--rt-space-1);line-height:var(--rt-leading-tight)}rt-tag .rt-tag--shape--pill{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--shape--square{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--none{border-radius:var(--rt-radius-none)}rt-tag .rt-tag--radius--sm{border-radius:var(--rt-radius-sm)}rt-tag .rt-tag--radius--md{border-radius:var(--rt-radius-md)}rt-tag .rt-tag--radius--lg{border-radius:var(--rt-radius-lg)}rt-tag .rt-tag--radius--full{border-radius:var(--rt-radius-full)}rt-tag .rt-tag--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-tag .rt-tag--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-tag .rt-tag--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-tag .rt-tag--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-tag .rt-tag--severity--secondary,rt-tag .rt-tag--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-tag .rt-tag--appearance--outlined{border:var(--rt-border-width-thin) solid currentcolor;background:transparent}rt-tag .rt-tag__icon{flex-shrink:0}rt-tag .rt-tag__icon-end{flex-shrink:0}rt-tag .rt-tag__text{line-height:var(--rt-leading-none)}rt-tag .rt-tag__close{margin-inline-start:var(--rt-space-0-5)}\n"] }]
1446
1457
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], shape: [{ type: i0.Input, args: [{ isSignal: true, alias: "shape", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconEnd: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconEnd", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
1447
1458
 
1448
1459
  const BEM_BLOCK$1c = 'rt-aside-header';
@@ -1609,7 +1620,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1609
1620
  * - self-injected `NgControl` + ручная привязка `valueAccessor` (без
1610
1621
  * `NG_VALUE_ACCESSOR` provider — иначе NG0200 cycle при self-reference),
1611
1622
  * что даёт доступ к `control.invalid/touched` для авто-подсветки ошибки;
1612
- * - сигнал значения `value`, состояния `isDisabled`/`isInvalid`;
1623
+ * - сигнал значения `value`, состояния `isDisabled`/`isInvalid` (отключение
1624
+ * складывается из входа `disabled` и слова формы — см. `isDisabled`);
1613
1625
  * - общие инпуты `size`/`disabled`/`controlId`/`ariaLabel`/`clearable`;
1614
1626
  * - оркестрацию очистки (`clear`) через абстрактные хуки конкретного поля.
1615
1627
  *
@@ -1628,6 +1640,8 @@ class RtFormControlBase {
1628
1640
  #readonlyAssigned;
1629
1641
  #errors;
1630
1642
  #required;
1643
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
1644
+ #disabledByForm;
1631
1645
  constructor() {
1632
1646
  this.#ngControl = inject(NgControl, { self: true, optional: true });
1633
1647
  this.#destroyRef = inject(DestroyRef);
@@ -1643,7 +1657,17 @@ class RtFormControlBase {
1643
1657
  ...(ngDevMode ? [{ debugName: "#errors" }] : /* istanbul ignore next */ []));
1644
1658
  this.#required = signal(false, /* @ts-ignore */
1645
1659
  ...(ngDevMode ? [{ debugName: "#required" }] : /* istanbul ignore next */ []));
1646
- this.isDisabled = signal(false, /* @ts-ignore */
1660
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
1661
+ this.#disabledByForm = signal(false, /* @ts-ignore */
1662
+ ...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
1663
+ /**
1664
+ * Отключение: вход и форма — два независимых источника, поле отключено,
1665
+ * если так сказал любой из них. Сводить их в один signal нельзя: форма
1666
+ * зовёт `setDisabledState` при связывании контрола, то есть раньше, чем
1667
+ * поле впервые обновит своё вью, и мирроринг входа затирал бы её слово —
1668
+ * контрол, созданный отключённым, оказывался бы редактируемым.
1669
+ */
1670
+ this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
1647
1671
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
1648
1672
  this.isInvalid = signal(false, /* @ts-ignore */
1649
1673
  ...(ngDevMode ? [{ debugName: "isInvalid" }] : /* istanbul ignore next */ []));
@@ -1684,10 +1708,6 @@ class RtFormControlBase {
1684
1708
  if (this.#ngControl !== null) {
1685
1709
  this.#ngControl.valueAccessor = this;
1686
1710
  }
1687
- // Signal-input `disabled` → внутренний isDisabled (CVA пишет туда же).
1688
- effect(() => {
1689
- this.isDisabled.set(this.disabled());
1690
- });
1691
1711
  }
1692
1712
  ngOnInit() {
1693
1713
  const control = this.#ngControl?.control ?? null;
@@ -1711,7 +1731,7 @@ class RtFormControlBase {
1711
1731
  this.#onTouched = fn;
1712
1732
  }
1713
1733
  setDisabledState(isDisabled) {
1714
- this.isDisabled.set(isDisabled);
1734
+ this.#disabledByForm.set(isDisabled);
1715
1735
  }
1716
1736
  /** Назначить авто-id (rt-field), когда у контрола нет явного controlId. */
1717
1737
  assignControlId(id) {
@@ -2258,20 +2278,20 @@ class RtBarListComponent {
2258
2278
  }
2259
2279
  #t_uiNoData;
2260
2280
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBarListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2261
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtBarListComponent, isStandalone: true, selector: "rt-bar-list", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-bar-list" }, ngImport: i0, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}:host .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}:host .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}:host .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}:host .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}:host .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}:host .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}:host .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}:host .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}:host .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}:host .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}:host .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"], dependencies: [{ kind: "component", type:
2281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtBarListComponent, isStandalone: true, selector: "rt-bar-list", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: true, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-bar-list" }, ngImport: i0, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";rt-bar-list{display:block}rt-bar-list .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}rt-bar-list .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-bar-list .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}rt-bar-list .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}rt-bar-list .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}rt-bar-list .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}rt-bar-list .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}rt-bar-list .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}rt-bar-list .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}rt-bar-list .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}rt-bar-list .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}rt-bar-list .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"], dependencies: [{ kind: "component", type:
2262
2282
  // standalone components / directives
2263
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2283
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2264
2284
  }
2265
2285
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBarListComponent, decorators: [{
2266
2286
  type: Component,
2267
- args: [{ selector: 'rt-bar-list', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2287
+ args: [{ selector: 'rt-bar-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
2268
2288
  // standalone components / directives
2269
2289
  RtIconComponent,
2270
2290
  BlockDirective,
2271
2291
  ElemDirective,
2272
2292
  ], host: {
2273
2293
  class: BEM_BLOCK$18,
2274
- }, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}:host .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}:host .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}:host .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}:host .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}:host .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}:host .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}:host .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}:host .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}:host .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}:host .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}:host .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"] }]
2294
+ }, template: "<section rtBlock=\"rt-bar-list\" qa-dataid=\"bar-list\">\n @if (title()) {\n <h3 rtElem=\"title\" qa-dataid=\"bar-list-title\">{{ title() }}</h3>\n }\n\n @if (rows().length > 0) {\n <ul rtElem=\"rows\" qa-dataid=\"bar-list-rows\">\n @for (row of rows(); track row.id) {\n <li rtElem=\"row\" qa-dataid=\"bar-list-row\" [attr.data-id]=\"row.id\">\n <span rtElem=\"row-head\">\n <span rtElem=\"row-title\" qa-dataid=\"bar-list-row-title\">{{ row.title }}</span>\n <span rtElem=\"row-value\" qa-dataid=\"bar-list-row-value\">{{ row.value }}</span>\n </span>\n @if (row.meta) {\n <span rtElem=\"row-meta\" qa-dataid=\"bar-list-row-meta\">{{ row.meta }}</span>\n }\n <span rtElem=\"track\">\n <span rtElem=\"fill\" qa-dataid=\"bar-list-row-fill\" [style.width.%]=\"row.sharePercent\"></span>\n </span>\n </li>\n }\n </ul>\n } @else {\n <div rtElem=\"empty\" qa-dataid=\"bar-list-empty\">\n <rt-icon name=\"warning\" size=\"md\" color=\"muted\" />\n <p rtElem=\"empty-text\" qa-dataid=\"bar-list-empty-text\">{{ emptyMessage() }}</p>\n </div>\n }\n</section>\n", styles: ["@charset \"UTF-8\";rt-bar-list{display:block}rt-bar-list .rt-bar-list{display:flex;flex-direction:column;gap:var(--rt-space-2)}rt-bar-list .rt-bar-list__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-bar-list .rt-bar-list__rows{display:flex;flex-direction:column;padding:0;margin:0;gap:var(--rt-space-5);list-style:none}rt-bar-list .rt-bar-list__row{display:flex;min-width:0;flex-direction:column;gap:var(--rt-space-1-5)}rt-bar-list .rt-bar-list__row-head{display:flex;align-items:baseline;justify-content:space-between;font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-space-3);line-height:var(--rt-leading-tight)}rt-bar-list .rt-bar-list__row-title{overflow:hidden;color:var(--rt-color-text-primary);text-overflow:ellipsis;white-space:nowrap}rt-bar-list .rt-bar-list__row-value{flex:0 0 auto;color:var(--rt-color-text-primary)}rt-bar-list .rt-bar-list__row-meta{color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);line-height:var(--rt-leading-none)}rt-bar-list .rt-bar-list__track{display:block;height:6px;border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle)}rt-bar-list .rt-bar-list__fill{display:block;min-width:2px;height:100%;border-radius:var(--rt-radius-sm);background:var(--rt-color-action-primary)}rt-bar-list .rt-bar-list__empty{display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-lg) 0;gap:var(--rt-space-2-5)}rt-bar-list .rt-bar-list__empty-text{margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}\n"] }]
2275
2295
  }], propDecorators: { rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }] } });
2276
2296
 
2277
2297
  const DRAG_DISMISS_THRESHOLD_PX = 80;
@@ -2324,15 +2344,15 @@ class RtBottomSheetComponent {
2324
2344
  this.dragDeltaY.set(0);
2325
2345
  }
2326
2346
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBottomSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2327
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtBottomSheetComponent, isStandalone: true, selector: "rt-bottom-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { properties: { "class.rt-bottom-sheet--open": "open()" }, classAttribute: "rt-bottom-sheet" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: [":host{position:fixed;z-index:1000;inset:0;pointer-events:none}:host .rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}:host .rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}:host .rt-bottom-sheet__panel--dragging{transition:none}:host .rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}:host .rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}:host.rt-bottom-sheet--open{pointer-events:auto}:host.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}:host.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"], dependencies: [{ kind: "directive", type:
2347
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtBottomSheetComponent, isStandalone: true, selector: "rt-bottom-sheet", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { openChange: "openChange" }, host: { properties: { "class.rt-bottom-sheet--open": "open()", "attr.inert": "open() ? null : \"\"" }, classAttribute: "rt-bottom-sheet" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-bottom-sheet{position:fixed;z-index:1000;inset:0;pointer-events:none}.rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}.rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}.rt-bottom-sheet__panel--dragging{transition:none}.rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}.rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}.rt-bottom-sheet--open{pointer-events:auto}.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"], dependencies: [{ kind: "directive", type:
2328
2348
  // rt-tools
2329
2349
  BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type:
2330
2350
  // transloco
2331
- TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2351
+ TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2332
2352
  }
2333
2353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtBottomSheetComponent, decorators: [{
2334
2354
  type: Component,
2335
- args: [{ selector: 'rt-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2355
+ args: [{ selector: 'rt-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
2336
2356
  // rt-tools
2337
2357
  BlockDirective,
2338
2358
  ElemDirective,
@@ -2342,10 +2362,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2342
2362
  ], host: {
2343
2363
  class: BEM_BLOCK$17,
2344
2364
  '[class.rt-bottom-sheet--open]': 'open()',
2345
- }, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: [":host{position:fixed;z-index:1000;inset:0;pointer-events:none}:host .rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}:host .rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}:host .rt-bottom-sheet__panel--dragging{transition:none}:host .rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}:host .rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}:host.rt-bottom-sheet--open{pointer-events:auto}:host.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}:host.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"] }]
2365
+ // Закрытый лист остаётся в разметке ради анимации, и спрятан он только
2366
+ // стилями — а `opacity`/`pointer-events` не убирают узел ни из порядка
2367
+ // табуляции, ни из дерева доступности. Без `inert` страница с закрытым
2368
+ // листом держала бы в табуляции невидимую кнопку «Закрыть», а
2369
+ // скринридер объявлял бы модальный диалог, которого не видно.
2370
+ '[attr.inert]': 'open() ? null : ""',
2371
+ }, template: "<ng-container rtBlock=\"rt-bottom-sheet\">\n <button\n type=\"button\"\n rtElem=\"backdrop\"\n qa-dataid=\"bottom-sheet-backdrop\"\n [attr.aria-label]=\"'rtKit.bottomSheetClose' | transloco\"\n (click)=\"dismiss()\"></button>\n <div\n rtElem=\"panel\"\n qa-dataid=\"bottom-sheet-panel\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ dragging: dragging() }\"\n [style.transform]=\"dragging() ? 'translateY(' + dragDeltaY() + 'px)' : null\">\n <div rtElem=\"handle\" qa-dataid=\"bottom-sheet-handle\" (pointerdown)=\"onDragStart($event)\"></div>\n <div rtElem=\"header\" qa-dataid=\"bottom-sheet-header\">\n <ng-content select=\"[sheetHeader]\" />\n </div>\n <ng-content />\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-bottom-sheet{position:fixed;z-index:1000;inset:0;pointer-events:none}.rt-bottom-sheet__backdrop{position:absolute;padding:0;border:none;background:var(--rt-overlay-black-50);cursor:pointer;inset:0;opacity:0;transition:opacity var(--rt-duration-base) ease}.rt-bottom-sheet__panel{position:absolute;right:0;bottom:0;left:0;display:flex;max-height:80vh;flex-direction:column;border-radius:var(--rt-radius-2xl) var(--rt-radius-2xl) 0 0;background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);transform:translateY(100%);transition:transform var(--rt-duration-base) ease}.rt-bottom-sheet__panel--dragging{transition:none}.rt-bottom-sheet__handle{width:40px;height:4px;align-self:center;border-radius:var(--rt-radius-xs);margin:var(--rt-space-3) 0;background:var(--rt-color-border-default);cursor:grab;touch-action:none}.rt-bottom-sheet__header{display:flex;justify-content:center;padding:0 var(--rt-space-5) var(--rt-space-3);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold)}.rt-bottom-sheet--open{pointer-events:auto}.rt-bottom-sheet--open .rt-bottom-sheet__backdrop{opacity:1}.rt-bottom-sheet--open .rt-bottom-sheet__panel{transform:translateY(0)}\n"] }]
2346
2372
  }], propDecorators: { open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: true }] }], openChange: [{ type: i0.Output, args: ["openChange"] }] } });
2347
2373
 
2348
2374
  const BEM_BLOCK$16 = 'rt-button';
2375
+ /** Длительность затухания спиннера при выходе из загрузки. */
2376
+ const LOADING_FADE_OUT_MS = 300;
2377
+ /** Запас поверх затухания, после которого подпись возвращается без анимации. */
2378
+ const LOADING_FADE_OUT_BUFFER_MS = 50;
2349
2379
  /**
2350
2380
  * Директива стилизованной кнопки. Применяется к `<button>` или `<a>`
2351
2381
  * (для ссылок-кнопок с `routerLink`/`href`).
@@ -2451,17 +2481,32 @@ class RtButtonDirective {
2451
2481
  }
2452
2482
  #transitionFromLoading(button) {
2453
2483
  const spinnerEl = this.#spinnerEl;
2454
- if (spinnerEl) {
2455
- spinnerEl.style.animation = 'rt-button-fade-out 0.3s ease-out forwards';
2456
- spinnerEl.addEventListener('animationend', () => {
2457
- this.#clearContent(button);
2458
- this.#renderIconAndLabel(button);
2459
- }, { once: true });
2460
- }
2461
- else {
2462
- this.#clearContent(button);
2463
- this.#renderIconAndLabel(button);
2484
+ if (spinnerEl === null) {
2485
+ this.#restoreContent(button);
2486
+ return;
2464
2487
  }
2488
+ spinnerEl.style.animation = `rt-button-fade-out ${LOADING_FADE_OUT_MS}ms ease-out forwards`;
2489
+ // settled-гард делает animationend и страховочный таймаут взаимно
2490
+ // идемпотентными — сработает и снимет listener только то, что раньше.
2491
+ // Без таймаута подпись возвращалась бы только по анимации, а она не
2492
+ // идёт, пока кнопка спрятана (свёрнутая панель, неактивная вкладка):
2493
+ // выход из загрузки не наступал никогда, и на кнопке навсегда
2494
+ // оставался голый спиннер.
2495
+ let settled = false;
2496
+ const finish = () => {
2497
+ if (settled) {
2498
+ return;
2499
+ }
2500
+ settled = true;
2501
+ spinnerEl.removeEventListener('animationend', finish);
2502
+ this.#restoreContent(button);
2503
+ };
2504
+ spinnerEl.addEventListener('animationend', finish);
2505
+ setTimeout(finish, LOADING_FADE_OUT_MS + LOADING_FADE_OUT_BUFFER_MS);
2506
+ }
2507
+ #restoreContent(button) {
2508
+ this.#clearContent(button);
2509
+ this.#renderIconAndLabel(button);
2465
2510
  }
2466
2511
  /**
2467
2512
  * Чистим по классу, а не по своим ссылкам. Под серверным рендером разметку
@@ -2603,15 +2648,15 @@ class RtCalendarComponent {
2603
2648
  }
2604
2649
  }
2605
2650
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2606
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCalendarComponent, isStandalone: true, selector: "rt-calendar", inputs: { months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: true, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: true, transformFunction: null }, canPrev: { classPropertyName: "canPrev", publicName: "canPrev", isSignal: true, isRequired: false, transformFunction: null }, canNext: { classPropertyName: "canNext", publicName: "canNext", isSignal: true, isRequired: false, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, sublabelsLoading: { classPropertyName: "sublabelsLoading", publicName: "sublabelsLoading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevMonth: "prevMonth", nextMonth: "nextMonth", dayClick: "dayClick" }, host: { classAttribute: "rt-calendar" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}:host .rt-calendar__nav{flex:0 0 auto}:host .rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}:host .rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}:host .rt-calendar__month-title:first-letter{text-transform:uppercase}:host .rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}:host .rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}:host .rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}:host .rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}:host .rt-calendar__day:disabled{cursor:not-allowed}:host .rt-calendar__day[data-state=past],:host .rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}:host .rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}:host .rt-calendar__day[data-state=start],:host .rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}:host .rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}:host .rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}:host .rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){:host .rt-calendar__months{grid-template-columns:1fr}:host .rt-calendar__month:last-child{display:none}}@media(width<=374px){:host .rt-calendar__day{padding-inline:0}:host .rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"], dependencies: [{ kind: "directive", type:
2651
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCalendarComponent, isStandalone: true, selector: "rt-calendar", inputs: { months: { classPropertyName: "months", publicName: "months", isSignal: true, isRequired: true, transformFunction: null }, weekdayLabels: { classPropertyName: "weekdayLabels", publicName: "weekdayLabels", isSignal: true, isRequired: true, transformFunction: null }, canPrev: { classPropertyName: "canPrev", publicName: "canPrev", isSignal: true, isRequired: false, transformFunction: null }, canNext: { classPropertyName: "canNext", publicName: "canNext", isSignal: true, isRequired: false, transformFunction: null }, prevAriaLabel: { classPropertyName: "prevAriaLabel", publicName: "prevAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, nextAriaLabel: { classPropertyName: "nextAriaLabel", publicName: "nextAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, sublabelsLoading: { classPropertyName: "sublabelsLoading", publicName: "sublabelsLoading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { prevMonth: "prevMonth", nextMonth: "nextMonth", dayClick: "dayClick" }, host: { classAttribute: "rt-calendar" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-calendar{display:block}.rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}.rt-calendar__nav{flex:0 0 auto}.rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}.rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-calendar__month-title:first-letter{text-transform:uppercase}.rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}.rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}.rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}.rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}.rt-calendar__day:disabled{cursor:not-allowed}.rt-calendar__day[data-state=past],.rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}.rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}.rt-calendar__day[data-state=start],.rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}.rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}.rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}.rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){.rt-calendar__months{grid-template-columns:1fr}.rt-calendar__month:last-child{display:none}}@media(width<=374px){.rt-calendar__day{padding-inline:0}.rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"], dependencies: [{ kind: "directive", type:
2607
2652
  // rt-tools
2608
2653
  BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "component", type:
2609
2654
  // components
2610
- RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2655
+ RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtSkeletonComponent, selector: "rt-skeleton", inputs: ["shape", "size", "width", "height", "borderRadius", "animation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2611
2656
  }
2612
2657
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCalendarComponent, decorators: [{
2613
2658
  type: Component,
2614
- args: [{ selector: 'rt-calendar', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2659
+ args: [{ selector: 'rt-calendar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
2615
2660
  // rt-tools
2616
2661
  BlockDirective,
2617
2662
  ElemDirective,
@@ -2620,7 +2665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2620
2665
  RtSkeletonComponent,
2621
2666
  ], host: {
2622
2667
  class: BEM_BLOCK$15,
2623
- }, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}:host .rt-calendar__nav{flex:0 0 auto}:host .rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}:host .rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}:host .rt-calendar__month-title:first-letter{text-transform:uppercase}:host .rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}:host .rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}:host .rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}:host .rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}:host .rt-calendar__day:disabled{cursor:not-allowed}:host .rt-calendar__day[data-state=past],:host .rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}:host .rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}:host .rt-calendar__day[data-state=start],:host .rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}:host .rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}:host .rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}:host .rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){:host .rt-calendar__months{grid-template-columns:1fr}:host .rt-calendar__month:last-child{display:none}}@media(width<=374px){:host .rt-calendar__day{padding-inline:0}:host .rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"] }]
2668
+ }, template: "<ng-container rtBlock=\"rt-calendar\">\n <div rtElem=\"header\">\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-prev-month\"\n icon=\"chevron-left\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"prevAriaLabel()\"\n [disabled]=\"!canPrev()\"\n (clicked)=\"prevMonth.emit()\" />\n <ng-content select=\"[calendarHint]\" />\n <rt-icon-button\n rtElem=\"nav\"\n qa-dataid=\"calendar-next-month\"\n icon=\"chevron-right\"\n variant=\"secondary\"\n shape=\"circle\"\n [ariaLabel]=\"nextAriaLabel()\"\n [disabled]=\"!canNext()\"\n (clicked)=\"nextMonth.emit()\" />\n </div>\n\n <div rtElem=\"months\" qa-dataid=\"calendar-months\">\n @for (month of months(); track month.key) {\n <div rtElem=\"month\" qa-dataid=\"calendar-month\">\n <p rtElem=\"month-title\" qa-dataid=\"calendar-month-title\">{{ month.label }}</p>\n <div rtElem=\"grid\" qa-dataid=\"calendar-grid\">\n @for (weekday of weekdayLabels(); track $index) {\n <span rtElem=\"weekday\" qa-dataid=\"calendar-weekday\">{{ weekday }}</span>\n }\n @for (blank of month.leadingBlanks; track blank) {\n <span rtElem=\"blank\"></span>\n }\n @for (day of month.days; track day.key) {\n <button\n rtElem=\"day\"\n qa-dataid=\"calendar-day\"\n type=\"button\"\n [attr.data-iso]=\"day.key\"\n [attr.data-state]=\"day.state\"\n [disabled]=\"day.disabled\"\n (click)=\"onDayClick(day)\">\n <span rtElem=\"day-num\" qa-dataid=\"calendar-day-num\">{{ day.dayOfMonth }}</span>\n @if (sublabelsLoading()) {\n <rt-skeleton\n rtElem=\"day-sublabel\"\n qa-dataid=\"calendar-day-price-skeleton\"\n width=\"80%\"\n borderRadius=\"sm\"\n [height]=\"sublabelSkeletonHeight\" />\n } @else if (day.sublabel) {\n <span rtElem=\"day-sublabel\" qa-dataid=\"calendar-day-price\">{{ day.sublabel }}</span>\n }\n </button>\n }\n </div>\n </div>\n }\n </div>\n\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-calendar{display:block}.rt-calendar__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--rt-space-3);gap:var(--rt-space-3)}.rt-calendar__nav{flex:0 0 auto}.rt-calendar__months{display:grid;gap:var(--rt-space-6);grid-template-columns:repeat(2,1fr)}.rt-calendar__month-title{margin:0 0 var(--rt-space-2);color:var(--rt-color-text-primary);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-calendar__month-title:first-letter{text-transform:uppercase}.rt-calendar__grid{display:grid;gap:var(--rt-space-0-5);grid-template-columns:repeat(7,1fr)}.rt-calendar__weekday{padding:var(--rt-space-1) 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-align:center}.rt-calendar__day{display:flex;flex-direction:column;align-items:center;padding:var(--rt-space-1-5) var(--rt-space-0-5);border:none;border-radius:var(--rt-radius-md);background:none;color:var(--rt-color-text-primary);cursor:pointer;font:inherit;gap:var(--rt-space-0-5)}.rt-calendar__day:hover:not(:disabled,[data-state=start],[data-state=end],[data-state=in-range]){background:var(--rt-color-bg-subtle)}.rt-calendar__day:disabled{cursor:not-allowed}.rt-calendar__day[data-state=past],.rt-calendar__day[data-state=blocked]{color:var(--rt-color-text-muted);opacity:.45}.rt-calendar__day[data-state=busy]{color:var(--rt-color-text-muted);opacity:.45;text-decoration:line-through}.rt-calendar__day[data-state=start],.rt-calendar__day[data-state=end]{background:var(--rt-color-action-primary);color:var(--rt-color-action-on-primary)}.rt-calendar__day[data-state=in-range]{background:var(--rt-color-action-primary-soft);color:var(--rt-color-text-link);font-weight:var(--rt-font-weight-semibold)}.rt-calendar__day-num{font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium)}.rt-calendar__day-sublabel{font-size:var(--rt-text-2xs);opacity:.75}@media(width<=640px){.rt-calendar__months{grid-template-columns:1fr}.rt-calendar__month:last-child{display:none}}@media(width<=374px){.rt-calendar__day{padding-inline:0}.rt-calendar__day-sublabel{font-size:var(--rt-text-3xs)}}\n"] }]
2624
2669
  }], propDecorators: { months: [{ type: i0.Input, args: [{ isSignal: true, alias: "months", required: true }] }], weekdayLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "weekdayLabels", required: true }] }], canPrev: [{ type: i0.Input, args: [{ isSignal: true, alias: "canPrev", required: false }] }], canNext: [{ type: i0.Input, args: [{ isSignal: true, alias: "canNext", required: false }] }], prevAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "prevAriaLabel", required: false }] }], nextAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "nextAriaLabel", required: false }] }], sublabelsLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "sublabelsLoading", required: false }] }], prevMonth: [{ type: i0.Output, args: ["prevMonth"] }], nextMonth: [{ type: i0.Output, args: ["nextMonth"] }], dayClick: [{ type: i0.Output, args: ["dayClick"] }] } });
2625
2670
 
2626
2671
  /**
@@ -2686,20 +2731,20 @@ class RtCardComponent {
2686
2731
  this.cardClick.emit(event);
2687
2732
  }
2688
2733
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2689
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCardComponent, isStandalone: true, selector: "rt-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, host: { classAttribute: "rt-card" }, ngImport: i0, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}:host .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}:host .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}:host .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}:host .rt-card__header{margin-block-end:var(--rt-space-md)}:host .rt-card__header:empty{display:none}:host .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}:host .rt-card__content{display:block}:host .rt-card__footer{margin-block-start:var(--rt-space-md)}:host .rt-card__footer:empty{display:none}\n"], dependencies: [{ kind: "directive", type:
2734
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCardComponent, isStandalone: true, selector: "rt-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cardClick: "cardClick" }, host: { classAttribute: "rt-card" }, ngImport: i0, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";rt-card{display:block}rt-card .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}rt-card .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}rt-card .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}rt-card .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-card .rt-card__header{margin-block-end:var(--rt-space-md)}rt-card .rt-card__header:empty{display:none}rt-card .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}rt-card .rt-card__content{display:block}rt-card .rt-card__footer{margin-block-start:var(--rt-space-md)}rt-card .rt-card__footer:empty{display:none}\n"], dependencies: [{ kind: "directive", type:
2690
2735
  // standalone components / directives
2691
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2736
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2692
2737
  }
2693
2738
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCardComponent, decorators: [{
2694
2739
  type: Component,
2695
- args: [{ selector: 'rt-card', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
2740
+ args: [{ selector: 'rt-card', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
2696
2741
  // standalone components / directives
2697
2742
  BlockDirective,
2698
2743
  ElemDirective,
2699
2744
  ModDirective,
2700
2745
  ], host: {
2701
2746
  class: BEM_BLOCK$14,
2702
- }, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}:host .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}:host .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}:host .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}:host .rt-card__header{margin-block-end:var(--rt-space-md)}:host .rt-card__header:empty{display:none}:host .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}:host .rt-card__content{display:block}:host .rt-card__footer{margin-block-start:var(--rt-space-md)}:host .rt-card__footer:empty{display:none}\n"] }]
2747
+ }, template: "<article\n rtBlock=\"rt-card\"\n qa-dataid=\"card\"\n [rtMod]=\"{ clickable: clickable() }\"\n [attr.role]=\"clickable() ? 'button' : null\"\n [attr.tabindex]=\"clickable() ? 0 : null\"\n [attr.aria-label]=\"ariaLabel()\"\n (click)=\"onClick($event)\"\n (keydown.enter)=\"onKeyActivate($event)\"\n (keydown.space)=\"onKeyActivate($event)\">\n <header rtElem=\"header\">\n @if (header(); as h) {\n <h3 rtElem=\"title\" qa-dataid=\"card-title\">{{ h }}</h3>\n }\n <ng-content select=\"[rtCardHeader]\" />\n </header>\n <div rtElem=\"content\">\n <ng-content />\n </div>\n <footer rtElem=\"footer\">\n <ng-content select=\"[rtCardFooter]\" />\n </footer>\n</article>\n", styles: ["@charset \"UTF-8\";rt-card{display:block}rt-card .rt-card{display:block;padding:var(--rt-space-lg);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card);color:var(--rt-color-text-primary)}rt-card .rt-card--clickable{cursor:pointer;transition:box-shadow var(--rt-duration-fast) ease,transform var(--rt-duration-fast) ease}rt-card .rt-card--clickable:hover{box-shadow:var(--rt-shadow-lg)}rt-card .rt-card--clickable:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-card .rt-card__header{margin-block-end:var(--rt-space-md)}rt-card .rt-card__header:empty{display:none}rt-card .rt-card__title{margin:0;font-size:var(--rt-text-lg);line-height:var(--rt-leading-snug)}rt-card .rt-card__content{display:block}rt-card .rt-card__footer{margin-block-start:var(--rt-space-md)}rt-card .rt-card__footer:empty{display:none}\n"] }]
2703
2748
  }], propDecorators: { header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], clickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clickable", required: false }] }], cardClick: [{ type: i0.Output, args: ["cardClick"] }] } });
2704
2749
 
2705
2750
  /**
@@ -4687,10 +4732,12 @@ const BEM_BLOCK$V = 'rt-checkbox';
4687
4732
  * `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
4688
4733
  * NG0200 cycle при boot'е.
4689
4734
  *
4690
- * Source-of-truth для disabled — внутренний `isDisabled` signal: и signal-input
4691
- * `disabled`, и CVA `setDisabledState` пишут в один и тот же signal (input —
4692
- * через `effect()`, CVA — напрямую), так `[disabled]="true"` и
4693
- * `FormControl.disable()` ведут себя одинаково.
4735
+ * Отключение складывается из двух независимых источников: входа `disabled` и
4736
+ * слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
4737
+ * них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
4738
+ * связывании контрола, то есть раньше, чем чекбокс впервые обновит своё вью,
4739
+ * и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
4740
+ * оказывался бы кликабельным.
4694
4741
  *
4695
4742
  * `indeterminate` — чисто визуальное mixed-состояние; клик по нему разрешается
4696
4743
  * в `true` (стандартное поведение tri-state чекбокса).
@@ -4698,14 +4745,15 @@ const BEM_BLOCK$V = 'rt-checkbox';
4698
4745
  * Текстовая подпись проецируется через `<ng-content>`.
4699
4746
  */
4700
4747
  class RtCheckboxComponent {
4701
- #onChange;
4702
- #onTouched;
4703
4748
  constructor() {
4704
4749
  this.#onChange = () => undefined;
4705
4750
  this.#onTouched = () => undefined;
4751
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
4752
+ this.#disabledByForm = signal(false, /* @ts-ignore */
4753
+ ...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
4706
4754
  this.isChecked = signal(false, /* @ts-ignore */
4707
4755
  ...(ngDevMode ? [{ debugName: "isChecked" }] : /* istanbul ignore next */ []));
4708
- this.isDisabled = signal(false, /* @ts-ignore */
4756
+ this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
4709
4757
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
4710
4758
  this.inputId = input(null, /* @ts-ignore */
4711
4759
  ...(ngDevMode ? [{ debugName: "inputId" }] : /* istanbul ignore next */ []));
@@ -4713,13 +4761,11 @@ class RtCheckboxComponent {
4713
4761
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
4714
4762
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4715
4763
  this.indeterminate = input(false, { ...(ngDevMode ? { debugName: "indeterminate" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
4716
- // Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
4717
- // `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
4718
- // и то же место. Effect живёт в injection context конструктора.
4719
- effect(() => {
4720
- this.isDisabled.set(this.disabled());
4721
- });
4722
4764
  }
4765
+ #onChange;
4766
+ #onTouched;
4767
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
4768
+ #disabledByForm;
4723
4769
  writeValue(value) {
4724
4770
  this.isChecked.set(value === true);
4725
4771
  }
@@ -4730,7 +4776,7 @@ class RtCheckboxComponent {
4730
4776
  this.#onTouched = fn;
4731
4777
  }
4732
4778
  setDisabledState(disabled) {
4733
- this.isDisabled.set(disabled);
4779
+ this.#disabledByForm.set(disabled);
4734
4780
  }
4735
4781
  toggle() {
4736
4782
  if (this.isDisabled()) {
@@ -4749,13 +4795,13 @@ class RtCheckboxComponent {
4749
4795
  useExisting: forwardRef(() => RtCheckboxComponent),
4750
4796
  multi: true,
4751
4797
  },
4752
- ], ngImport: i0, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: [":host{display:inline-block}.rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}.rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-checkbox--disabled{cursor:not-allowed;opacity:.5}.rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}.rt-checkbox--checked .rt-checkbox__box,.rt-checkbox--indeterminate .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}.rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}.rt-checkbox__label:empty{display:none}\n"], dependencies: [{ kind: "component", type:
4798
+ ], ngImport: i0, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-checkbox{display:inline-block}rt-checkbox .rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}rt-checkbox .rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-checkbox .rt-checkbox--disabled{cursor:not-allowed;opacity:.5}rt-checkbox .rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}rt-checkbox .rt-checkbox--checked rt-checkbox .rt-checkbox__box,rt-checkbox .rt-checkbox--indeterminate rt-checkbox .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}rt-checkbox .rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}rt-checkbox .rt-checkbox__label:empty{display:none}\n"], dependencies: [{ kind: "component", type:
4753
4799
  // standalone components / directives
4754
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4800
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4755
4801
  }
4756
4802
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCheckboxComponent, decorators: [{
4757
4803
  type: Component,
4758
- args: [{ selector: 'rt-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
4804
+ args: [{ selector: 'rt-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
4759
4805
  // standalone components / directives
4760
4806
  RtIconComponent,
4761
4807
  BlockDirective,
@@ -4769,8 +4815,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4769
4815
  },
4770
4816
  ], host: {
4771
4817
  class: BEM_BLOCK$V,
4772
- }, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: [":host{display:inline-block}.rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}.rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-checkbox--disabled{cursor:not-allowed;opacity:.5}.rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}.rt-checkbox--checked .rt-checkbox__box,.rt-checkbox--indeterminate .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}.rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}.rt-checkbox__label:empty{display:none}\n"] }]
4773
- }], ctorParameters: () => [], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
4818
+ }, template: "<button\n rtBlock=\"rt-checkbox\"\n qa-dataid=\"checkbox-control\"\n type=\"button\"\n role=\"checkbox\"\n [rtMod]=\"{\n checked: isChecked() && !indeterminate(),\n indeterminate: indeterminate(),\n disabled: isDisabled(),\n }\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"indeterminate() ? 'mixed' : isChecked()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"box\">\n @if (indeterminate()) {\n <rt-icon rtElem=\"icon\" name=\"minus\" size=\"xs\" color=\"inverse\" />\n } @else if (isChecked()) {\n <rt-icon rtElem=\"icon\" name=\"check\" size=\"xs\" color=\"inverse\" />\n }\n </span>\n\n <span rtElem=\"label\" qa-dataid=\"checkbox-label\">\n <ng-content />\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-checkbox{display:inline-block}rt-checkbox .rt-checkbox{display:inline-flex;align-items:center;padding:0;border:none;background:none;cursor:pointer;gap:var(--rt-space-sm);text-align:start}rt-checkbox .rt-checkbox:focus-visible{border-radius:var(--rt-radius-sm);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-checkbox .rt-checkbox--disabled{cursor:not-allowed;opacity:.5}rt-checkbox .rt-checkbox__box{display:inline-flex;width:18px;height:18px;flex-shrink:0;align-items:center;justify-content:center;border:var(--rt-input-border-width) solid var(--rt-color-border-strong);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface);transition:background var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease}rt-checkbox .rt-checkbox--checked rt-checkbox .rt-checkbox__box,rt-checkbox .rt-checkbox--indeterminate rt-checkbox .rt-checkbox__box{border-color:var(--rt-color-action-primary);background:var(--rt-color-action-primary)}rt-checkbox .rt-checkbox__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);-webkit-user-select:none;user-select:none}rt-checkbox .rt-checkbox__label:empty{display:none}\n"] }]
4819
+ }], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }] } });
4774
4820
 
4775
4821
  const BEM_BLOCK$U = 'rt-collapsible-text';
4776
4822
  class RtCollapsibleTextComponent {
@@ -5822,7 +5868,7 @@ class RtContainerComponent {
5822
5868
  return maxSeconds * 1000;
5823
5869
  }
5824
5870
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5825
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtContainerComponent, isStandalone: true, selector: "rt-container", inputs: { mobileLeftNav: { classPropertyName: "mobileLeftNav", publicName: "mobileLeftNav", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick", rightOpened: "rightOpened", rightClosed: "rightClosed" }, host: { properties: { "class.rt-container--mobile-left-bottom": "mobileLeftNav() === 'bottom'", "class.rt-container--viewport": "height() === 'viewport'" }, classAttribute: "rt-container" }, providers: [RtContainerStateService], queries: [{ propertyName: "headerTpl", first: true, predicate: RtContainerHeaderDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "leftSidenavTpl", first: true, predicate: RtContainerLeftSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "rightSidenavTpl", first: true, predicate: RtContainerRightSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarLeftTpl", first: true, predicate: RtContainerToolbarLeftDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarCenterTpl", first: true, predicate: RtContainerToolbarCenterDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarRightTpl", first: true, predicate: RtContainerToolbarRightDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "contentTpl", first: true, predicate: RtContainerContentDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#00000073;opacity:0;pointer-events:none;transition:opacity var(--rt-duration-base) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-duration-base) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{width:100dvw}.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}\n"], dependencies: [{ kind: "directive", type:
5871
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtContainerComponent, isStandalone: true, selector: "rt-container", inputs: { mobileLeftNav: { classPropertyName: "mobileLeftNav", publicName: "mobileLeftNav", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backdropClick: "backdropClick", rightOpened: "rightOpened", rightClosed: "rightClosed" }, host: { properties: { "class.rt-container--mobile-left-bottom": "mobileLeftNav() === 'bottom'", "class.rt-container--viewport": "height() === 'viewport'" }, classAttribute: "rt-container" }, providers: [RtContainerStateService], queries: [{ propertyName: "headerTpl", first: true, predicate: RtContainerHeaderDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "leftSidenavTpl", first: true, predicate: RtContainerLeftSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "rightSidenavTpl", first: true, predicate: RtContainerRightSidenavDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarLeftTpl", first: true, predicate: RtContainerToolbarLeftDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarCenterTpl", first: true, predicate: RtContainerToolbarCenterDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "toolbarRightTpl", first: true, predicate: RtContainerToolbarRightDirective, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "contentTpl", first: true, predicate: RtContainerContentDirective, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}@media(width<=768px){.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}\n"], dependencies: [{ kind: "directive", type:
5826
5872
  // Angular
5827
5873
  NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type:
5828
5874
  // standalone components / directives
@@ -5842,7 +5888,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
5842
5888
  class: BEM_BLOCK$R,
5843
5889
  '[class.rt-container--mobile-left-bottom]': "mobileLeftNav() === 'bottom'",
5844
5890
  '[class.rt-container--viewport]': "height() === 'viewport'",
5845
- }, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#00000073;opacity:0;pointer-events:none;transition:opacity var(--rt-duration-base) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-duration-base) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{width:100dvw}.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}\n"] }]
5891
+ }, template: "<ng-container rtBlock=\"rt-container\">\n @if (headerTpl(); as tpl) {\n <header rtElem=\"header\" qa-dataid=\"container-header\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </header>\n }\n\n @if (leftSidenavTpl(); as tpl) {\n <aside rtElem=\"left-sidenav\" qa-dataid=\"container-left-sidenav\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </aside>\n }\n\n @if (toolbarLeftTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"left\" [rtMod]=\"{ slot: 'left' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarCenterTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"center\" [rtMod]=\"{ slot: 'center' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (toolbarRightTpl(); as tpl) {\n <div rtElem=\"toolbar\" qa-dataid=\"container-toolbar\" data-slot=\"right\" [rtMod]=\"{ slot: 'right' }\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </div>\n }\n\n @if (contentTpl(); as tpl) {\n <main rtElem=\"content\" qa-dataid=\"container-content\">\n <ng-container [ngTemplateOutlet]=\"tpl\" />\n </main>\n }\n\n <rt-toaster position=\"bottom-center\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";:root{--rt-aside-animation-duration: .2s;--rt-aside-backdrop-bg: rgb(0 0 0 / 45%);--rt-aside-backdrop-blur: 5px}.cdk-overlay-backdrop.rt-aside-backdrop{-webkit-backdrop-filter:blur(var(--rt-aside-backdrop-blur));backdrop-filter:blur(var(--rt-aside-backdrop-blur));background:var(--rt-aside-backdrop-bg);opacity:0;pointer-events:none;transition:opacity var(--rt-aside-animation-duration) ease}.cdk-overlay-backdrop.rt-aside-backdrop.rt-aside-backdrop--visible{opacity:1;pointer-events:auto}.rt-aside-overlay{height:100dvh;transition:transform var(--rt-aside-animation-duration) ease}.rt-aside-overlay:not(.rt-aside-overlay--open){pointer-events:none}.rt-aside-overlay.rt-aside-overlay--entering{transition:none}.rt-aside-overlay--position-right.rt-aside-overlay--entering,.rt-aside-overlay--position-right.rt-aside-overlay--leaving{transform:translate(100%)}.rt-aside-overlay--position-left.rt-aside-overlay--entering,.rt-aside-overlay--position-left.rt-aside-overlay--leaving{transform:translate(-100%)}.rt-aside-overlay--position-right.rt-aside-overlay--open,.rt-aside-overlay--position-left.rt-aside-overlay--open{transform:translate(0)}@media(width<=768px){.rt-aside-overlay{overflow:hidden;width:100dvw;max-width:100dvw}}@media(prefers-reduced-motion:reduce){.rt-aside-overlay{transition:none}}.rt-container{display:grid;min-height:100%;flex:1 1 auto;background-color:var(--rt-color-bg-page, #f5f5f5);color:var(--rt-color-text-primary, #222);grid-template:\"header header\" auto \"left-sidenav toolbar\" auto \"left-sidenav content\" 1fr/auto 1fr}.rt-container__header{position:sticky;z-index:1;top:0;display:block;grid-area:header}.rt-container__left-sidenav{display:block;padding:var(--rt-space-md);border-right:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:left-sidenav}.rt-container__toolbar{display:flex;align-items:center;padding:var(--rt-space-sm) var(--rt-space-md);border-bottom:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);background-color:var(--rt-color-bg-surface, #fff);grid-area:toolbar}.rt-container__toolbar--slot--left{justify-content:flex-start}.rt-container__toolbar--slot--center{justify-content:center}.rt-container__toolbar--slot--right{justify-content:flex-end}.rt-container__content{display:flex;overflow:auto;min-height:0;flex-direction:column;grid-area:content}.rt-container--viewport{block-size:100dvh;min-block-size:0}.rt-container--viewport .rt-container__content{overflow:hidden}.rt-container--viewport .rt-container__left-sidenav{overflow:auto}@media(width<=768px){.rt-container--mobile-left-bottom{grid-template:\"header\" auto \"toolbar\" auto \"content\" 1fr \"left-sidenav\" auto/1fr}.rt-container--mobile-left-bottom .rt-container__left-sidenav{padding:0;border-top:var(--rt-border-width-thin) solid var(--rt-color-border-subtle);border-right:none}}\n"] }]
5846
5892
  }], ctorParameters: () => [], propDecorators: { headerTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtContainerHeaderDirective), { ...{
5847
5893
  read: TemplateRef,
5848
5894
  }, isSignal: true }] }], leftSidenavTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtContainerLeftSidenavDirective), { ...{
@@ -5959,14 +6005,14 @@ class RtDialogComponent {
5959
6005
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
5960
6006
  }
5961
6007
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5962
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtDialogComponent, isStandalone: true, selector: "rt-dialog", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--rt-dialog-width": "width()" }, classAttribute: "rt-dialog" }, ngImport: i0, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}.rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}.rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}.rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}.rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6008
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtDialogComponent, isStandalone: true, selector: "rt-dialog", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--rt-dialog-width": "width()" }, classAttribute: "rt-dialog" }, ngImport: i0, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";rt-dialog{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}rt-dialog .rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}rt-dialog .rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}rt-dialog .rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}rt-dialog .rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"], dependencies: [{ kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5963
6009
  }
5964
6010
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtDialogComponent, decorators: [{
5965
6011
  type: Component,
5966
6012
  args: [{ selector: 'rt-dialog', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [BlockDirective, ModDirective], host: {
5967
6013
  class: BEM_BLOCK$Q,
5968
6014
  '[style.--rt-dialog-width]': 'width()',
5969
- }, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}.rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}.rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}.rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}.rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"] }]
6015
+ }, template: "<div\n rtBlock=\"rt-dialog\"\n qa-dataid=\"dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [rtMod]=\"{ size: size() }\"\n [style.--rt-dialog-width]=\"width()\"\n [attr.aria-label]=\"ariaLabel()\">\n <ng-content />\n</div>\n", styles: ["@charset \"UTF-8\";rt-dialog{display:contents}:root{--rt-dialog-width-sm: 460px;--rt-dialog-width-md: 660px;--rt-dialog-width-lg: 860px;--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);--rt-dialog-backdrop-blur: 5px}rt-dialog .rt-dialog{display:flex;overflow:hidden;width:var(--rt-dialog-width, var(--rt-dialog-width-md));max-width:90dvw;max-height:90dvh;flex-direction:column;padding:0;border:none;border-radius:var(--rt-radius-xl, 15px);background:var(--rt-color-bg-surface);box-shadow:var(--rt-dialog-shadow);color:var(--rt-color-text-primary)}rt-dialog .rt-dialog--size--sm{width:var(--rt-dialog-width, var(--rt-dialog-width-sm))}rt-dialog .rt-dialog--size--md{width:var(--rt-dialog-width, var(--rt-dialog-width-md))}rt-dialog .rt-dialog--size--lg{width:var(--rt-dialog-width, var(--rt-dialog-width-lg))}.rt-dialog-backdrop{-webkit-backdrop-filter:blur(var(--rt-dialog-backdrop-blur));backdrop-filter:blur(var(--rt-dialog-backdrop-blur));background:var(--rt-dialog-backdrop-bg)}.rt-dialog-overlay{display:flex;align-items:center;justify-content:center}\n"] }]
5970
6016
  }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
5971
6017
 
5972
6018
  /** Что делает панель, когда её просят закрыться. */
@@ -6657,28 +6703,30 @@ function clamp$1(value, min, max) {
6657
6703
  * `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
6658
6704
  * NG0200 cycle при boot'е.
6659
6705
  *
6660
- * Source-of-truth для disabled — внутренний `isDisabled` signal: и signal-input
6661
- * `disabled`, и CVA `setDisabledState` пишут в него, поэтому `[disabled]="true"`
6662
- * и `FormControl.disable()` ведут себя одинаково.
6706
+ * Отключение складывается из двух независимых источников: входа `disabled` и
6707
+ * слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
6708
+ * них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
6709
+ * связывании контрола, то есть раньше, чем счётчик впервые обновит своё вью,
6710
+ * и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
6711
+ * оказывался бы рабочим.
6663
6712
  *
6664
6713
  * Хост объявлен группой с `aria-label`, значение помечено `aria-live`, так что
6665
6714
  * скринридер называет назначение счётчика и проговаривает новое число.
6666
6715
  *
6667
- * ViewEncapsulation — default (Emulated), стили обёрнуты в `:host { ... }`.
6716
+ * ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
6668
6717
  */
6669
6718
  class RtCounterComponent {
6670
- #onChange;
6671
- #onTouched;
6672
- #decreaseFallback;
6673
- #increaseFallback;
6674
6719
  constructor() {
6675
6720
  this.#onChange = () => undefined;
6676
6721
  this.#onTouched = () => undefined;
6677
6722
  this.#decreaseFallback = translateSignal(RT_COUNTER_DECREASE_KEY);
6678
6723
  this.#increaseFallback = translateSignal(RT_COUNTER_INCREASE_KEY);
6724
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
6725
+ this.#disabledByForm = signal(false, /* @ts-ignore */
6726
+ ...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
6679
6727
  this.value = signal(0, /* @ts-ignore */
6680
6728
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
6681
- this.isDisabled = signal(false, /* @ts-ignore */
6729
+ this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
6682
6730
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
6683
6731
  /** Своя подпись важнее умолчания: форма знает, что именно считает */
6684
6732
  this.decreaseAriaLabel = computed(() => this.decreaseLabel() || this.#decreaseFallback(), /* @ts-ignore */
@@ -6702,13 +6750,13 @@ class RtCounterComponent {
6702
6750
  this.increaseLabel = input('', /* @ts-ignore */
6703
6751
  ...(ngDevMode ? [{ debugName: "increaseLabel" }] : /* istanbul ignore next */ []));
6704
6752
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
6705
- // Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
6706
- // `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
6707
- // и то же место. Effect живёт в injection context конструктора.
6708
- effect(() => {
6709
- this.isDisabled.set(this.disabled());
6710
- });
6711
6753
  }
6754
+ #onChange;
6755
+ #onTouched;
6756
+ #decreaseFallback;
6757
+ #increaseFallback;
6758
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
6759
+ #disabledByForm;
6712
6760
  writeValue(value) {
6713
6761
  this.value.set(clamp$1(Number(value ?? this.min()), this.min(), this.max()));
6714
6762
  }
@@ -6719,7 +6767,7 @@ class RtCounterComponent {
6719
6767
  this.#onTouched = fn;
6720
6768
  }
6721
6769
  setDisabledState(disabled) {
6722
- this.isDisabled.set(disabled);
6770
+ this.#disabledByForm.set(disabled);
6723
6771
  }
6724
6772
  decrease() {
6725
6773
  this.#shift(-this.step());
@@ -6746,15 +6794,15 @@ class RtCounterComponent {
6746
6794
  useExisting: forwardRef(() => RtCounterComponent),
6747
6795
  multi: true,
6748
6796
  },
6749
- ], ngImport: i0, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: [":host{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}:host .rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"], dependencies: [{ kind: "directive", type:
6797
+ ], ngImport: i0, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}.rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"], dependencies: [{ kind: "directive", type:
6750
6798
  // rt-tools
6751
6799
  BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "component", type:
6752
6800
  // components
6753
- RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6801
+ RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6754
6802
  }
6755
6803
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterComponent, decorators: [{
6756
6804
  type: Component,
6757
- args: [{ selector: 'rt-counter', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6805
+ args: [{ selector: 'rt-counter', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
6758
6806
  // rt-tools
6759
6807
  BlockDirective,
6760
6808
  ElemDirective,
@@ -6770,8 +6818,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
6770
6818
  class: BEM_BLOCK$O,
6771
6819
  role: 'group',
6772
6820
  '[attr.aria-label]': 'ariaLabel()',
6773
- }, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: [":host{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}:host .rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"] }]
6774
- }], ctorParameters: () => [], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], decreaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "decreaseLabel", required: false }] }], increaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "increaseLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
6821
+ }, template: "<ng-container rtBlock=\"rt-counter\">\n <rt-icon-button\n rtElem=\"decrease\"\n qa-dataid=\"counter-decrease\"\n icon=\"minus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"decreaseAriaLabel()\"\n [disabled]=\"!canDecrease()\"\n (clicked)=\"decrease()\" />\n <span rtElem=\"value\" qa-dataid=\"counter-value\" aria-live=\"polite\">{{ value() }}</span>\n <rt-icon-button\n rtElem=\"increase\"\n qa-dataid=\"counter-increase\"\n icon=\"ico-plus\"\n variant=\"secondary\"\n size=\"sm\"\n [ariaLabel]=\"increaseAriaLabel()\"\n [disabled]=\"!canIncrease()\"\n (clicked)=\"increase()\" />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter{display:inline-flex;align-items:center;gap:var(--rt-counter-gap)}.rt-counter__value{min-width:var(--rt-counter-value-min-width);color:var(--rt-counter-value-color);font-size:var(--rt-counter-value-font-size);font-variant-numeric:tabular-nums;text-align:center}\n"] }]
6822
+ }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], step: [{ type: i0.Input, args: [{ isSignal: true, alias: "step", required: false }] }], decreaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "decreaseLabel", required: false }] }], increaseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "increaseLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
6775
6823
 
6776
6824
  const BEM_BLOCK$N = 'rt-counter-row';
6777
6825
  /**
@@ -6782,7 +6830,7 @@ const BEM_BLOCK$N = 'rt-counter-row';
6782
6830
  * раскладку, и её не приходится расширять каждый раз, когда у `rt-counter`
6783
6831
  * появляется новый input.
6784
6832
  *
6785
- * ViewEncapsulation — default (Emulated), стили обёрнуты в `:host { ... }`.
6833
+ * ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
6786
6834
  */
6787
6835
  class RtCounterRowComponent {
6788
6836
  constructor() {
@@ -6793,19 +6841,19 @@ class RtCounterRowComponent {
6793
6841
  ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
6794
6842
  }
6795
6843
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6796
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCounterRowComponent, isStandalone: true, selector: "rt-counter-row", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-counter-row" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}:host .rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}:host .rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}:host .rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}:host(:not(:first-of-type)){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}\n"], dependencies: [{ kind: "directive", type:
6844
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtCounterRowComponent, isStandalone: true, selector: "rt-counter-row", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-counter-row" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter-row{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}.rt-counter-row:not(:first-of-type){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}.rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}.rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}.rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}\n"], dependencies: [{ kind: "directive", type:
6797
6845
  // rt-tools
6798
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6846
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
6799
6847
  }
6800
6848
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtCounterRowComponent, decorators: [{
6801
6849
  type: Component,
6802
- args: [{ selector: 'rt-counter-row', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
6850
+ args: [{ selector: 'rt-counter-row', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
6803
6851
  // rt-tools
6804
6852
  BlockDirective,
6805
6853
  ElemDirective,
6806
6854
  ], host: {
6807
6855
  class: BEM_BLOCK$N,
6808
- }, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: [":host{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}:host .rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}:host .rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}:host .rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}:host(:not(:first-of-type)){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}\n"] }]
6856
+ }, template: "<ng-container rtBlock=\"rt-counter-row\">\n <span rtElem=\"text\">\n <span rtElem=\"label\" qa-dataid=\"counter-row-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <span rtElem=\"hint\" qa-dataid=\"counter-row-hint\">{{ hintText }}</span>\n }\n </span>\n <ng-content />\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-counter-row{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-counter-row-padding-y) 0;gap:var(--rt-counter-row-gap)}.rt-counter-row:not(:first-of-type){border-top:var(--rt-border-width-thin) solid var(--rt-counter-row-color-border)}.rt-counter-row__text{display:flex;flex-direction:column;gap:var(--rt-space-2xs);text-align:start}.rt-counter-row__label{color:var(--rt-counter-row-label-color);font-size:var(--rt-counter-row-label-font-size);font-weight:var(--rt-font-weight-medium)}.rt-counter-row__hint{color:var(--rt-counter-row-hint-color);font-size:var(--rt-counter-row-hint-font-size)}\n"] }]
6809
6857
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }] } });
6810
6858
 
6811
6859
  const BEM_BLOCK$M = 'rt-date-picker';
@@ -7776,13 +7824,13 @@ class RtToggleButtonGroupComponent {
7776
7824
  this.valueChange.emit(option.value);
7777
7825
  }
7778
7826
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7779
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtToggleButtonGroupComponent, isStandalone: true, selector: "rt-toggle-button-group", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.rt-toggle-button-group--full-width": "fullWidth()" }, classAttribute: "rt-toggle-button-group" }, ngImport: i0, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}:host .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}:host .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}:host .rt-toggle-button-group__button:hover:not(:disabled,:host .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}:host .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}:host .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}:host .rt-toggle-button-group__button:disabled{cursor:not-allowed}:host .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}:host .rt-toggle-button-group__icon{flex-shrink:0}:host .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}:host .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}:host .rt-toggle-button-group--disabled{opacity:.5}:host(.rt-toggle-button-group--full-width){display:flex;width:100%}:host(.rt-toggle-button-group--full-width) .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}:host(.rt-toggle-button-group--full-width) .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:host-context(:root[data-theme=dark]),:host-context(html.rt-theme-dark){--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"], dependencies: [{ kind: "component", type:
7827
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtToggleButtonGroupComponent, isStandalone: true, selector: "rt-toggle-button-group", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.rt-toggle-button-group--full-width": "fullWidth()" }, classAttribute: "rt-toggle-button-group" }, ngImport: i0, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-toggle-button-group{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}rt-toggle-button-group .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}rt-toggle-button-group .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}rt-toggle-button-group .rt-toggle-button-group__button:hover:not(:disabled,rt-toggle-button-group .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}rt-toggle-button-group .rt-toggle-button-group__button:disabled{cursor:not-allowed}rt-toggle-button-group .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}rt-toggle-button-group .rt-toggle-button-group__icon{flex-shrink:0}rt-toggle-button-group .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}rt-toggle-button-group .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}rt-toggle-button-group .rt-toggle-button-group--disabled{opacity:.5}rt-toggle-button-group.rt-toggle-button-group--full-width{display:flex;width:100%}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:root[data-theme=dark] rt-toggle-button-group,html.rt-theme-dark rt-toggle-button-group{--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"], dependencies: [{ kind: "component", type:
7780
7828
  // standalone components / directives
7781
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7829
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: RtTooltipDirective, selector: "[rtTooltip]", inputs: ["rtTooltip", "rtTooltipPlacement"], exportAs: ["rtTooltip"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7782
7830
  }
7783
7831
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleButtonGroupComponent, decorators: [{
7784
7832
  type: Component,
7785
- args: [{ selector: 'rt-toggle-button-group', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
7833
+ args: [{ selector: 'rt-toggle-button-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
7786
7834
  // standalone components / directives
7787
7835
  RtIconComponent,
7788
7836
  RtTooltipDirective,
@@ -7792,7 +7840,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
7792
7840
  ], host: {
7793
7841
  class: BEM_BLOCK$A,
7794
7842
  '[class.rt-toggle-button-group--full-width]': 'fullWidth()',
7795
- }, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}:host .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}:host .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}:host .rt-toggle-button-group__button:hover:not(:disabled,:host .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}:host .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}:host .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}:host .rt-toggle-button-group__button:disabled{cursor:not-allowed}:host .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}:host .rt-toggle-button-group__icon{flex-shrink:0}:host .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}:host .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}:host .rt-toggle-button-group--disabled{opacity:.5}:host(.rt-toggle-button-group--full-width){display:flex;width:100%}:host(.rt-toggle-button-group--full-width) .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}:host(.rt-toggle-button-group--full-width) .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:host-context(:root[data-theme=dark]),:host-context(html.rt-theme-dark){--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"] }]
7843
+ }, template: "<div\n rtBlock=\"rt-toggle-button-group\"\n role=\"group\"\n [rtMod]=\"{\n sm: size() === 'sm',\n md: size() === 'md',\n lg: size() === 'lg',\n disabled: disabled(),\n }\"\n [attr.aria-label]=\"ariaLabel()\">\n @for (option of options(); track option.value) {\n <button\n type=\"button\"\n rtElem=\"button\"\n qa-dataid=\"toggle-button-group-option\"\n [attr.data-value]=\"option.value\"\n [rtMod]=\"{\n active: value() === option.value,\n first: $first,\n last: $last,\n }\"\n [disabled]=\"disabled()\"\n [attr.aria-pressed]=\"value() === option.value ? 'true' : 'false'\"\n [rtTooltip]=\"option.title ?? ''\"\n (click)=\"onOptionClick(option)\">\n @if (option.icon) {\n <rt-icon rtElem=\"icon\" color=\"current\" [name]=\"option.icon\" [size]=\"iconSize()\" />\n }\n <span rtElem=\"label\">{{ option.label }}</span>\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-toggle-button-group{display:inline-flex;--rt-toggle-button-group-track-bg: #eef0f4;--rt-toggle-button-group-active-bg: var(--rt-color-bg-surface)}rt-toggle-button-group .rt-toggle-button-group{--rt-toggle-button-group-height: 30px;--rt-toggle-button-group-track-padding: 4px;--rt-toggle-button-group-track-radius: 8px;--rt-toggle-button-group-btn-padding: 0 8px;--rt-toggle-button-group-btn-radius: 8px;--rt-toggle-button-group-btn-gap: 4px;--rt-toggle-button-group-btn-font-size: 12px;--rt-toggle-button-group-btn-line-height: 14px;display:inline-flex;height:var(--rt-toggle-button-group-height);box-sizing:border-box;align-items:stretch;padding:var(--rt-toggle-button-group-track-padding);border-radius:var(--rt-toggle-button-group-track-radius);background-color:var(--rt-toggle-button-group-track-bg);gap:0}rt-toggle-button-group .rt-toggle-button-group__button{display:inline-flex;align-items:center;justify-content:center;padding:var(--rt-toggle-button-group-btn-padding);border:0;border-radius:var(--rt-toggle-button-group-btn-radius);background-color:transparent;color:var(--rt-color-text-muted);cursor:pointer;font-family:inherit;font-size:var(--rt-toggle-button-group-btn-font-size);font-weight:var(--rt-font-weight-semibold);gap:var(--rt-toggle-button-group-btn-gap);line-height:var(--rt-toggle-button-group-btn-line-height);transition:background-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}rt-toggle-button-group .rt-toggle-button-group__button:hover:not(:disabled,rt-toggle-button-group .rt-toggle-button-group__button--active){color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button--active{background-color:var(--rt-toggle-button-group-active-bg);color:var(--rt-color-text-primary)}rt-toggle-button-group .rt-toggle-button-group__button:focus-visible{position:relative;z-index:1;box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:1px}rt-toggle-button-group .rt-toggle-button-group__button:disabled{cursor:not-allowed}rt-toggle-button-group .rt-toggle-button-group__label{display:inline-block;white-space:nowrap}rt-toggle-button-group .rt-toggle-button-group__icon{flex-shrink:0}rt-toggle-button-group .rt-toggle-button-group--md{--rt-toggle-button-group-height: 40px;--rt-toggle-button-group-track-radius: 10px;--rt-toggle-button-group-btn-padding: 0 14px;--rt-toggle-button-group-btn-radius: 10px;--rt-toggle-button-group-btn-gap: 6px;--rt-toggle-button-group-btn-font-size: 14px;--rt-toggle-button-group-btn-line-height: 16px}rt-toggle-button-group .rt-toggle-button-group--lg{--rt-toggle-button-group-height: 50px;--rt-toggle-button-group-track-radius: 12px;--rt-toggle-button-group-btn-padding: 0 20px;--rt-toggle-button-group-btn-radius: 12px;--rt-toggle-button-group-btn-gap: 8px;--rt-toggle-button-group-btn-font-size: 16px;--rt-toggle-button-group-btn-line-height: 18px}rt-toggle-button-group .rt-toggle-button-group--disabled{opacity:.5}rt-toggle-button-group.rt-toggle-button-group--full-width{display:flex;width:100%}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group{display:flex;width:100%;flex:1 1 auto}rt-toggle-button-group.rt-toggle-button-group--full-width .rt-toggle-button-group .rt-toggle-button-group__button{flex:1 1 0}:root[data-theme=dark] rt-toggle-button-group,html.rt-theme-dark rt-toggle-button-group{--rt-toggle-button-group-track-bg: var(--rt-neutral-900)}\n"] }]
7796
7844
  }], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
7797
7845
 
7798
7846
  const BEM_BLOCK$z = 'rt-filter-control';
@@ -7940,13 +7988,13 @@ class RtLogoComponent {
7940
7988
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
7941
7989
  }
7942
7990
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLogoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7943
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtLogoComponent, isStandalone: true, selector: "rt-logo", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, aspect: { classPropertyName: "aspect", publicName: "aspect", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.height.px": "effectiveHeight()", "style.width.px": "effectiveWidth()", "attr.role": "'img'", "attr.aria-label": "ariaLabel()" }, classAttribute: "rt-logo" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}:host:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}:host:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}:host:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"], dependencies: [{ kind: "directive", type:
7991
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtLogoComponent, isStandalone: true, selector: "rt-logo", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, aspect: { classPropertyName: "aspect", publicName: "aspect", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.height.px": "effectiveHeight()", "style.width.px": "effectiveWidth()", "attr.role": "'img'", "attr.aria-label": "ariaLabel()" }, classAttribute: "rt-logo" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-logo{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}.rt-logo:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.rt-logo:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}.rt-logo:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"], dependencies: [{ kind: "directive", type:
7944
7992
  // standalone components / directives
7945
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7993
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7946
7994
  }
7947
7995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLogoComponent, decorators: [{
7948
7996
  type: Component,
7949
- args: [{ selector: 'rt-logo', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
7997
+ args: [{ selector: 'rt-logo', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
7950
7998
  // standalone components / directives
7951
7999
  BlockDirective,
7952
8000
  ElemDirective,
@@ -7956,7 +8004,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
7956
8004
  '[style.width.px]': 'effectiveWidth()',
7957
8005
  '[attr.role]': "'img'",
7958
8006
  '[attr.aria-label]': 'ariaLabel()',
7959
- }, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}:host:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}:host:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}:host:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"] }]
8007
+ }, template: "<ng-container rtBlock=\"rt-logo\">\n <span rtElem=\"wordmark\" qa-dataid=\"logo-wordmark\"></span>\n\n @if (showTagline()) {\n <span rtElem=\"tagline\" qa-dataid=\"logo-tagline\"></span>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-logo{display:inline-block;line-height:0}.rt-logo__wordmark,.rt-logo__tagline{display:block;width:100%;background-position:left center;background-repeat:no-repeat;background-size:contain}.rt-logo__wordmark{height:100%;background-image:var(--rt-logo-wordmark, none)}.rt-logo__tagline{background-image:var(--rt-logo-tagline, none)}[data-theme=dark] .rt-logo__wordmark{background-image:var(--rt-logo-wordmark-dark, var(--rt-logo-wordmark, none))}[data-theme=dark] .rt-logo__tagline{background-image:var(--rt-logo-tagline-dark, var(--rt-logo-tagline, none))}.rt-logo:has(.rt-logo__tagline){display:flex;flex-direction:column;align-items:stretch;justify-content:space-between}.rt-logo:has(.rt-logo__tagline) .rt-logo__wordmark{height:66.7%}.rt-logo:has(.rt-logo__tagline) .rt-logo__tagline{height:22.1%}\n"] }]
7960
8008
  }], propDecorators: { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], aspect: [{ type: i0.Input, args: [{ isSignal: true, alias: "aspect", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
7961
8009
 
7962
8010
  const BEM_BLOCK$x = 'rt-header';
@@ -8046,13 +8094,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
8046
8094
 
8047
8095
  const BEM_BLOCK$v = 'rt-input-number';
8048
8096
  /**
8049
- * Парсит строку в `number | null`. Принимает `,` или `.` как decimal
8050
- * separator. Все пробелы (включая неразрывный) удаляются — нужно чтобы
8051
- * сгруппированное по разрядам отображение (`1 234,56`) парсилось обратно.
8097
+ * Парсит строку в `number | null` по разделителям локали: `groupSep` и любые
8098
+ * пробелы удаляются, оставшийся разделитель дробной части приводится к точке.
8099
+ *
8100
+ * Разбор обязан знать локаль, иначе он расходится с показом: в `en-US` разряды
8101
+ * группируются запятой, и набранное `1000` показывалось как `1,000`, а в форму
8102
+ * уходила `1` — безусловная замена первой запятой на точку читала разделитель
8103
+ * разрядов как десятичный.
8104
+ *
8052
8105
  * Пустая строка / NaN → null.
8053
8106
  */
8054
- function parseNumber(text) {
8055
- const cleaned = text.replace(/\s/g, '').replace(',', '.');
8107
+ function parseNumber(text, groupSep) {
8108
+ const withoutSpaces = text.replace(/\s/g, '');
8109
+ // Пробельный разделитель разрядов (ru) уже снят предыдущей строкой.
8110
+ const withoutGroups = groupSep.trim() === '' ? withoutSpaces : withoutSpaces.split(groupSep).join('');
8111
+ const cleaned = withoutGroups.replace(/,/g, '.');
8056
8112
  if (cleaned === '') {
8057
8113
  return null;
8058
8114
  }
@@ -8115,6 +8171,14 @@ class RtInputNumberComponent extends RtFormControlBase {
8115
8171
  // тот же, что отдаёт toLocaleString на blur — тогда live и blur выглядят
8116
8172
  // одинаково, а parseNumber (стрипает \s) парсит обратно обе формы.
8117
8173
  this.#groupSep = (1000).toLocaleString(this.#locale).replace(/\d/g, '') || ' ';
8174
+ /**
8175
+ * Что в этой локали можно набрать как разделитель дробной части: всё из
8176
+ * «.,», кроме того, чем локаль разделяет разряды. В `ru` разряды разделяет
8177
+ * неразрывный пробел, поэтому годятся оба знака; в `en-US` запятая — это
8178
+ * разряды, и десятичной остаётся только точка. Иначе набранное `1,5`
8179
+ * значило бы в показе одно, а в разборе другое.
8180
+ */
8181
+ this.#decimalSepPattern = new RegExp(`[${['.', ','].filter((char) => char !== this.#groupSep).join('')}]`);
8118
8182
  this.fieldEl = viewChild('fieldEl', /* @ts-ignore */
8119
8183
  ...(ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []));
8120
8184
  this.displayValue = signal('', /* @ts-ignore */
@@ -8146,6 +8210,14 @@ class RtInputNumberComponent extends RtFormControlBase {
8146
8210
  // тот же, что отдаёт toLocaleString на blur — тогда live и blur выглядят
8147
8211
  // одинаково, а parseNumber (стрипает \s) парсит обратно обе формы.
8148
8212
  #groupSep;
8213
+ /**
8214
+ * Что в этой локали можно набрать как разделитель дробной части: всё из
8215
+ * «.,», кроме того, чем локаль разделяет разряды. В `ru` разряды разделяет
8216
+ * неразрывный пробел, поэтому годятся оба знака; в `en-US` запятая — это
8217
+ * разряды, и десятичной остаётся только точка. Иначе набранное `1,5`
8218
+ * значило бы в показе одно, а в разборе другое.
8219
+ */
8220
+ #decimalSepPattern;
8149
8221
  writeValue(value) {
8150
8222
  super.writeValue(value);
8151
8223
  this.displayValue.set(formatNumber(this.value(), this.minFractionDigits(), this.maxFractionDigits(), this.#locale));
@@ -8197,7 +8269,7 @@ class RtInputNumberComponent extends RtFormControlBase {
8197
8269
  target.value = formatted;
8198
8270
  target.setSelectionRange(nextCaret, nextCaret);
8199
8271
  this.displayValue.set(formatted);
8200
- const parsed = parseNumber(formatted);
8272
+ const parsed = parseNumber(formatted, this.#groupSep);
8201
8273
  if (parsed === null) {
8202
8274
  // Только реально пустой ввод → emit null (пользователь очистил поле).
8203
8275
  // Нечисловой ввод стрипается из отображения, но prev value держится до
@@ -8212,7 +8284,7 @@ class RtInputNumberComponent extends RtFormControlBase {
8212
8284
  this.emitChange(parsed);
8213
8285
  }
8214
8286
  onBlur() {
8215
- const parsed = parseNumber(this.displayValue());
8287
+ const parsed = parseNumber(this.displayValue(), this.#groupSep);
8216
8288
  if (parsed === null) {
8217
8289
  this.value.set(null);
8218
8290
  this.displayValue.set('');
@@ -8222,9 +8294,9 @@ class RtInputNumberComponent extends RtFormControlBase {
8222
8294
  }
8223
8295
  const clamped = clamp(parsed, this.min(), this.max());
8224
8296
  const formatted = formatNumber(clamped, this.minFractionDigits(), this.maxFractionDigits(), this.#locale);
8225
- // `formatted` содержит пробелы-разделители и запятую — обратный парс
8226
- // через parseNumber (а не parseFloat) даёт округлённое числовое значение.
8227
- const rounded = parseNumber(formatted) ?? clamped;
8297
+ // `formatted` содержит разделители локали — обратный парс через
8298
+ // parseNumber (а не parseFloat) даёт округлённое числовое значение.
8299
+ const rounded = parseNumber(formatted, this.#groupSep) ?? clamped;
8228
8300
  this.value.set(rounded);
8229
8301
  this.displayValue.set(formatted);
8230
8302
  this.emitChange(rounded);
@@ -8233,8 +8305,11 @@ class RtInputNumberComponent extends RtFormControlBase {
8233
8305
  /**
8234
8306
  * Live-форматирование строки во время набора: целая часть группируется по
8235
8307
  * разрядам (`#groupSep`), дробная остаётся как набрана (хвостовая запятая и
8236
- * нули сохраняются, чтобы их можно было дописать). Десятичный разделитель
8237
- * всегда допускается — округление по `maxFractionDigits` происходит на blur
8308
+ * нули сохраняются, чтобы их можно было дописать). Разделителем дробной
8309
+ * части считается только то, что им может быть в этой локали
8310
+ * (`#decimalSepPattern`), — иначе запятая-разряды в `en-US` читалась бы как
8311
+ * десятичная. Разделитель допускается всегда — округление по
8312
+ * `maxFractionDigits` происходит на blur
8238
8313
  * (поэтому в целочисленном поле «1000,5» парсится и округлится, а не склеится
8239
8314
  * в «10005»). Группировка — линейным проходом, а не `Number()`, чтобы не
8240
8315
  * терять точность на суммах длиннее 2^53.
@@ -8244,7 +8319,7 @@ class RtInputNumberComponent extends RtFormControlBase {
8244
8319
  let sep = '';
8245
8320
  let fracDigits = '';
8246
8321
  let intDigits;
8247
- const sepIndex = raw.search(/[.,]/);
8322
+ const sepIndex = raw.search(this.#decimalSepPattern);
8248
8323
  if (sepIndex >= 0) {
8249
8324
  sep = raw.charAt(sepIndex);
8250
8325
  intDigits = raw.slice(0, sepIndex).replace(/\D/g, '');
@@ -8370,20 +8445,20 @@ class RtLiveBadgeComponent {
8370
8445
  }
8371
8446
  #t_uiLiveOnSite;
8372
8447
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLiveBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8373
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtLiveBadgeComponent, isStandalone: true, selector: "rt-live-badge", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-live-badge" }, ngImport: i0, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}:host .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}:host .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}:host .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}:host .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"], dependencies: [{ kind: "directive", type:
8448
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: RtLiveBadgeComponent, isStandalone: true, selector: "rt-live-badge", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, count: { classPropertyName: "count", publicName: "count", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-live-badge" }, ngImport: i0, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";rt-live-badge{display:inline-flex}rt-live-badge .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}rt-live-badge .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}rt-live-badge .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}rt-live-badge .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"], dependencies: [{ kind: "directive", type:
8374
8449
  // standalone components / directives
8375
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8450
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8376
8451
  }
8377
8452
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtLiveBadgeComponent, decorators: [{
8378
8453
  type: Component,
8379
- args: [{ selector: 'rt-live-badge', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
8454
+ args: [{ selector: 'rt-live-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
8380
8455
  // standalone components / directives
8381
8456
  BlockDirective,
8382
8457
  ElemDirective,
8383
8458
  ModDirective,
8384
8459
  ], host: {
8385
8460
  class: BEM_BLOCK$u,
8386
- }, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}:host .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}:host .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}:host .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}:host .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"] }]
8461
+ }, template: "<span rtBlock=\"rt-live-badge\" qa-dataid=\"live-badge\" [attr.data-active]=\"active()\" [rtMod]=\"{ active: active() }\">\n <span rtElem=\"dot\"></span>\n <span rtElem=\"label\" qa-dataid=\"live-badge-label\">{{ labelText() }}</span>\n <span rtElem=\"count\" qa-dataid=\"live-badge-count\">{{ count() ?? '\u2014' }}</span>\n</span>\n", styles: ["@charset \"UTF-8\";rt-live-badge{display:inline-flex}rt-live-badge .rt-live-badge{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);gap:var(--rt-space-1)}rt-live-badge .rt-live-badge--active .rt-live-badge__dot{background:var(--rt-color-state-success)}rt-live-badge .rt-live-badge__dot{width:8px;height:8px;border-radius:var(--rt-radius-full);background:var(--rt-color-border-subtle)}rt-live-badge .rt-live-badge__count{color:var(--rt-color-text-primary)}\n"] }]
8387
8462
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], count: [{ type: i0.Input, args: [{ isSignal: true, alias: "count", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
8388
8463
 
8389
8464
  const BEM_BLOCK$t = 'rt-menu-confirm-dialog';
@@ -8766,13 +8841,13 @@ class RtMessageComponent {
8766
8841
  this.closed.emit();
8767
8842
  }
8768
8843
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8769
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtMessageComponent, isStandalone: true, selector: "rt-message", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hideIcon: { classPropertyName: "hideIcon", publicName: "hideIcon", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-message" }, ngImport: i0, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}:host .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}:host .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}:host .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-message--severity--secondary,:host .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}:host .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}:host .rt-message__body{min-width:0;flex:1 1 auto}:host .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"], dependencies: [{ kind: "component", type:
8844
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtMessageComponent, isStandalone: true, selector: "rt-message", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hideIcon: { classPropertyName: "hideIcon", publicName: "hideIcon", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { classAttribute: "rt-message" }, ngImport: i0, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";rt-message{display:block}rt-message .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}rt-message .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-message .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-message .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-message .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-message .rt-message--severity--secondary,rt-message .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-message .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}rt-message .rt-message__body{min-width:0;flex:1 1 auto}rt-message .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"], dependencies: [{ kind: "component", type:
8770
8845
  // standalone components / directives
8771
- RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8846
+ RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
8772
8847
  }
8773
8848
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtMessageComponent, decorators: [{
8774
8849
  type: Component,
8775
- args: [{ selector: 'rt-message', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
8850
+ args: [{ selector: 'rt-message', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
8776
8851
  // standalone components / directives
8777
8852
  RtIconButtonComponent,
8778
8853
  RtIconComponent,
@@ -8782,7 +8857,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
8782
8857
  TranslocoPipe,
8783
8858
  ], host: {
8784
8859
  class: BEM_BLOCK$q,
8785
- }, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}:host .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}:host .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}:host .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-message--severity--secondary,:host .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}:host .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}:host .rt-message__body{min-width:0;flex:1 1 auto}:host .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"] }]
8860
+ }, template: "<aside rtBlock=\"rt-message\" qa-dataid=\"message-alert\" role=\"alert\" [attr.data-severity]=\"severity()\" [rtMod]=\"{ severity: severity() }\">\n @if (effectiveIcon(); as iconName) {\n <rt-icon rtElem=\"icon\" [name]=\"iconName\" />\n }\n <div rtElem=\"body\" qa-dataid=\"message-body\">\n <ng-content />\n </div>\n @if (closable()) {\n <rt-icon-button\n rtElem=\"close\"\n qa-dataid=\"message-close\"\n icon=\"ico-close\"\n variant=\"ghost\"\n size=\"sm\"\n shape=\"circle\"\n [ariaLabel]=\"'rtKit.uiClose' | transloco\"\n (clicked)=\"onClose()\" />\n }\n</aside>\n", styles: ["@charset \"UTF-8\";rt-message{display:block}rt-message .rt-message{display:flex;align-items:flex-start;padding:var(--rt-space-3) var(--rt-space-4);border-radius:var(--rt-radius-md);background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info);font-size:var(--rt-text-sm);gap:var(--rt-space-2);line-height:var(--rt-leading-normal)}rt-message .rt-message--severity--info{background:var(--rt-color-state-info-bg);color:var(--rt-color-state-info)}rt-message .rt-message--severity--success{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-message .rt-message--severity--warning{background:var(--rt-color-state-warning-bg);color:var(--rt-color-state-warning)}rt-message .rt-message--severity--danger{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-message .rt-message--severity--secondary,rt-message .rt-message--severity--neutral{background:var(--rt-color-bg-subtle);color:var(--rt-color-text-primary)}rt-message .rt-message__icon{flex-shrink:0;margin-block-start:var(--rt-space-0-5)}rt-message .rt-message__body{min-width:0;flex:1 1 auto}rt-message .rt-message__close{flex-shrink:0;margin-inline-start:auto}\n"] }]
8786
8861
  }], propDecorators: { severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], hideIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIcon", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
8787
8862
 
8788
8863
  const BEM_BLOCK$p = 'rt-money-list';
@@ -9076,20 +9151,20 @@ class RtNightGridComponent {
9076
9151
  this.cellClick.emit(cell);
9077
9152
  }
9078
9153
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtNightGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9079
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtNightGridComponent, isStandalone: true, selector: "rt-night-grid", inputs: { cells: { classPropertyName: "cells", publicName: "cells", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick" }, host: { classAttribute: "rt-night-grid" }, ngImport: i0, template: "<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"list\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n role=\"listitem\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}:host .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}:host .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}:host .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}:host .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}:host .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"], dependencies: [{ kind: "directive", type:
9154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtNightGridComponent, isStandalone: true, selector: "rt-night-grid", inputs: { cells: { classPropertyName: "cells", publicName: "cells", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cellClick: "cellClick" }, host: { classAttribute: "rt-night-grid" }, ngImport: i0, template: "<!--\n \u0413\u0440\u0443\u043F\u043F\u0430, \u0430 \u043D\u0435 \u0441\u043F\u0438\u0441\u043E\u043A: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438, \u0438 `role=\"listitem\"` \u043D\u0430 \u043D\u0438\u0445\n \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0431\u044B \u0440\u043E\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438, \u0442\u0430\u043A \u0447\u0442\u043E \u0441\u043A\u0440\u0438\u043D\u0440\u0438\u0434\u0435\u0440 \u043D\u0430\u0437\u044B\u0432\u0430\u043B \u0431\u044B \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\n \u0443\u043C\u0430\u043B\u0447\u0438\u0432\u0430\u043B, \u0447\u0442\u043E \u043F\u043E \u043D\u0435\u043C\u0443 \u043D\u0430\u0436\u0438\u043C\u0430\u044E\u0442. \u041E\u0431\u0435\u0440\u043D\u0443\u0442\u044C \u043A\u0430\u0436\u0434\u0443\u044E \u043A\u043D\u043E\u043F\u043A\u0443 \u0432 `listitem` \u0442\u043E\u0436\u0435\n \u043D\u0435\u043B\u044C\u0437\u044F: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043F\u0440\u044F\u043C\u044B\u0435 \u0434\u0435\u0442\u0438 grid-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430, \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u0440\u0430\u0437\u0432\u0430\u043B\u0438\u043B\u0430 \u0431\u044B \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443.\n-->\n<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"group\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-night-grid{display:block}rt-night-grid .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}rt-night-grid .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}rt-night-grid .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}rt-night-grid .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}rt-night-grid .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}rt-night-grid .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"], dependencies: [{ kind: "directive", type:
9080
9155
  // standalone components / directives
9081
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9156
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9082
9157
  }
9083
9158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtNightGridComponent, decorators: [{
9084
9159
  type: Component,
9085
- args: [{ selector: 'rt-night-grid', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
9160
+ args: [{ selector: 'rt-night-grid', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
9086
9161
  // standalone components / directives
9087
9162
  BlockDirective,
9088
9163
  ElemDirective,
9089
9164
  ModDirective,
9090
9165
  ], host: {
9091
9166
  class: BEM_BLOCK$m,
9092
- }, template: "<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"list\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n role=\"listitem\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}:host .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}:host .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}:host .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}:host .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}:host .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"] }]
9167
+ }, template: "<!--\n \u0413\u0440\u0443\u043F\u043F\u0430, \u0430 \u043D\u0435 \u0441\u043F\u0438\u0441\u043E\u043A: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043D\u0430\u0441\u0442\u043E\u044F\u0449\u0438\u0435 \u043A\u043D\u043E\u043F\u043A\u0438, \u0438 `role=\"listitem\"` \u043D\u0430 \u043D\u0438\u0445\n \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0431\u044B \u0440\u043E\u043B\u044C \u043A\u043D\u043E\u043F\u043A\u0438, \u0442\u0430\u043A \u0447\u0442\u043E \u0441\u043A\u0440\u0438\u043D\u0440\u0438\u0434\u0435\u0440 \u043D\u0430\u0437\u044B\u0432\u0430\u043B \u0431\u044B \u044D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043F\u0438\u0441\u043A\u0430 \u0438\n \u0443\u043C\u0430\u043B\u0447\u0438\u0432\u0430\u043B, \u0447\u0442\u043E \u043F\u043E \u043D\u0435\u043C\u0443 \u043D\u0430\u0436\u0438\u043C\u0430\u044E\u0442. \u041E\u0431\u0435\u0440\u043D\u0443\u0442\u044C \u043A\u0430\u0436\u0434\u0443\u044E \u043A\u043D\u043E\u043F\u043A\u0443 \u0432 `listitem` \u0442\u043E\u0436\u0435\n \u043D\u0435\u043B\u044C\u0437\u044F: \u043A\u043B\u0435\u0442\u043A\u0438 \u2014 \u043F\u0440\u044F\u043C\u044B\u0435 \u0434\u0435\u0442\u0438 grid-\u043A\u043E\u043D\u0442\u0435\u0439\u043D\u0435\u0440\u0430, \u043E\u0431\u0451\u0440\u0442\u043A\u0430 \u0440\u0430\u0437\u0432\u0430\u043B\u0438\u043B\u0430 \u0431\u044B \u0440\u0430\u0441\u043A\u043B\u0430\u0434\u043A\u0443.\n-->\n<div rtBlock=\"rt-night-grid\" qa-dataid=\"night-grid\" role=\"group\" [attr.aria-label]=\"ariaText()\">\n @for (cell of cells(); track cell.id) {\n <button\n rtElem=\"cell\"\n qa-dataid=\"night-grid-cell\"\n type=\"button\"\n [attr.data-id]=\"cell.id\"\n [attr.data-state]=\"cell.state\"\n [rtMod]=\"{ state: cell.state }\"\n [attr.title]=\"cell.title\"\n [attr.aria-label]=\"cell.title\"\n (click)=\"onCellClick(cell)\"></button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-night-grid{display:block}rt-night-grid .rt-night-grid{display:grid;gap:var(--rt-space-1);grid-template-columns:repeat(auto-fit,minmax(16px,1fr))}rt-night-grid .rt-night-grid__cell{padding:0;border:none;border-radius:var(--rt-radius-sm);aspect-ratio:1;background:var(--rt-color-bg-surface-subtle);cursor:pointer}rt-night-grid .rt-night-grid__cell:hover{outline:var(--rt-border-width-thin) solid var(--rt-color-border-strong)}rt-night-grid .rt-night-grid__cell:focus-visible{outline:var(--rt-border-width-thin) solid var(--rt-color-border-focus);outline-offset:1px}rt-night-grid .rt-night-grid__cell--state--primary{background:var(--rt-color-state-success)}rt-night-grid .rt-night-grid__cell--state--secondary{background:color-mix(in srgb,var(--rt-color-state-success) 35%,transparent)}\n"] }]
9093
9168
  }], propDecorators: { cells: [{ type: i0.Input, args: [{ isSignal: true, alias: "cells", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], cellClick: [{ type: i0.Output, args: ["cellClick"] }] } });
9094
9169
 
9095
9170
  const BEM_BLOCK$l = 'rt-notifications-bell';
@@ -9486,7 +9561,7 @@ class RtPhotoViewerComponent {
9486
9561
  track.scrollTo({ left: track.clientWidth * this.currentIndex(), behavior: 'instant' });
9487
9562
  }
9488
9563
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPhotoViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9489
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPhotoViewerComponent, isStandalone: true, selector: "rt-photo-viewer", host: { attributes: { "role": "dialog", "aria-modal": "true", "tabindex": "-1" }, listeners: { "keydown.escape": "close()", "keydown.arrowLeft": "move(-1)", "keydown.arrowRight": "move(1)" }, classAttribute: "rt-photo-viewer" }, viewQueries: [{ propertyName: "track", first: true, predicate: ["track"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}:host .rt-photo-viewer__surface{position:absolute;inset:0}:host .rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}:host .rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}:host .rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}:host .rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}:host .rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}:host .rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}:host .rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}:host .rt-photo-viewer__bar rt-icon-button,:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}:host .rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}:host .rt-photo-viewer__arrow-next{right:var(--rt-space-3)}:host:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{display:none}:host .rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"], dependencies: [{ kind: "directive", type:
9564
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPhotoViewerComponent, isStandalone: true, selector: "rt-photo-viewer", host: { attributes: { "role": "dialog", "aria-modal": "true", "tabindex": "-1" }, listeners: { "keydown.escape": "close()", "keydown.arrowLeft": "move(-1)", "keydown.arrowRight": "move(1)" }, classAttribute: "rt-photo-viewer" }, viewQueries: [{ propertyName: "track", first: true, predicate: ["track"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-photo-viewer{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}.rt-photo-viewer__surface{position:absolute;inset:0}.rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}.rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}.rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}.rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}.rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}.rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-photo-viewer__bar rt-icon-button,.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}.rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}.rt-photo-viewer__arrow-next{right:var(--rt-space-3)}.rt-photo-viewer:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{display:none}.rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"], dependencies: [{ kind: "directive", type:
9490
9565
  // angular
9491
9566
  CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type:
9492
9567
  // rt-tools
@@ -9494,11 +9569,11 @@ class RtPhotoViewerComponent {
9494
9569
  // components
9495
9570
  RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "pipe", type:
9496
9571
  // transloco
9497
- TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9572
+ TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9498
9573
  }
9499
9574
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPhotoViewerComponent, decorators: [{
9500
9575
  type: Component,
9501
- args: [{ selector: 'rt-photo-viewer', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
9576
+ args: [{ selector: 'rt-photo-viewer', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
9502
9577
  // angular
9503
9578
  CdkTrapFocus,
9504
9579
  NgTemplateOutlet,
@@ -9520,7 +9595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
9520
9595
  '(keydown.escape)': 'close()',
9521
9596
  '(keydown.arrowLeft)': 'move(-1)',
9522
9597
  '(keydown.arrowRight)': 'move(1)',
9523
- }, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";:host{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}:host .rt-photo-viewer__surface{position:absolute;inset:0}:host .rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}:host .rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}:host .rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}:host .rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}:host .rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}:host .rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}:host .rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}:host .rt-photo-viewer__bar rt-icon-button,:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}:host .rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}:host .rt-photo-viewer__arrow-next{right:var(--rt-space-3)}:host:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){:host .rt-photo-viewer__arrow-prev,:host .rt-photo-viewer__arrow-next{display:none}:host .rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"] }]
9598
+ }, template: "<ng-container rtBlock=\"rt-photo-viewer\">\n <!-- \u041B\u043E\u0432\u0443\u0448\u043A\u0430 \u0434\u0435\u0440\u0436\u0438\u0442 Tab \u0432\u043D\u0443\u0442\u0440\u0438; \u0444\u043E\u043A\u0443\u0441 \u0441\u0442\u0430\u0432\u0438\u0442 \u0441\u0430\u043C \u043A\u043E\u043C\u043F\u043E\u043D\u0435\u043D\u0442, \u043F\u043E\u044D\u0442\u043E\u043C\u0443\n \u0430\u0432\u0442\u043E-\u0437\u0430\u0445\u0432\u0430\u0442\u0430 \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442: \u043E\u043D \u043F\u0435\u0440\u0435\u0431\u0438\u0432\u0430\u043B \u0444\u043E\u043A\u0443\u0441 \u043D\u0430 \u043F\u0440\u043E\u0441\u043C\u043E\u0442\u0440\u0449\u0438\u043A\u0435, \u0438 \u043A\u043B\u0430\u0432\u0438\u0448\u0438\n \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043B\u0438 \u043B\u0438\u0441\u0442\u0430\u0442\u044C -->\n <div rtElem=\"surface\" cdkTrapFocus>\n <header rtElem=\"bar\">\n <span rtElem=\"counter\" qa-dataid=\"photo-viewer-counter\">{{ counter() }}</span>\n <rt-icon-button\n qa-dataid=\"photo-viewer-close\"\n icon=\"close\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerClose' | transloco\"\n (clicked)=\"close()\" />\n </header>\n\n <div rtElem=\"track\" qa-dataid=\"photo-viewer-track\" #track (scroll)=\"onScroll()\">\n @for (photo of photos; track photo.id; let index = $index) {\n <figure rtElem=\"slide\" [attr.data-photo-index]=\"index\">\n @if (rendered()[index]) {\n <picture>\n @for (source of photo.picture.sources; track source.type) {\n <source sizes=\"100vw\" [type]=\"source.type\" [srcset]=\"source.srcset\" />\n }\n <img\n rtElem=\"image\"\n qa-dataid=\"photo-viewer-image\"\n decoding=\"async\"\n sizes=\"100vw\"\n [srcset]=\"photo.picture.fallbackSrcset\"\n [src]=\"photo.picture.fallbackSrc\"\n [alt]=\"photo.alt\" />\n </picture>\n }\n </figure>\n }\n </div>\n\n @if (photos.length > 1) {\n <rt-icon-button\n rtElem=\"arrow-prev\"\n qa-dataid=\"photo-viewer-prev\"\n icon=\"angle-left\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerPrev' | transloco\"\n (clicked)=\"move(-1)\" />\n\n <rt-icon-button\n rtElem=\"arrow-next\"\n qa-dataid=\"photo-viewer-next\"\n icon=\"angle-right\"\n variant=\"ghost\"\n [ariaLabel]=\"'rtKit.photoViewerNext' | transloco\"\n (clicked)=\"move(1)\" />\n }\n\n <!-- \u041F\u0430\u043D\u0435\u043B\u044C \u043F\u0440\u0438\u0445\u043E\u0434\u0438\u0442 \u0441\u043D\u0430\u0440\u0443\u0436\u0438: \u0433\u0434\u0435-\u0442\u043E \u043A\u0430\u0434\u0440 \u0442\u043E\u043B\u044C\u043A\u043E \u0441\u043C\u043E\u0442\u0440\u044F\u0442, \u0433\u0434\u0435-\u0442\u043E \u0438\u043C \u0435\u0449\u0451 \u0438\n \u0443\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0442, \u0438 \u0440\u0435\u0448\u0435\u043D\u0438\u0435 \u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442\u0441\u044F \u0442\u0430\u043C \u0436\u0435, \u0433\u0434\u0435 \u043A\u0430\u0434\u0440 \u0432\u0438\u0434\u0435\u043D \u043A\u0440\u0443\u043F\u043D\u043E -->\n @if (panel) {\n <footer rtElem=\"panel\" qa-dataid=\"photo-viewer-panel\">\n <ng-container\n [ngTemplateOutlet]=\"panel\"\n [ngTemplateOutletContext]=\"{ $implicit: photos[currentIndex()], index: currentIndex() }\" />\n </footer>\n }\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-photo-viewer{display:block;width:100vw;height:100vh;height:100dvh;background:var(--rt-color-bg-inverse)}.rt-photo-viewer__surface{position:absolute;inset:0}.rt-photo-viewer__bar{position:absolute;z-index:1;top:0;right:0;left:0;display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-4) var(--rt-space-5);color:var(--rt-color-text-inverse);gap:var(--rt-space-4)}.rt-photo-viewer__counter{font-size:var(--rt-text-sm);font-variant-numeric:tabular-nums}.rt-photo-viewer__track{display:flex;overflow:auto hidden;width:100%;height:100%;scroll-snap-type:x mandatory;scrollbar-width:none}.rt-photo-viewer__slide{display:flex;flex:0 0 100%;align-items:center;justify-content:center;padding:var(--rt-space-10) var(--rt-space-4);margin:0;scroll-snap-align:center}.rt-photo-viewer__slide picture{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.rt-photo-viewer__image{display:block;max-width:100%;max-height:100%;object-fit:contain}.rt-photo-viewer__panel{position:absolute;z-index:1;right:0;bottom:0;left:0;padding:var(--rt-space-4) var(--rt-space-5);background:var(--rt-color-bg-surface);color:var(--rt-color-text-primary)}.rt-photo-viewer__bar rt-icon-button,.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{--rt-icon-button-color: var(--rt-color-text-inverse);--rt-icon-button-color-bg-hover: color-mix(in srgb, var(--rt-color-text-inverse) 24%, transparent);border-radius:var(--rt-radius-md);background:color-mix(in srgb,var(--rt-color-bg-inverse) 55%,transparent)}.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{position:absolute;top:50%;transform:translateY(-50%)}.rt-photo-viewer__arrow-prev{left:var(--rt-space-3)}.rt-photo-viewer__arrow-next{right:var(--rt-space-3)}.rt-photo-viewer:has(.rt-photo-viewer__panel) .rt-photo-viewer__slide{padding-bottom:var(--rt-space-20)}@media(width<=700px){.rt-photo-viewer__arrow-prev,.rt-photo-viewer__arrow-next{display:none}.rt-photo-viewer__slide{padding:var(--rt-space-12) 0}}\n"] }]
9524
9599
  }], ctorParameters: () => [], propDecorators: { track: [{ type: i0.ViewChild, args: ['track', { isSignal: true }] }] } });
9525
9600
 
9526
9601
  /** Сколько всего страниц. Пустой список — одна страница, листать нечего. */
@@ -9622,7 +9697,7 @@ class RtPaginationComponent {
9622
9697
  this.perPageChange.emit(value);
9623
9698
  }
9624
9699
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9625
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPaginationComponent, isStandalone: true, selector: "rt-pagination", inputs: { pageModel: { classPropertyName: "pageModel", publicName: "pageModel", isSignal: true, isRequired: true, transformFunction: null }, perPageOptions: { classPropertyName: "perPageOptions", publicName: "perPageOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, host: { properties: { "style.display": "isVisible() ? null : 'none'" }, classAttribute: "rt-pagination" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-pagination\">\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n @if (pageModel().totalCount === 0) {\n {{ 'rtKit.uiRangeEmpty' | transloco }}\n } @else {\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n }\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"], dependencies: [{ kind: "ngmodule", type:
9700
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtPaginationComponent, isStandalone: true, selector: "rt-pagination", inputs: { pageModel: { classPropertyName: "pageModel", publicName: "pageModel", isSignal: true, isRequired: true, transformFunction: null }, perPageOptions: { classPropertyName: "perPageOptions", publicName: "perPageOptions", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageChange: "pageChange", perPageChange: "perPageChange" }, host: { properties: { "style.display": "isVisible() ? null : 'none'" }, classAttribute: "rt-pagination" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-pagination\">\n <!--\n \u0412\u0435\u0442\u043A\u0438 \u00AB\u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\u00BB \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E: \u043F\u0443\u0441\u0442\u043E\u0439 \u043D\u0430\u0431\u043E\u0440 \u043F\u0440\u044F\u0447\u0435\u0442 \u0432\u0435\u0441\u044C\n \u0431\u0430\u0440 \u0446\u0435\u043B\u0438\u043A\u043E\u043C (`isVisible`), \u0442\u0430\u043A \u0447\u0442\u043E \u0434\u043E \u044D\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u0435\u043B\u043E \u043D\u0435 \u0434\u043E\u0445\u043E\u0434\u0438\u0442. \u041F\u043E\u043A\u0430\n \u0442\u0430\u043A\u0430\u044F \u0432\u0435\u0442\u043A\u0430 \u0442\u0443\u0442 \u0432\u0438\u0441\u0435\u043B\u0430, \u043E\u043D\u0430 \u0447\u0438\u0442\u0430\u043B\u0430\u0441\u044C \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435, \u0430 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C\n \u0435\u0451 \u0431\u044B\u043B\u043E \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0438 \u043F\u0440\u0438 \u043A\u0430\u043A\u0438\u0445 \u0432\u0445\u043E\u0434\u0430\u0445.\n -->\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"], dependencies: [{ kind: "ngmodule", type:
9626
9701
  // Angular
9627
9702
  FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type:
9628
9703
  // standalone components / directives
@@ -9643,7 +9718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
9643
9718
  ], host: {
9644
9719
  class: BEM_BLOCK$i,
9645
9720
  '[style.display]': "isVisible() ? null : 'none'",
9646
- }, template: "<ng-container rtBlock=\"rt-pagination\">\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n @if (pageModel().totalCount === 0) {\n {{ 'rtKit.uiRangeEmpty' | transloco }}\n } @else {\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n }\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"] }]
9721
+ }, template: "<ng-container rtBlock=\"rt-pagination\">\n <!--\n \u0412\u0435\u0442\u043A\u0438 \u00AB\u043D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E\u00BB \u0437\u0434\u0435\u0441\u044C \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E: \u043F\u0443\u0441\u0442\u043E\u0439 \u043D\u0430\u0431\u043E\u0440 \u043F\u0440\u044F\u0447\u0435\u0442 \u0432\u0435\u0441\u044C\n \u0431\u0430\u0440 \u0446\u0435\u043B\u0438\u043A\u043E\u043C (`isVisible`), \u0442\u0430\u043A \u0447\u0442\u043E \u0434\u043E \u044D\u0442\u043E\u0439 \u0441\u0442\u0440\u043E\u043A\u0438 \u0434\u0435\u043B\u043E \u043D\u0435 \u0434\u043E\u0445\u043E\u0434\u0438\u0442. \u041F\u043E\u043A\u0430\n \u0442\u0430\u043A\u0430\u044F \u0432\u0435\u0442\u043A\u0430 \u0442\u0443\u0442 \u0432\u0438\u0441\u0435\u043B\u0430, \u043E\u043D\u0430 \u0447\u0438\u0442\u0430\u043B\u0430\u0441\u044C \u043A\u0430\u043A \u0440\u0430\u0431\u043E\u0447\u0435\u0435 \u0441\u043E\u0441\u0442\u043E\u044F\u043D\u0438\u0435, \u0430 \u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C\n \u0435\u0451 \u0431\u044B\u043B\u043E \u043D\u0435\u043B\u044C\u0437\u044F \u043D\u0438 \u043F\u0440\u0438 \u043A\u0430\u043A\u0438\u0445 \u0432\u0445\u043E\u0434\u0430\u0445.\n -->\n <span rtElem=\"range\" qa-dataid=\"pagination-range\">\n {{ 'rtKit.uiRangeOf' | transloco: { from: rangeFrom(), to: rangeTo(), total: pageModel().totalCount } }}\n </span>\n\n @if (pageItems().length) {\n <nav rtElem=\"compact\" qa-dataid=\"pagination-compact\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n <span rtElem=\"compact-label\" qa-dataid=\"pagination-compact-label\">\n {{ 'rtKit.uiPageOf' | transloco: { page: pageModel().pageNumber, last: lastPage() } }}\n </span>\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-compact-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n\n <nav rtElem=\"nav\" qa-dataid=\"pagination-nav\" [attr.aria-label]=\"'rtKit.uiPagination' | transloco\">\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-prev\"\n icon=\"chevron-left\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiPrevPage' | transloco\"\n [tooltip]=\"'rtKit.uiBack' | transloco\"\n [disabled]=\"isFirst() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber - 1)\" />\n\n @for (item of pageItems(); track $index) {\n @if (item === 'gap') {\n <span rtElem=\"gap\" aria-hidden=\"true\">\u2026</span>\n } @else {\n <button\n rtElem=\"page\"\n qa-dataid=\"pagination-page\"\n type=\"button\"\n [attr.data-page]=\"item\"\n [rtMod]=\"{ current: item === pageModel().pageNumber }\"\n [attr.aria-current]=\"item === pageModel().pageNumber ? 'page' : null\"\n [disabled]=\"loading()\"\n (click)=\"goTo(item)\">\n {{ item }}\n </button>\n }\n }\n\n <rt-icon-button\n rtElem=\"arrow\"\n qa-dataid=\"pagination-next\"\n icon=\"chevron-right\"\n variant=\"ghost\"\n size=\"sm\"\n [ariaLabel]=\"'rtKit.uiNextPage' | transloco\"\n [tooltip]=\"'rtKit.uiForward' | transloco\"\n [disabled]=\"isLast() || loading()\"\n (clicked)=\"goTo(pageModel().pageNumber + 1)\" />\n </nav>\n }\n\n <div rtElem=\"per-page\">\n <span rtElem=\"per-page-label\">{{ 'rtKit.uiPerPage' | transloco }}</span>\n <rt-select\n qa-dataid=\"pagination-per-page\"\n [ariaLabel]=\"'rtKit.uiItemsPerPage' | transloco\"\n [options]=\"perPageSelectOptions()\"\n [clearable]=\"false\"\n [ngModel]=\"pageModel().pageSize\"\n [ngModelOptions]=\"{ standalone: true }\"\n (selectionChange)=\"onPerPage($event)\" />\n </div>\n</ng-container>\n", styles: [".rt-pagination{display:flex;align-items:center;justify-content:space-between;padding:var(--rt-space-3) var(--rt-space-xs);container-type:inline-size;gap:var(--rt-space-md)}.rt-pagination__range{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__nav{display:flex;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact{display:none;align-items:center;gap:var(--rt-space-xs)}.rt-pagination__compact-label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);white-space:nowrap}.rt-pagination__page{min-width:var(--rt-space-xl);height:var(--rt-space-xl);padding:0 var(--rt-space-sm);border:var(--rt-border-width-thin) solid var(--rt-color-border-default);border-radius:var(--rt-radius-md);background:transparent;color:var(--rt-color-text-primary);cursor:pointer;transition:background-color var(--rt-duration-fast) ease,border-color var(--rt-duration-fast) ease,color var(--rt-duration-fast) ease}.rt-pagination__page:hover:not(:disabled,.rt-pagination__page--current){border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle)}.rt-pagination__page:focus-visible{box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-pagination__page--current{border-color:var(--rt-color-border-strong);background:var(--rt-color-bg-surface-subtle);font-weight:var(--rt-font-weight-semibold)}.rt-pagination__page:disabled{cursor:default;opacity:.6}.rt-pagination__gap{padding:0 var(--rt-space-xs);color:var(--rt-color-text-muted)}.rt-pagination__per-page{display:flex;align-items:center;gap:var(--rt-space-sm)}.rt-pagination__per-page-label{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}@container (max-width: 460px){.rt-pagination__nav,.rt-pagination__range{display:none}.rt-pagination__compact{display:flex}}\n"] }]
9647
9722
  }], propDecorators: { pageModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageModel", required: true }] }], perPageOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "perPageOptions", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], perPageChange: [{ type: i0.Output, args: ["perPageChange"] }] } });
9648
9723
 
9649
9724
  const BEM_BLOCK$h = 'rt-section-nav';
@@ -9660,14 +9735,14 @@ class RtSectionNavComponent {
9660
9735
  this.itemSelect.emit(item.id);
9661
9736
  }
9662
9737
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSectionNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9663
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSectionNavComponent, isStandalone: true, selector: "rt-section-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect" }, host: { attributes: { "role": "navigation" }, classAttribute: "rt-section-nav" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: [".rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}:host-context([data-theme=dark]) .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"], dependencies: [{ kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9738
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtSectionNavComponent, isStandalone: true, selector: "rt-section-nav", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelect: "itemSelect" }, host: { attributes: { "role": "navigation" }, classAttribute: "rt-section-nav" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}[data-theme=dark] .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"], dependencies: [{ kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9664
9739
  }
9665
9740
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtSectionNavComponent, decorators: [{
9666
9741
  type: Component,
9667
9742
  args: [{ selector: 'rt-section-nav', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [RtIconComponent, BlockDirective, ElemDirective, ModDirective], host: {
9668
9743
  class: BEM_BLOCK$h,
9669
9744
  role: 'navigation',
9670
- }, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: [".rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}:host-context([data-theme=dark]) .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"] }]
9745
+ }, template: "<ng-container rtBlock=\"rt-section-nav\">\n @for (item of items(); track item.id) {\n <button\n rtElem=\"tile\"\n qa-dataid=\"section-nav-tile\"\n type=\"button\"\n [attr.data-key]=\"item.id\"\n [attr.data-active]=\"item.active\"\n [attr.aria-current]=\"item.active ? 'page' : null\"\n [rtMod]=\"{ active: item.active }\"\n (click)=\"onSelect(item)\">\n <rt-icon rtElem=\"icon\" size=\"lg\" [name]=\"item.icon\" />\n <span rtElem=\"label\">{{ item.label }}</span>\n </button>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-section-nav{display:flex;gap:var(--rt-space-md)}.rt-section-nav__tile{display:flex;min-width:0;flex:1 0 0;flex-direction:column;align-items:center;justify-content:center;padding:var(--rt-space-md);border:0;border-radius:var(--rt-radius-xl);background:transparent;box-shadow:none;color:var(--rt-color-text-primary);cursor:pointer;gap:var(--rt-space-2-5);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-section-nav__tile:not(.rt-section-nav__tile--active):hover{background:var(--rt-color-bg-surface-subtle);box-shadow:var(--rt-shadow-card-soft)}.rt-section-nav__tile--active{background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);cursor:default}.rt-section-nav__icon{color:inherit}.rt-section-nav__label{color:inherit;font-family:var(--rt-font-family-sans);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}[data-theme=dark] .rt-section-nav__tile--active{background:var(--rt-blue-900)}\n"] }]
9671
9746
  }], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], itemSelect: [{ type: i0.Output, args: ["itemSelect"] }] } });
9672
9747
 
9673
9748
  const BEM_BLOCK$g = 'rt-split-button';
@@ -9802,7 +9877,17 @@ function deltaRow(key, delta) {
9802
9877
  */
9803
9878
  class RtStatTileComponent {
9804
9879
  constructor() {
9805
- this.#baselinePrefix = translateSignal('rtKit.uiBaseline');
9880
+ /**
9881
+ * Значение базы уходит параметром перевода, а не подставляется в готовую
9882
+ * строку: Transloco интерполирует `{{value}}` в момент перевода, и к
9883
+ * возвращённой строке подставлять уже нечего — от подписи оставалась одна
9884
+ * приставка («было», «was»), а само число пропадало.
9885
+ */
9886
+ this.#baselineParams = computed(() => ({
9887
+ value: this.deltaPrimary()?.baseline ?? '',
9888
+ }), /* @ts-ignore */
9889
+ ...(ngDevMode ? [{ debugName: "#baselineParams" }] : /* istanbul ignore next */ []));
9890
+ this.#baselineLine = translateSignal('rtKit.uiBaseline', this.#baselineParams);
9806
9891
  /**
9807
9892
  * Дельта к предыдущему периоду — рядом со значением. Пустая база (`percent`
9808
9893
  * = null) не рисуется вовсе: «—» рядом с цифрой читается как поломка, а не
@@ -9818,10 +9903,7 @@ class RtStatTileComponent {
9818
9903
  * (занятость, состав воронки) живёт во вторичной строке, иначе одна плитка
9819
9904
  * растягивает ряд под самую длинную подпись.
9820
9905
  */
9821
- this.baselineText = computed(() => {
9822
- const baseline = this.deltaPrimary()?.baseline;
9823
- return baseline ? this.#baselinePrefix().replace('{{value}}', baseline) : '';
9824
- }, /* @ts-ignore */
9906
+ this.baselineText = computed(() => (this.deltaPrimary()?.baseline ? this.#baselineLine() : ''), /* @ts-ignore */
9825
9907
  ...(ngDevMode ? [{ debugName: "baselineText" }] : /* istanbul ignore next */ []));
9826
9908
  /** Подпись метрики. */
9827
9909
  this.label = input.required(/* @ts-ignore */
@@ -9842,7 +9924,14 @@ class RtStatTileComponent {
9842
9924
  this.hint = input(null, /* @ts-ignore */
9843
9925
  ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
9844
9926
  }
9845
- #baselinePrefix;
9927
+ /**
9928
+ * Значение базы уходит параметром перевода, а не подставляется в готовую
9929
+ * строку: Transloco интерполирует `{{value}}` в момент перевода, и к
9930
+ * возвращённой строке подставлять уже нечего — от подписи оставалась одна
9931
+ * приставка («было», «was»), а само число пропадало.
9932
+ */
9933
+ #baselineParams;
9934
+ #baselineLine;
9846
9935
  #visibleDelta(delta) {
9847
9936
  if (!delta || delta.percent === null) {
9848
9937
  return null;
@@ -9850,13 +9939,13 @@ class RtStatTileComponent {
9850
9939
  return deltaRow('primary', delta);
9851
9940
  }
9852
9941
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStatTileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9853
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStatTileComponent, isStandalone: true, selector: "rt-stat-tile", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, secondary: { classPropertyName: "secondary", publicName: "secondary", isSignal: true, isRequired: false, transformFunction: null }, deltaPrimary: { classPropertyName: "deltaPrimary", publicName: "deltaPrimary", isSignal: true, isRequired: false, transformFunction: null }, deltaSecondary: { classPropertyName: "deltaSecondary", publicName: "deltaSecondary", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stat-tile" }, ngImport: i0, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}:host .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}:host .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}:host .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}:host .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}:host .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}:host .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}:host .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}:host .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}:host .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}:host .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}:host .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type:
9942
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStatTileComponent, isStandalone: true, selector: "rt-stat-tile", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, secondary: { classPropertyName: "secondary", publicName: "secondary", isSignal: true, isRequired: false, transformFunction: null }, deltaPrimary: { classPropertyName: "deltaPrimary", publicName: "deltaPrimary", isSignal: true, isRequired: false, transformFunction: null }, deltaSecondary: { classPropertyName: "deltaSecondary", publicName: "deltaSecondary", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stat-tile" }, ngImport: i0, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";rt-stat-tile{display:block}rt-stat-tile .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}rt-stat-tile .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}rt-stat-tile .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-stat-tile .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}rt-stat-tile .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}rt-stat-tile .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}rt-stat-tile .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}rt-stat-tile .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"], dependencies: [{ kind: "component", type:
9854
9943
  // standalone components / directives
9855
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9944
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9856
9945
  }
9857
9946
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStatTileComponent, decorators: [{
9858
9947
  type: Component,
9859
- args: [{ selector: 'rt-stat-tile', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
9948
+ args: [{ selector: 'rt-stat-tile', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
9860
9949
  // standalone components / directives
9861
9950
  RtIconComponent,
9862
9951
  BlockDirective,
@@ -9865,7 +9954,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
9865
9954
  TranslocoPipe,
9866
9955
  ], host: {
9867
9956
  class: BEM_BLOCK$f,
9868
- }, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}:host .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}:host .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}:host .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}:host .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}:host .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}:host .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}:host .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}:host .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}:host .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}:host .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}:host .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}:host .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}:host .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"] }]
9957
+ }, template: "<article rtBlock=\"rt-stat-tile\" qa-dataid=\"stat-tile\">\n <header rtElem=\"head\">\n <span rtElem=\"label\" qa-dataid=\"stat-tile-label\">{{ label() }}</span>\n @if (hint(); as hintText) {\n <rt-icon rtElem=\"hint\" qa-dataid=\"stat-tile-hint\" name=\"info-circle\" size=\"xs\" [attr.title]=\"hintText\" />\n }\n </header>\n\n <div rtElem=\"value-row\">\n <p rtElem=\"value\" qa-dataid=\"stat-tile-value\">{{ value() }}</p>\n\n @if (primaryDelta(); as row) {\n <span\n rtElem=\"delta\"\n qa-dataid=\"stat-tile-delta\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n <rt-icon rtElem=\"delta-icon\" size=\"xs\" [name]=\"row.icon\" />\n <span rtElem=\"delta-percent\" qa-dataid=\"stat-tile-delta-percent\">{{ row.text }}</span>\n </span>\n }\n\n @if (yearDelta(); as row) {\n <span\n rtElem=\"year\"\n qa-dataid=\"stat-tile-year\"\n [attr.data-direction]=\"row.direction\"\n [rtMod]=\"{ direction: row.direction }\"\n [attr.title]=\"row.label\">\n {{ 'rtKit.uiYearOverYear' | transloco }} {{ row.text }}\n </span>\n }\n </div>\n\n @if (baselineText(); as text) {\n <p rtElem=\"baseline\" qa-dataid=\"stat-tile-baseline\">{{ text }}</p>\n }\n\n @if (secondary(); as text) {\n <p rtElem=\"secondary\" qa-dataid=\"stat-tile-secondary\">{{ text }}</p>\n }\n</article>\n", styles: ["@charset \"UTF-8\";rt-stat-tile{display:block}rt-stat-tile .rt-stat-tile{display:flex;height:100%;flex-direction:column;gap:var(--rt-space-2)}rt-stat-tile .rt-stat-tile__head{display:flex;align-items:center;gap:var(--rt-space-1)}rt-stat-tile .rt-stat-tile__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-semibold)}rt-stat-tile .rt-stat-tile__hint{color:var(--rt-color-text-muted);cursor:help}rt-stat-tile .rt-stat-tile__value-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--rt-space-3)}rt-stat-tile .rt-stat-tile__value{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-3xl);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta{display:inline-flex;align-items:center;color:var(--rt-color-text-muted);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-1);line-height:var(--rt-leading-none)}rt-stat-tile .rt-stat-tile__delta--direction--up{color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__delta--direction--down{color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__year{flex:0 0 auto;padding:var(--rt-space-0-5) var(--rt-space-1-5);border-radius:var(--rt-radius-sm);background:var(--rt-color-bg-surface-subtle);color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-semibold);line-height:var(--rt-leading-none);white-space:nowrap}rt-stat-tile .rt-stat-tile__year--direction--up{background:var(--rt-color-state-success-bg);color:var(--rt-color-state-success)}rt-stat-tile .rt-stat-tile__year--direction--down{background:var(--rt-color-state-danger-bg);color:var(--rt-color-state-danger)}rt-stat-tile .rt-stat-tile__baseline{overflow:hidden;margin:0;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm);text-overflow:ellipsis;white-space:nowrap}rt-stat-tile .rt-stat-tile__secondary{overflow:hidden;margin:auto 0 0;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);text-overflow:ellipsis;white-space:nowrap}\n"] }]
9869
9958
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], secondary: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondary", required: false }] }], deltaPrimary: [{ type: i0.Input, args: [{ isSignal: true, alias: "deltaPrimary", required: false }] }], deltaSecondary: [{ type: i0.Input, args: [{ isSignal: true, alias: "deltaSecondary", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }] } });
9870
9959
 
9871
9960
  const BEM_BLOCK$e = 'rt-stepper';
@@ -9884,12 +9973,24 @@ const BEM_BLOCK$e = 'rt-stepper';
9884
9973
  */
9885
9974
  class RtStepperComponent {
9886
9975
  constructor() {
9887
- this.currentStep = computed(() => {
9888
- const list = this.steps();
9889
- const idx = this.currentIndex();
9890
- return list[idx] ?? null;
9976
+ /**
9977
+ * Номер шага, зажатый в набор. Индекс приходит снаружи и может выйти за
9978
+ * границы; полоса и якорь подписи это уже переживали, а вот объявление для
9979
+ * скринридера — нет: при `currentIndex: 99` на трёх шагах на прогрессбаре
9980
+ * оказывалось `aria-valuenow="100"` при `aria-valuemax="3"`, а подпись шага
9981
+ * пропадала вовсе. Зажимаем один раз здесь, чтобы показ и объявление не
9982
+ * могли разойтись.
9983
+ */
9984
+ this.#safeIndex = computed(() => {
9985
+ const total = this.steps().length;
9986
+ return Math.max(0, Math.min(this.currentIndex(), total - 1));
9891
9987
  }, /* @ts-ignore */
9988
+ ...(ngDevMode ? [{ debugName: "#safeIndex" }] : /* istanbul ignore next */ []));
9989
+ this.currentStep = computed(() => this.steps()[this.#safeIndex()] ?? null, /* @ts-ignore */
9892
9990
  ...(ngDevMode ? [{ debugName: "currentStep" }] : /* istanbul ignore next */ []));
9991
+ /** Номер текущего шага для скринридера: `0`, когда шагов нет вовсе. */
9992
+ this.currentStepNumber = computed(() => (this.steps().length === 0 ? 0 : this.#safeIndex() + 1), /* @ts-ignore */
9993
+ ...(ngDevMode ? [{ debugName: "currentStepNumber" }] : /* istanbul ignore next */ []));
9893
9994
  /**
9894
9995
  * Доля заполненной полосы от 0 до 100. На один шаг и меньше — 0%, иначе
9895
9996
  * `idx / (total - 1)`. Без clamp в шаблоне получаем переполнение если
@@ -9897,11 +9998,10 @@ class RtStepperComponent {
9897
9998
  */
9898
9999
  this.progressPercent = computed(() => {
9899
10000
  const total = this.steps().length;
9900
- const idx = this.currentIndex();
9901
10001
  if (total <= 1) {
9902
10002
  return 0;
9903
10003
  }
9904
- return Math.max(0, Math.min(100, (idx / (total - 1)) * 100));
10004
+ return (this.#safeIndex() / (total - 1)) * 100;
9905
10005
  }, /* @ts-ignore */
9906
10006
  ...(ngDevMode ? [{ debugName: "progressPercent" }] : /* istanbul ignore next */ []));
9907
10007
  this.totalSteps = computed(() => this.steps().length, /* @ts-ignore */
@@ -9913,7 +10013,7 @@ class RtStepperComponent {
9913
10013
  */
9914
10014
  this.labelAnchor = computed(() => {
9915
10015
  const total = this.steps().length;
9916
- const idx = this.currentIndex();
10016
+ const idx = this.#safeIndex();
9917
10017
  if (idx <= 0) {
9918
10018
  return 'start';
9919
10019
  }
@@ -9936,21 +10036,30 @@ class RtStepperComponent {
9936
10036
  ...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
9937
10037
  this.currentIndex = input(0, { ...(ngDevMode ? { debugName: "currentIndex" } : /* istanbul ignore next */ {}), transform: numberAttribute });
9938
10038
  }
10039
+ /**
10040
+ * Номер шага, зажатый в набор. Индекс приходит снаружи и может выйти за
10041
+ * границы; полоса и якорь подписи это уже переживали, а вот объявление для
10042
+ * скринридера — нет: при `currentIndex: 99` на трёх шагах на прогрессбаре
10043
+ * оказывалось `aria-valuenow="100"` при `aria-valuemax="3"`, а подпись шага
10044
+ * пропадала вовсе. Зажимаем один раз здесь, чтобы показ и объявление не
10045
+ * могли разойтись.
10046
+ */
10047
+ #safeIndex;
9939
10048
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9940
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStepperComponent, isStandalone: true, selector: "rt-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, currentIndex: { classPropertyName: "currentIndex", publicName: "currentIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stepper" }, ngImport: i0, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentIndex() + 1\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}:host .rt-stepper__rail{position:relative;block-size:39px}:host .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}:host .rt-stepper__label--anchor--start{transform:translate(0)}:host .rt-stepper__label--anchor--center{transform:translate(-50%)}:host .rt-stepper__label--anchor--end{transform:translate(-100%)}:host .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}:host .rt-stepper__track,:host .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}:host .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}:host .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}:host .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}:host .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}:host .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}:host .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}:host .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}:host .rt-stepper__description+:host .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"], dependencies: [{ kind: "directive", type:
10049
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtStepperComponent, isStandalone: true, selector: "rt-stepper", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null }, currentIndex: { classPropertyName: "currentIndex", publicName: "currentIndex", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-stepper" }, ngImport: i0, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentStepNumber()\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-stepper{display:block}rt-stepper .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}rt-stepper .rt-stepper__rail{position:relative;block-size:39px}rt-stepper .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}rt-stepper .rt-stepper__label--anchor--start{transform:translate(0)}rt-stepper .rt-stepper__label--anchor--center{transform:translate(-50%)}rt-stepper .rt-stepper__label--anchor--end{transform:translate(-100%)}rt-stepper .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}rt-stepper .rt-stepper__track,rt-stepper .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}rt-stepper .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}rt-stepper .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}rt-stepper .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}rt-stepper .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}rt-stepper .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}rt-stepper .rt-stepper__description+rt-stepper .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"], dependencies: [{ kind: "directive", type:
9941
10050
  // standalone components / directives
9942
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10051
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9943
10052
  }
9944
10053
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtStepperComponent, decorators: [{
9945
10054
  type: Component,
9946
- args: [{ selector: 'rt-stepper', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
10055
+ args: [{ selector: 'rt-stepper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
9947
10056
  // standalone components / directives
9948
10057
  BlockDirective,
9949
10058
  ElemDirective,
9950
10059
  ModDirective,
9951
10060
  ], host: {
9952
10061
  class: BEM_BLOCK$e,
9953
- }, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentIndex() + 1\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}:host .rt-stepper__rail{position:relative;block-size:39px}:host .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}:host .rt-stepper__label--anchor--start{transform:translate(0)}:host .rt-stepper__label--anchor--center{transform:translate(-50%)}:host .rt-stepper__label--anchor--end{transform:translate(-100%)}:host .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}:host .rt-stepper__track,:host .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}:host .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}:host .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}:host .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}:host .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}:host .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}:host .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}:host .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}:host .rt-stepper__description+:host .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"] }]
10062
+ }, template: "@let current = currentStep();\n<div\n rtBlock=\"rt-stepper\"\n qa-dataid=\"stepper\"\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"totalSteps()\"\n [attr.aria-valuenow]=\"currentStepNumber()\"\n [attr.aria-valuetext]=\"current?.label ?? null\">\n <div rtElem=\"rail\">\n @if (current) {\n <p rtElem=\"label\" qa-dataid=\"stepper-label\" [rtMod]=\"{ anchor: labelAnchor() }\" [style.left.%]=\"progressPercent()\">\n {{ current.label }}\n </p>\n }\n <div rtElem=\"track-band\">\n <span rtElem=\"track\" aria-hidden=\"true\"></span>\n <span rtElem=\"progress\" qa-dataid=\"stepper-progress\" aria-hidden=\"true\" [style.width.%]=\"progressPercent()\"></span>\n <ul rtElem=\"points\">\n @for (step of steps(); track $index; let i = $index) {\n <li\n rtElem=\"point\"\n qa-dataid=\"stepper-point\"\n aria-hidden=\"true\"\n [rtMod]=\"{\n current: i === currentIndex(),\n complete: i < currentIndex(),\n }\"></li>\n }\n </ul>\n </div>\n </div>\n @for (paragraph of descriptionParagraphs(); track $index) {\n <p rtElem=\"description\" qa-dataid=\"stepper-description\">{{ paragraph }}</p>\n }\n</div>\n", styles: ["@charset \"UTF-8\";rt-stepper{display:block}rt-stepper .rt-stepper{display:flex;flex-direction:column;gap:var(--rt-space-3)}rt-stepper .rt-stepper__rail{position:relative;block-size:39px}rt-stepper .rt-stepper__label{position:absolute;margin:0;color:var(--rt-color-stepper-current);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);inset-block-start:0;letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-none);transition:left var(--rt-duration-fast) ease-out;white-space:nowrap}rt-stepper .rt-stepper__label--anchor--start{transform:translate(0)}rt-stepper .rt-stepper__label--anchor--center{transform:translate(-50%)}rt-stepper .rt-stepper__label--anchor--end{transform:translate(-100%)}rt-stepper .rt-stepper__track-band{position:absolute;display:flex;align-items:center;block-size:16px;inset-block-end:0;inset-inline:0}rt-stepper .rt-stepper__track,rt-stepper .rt-stepper__progress{position:absolute;border-radius:var(--rt-radius-full);block-size:2px;inset-block-start:50%;inset-inline-start:0;transform:translateY(-50%)}rt-stepper .rt-stepper__track{background:var(--rt-color-stepper-track);inset-inline-end:0}rt-stepper .rt-stepper__progress{background:var(--rt-color-stepper-progress);transition:width var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__points{position:relative;display:flex;align-items:center;justify-content:space-between;padding:0;margin:0;inline-size:100%;list-style:none}rt-stepper .rt-stepper__point{border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:8px;inline-size:8px;transition:inline-size var(--rt-duration-fast) ease-out,block-size var(--rt-duration-fast) ease-out,background var(--rt-duration-fast) ease-out}rt-stepper .rt-stepper__point--complete{background:var(--rt-color-stepper-progress)}rt-stepper .rt-stepper__point--current{background:var(--rt-color-stepper-current);block-size:16px;box-shadow:var(--rt-shadow-step-indicator);inline-size:16px}rt-stepper .rt-stepper__description{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}rt-stepper .rt-stepper__description+rt-stepper .rt-stepper__description{margin-block-start:var(--rt-space-2-5)}\n"] }]
9954
10063
  }], propDecorators: { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }], currentIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentIndex", required: false }] }] } });
9955
10064
 
9956
10065
  const BEM_BLOCK$d = 'rt-copy-cell';
@@ -11053,7 +11162,7 @@ class RtTableSettingsAsideComponent extends RtRouteAsideComponent {
11053
11162
  this.onClose();
11054
11163
  }
11055
11164
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTableSettingsAsideComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11056
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: RtTableSettingsAsideComponent, isStandalone: true, selector: "rt-table-settings-aside", host: { classAttribute: "rt-table-settings-aside" }, usesInheritance: true, ngImport: i0, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";:host{display:contents}\n"], dependencies: [{ kind: "component", type: RtAsideComponent, selector: "rt-aside", inputs: ["size", "contentLayout", "width", "ariaLabel"] }, { kind: "component", type: RtAsideFooterComponent, selector: "rt-aside-footer" }, { kind: "component", type: RtAsideHeaderComponent, selector: "rt-aside-header", inputs: ["title", "overline", "badges", "closable", "loading"], outputs: ["dismiss"] }, { kind: "directive", type: RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "directive", type: RtContainerRightSidenavPanelDirective, selector: "[rtContainerRightSidenavPanel]", outputs: ["opened", "closed", "cancelled"], exportAs: ["rtContainerRightPanel"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtTableSettingsPanelComponent, selector: "rt-table-settings-panel", inputs: ["items"], outputs: ["itemsChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11165
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: RtTableSettingsAsideComponent, isStandalone: true, selector: "rt-table-settings-aside", host: { classAttribute: "rt-table-settings-aside" }, usesInheritance: true, ngImport: i0, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";.rt-table-settings-aside{display:contents}\n"], dependencies: [{ kind: "component", type: RtAsideComponent, selector: "rt-aside", inputs: ["size", "contentLayout", "width", "ariaLabel"] }, { kind: "component", type: RtAsideFooterComponent, selector: "rt-aside-footer" }, { kind: "component", type: RtAsideHeaderComponent, selector: "rt-aside-header", inputs: ["title", "overline", "badges", "closable", "loading"], outputs: ["dismiss"] }, { kind: "directive", type: RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "directive", type: RtContainerRightSidenavPanelDirective, selector: "[rtContainerRightSidenavPanel]", outputs: ["opened", "closed", "cancelled"], exportAs: ["rtContainerRightPanel"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtTableSettingsPanelComponent, selector: "rt-table-settings-panel", inputs: ["items"], outputs: ["itemsChange"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11057
11166
  }
11058
11167
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTableSettingsAsideComponent, decorators: [{
11059
11168
  type: Component,
@@ -11068,7 +11177,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
11068
11177
  TranslocoPipe,
11069
11178
  ], host: {
11070
11179
  class: BEM_BLOCK$9,
11071
- }, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";:host{display:contents}\n"] }]
11180
+ }, template: "<ng-container rtContainerRightSidenavPanel #panel=\"rtContainerRightPanel\" (cancelled)=\"onCancel()\" (closed)=\"onClosed()\" />\n\n<rt-aside [ariaLabel]=\"'rtKit.uiColumnSettings' | transloco\">\n <rt-aside-header [title]=\"'rtKit.uiColumnSettingsTitle' | transloco\" (dismiss)=\"onClose()\">\n <rt-icon-button\n asideActions\n qa-dataid=\"table-settings-reset\"\n icon=\"undo\"\n variant=\"ghost\"\n [tooltip]=\"'rtKit.uiResetDefaults' | transloco\"\n [ariaLabel]=\"'rtKit.uiResetDefaults' | transloco\"\n (clicked)=\"onReset()\" />\n </rt-aside-header>\n\n <rt-table-settings-panel [(items)]=\"items\" />\n\n <rt-aside-footer>\n <button\n rtButton\n asideDismiss\n qa-dataid=\"table-settings-close\"\n type=\"button\"\n appearance=\"text\"\n [label]=\"'rtKit.uiClose' | transloco\"\n [attr.aria-label]=\"'rtKit.uiClose' | transloco\"\n (click)=\"onClose()\"></button>\n <button\n rtButton\n asidePrimary\n qa-dataid=\"table-settings-save\"\n type=\"button\"\n [label]=\"'rtKit.uiSave' | transloco\"\n [attr.aria-label]=\"'rtKit.uiSave' | transloco\"\n (click)=\"onSave()\"></button>\n </rt-aside-footer>\n</rt-aside>\n", styles: ["@charset \"UTF-8\";.rt-table-settings-aside{display:contents}\n"] }]
11072
11181
  }], ctorParameters: () => [] });
11073
11182
 
11074
11183
  /**
@@ -11403,8 +11512,6 @@ class RtTextareaComponent extends RtFormControlBase {
11403
11512
  super(...arguments);
11404
11513
  this.fieldEl = viewChild('fieldEl', /* @ts-ignore */
11405
11514
  ...(ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []));
11406
- this.effectiveDisabled = computed(() => this.disabled() || this.isDisabled(), /* @ts-ignore */
11407
- ...(ngDevMode ? [{ debugName: "effectiveDisabled" }] : /* istanbul ignore next */ []));
11408
11515
  this.hasValue = computed(() => this.value() !== '', /* @ts-ignore */
11409
11516
  ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
11410
11517
  this.displayText = computed(() => this.value(), /* @ts-ignore */
@@ -11435,7 +11542,7 @@ class RtTextareaComponent extends RtFormControlBase {
11435
11542
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTextareaComponent, isStandalone: true, selector: "rt-textarea", inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, resize: { classPropertyName: "resize", publicName: "resize", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-textarea--size--sm": "size() === 'sm'", "class.rt-textarea--size--lg": "size() === 'lg'", "class.rt-textarea--disabled": "isDisabled()", "class.rt-textarea--readonly": "readonly()", "class.rt-textarea--invalid": "isInvalid()", "class.rt-textarea--borderless": "!bordered()" }, classAttribute: "rt-textarea" }, providers: [
11436
11543
  // Алиас базового токена — для contentChild(RtFormControlBase) в rt-field.
11437
11544
  { provide: RtFormControlBase, useExisting: forwardRef(() => RtTextareaComponent) },
11438
- ], viewQueries: [{ propertyName: "fieldEl", first: true, predicate: ["fieldEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"], dependencies: [{ kind: "directive", type:
11545
+ ], viewQueries: [{ propertyName: "fieldEl", first: true, predicate: ["fieldEl"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"], dependencies: [{ kind: "directive", type:
11439
11546
  // standalone components / directives
11440
11547
  BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11441
11548
  }
@@ -11457,7 +11564,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
11457
11564
  '[class.rt-textarea--readonly]': 'readonly()',
11458
11565
  '[class.rt-textarea--invalid]': 'isInvalid()',
11459
11566
  '[class.rt-textarea--borderless]': '!bordered()',
11460
- }, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"effectiveDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"] }]
11567
+ }, template: "<ng-container rtBlock=\"rt-textarea\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"textarea-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <textarea\n #fieldEl\n rtElem=\"control\"\n qa-dataid=\"textarea-control\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-invalid]=\"isInvalid() || null\"\n [style.resize]=\"resize()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readOnly]=\"readonly()\"\n [rows]=\"rows()\"\n [value]=\"value()\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"></textarea>\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";.rt-textarea{display:block;width:100%}.rt-textarea--borderless .rt-textarea__control{border-color:transparent}.rt-textarea__control{width:100%;min-height:var(--rt-textarea-min-height);box-sizing:border-box;padding:var(--rt-textarea-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-input-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);font-family:inherit;font-size:var(--rt-input-font-size);line-height:var(--rt-textarea-line-height);transition:var(--rt-input-transition)}.rt-textarea__control::placeholder{color:var(--rt-input-color-text-placeholder);opacity:1}.rt-textarea__control:focus-visible{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-textarea__control:disabled{background-color:var(--rt-input-color-bg-disabled);cursor:not-allowed}.rt-textarea--size--sm .rt-textarea__control{min-height:var(--rt-textarea-min-height-sm)}.rt-textarea--size--lg .rt-textarea__control{min-height:var(--rt-textarea-min-height-lg)}.rt-textarea--invalid .rt-textarea__control{border-color:var(--rt-input-color-border-error)}.rt-textarea--invalid .rt-textarea__control:focus-visible{box-shadow:var(--rt-input-focus-shadow-error)}.rt-textarea--disabled{opacity:var(--rt-input-disabled-opacity)}.rt-textarea__readonly{display:block;color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size);white-space:pre-wrap}.rt-textarea__readonly--empty{color:var(--rt-field-value-empty-color)}\n"] }]
11461
11568
  }], propDecorators: { fieldEl: [{ type: i0.ViewChild, args: ['fieldEl', { isSignal: true }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], resize: [{ type: i0.Input, args: [{ isSignal: true, alias: "resize", required: false }] }] } });
11462
11569
 
11463
11570
  const BEM_BLOCK$6 = 'rt-toggle-switch';
@@ -11470,27 +11577,30 @@ const BEM_BLOCK$6 = 'rt-toggle-switch';
11470
11577
  * `useExisting: forwardRef(...)` — `useClass` на self-reference вызывает
11471
11578
  * NG0200 cycle при boot'е.
11472
11579
  *
11473
- * Source-of-truth для disabled — внутренний `isDisabled` signal. И signal-input
11474
- * `disabled`, и CVA `setDisabledState` пишут в один и тот же signal: input —
11475
- * через `effect()`, CVA — напрямую через метод. Так `[disabled]="true"` и
11476
- * `FormControl.disable()` ведут себя одинаково.
11580
+ * Отключение складывается из двух независимых источников: входа `disabled` и
11581
+ * слова формы (CVA `setDisabledState`). Отключено, если так сказал любой из
11582
+ * них. Сводить их в один signal нельзя: форма зовёт `setDisabledState` при
11583
+ * связывании контрола, то есть раньше, чем переключатель впервые обновит своё
11584
+ * вью, и мирроринг входа затирал бы её слово — контрол, созданный отключённым,
11585
+ * оказывался бы кликабельным.
11477
11586
  *
11478
11587
  * Опциональные иконки `iconOff` / `iconOn` рисуются внутри трека статично:
11479
11588
  * off-иконка в начальной половине, on-иконка в конечной. Бегунок непрозрачен
11480
11589
  * и наезжает на иконку активного состояния, так что видна всегда иконка того
11481
11590
  * состояния, куда переключится контрол.
11482
11591
  *
11483
- * ViewEncapsulation — default (Emulated), стили обёрнуты в `:host { ... }`.
11592
+ * ViewEncapsulation.None — стили таргетируют имя элемента и BEM-класс блока.
11484
11593
  */
11485
11594
  class RtToggleSwitchComponent {
11486
- #onChange;
11487
- #onTouched;
11488
11595
  constructor() {
11489
11596
  this.#onChange = () => undefined;
11490
11597
  this.#onTouched = () => undefined;
11598
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
11599
+ this.#disabledByForm = signal(false, /* @ts-ignore */
11600
+ ...(ngDevMode ? [{ debugName: "#disabledByForm" }] : /* istanbul ignore next */ []));
11491
11601
  this.isOn = signal(false, /* @ts-ignore */
11492
11602
  ...(ngDevMode ? [{ debugName: "isOn" }] : /* istanbul ignore next */ []));
11493
- this.isDisabled = signal(false, /* @ts-ignore */
11603
+ this.isDisabled = computed(() => this.disabled() || this.#disabledByForm(), /* @ts-ignore */
11494
11604
  ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
11495
11605
  /**
11496
11606
  * BEM-модификаторы для `[rtMod]`. Собираем в .ts, потому что
@@ -11518,13 +11628,11 @@ class RtToggleSwitchComponent {
11518
11628
  this.iconOn = input(null, /* @ts-ignore */
11519
11629
  ...(ngDevMode ? [{ debugName: "iconOn" }] : /* istanbul ignore next */ []));
11520
11630
  this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
11521
- // Синхронизируем signal-input `disabled` в `isDisabled`, чтобы
11522
- // `[disabled]="..."` и `setDisabledState(...)` (CVA) писали в одно
11523
- // и то же место. Effect живёт в injection context конструктора.
11524
- effect(() => {
11525
- this.isDisabled.set(this.disabled());
11526
- });
11527
11631
  }
11632
+ #onChange;
11633
+ #onTouched;
11634
+ /** Отключение, назначенное формой через CVA (`setDisabledState`). */
11635
+ #disabledByForm;
11528
11636
  writeValue(value) {
11529
11637
  this.isOn.set(value === true);
11530
11638
  }
@@ -11535,7 +11643,7 @@ class RtToggleSwitchComponent {
11535
11643
  this.#onTouched = fn;
11536
11644
  }
11537
11645
  setDisabledState(disabled) {
11538
- this.isDisabled.set(disabled);
11646
+ this.#disabledByForm.set(disabled);
11539
11647
  }
11540
11648
  toggle() {
11541
11649
  if (this.isDisabled()) {
@@ -11553,13 +11661,13 @@ class RtToggleSwitchComponent {
11553
11661
  useExisting: forwardRef(() => RtToggleSwitchComponent),
11554
11662
  multi: true,
11555
11663
  },
11556
- ], ngImport: i0, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}.rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}.rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}.rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}.rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-toggle-switch--on .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}.rt-toggle-switch__icon-off,.rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}.rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}.rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}.rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}.rt-toggle-switch--on .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"], dependencies: [{ kind: "component", type:
11664
+ ], ngImport: i0, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-toggle-switch{display:inline-flex}rt-toggle-switch .rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}rt-toggle-switch .rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}rt-toggle-switch .rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}rt-toggle-switch .rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-toggle-switch .rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}rt-toggle-switch .rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}rt-toggle-switch .rt-toggle-switch__icon-off,rt-toggle-switch .rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}rt-toggle-switch .rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"], dependencies: [{ kind: "component", type:
11557
11665
  // standalone components / directives
11558
- RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11666
+ RtIconComponent, selector: "rt-icon", inputs: ["name", "size", "color", "rotate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11559
11667
  }
11560
11668
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtToggleSwitchComponent, decorators: [{
11561
11669
  type: Component,
11562
- args: [{ selector: 'rt-toggle-switch', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
11670
+ args: [{ selector: 'rt-toggle-switch', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
11563
11671
  // standalone components / directives
11564
11672
  RtIconComponent,
11565
11673
  BlockDirective,
@@ -11573,8 +11681,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
11573
11681
  },
11574
11682
  ], host: {
11575
11683
  class: BEM_BLOCK$6,
11576
- }, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";:host{display:inline-flex}.rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}.rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}.rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}.rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}.rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}.rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}.rt-toggle-switch--on .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}.rt-toggle-switch__icon-off,.rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}.rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}.rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}.rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}.rt-toggle-switch--on .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"] }]
11577
- }], ctorParameters: () => [], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
11684
+ }, template: "<button\n rtBlock=\"rt-toggle-switch\"\n qa-dataid=\"toggle-switch-control\"\n type=\"button\"\n role=\"switch\"\n [rtMod]=\"bemMods()\"\n [attr.id]=\"inputId()\"\n [attr.aria-checked]=\"isOn()\"\n [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggle()\">\n <span rtElem=\"track\">\n @if (iconOff(); as iconOffName) {\n <rt-icon rtElem=\"icon-off\" size=\"sm\" [name]=\"iconOffName\" />\n }\n @if (iconOn(); as iconOnName) {\n <rt-icon rtElem=\"icon-on\" size=\"sm\" [name]=\"iconOnName\" />\n }\n <span rtElem=\"thumb\"></span>\n </span>\n</button>\n", styles: ["@charset \"UTF-8\";rt-toggle-switch{display:inline-flex}rt-toggle-switch .rt-toggle-switch{--rt-toggle-track-width: 42px;--rt-toggle-track-height: 24px;--rt-toggle-thumb-size: 18px;--rt-toggle-thumb-inset: 3px;--rt-toggle-thumb-travel: 18px;--rt-toggle-icon-inset: 4px;display:inline-flex;padding:0;border:none;background:none;cursor:pointer}rt-toggle-switch .rt-toggle-switch--md{--rt-toggle-track-width: 52px;--rt-toggle-thumb-travel: 28px}rt-toggle-switch .rt-toggle-switch--lg{--rt-toggle-track-width: 60px;--rt-toggle-track-height: 30px;--rt-toggle-thumb-size: 24px;--rt-toggle-thumb-travel: 30px;--rt-toggle-icon-inset: 6px}rt-toggle-switch .rt-toggle-switch:focus-visible{border-radius:var(--rt-radius-full);box-shadow:var(--rt-shadow-focus-ring);outline:2px solid transparent;outline-offset:2px}rt-toggle-switch .rt-toggle-switch--disabled{cursor:not-allowed;opacity:.5}rt-toggle-switch .rt-toggle-switch__track{position:relative;display:inline-block;width:var(--rt-toggle-track-width);height:var(--rt-toggle-track-height);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-track);box-shadow:var(--rt-toggle-shadow-border);color:var(--rt-toggle-color-icon);transition:background var(--rt-duration-fast) ease,box-shadow var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__track{background:var(--rt-toggle-color-track-on);box-shadow:none}rt-toggle-switch .rt-toggle-switch__icon-off,rt-toggle-switch .rt-toggle-switch__icon-on{position:absolute;inset-block-start:50%;transform:translateY(-50%)}rt-toggle-switch .rt-toggle-switch__icon-off{inset-inline-start:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__icon-on{inset-inline-end:var(--rt-toggle-icon-inset)}rt-toggle-switch .rt-toggle-switch__thumb{position:absolute;width:var(--rt-toggle-thumb-size);height:var(--rt-toggle-thumb-size);border-radius:var(--rt-radius-full);background:var(--rt-toggle-color-thumb);box-shadow:var(--rt-toggle-shadow-thumb);inset-block-start:var(--rt-toggle-thumb-inset);inset-inline-start:var(--rt-toggle-thumb-inset);transition:transform var(--rt-duration-fast) ease}rt-toggle-switch .rt-toggle-switch--on rt-toggle-switch .rt-toggle-switch__thumb{transform:translate(var(--rt-toggle-thumb-travel))}\n"] }]
11685
+ }], propDecorators: { inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], iconOff: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOff", required: false }] }], iconOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconOn", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
11578
11686
 
11579
11687
  /**
11580
11688
  * Модель `<rt-toggle-switch>`: один корневой неймспейс с префиксом `I`.
@@ -11616,15 +11724,15 @@ class RtThemeToggleComponent {
11616
11724
  this.#theme.toggle();
11617
11725
  }
11618
11726
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtThemeToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11619
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtThemeToggleComponent, isStandalone: true, selector: "rt-theme-toggle", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-theme-toggle" }, ngImport: i0, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: [":host{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type:
11727
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtThemeToggleComponent, isStandalone: true, selector: "rt-theme-toggle", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-theme-toggle" }, ngImport: i0, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["@charset \"UTF-8\";.rt-theme-toggle{display:inline-flex}\n"], dependencies: [{ kind: "ngmodule", type:
11620
11728
  // angular
11621
11729
  FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type:
11622
11730
  // standalone components / directives
11623
- RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtToggleSwitchComponent, selector: "rt-toggle-switch", inputs: ["inputId", "ariaLabel", "size", "iconOff", "iconOn", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11731
+ RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "ariaLabel", "variant", "iconColor", "size", "iconSize", "shape", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtToggleSwitchComponent, selector: "rt-toggle-switch", inputs: ["inputId", "ariaLabel", "size", "iconOff", "iconOn", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11624
11732
  }
11625
11733
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtThemeToggleComponent, decorators: [{
11626
11734
  type: Component,
11627
- args: [{ selector: 'rt-theme-toggle', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
11735
+ args: [{ selector: 'rt-theme-toggle', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
11628
11736
  // angular
11629
11737
  FormsModule,
11630
11738
  // standalone components / directives
@@ -11632,7 +11740,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
11632
11740
  RtToggleSwitchComponent,
11633
11741
  ], host: {
11634
11742
  class: BEM_BLOCK$5,
11635
- }, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: [":host{display:inline-flex}\n"] }]
11743
+ }, template: "@if (isSwitch()) {\n <rt-toggle-switch\n qa-dataid=\"theme-toggle-control\"\n size=\"md\"\n iconOff=\"ico-sun\"\n iconOn=\"moon\"\n [ariaLabel]=\"label\"\n [ngModel]=\"isDark()\"\n (ngModelChange)=\"onToggle()\" />\n} @else {\n <rt-icon-button\n qa-dataid=\"theme-toggle-control\"\n variant=\"ghost\"\n size=\"md\"\n shape=\"circle\"\n [ariaLabel]=\"label\"\n [icon]=\"iconName()\"\n [active]=\"isDark()\"\n (clicked)=\"onToggle()\" />\n}\n", styles: ["@charset \"UTF-8\";.rt-theme-toggle{display:inline-flex}\n"] }]
11636
11744
  }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }] } });
11637
11745
 
11638
11746
  /**
@@ -11903,20 +12011,20 @@ class RtTimelineComponent {
11903
12011
  ...(ngDevMode ? [{ debugName: "steps" }] : /* istanbul ignore next */ []));
11904
12012
  }
11905
12013
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11906
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTimelineComponent, isStandalone: true, selector: "rt-timeline", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-timeline" }, ngImport: i0, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}:host .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}:host .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}:host .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}:host .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}:host .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}:host .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}:host .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}:host .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}:host .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}:host .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}:host .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}:host .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"], dependencies: [{ kind: "directive", type:
12014
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtTimelineComponent, isStandalone: true, selector: "rt-timeline", inputs: { steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "rt-timeline" }, ngImport: i0, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";rt-timeline{display:block}rt-timeline .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}rt-timeline .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}rt-timeline .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}rt-timeline .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}rt-timeline .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}rt-timeline .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}rt-timeline .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}rt-timeline .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}rt-timeline .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"], dependencies: [{ kind: "directive", type:
11907
12015
  // standalone components / directives
11908
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12016
+ BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11909
12017
  }
11910
12018
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtTimelineComponent, decorators: [{
11911
12019
  type: Component,
11912
- args: [{ selector: 'rt-timeline', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12020
+ args: [{ selector: 'rt-timeline', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
11913
12021
  // standalone components / directives
11914
12022
  BlockDirective,
11915
12023
  ElemDirective,
11916
12024
  ModDirective,
11917
12025
  ], host: {
11918
12026
  class: BEM_BLOCK$3,
11919
- }, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";:host{display:block}:host .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}:host .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}:host .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}:host .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}:host .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}:host .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}:host .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}:host .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}:host .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}:host .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}:host .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}:host .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}:host .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"] }]
12027
+ }, template: "<ol rtBlock=\"rt-timeline\" qa-dataid=\"timeline\">\n @for (step of steps(); track $index; let last = $last) {\n <li rtElem=\"item\" qa-dataid=\"timeline-item\" [attr.data-status]=\"step.status\" [rtMod]=\"{ status: step.status }\">\n <span rtElem=\"rail\" aria-hidden=\"true\">\n <span rtElem=\"dot\" [rtMod]=\"{ status: step.status }\"></span>\n @if (!last) {\n <span rtElem=\"line\"></span>\n }\n </span>\n <span rtElem=\"body\">\n <span rtElem=\"label\" qa-dataid=\"timeline-item-label\">{{ step.label }}</span>\n @if (step.meta || step.actor) {\n <span rtElem=\"meta\">\n @if (step.meta) {\n <span rtElem=\"time\" qa-dataid=\"timeline-item-time\">{{ step.meta }}</span>\n }\n @if (step.actor) {\n <span rtElem=\"actor\" qa-dataid=\"timeline-item-actor\">{{ step.actor }}</span>\n }\n </span>\n }\n </span>\n </li>\n }\n</ol>\n", styles: ["@charset \"UTF-8\";rt-timeline{display:block}rt-timeline .rt-timeline{display:flex;flex-direction:column;padding:0;margin:0;list-style:none}rt-timeline .rt-timeline__item{display:flex;gap:var(--rt-space-sm)}rt-timeline .rt-timeline__item:last-child .rt-timeline__body{padding-block-end:0}rt-timeline .rt-timeline__rail{display:flex;flex-direction:column;align-items:center;inline-size:16px}rt-timeline .rt-timeline__dot{box-sizing:border-box;flex:none;border-radius:var(--rt-radius-full);background:var(--rt-color-stepper-track);block-size:10px;inline-size:10px;margin-block-start:var(--rt-space-xs)}rt-timeline .rt-timeline__dot--status--complete{background:var(--rt-color-stepper-progress)}rt-timeline .rt-timeline__dot--status--current{background:var(--rt-color-stepper-current);block-size:14px;box-shadow:var(--rt-shadow-step-indicator);inline-size:14px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__dot--status--pending{border:var(--rt-border-width-thin) solid var(--rt-color-stepper-track);background:transparent}rt-timeline .rt-timeline__line{flex:1 1 auto;background:var(--rt-color-stepper-track);inline-size:2px;margin-block-start:var(--rt-space-2xs)}rt-timeline .rt-timeline__body{display:flex;flex-direction:column;gap:var(--rt-space-2xs);padding-block-end:var(--rt-space-md)}rt-timeline .rt-timeline__label{color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__meta{display:inline-flex;flex-wrap:wrap;color:var(--rt-color-text-muted);font-size:var(--rt-text-xs);gap:var(--rt-space-xs);line-height:var(--rt-leading-snug)}rt-timeline .rt-timeline__actor:before{content:\"\\b7\";margin-inline-end:var(--rt-space-xs)}\n"] }]
11920
12028
  }], propDecorators: { steps: [{ type: i0.Input, args: [{ isSignal: true, alias: "steps", required: false }] }] } });
11921
12029
 
11922
12030
  const BEM_BLOCK$2 = 'rt-welcome-dialog';
@@ -11952,13 +12060,13 @@ class RtWelcomeDialogComponent {
11952
12060
  this.#dialogRef.close();
11953
12061
  }
11954
12062
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtWelcomeDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11955
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtWelcomeDialogComponent, isStandalone: true, selector: "rt-welcome-dialog", host: { classAttribute: "rt-welcome-dialog" }, ngImport: i0, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:host .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}:host .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}:host .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}:host .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}:host .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"], dependencies: [{ kind: "directive", type:
12063
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RtWelcomeDialogComponent, isStandalone: true, selector: "rt-welcome-dialog", host: { classAttribute: "rt-welcome-dialog" }, ngImport: i0, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";rt-welcome-dialog{display:contents}rt-welcome-dialog .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}rt-welcome-dialog .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}rt-welcome-dialog .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}rt-welcome-dialog .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}rt-welcome-dialog .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"], dependencies: [{ kind: "directive", type:
11956
12064
  // standalone components / directives
11957
- RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "component", type: RtDialogComponent, selector: "rt-dialog", inputs: ["size", "width", "ariaLabel"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12065
+ RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "rounded", "loading", "loadingIcon"] }, { kind: "component", type: RtDialogComponent, selector: "rt-dialog", inputs: ["size", "width", "ariaLabel"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "pipe", type: TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11958
12066
  }
11959
12067
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RtWelcomeDialogComponent, decorators: [{
11960
12068
  type: Component,
11961
- args: [{ selector: 'rt-welcome-dialog', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
12069
+ args: [{ selector: 'rt-welcome-dialog', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
11962
12070
  // standalone components / directives
11963
12071
  RtButtonDirective,
11964
12072
  RtDialogComponent,
@@ -11967,7 +12075,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
11967
12075
  TranslocoPipe,
11968
12076
  ], host: {
11969
12077
  class: BEM_BLOCK$2,
11970
- }, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";:host{display:contents}:host .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}:host .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}:host .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}:host .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}:host .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"] }]
12078
+ }, template: "<rt-dialog width=\"335px\" [ariaLabel]=\"'rtKit.uiWelcomeAria' | transloco\">\n <div rtBlock=\"rt-welcome-dialog\">\n <div rtElem=\"text\">\n @if (title) {\n <h2 rtElem=\"title\" qa-dataid=\"welcome-dialog-title\">{{ title }}</h2>\n }\n @for (paragraph of paragraphs; track $index) {\n <p rtElem=\"description\" qa-dataid=\"welcome-dialog-description\">{{ paragraph }}</p>\n }\n </div>\n <!-- rtButton-\u0434\u0438\u0440\u0435\u043A\u0442\u0438\u0432\u0430 \u0440\u0435\u043D\u0434\u0435\u0440\u0438\u0442 label \u0447\u0435\u0440\u0435\u0437 Renderer2 \u0432 afterNextRender \u2014\n \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E child-\u043A\u043E\u043D\u0442\u0435\u043D\u0442\u0430 \u0432 template \u043D\u0435\u0442 \u043D\u0430\u043C\u0435\u0440\u0435\u043D\u043D\u043E. -->\n <!-- eslint-disable-next-line @angular-eslint/template/elements-content -->\n <button\n rtButton\n rtElem=\"cta\"\n qa-dataid=\"welcome-dialog-cta\"\n type=\"button\"\n theme=\"primary\"\n appearance=\"filled\"\n [label]=\"ctaLabel()\"\n (click)=\"onClose()\"></button>\n </div>\n</rt-dialog>\n", styles: ["@charset \"UTF-8\";rt-welcome-dialog{display:contents}rt-welcome-dialog .rt-welcome-dialog{display:flex;flex-direction:column;padding:var(--rt-space-16) var(--rt-space-5);gap:var(--rt-space-5)}rt-welcome-dialog .rt-welcome-dialog__text{display:flex;flex-direction:column;gap:var(--rt-space-2-5);text-align:center}rt-welcome-dialog .rt-welcome-dialog__title{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-md);font-weight:var(--rt-font-weight-bold);line-height:var(--rt-leading-snug)}rt-welcome-dialog .rt-welcome-dialog__description{margin:0;color:var(--rt-color-text-primary);font-family:var(--rt-font-family-sans);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);line-height:var(--rt-leading-snug);white-space:pre-line}rt-welcome-dialog .rt-welcome-dialog__cta{--rt-btn-font-size: 14px;width:100%;letter-spacing:0}\n"] }]
11971
12079
  }], ctorParameters: () => [] });
11972
12080
 
11973
12081
  class RtWorkspaceDesktopOnlyDirective {