@rt-tools/ui-kit-v2 0.41.0 → 0.43.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 (56) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +4 -4
  2. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +22 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +155 -100
  6. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
  8. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +1778 -18
  10. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +22 -5
  12. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +34 -11
  14. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +725 -47
  16. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +6 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  19. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +217 -6
  20. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/src/lib/components/calendar/CONTEXT.md +4 -2
  23. package/src/lib/components/calendar/rt-calendar.component.scss +29 -2
  24. package/src/lib/components/date-picker/CONTEXT.md +5 -0
  25. package/src/lib/components/date-picker/panel/CONTEXT.md +42 -0
  26. package/src/lib/components/date-picker/panel/rt-date-panel.component.scss +55 -2
  27. package/src/lib/components/page-header/CONTEXT.md +35 -1
  28. package/src/lib/components/page-header/bar/rt-page-bar.component.scss +161 -0
  29. package/src/lib/components/page-header/rail/rt-page-actions.component.scss +115 -0
  30. package/src/lib/components/page-header/rail/rt-page-phone-menu.component.scss +129 -0
  31. package/src/lib/components/page-header/rail/rt-page-rail.component.scss +281 -0
  32. package/src/lib/components/page-header/rail/rt-page-user.component.scss +76 -0
  33. package/src/lib/components/page-header/rt-page-header.component.scss +5 -0
  34. package/src/lib/components/page-header/stories/component/test-page-header-vertical.component.scss +72 -0
  35. package/src/lib/components/page-header/stories/component/test-page-table.component.scss +81 -0
  36. package/src/lib/components/page-header/user/rt-page-header-user.component.scss +6 -0
  37. package/src/lib/components/stepper/CONTEXT.md +34 -2
  38. package/src/lib/components/stepper/rt-stepper.component.scss +62 -43
  39. package/src/lib/components/tabs/CONTEXT.md +30 -1
  40. package/src/lib/components/tabs/rt-tabs-arrows.scss +140 -0
  41. package/src/lib/components/tabs/rt-tabs-more-menu.scss +126 -0
  42. package/src/lib/components/tabs/rt-tabs-more.component.scss +29 -0
  43. package/src/lib/components/tabs/rt-tabs.component.scss +18 -61
  44. package/src/lib/components/workspace/CONTEXT.md +11 -1
  45. package/src/lib/components/workspace/rt-workspace.component.scss +51 -3
  46. package/src/rich-editor/lib/components/chat/CONTEXT.md +12 -2
  47. package/src/rich-editor/lib/components/chat/rt-chat-messenger.scss +9 -3
  48. package/src/rich-editor/lib/components/chat/rt-chat-translation.scss +92 -0
  49. package/types/rt-tools-ui-kit-v2-calendar.d.ts +13 -1
  50. package/types/rt-tools-ui-kit-v2-core.d.ts +9 -1
  51. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +157 -5
  52. package/types/rt-tools-ui-kit-v2-page-header.d.ts +202 -2
  53. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +25 -0
  54. package/types/rt-tools-ui-kit-v2-stepper.d.ts +20 -6
  55. package/types/rt-tools-ui-kit-v2-tabs.d.ts +120 -1
  56. package/types/rt-tools-ui-kit-v2-workspace.d.ts +33 -1
@@ -540,6 +540,7 @@ export declare const RT_KIT_LABELS_EN: {
540
540
  readonly chatRetryTooltip: "Retry";
541
541
  readonly chatSendAria: "Send message";
542
542
  readonly chatSendLabel: "Send";
543
+ readonly chatShowTranslation: "Show translation";
543
544
  readonly chatStatusFailed: "Not sent";
544
545
  readonly chatStatusRead: "Read";
545
546
  readonly chatStatusSending: "Sending";
@@ -724,6 +725,8 @@ export declare const RT_KIT_LABELS_EN: {
724
725
  readonly uiMainNav: "Main navigation";
725
726
  readonly uiMinutes: "Minutes";
726
727
  readonly uiMore: "More";
728
+ readonly uiMoreFilters: "More filters";
729
+ readonly uiPageFilters: "Filters";
727
730
  readonly uiMoreActions: "More actions";
728
731
  readonly uiMoveStage: "Move";
729
732
  readonly uiMoveStageAria: "Move stage";
@@ -1100,6 +1103,11 @@ export declare function rtNarrowByWidth(placeWidth: number | null, viewportNarro
1100
1103
  */
1101
1104
  export declare class BreakpointsService {
1102
1105
  #private;
1106
+ /**
1107
+ * Ширина места страницы; `null`, пока место не объявлено. Её читает компонент, у которого
1108
+ * порог задан входом: число из входа в стили не подставить.
1109
+ */
1110
+ readonly placeWidth: Signal<number | null>;
1103
1111
  readonly mobile: Signal<boolean>;
1104
1112
  readonly tablet: Signal<boolean>;
1105
1113
  readonly desktop: Signal<boolean>;
@@ -1452,7 +1460,7 @@ export declare class RtInfiniteScrollDirective implements OnDestroy {
1452
1460
  /** The name of a styling property the kit declares itself. */
1453
1461
  export type TRtDesignTokenName = '--rt-amber-400' | '--rt-border-width-medium' | '--rt-border-width-thick' | '--rt-border-width-thin' | '--rt-bp-lg' | '--rt-bp-md' | '--rt-bp-sm' | '--rt-bp-xl' | '--rt-brand-100' | '--rt-brand-200' | '--rt-brand-300' | '--rt-brand-400' | '--rt-brand-50' | '--rt-brand-500' | '--rt-brand-600' | '--rt-brand-700' | '--rt-brand-800' | '--rt-brand-900' | '--rt-brand-950' | '--rt-btn-tint-active' | '--rt-btn-tint-hover' | '--rt-charcoal-700' | '--rt-charcoal-800' | '--rt-charcoal-900' | '--rt-charcoal-950' | '--rt-charcoal-border' | '--rt-charcoal-border-strong' | '--rt-chat-bubble-date' | '--rt-chat-bubble-in-author' | '--rt-chat-bubble-in-bg' | '--rt-chat-bubble-own-author' | '--rt-chat-bubble-own-bg' | '--rt-chat-status-read' | '--rt-color-action-danger' | '--rt-color-action-danger-active' | '--rt-color-action-danger-hover' | '--rt-color-action-danger-on-surface' | '--rt-color-action-disabled' | '--rt-color-action-info' | '--rt-color-action-info-active' | '--rt-color-action-info-hover' | '--rt-color-action-info-on-surface' | '--rt-color-action-on-danger' | '--rt-color-action-on-disabled' | '--rt-color-action-on-info' | '--rt-color-action-on-primary' | '--rt-color-action-on-secondary' | '--rt-color-action-on-success' | '--rt-color-action-on-warning' | '--rt-color-action-primary' | '--rt-color-action-primary-active' | '--rt-color-action-primary-hover' | '--rt-color-action-primary-on-surface' | '--rt-color-action-primary-soft' | '--rt-color-action-primary-subtle' | '--rt-color-action-secondary' | '--rt-color-action-secondary-active' | '--rt-color-action-secondary-hover' | '--rt-color-action-secondary-on-surface' | '--rt-color-action-success' | '--rt-color-action-success-active' | '--rt-color-action-success-hover' | '--rt-color-action-success-on-surface' | '--rt-color-action-warning' | '--rt-color-action-warning-active' | '--rt-color-action-warning-hover' | '--rt-color-action-warning-on-surface' | '--rt-color-bg-hover' | '--rt-color-bg-inverse' | '--rt-color-bg-nav' | '--rt-color-bg-overlay' | '--rt-color-bg-page' | '--rt-color-bg-page-auth' | '--rt-color-bg-subtle' | '--rt-color-bg-surface' | '--rt-color-bg-surface-auth-card' | '--rt-color-bg-surface-subtle' | '--rt-color-bg-surface-subtle-2' | '--rt-color-border-default' | '--rt-color-border-focus' | '--rt-color-border-strong' | '--rt-color-border-subtle' | '--rt-color-field-fill-underline' | '--rt-color-service-logo-bg' | '--rt-color-service-logo-mark' | '--rt-color-skeleton-base' | '--rt-color-skeleton-wave' | '--rt-color-state-danger' | '--rt-color-state-danger-bg' | '--rt-color-state-error-text' | '--rt-color-state-info' | '--rt-color-state-info-bg' | '--rt-color-state-success' | '--rt-color-state-success-bg' | '--rt-color-state-success-text' | '--rt-color-state-warning' | '--rt-color-state-warning-bg' | '--rt-color-state-warning-text' | '--rt-color-stepper-current' | '--rt-color-stepper-current-subtle' | '--rt-color-stepper-progress' | '--rt-color-stepper-track' | '--rt-color-table-bg' | '--rt-color-table-head-bg' | '--rt-color-table-pinned-shadow' | '--rt-color-text-disabled' | '--rt-color-text-inverse' | '--rt-color-text-link' | '--rt-color-text-link-hover' | '--rt-color-text-muted' | '--rt-color-text-primary' | '--rt-control-height-2xl' | '--rt-control-height-lg' | '--rt-control-height-md' | '--rt-control-height-sm' | '--rt-control-height-xl' | '--rt-control-max-width' | '--rt-control-panel-max-height' | '--rt-control-textarea-min-height-lg' | '--rt-control-textarea-min-height-md' | '--rt-control-textarea-min-height-sm' | '--rt-counter-gap' | '--rt-counter-row-color-border' | '--rt-counter-row-gap' | '--rt-counter-row-hint-color' | '--rt-counter-row-hint-font-size' | '--rt-counter-row-label-color' | '--rt-counter-row-label-font-size' | '--rt-counter-row-padding-y' | '--rt-counter-value-color' | '--rt-counter-value-font-size' | '--rt-counter-value-min-width' | '--rt-danger-50' | '--rt-danger-500' | '--rt-danger-600' | '--rt-danger-700' | '--rt-duration-base' | '--rt-duration-fast' | '--rt-duration-slow' | '--rt-duration-slower' | '--rt-field-error-color' | '--rt-field-error-font-size' | '--rt-field-gap' | '--rt-field-hint-color' | '--rt-field-hint-font-size' | '--rt-field-label-color' | '--rt-field-label-font-size' | '--rt-field-label-font-weight' | '--rt-field-label-help-gap' | '--rt-field-label-line-height' | '--rt-field-messages-line-height' | '--rt-field-messages-padding-top' | '--rt-field-required-color' | '--rt-field-required-gap' | '--rt-field-value-color' | '--rt-field-value-empty-color' | '--rt-field-value-font-size' | '--rt-focus-ring-color' | '--rt-focus-ring-color-danger' | '--rt-focus-ring-offset' | '--rt-focus-ring-width' | '--rt-font-family-mono' | '--rt-font-family-sans' | '--rt-font-weight-bold' | '--rt-font-weight-medium' | '--rt-font-weight-regular' | '--rt-font-weight-semibold' | '--rt-gray-350' | '--rt-icon-button-color-bg-hover' | '--rt-icon-button-disabled-color' | '--rt-icon-button-disabled-fill' | '--rt-icon-button-disabled-opacity' | '--rt-info-50' | '--rt-info-500' | '--rt-info-600' | '--rt-info-700' | '--rt-input-border-width' | '--rt-input-caret-color' | '--rt-input-clear-bg' | '--rt-input-clear-bg-hover' | '--rt-input-clear-color' | '--rt-input-clear-icon-size' | '--rt-input-clear-offset-end' | '--rt-input-clear-offset-start' | '--rt-input-clear-radius' | '--rt-input-clear-size' | '--rt-input-color-bg' | '--rt-input-color-bg-disabled' | '--rt-input-color-bg-hover' | '--rt-input-color-border' | '--rt-input-color-border-disabled' | '--rt-input-color-border-error' | '--rt-input-color-border-focus' | '--rt-input-color-placeholder-disabled' | '--rt-input-color-text' | '--rt-input-color-text-disabled' | '--rt-input-color-text-placeholder' | '--rt-input-disabled-field-opacity' | '--rt-input-disabled-opacity' | '--rt-input-fill-color-bg-disabled' | '--rt-input-fill-edge' | '--rt-input-fill-focus-shadow' | '--rt-input-fill-focus-shadow-error' | '--rt-input-focus-outline-offset' | '--rt-input-focus-shadow' | '--rt-input-focus-shadow-error' | '--rt-input-font-size' | '--rt-input-gap' | '--rt-input-height' | '--rt-input-height-lg' | '--rt-input-height-md' | '--rt-input-height-sm' | '--rt-input-icon-color' | '--rt-input-icon-size' | '--rt-input-line-height' | '--rt-input-max-width' | '--rt-input-min-width' | '--rt-input-padding-x' | '--rt-input-padding-y' | '--rt-input-panel-max-height' | '--rt-input-radius' | '--rt-input-transition' | '--rt-leading-none' | '--rt-leading-normal' | '--rt-leading-relaxed' | '--rt-leading-snug' | '--rt-leading-tight' | '--rt-letter-spacing-wide' | '--rt-list-action-color' | '--rt-list-action-color-bg-hover' | '--rt-list-action-color-hover' | '--rt-list-action-divider-height' | '--rt-list-action-gap' | '--rt-list-action-icon-size' | '--rt-list-action-radius' | '--rt-list-action-shadow' | '--rt-list-action-shadow-hover' | '--rt-list-content-padding-bottom' | '--rt-list-copy-button-bg' | '--rt-list-copy-button-bg-hover' | '--rt-list-copy-button-color' | '--rt-list-copy-button-radius' | '--rt-list-copy-button-size' | '--rt-list-empty-icon-size' | '--rt-list-empty-icon-wrap-bg' | '--rt-list-empty-icon-wrap-size' | '--rt-list-empty-title-size' | '--rt-list-empty-title-weight' | '--rt-list-filter-line-height' | '--rt-list-placeholder-grow' | '--rt-list-placeholder-min-height' | '--rt-list-search-color-bg' | '--rt-list-search-color-border' | '--rt-list-search-color-placeholder' | '--rt-list-search-font-size' | '--rt-list-search-gap' | '--rt-list-search-height' | '--rt-list-search-icon-color' | '--rt-list-search-icon-size' | '--rt-list-search-padding-x' | '--rt-list-search-radius' | '--rt-list-search-width' | '--rt-list-selector-label-color' | '--rt-list-settings-icon-color' | '--rt-list-settings-item-bg' | '--rt-list-settings-item-radius' | '--rt-list-table-button-radius' | '--rt-list-table-button-size' | '--rt-list-table-head-divider-color' | '--rt-list-table-icon-color' | '--rt-list-table-icon-size' | '--rt-list-toolbar-gap' | '--rt-list-toolbar-padding-bottom' | '--rt-list-toolbar-padding-top' | '--rt-mat-blue-100' | '--rt-mat-blue-20' | '--rt-mat-blue-40' | '--rt-mat-blue-60' | '--rt-mat-blue-80' | '--rt-mat-blue-active' | '--rt-mat-blue-hover' | '--rt-mat-dark-10' | '--rt-mat-dark-20' | '--rt-mat-dark-30' | '--rt-mat-dark-40' | '--rt-mat-green-10' | '--rt-mat-green-100' | '--rt-mat-green-120' | '--rt-mat-green-20' | '--rt-mat-green-40' | '--rt-mat-green-60' | '--rt-mat-green-80' | '--rt-mat-green-active' | '--rt-mat-green-hover' | '--rt-mat-menu-min-width' | '--rt-mat-menu-sm-icon-size' | '--rt-mat-menu-sm-item-height' | '--rt-mat-navy-100' | '--rt-mat-neutral-0' | '--rt-mat-neutral-10' | '--rt-mat-neutral-100' | '--rt-mat-neutral-15' | '--rt-mat-neutral-20' | '--rt-mat-neutral-25' | '--rt-mat-neutral-30' | '--rt-mat-neutral-35' | '--rt-mat-neutral-40' | '--rt-mat-neutral-5' | '--rt-mat-neutral-60' | '--rt-mat-neutral-70' | '--rt-mat-neutral-80' | '--rt-mat-neutral-active' | '--rt-mat-neutral-hover' | '--rt-mat-orange-10' | '--rt-mat-orange-100' | '--rt-mat-orange-20' | '--rt-mat-orange-40' | '--rt-mat-orange-5' | '--rt-mat-orange-60' | '--rt-mat-orange-70' | '--rt-mat-orange-80' | '--rt-mat-orange-active' | '--rt-mat-orange-hover' | '--rt-mat-overlay-black-32' | '--rt-mat-overlay-black-4' | '--rt-mat-overlay-blue-24' | '--rt-mat-overlay-blue-8' | '--rt-mat-radius-4' | '--rt-mat-radius-5' | '--rt-mat-red-10' | '--rt-mat-red-100' | '--rt-mat-red-20' | '--rt-mat-red-40' | '--rt-mat-red-60' | '--rt-mat-red-80' | '--rt-mat-red-active' | '--rt-mat-red-hover' | '--rt-mat-shadow-fab' | '--rt-mat-shadow-fab-hover' | '--rt-mat-shadow-level-2' | '--rt-mat-yellow-100' | '--rt-mist-50' | '--rt-nav-caret-size' | '--rt-nav-color-disabled' | '--rt-nav-color-focus' | '--rt-nav-header-color-bg' | '--rt-nav-header-padding' | '--rt-nav-item-color' | '--rt-nav-item-color-bg' | '--rt-nav-item-color-bg-active' | '--rt-nav-item-color-border' | '--rt-nav-item-color-caret' | '--rt-nav-item-color-hover' | '--rt-nav-item-color-pressed' | '--rt-nav-item-content-gap' | '--rt-nav-item-font-size' | '--rt-nav-item-font-weight' | '--rt-nav-item-gap' | '--rt-nav-item-height' | '--rt-nav-item-line-height' | '--rt-nav-item-padding' | '--rt-nav-marker-color' | '--rt-nav-marker-size' | '--rt-nav-panel-color-bg' | '--rt-nav-panel-color-border' | '--rt-nav-panel-column-gap' | '--rt-nav-panel-column-width' | '--rt-nav-panel-columns' | '--rt-nav-panel-group-color' | '--rt-nav-panel-group-content-gap' | '--rt-nav-panel-group-font-size' | '--rt-nav-panel-group-font-weight' | '--rt-nav-panel-group-gap' | '--rt-nav-panel-item-color' | '--rt-nav-panel-item-color-active' | '--rt-nav-panel-item-color-bg-active' | '--rt-nav-panel-item-color-bg-hover' | '--rt-nav-panel-item-content-gap' | '--rt-nav-panel-item-font-size' | '--rt-nav-panel-item-font-weight' | '--rt-nav-panel-item-gap' | '--rt-nav-panel-item-height' | '--rt-nav-panel-item-padding' | '--rt-nav-panel-padding' | '--rt-nav-panel-padding-y' | '--rt-nav-panel-shadow' | '--rt-navy-600' | '--rt-navy-900' | '--rt-neutral-0' | '--rt-neutral-100' | '--rt-neutral-200' | '--rt-neutral-300' | '--rt-neutral-400' | '--rt-neutral-50' | '--rt-neutral-500' | '--rt-neutral-600' | '--rt-neutral-700' | '--rt-neutral-800' | '--rt-neutral-900' | '--rt-neutral-950' | '--rt-opacity-disabled' | '--rt-overlay-amber-16' | '--rt-overlay-black-16' | '--rt-overlay-black-4' | '--rt-overlay-black-50' | '--rt-overlay-black-64' | '--rt-overlay-black-8' | '--rt-overlay-brand-24' | '--rt-overlay-brand-8' | '--rt-overlay-danger-16' | '--rt-overlay-menu-bg' | '--rt-overlay-menu-current-bg' | '--rt-overlay-menu-danger-color' | '--rt-overlay-menu-danger-label-color' | '--rt-overlay-menu-item-icon-size' | '--rt-overlay-menu-item-min-height' | '--rt-overlay-menu-item-padding-x' | '--rt-overlay-menu-item-padding-y' | '--rt-overlay-menu-item-weight' | '--rt-overlay-menu-min-width' | '--rt-overlay-menu-padding-y' | '--rt-overlay-menu-radius' | '--rt-overlay-menu-shadow' | '--rt-overlay-menu-sm-item-icon-size' | '--rt-overlay-menu-sm-item-min-height' | '--rt-overlay-navy-70' | '--rt-overlay-select-check-display' | '--rt-overlay-select-option-font-size' | '--rt-overlay-select-option-min-height' | '--rt-overlay-select-panel-border-width' | '--rt-overlay-select-radius' | '--rt-overlay-select-selected-bg' | '--rt-overlay-select-selected-weight' | '--rt-overlay-select-shadow' | '--rt-overlay-tooltip-radius' | '--rt-overlay-tooltip-shadow' | '--rt-overlay-white-25' | '--rt-overlay-white-4' | '--rt-overlay-white-40' | '--rt-overlay-white-50' | '--rt-overlay-white-8' | '--rt-pagination-arrow-color' | '--rt-pagination-arrow-radius' | '--rt-pagination-arrow-shadow' | '--rt-pagination-arrow-size' | '--rt-pagination-box-color-border' | '--rt-pagination-box-color-text' | '--rt-pagination-box-current-color-bg' | '--rt-pagination-box-current-color-border' | '--rt-pagination-box-current-color-text' | '--rt-pagination-box-current-font-weight' | '--rt-pagination-box-radius' | '--rt-pagination-box-size' | '--rt-pagination-field-color-bg' | '--rt-pagination-field-color-border' | '--rt-pagination-field-color-text' | '--rt-pagination-field-height' | '--rt-pagination-field-padding-x' | '--rt-pagination-field-radius' | '--rt-pagination-gap' | '--rt-pagination-justify' | '--rt-pagination-nav-gap' | '--rt-pagination-padding-x' | '--rt-pagination-padding-y' | '--rt-pagination-per-page-gap' | '--rt-pagination-per-page-label-white-space' | '--rt-pagination-range-display' | '--rt-profile-avatar-border-width' | '--rt-profile-avatar-font-size' | '--rt-profile-avatar-radius' | '--rt-profile-avatar-size' | '--rt-profile-item-content-gap' | '--rt-profile-item-font-size' | '--rt-profile-item-font-weight' | '--rt-profile-item-padding-y' | '--rt-profile-item-radius' | '--rt-profile-menu-border-width' | '--rt-profile-menu-min-width' | '--rt-profile-menu-padding' | '--rt-profile-menu-radius' | '--rt-profile-menu-shadow' | '--rt-profile-row-inset' | '--rt-profile-theme-icon-padding' | '--rt-profile-theme-icon-radius' | '--rt-radius-2xl' | '--rt-radius-control' | '--rt-radius-full' | '--rt-radius-lg' | '--rt-radius-md' | '--rt-radius-ms' | '--rt-radius-none' | '--rt-radius-sm' | '--rt-radius-xl' | '--rt-radius-xs' | '--rt-shadow-card' | '--rt-shadow-card-soft' | '--rt-shadow-dialog' | '--rt-shadow-focus-ring' | '--rt-shadow-focus-ring-danger' | '--rt-shadow-lg' | '--rt-shadow-md' | '--rt-shadow-nav-panel' | '--rt-shadow-none' | '--rt-shadow-profile-menu' | '--rt-shadow-service-logo-lg' | '--rt-shadow-service-logo-md' | '--rt-shadow-service-logo-sm' | '--rt-shadow-service-logo-xs' | '--rt-shadow-sm' | '--rt-shadow-status-dot' | '--rt-shadow-step-indicator' | '--rt-shadow-xl' | '--rt-size-1' | '--rt-size-10' | '--rt-size-100' | '--rt-size-12' | '--rt-size-16' | '--rt-size-2' | '--rt-size-20' | '--rt-size-24' | '--rt-size-3' | '--rt-size-30' | '--rt-size-4' | '--rt-size-40' | '--rt-size-5' | '--rt-size-6' | '--rt-size-60' | '--rt-size-64' | '--rt-size-8' | '--rt-slate-300' | '--rt-space-0' | '--rt-space-0-5' | '--rt-space-1' | '--rt-space-10' | '--rt-space-12' | '--rt-space-16' | '--rt-space-2' | '--rt-space-20' | '--rt-space-24' | '--rt-space-2xl' | '--rt-space-2xs' | '--rt-space-3xl' | '--rt-space-4' | '--rt-space-5' | '--rt-space-6' | '--rt-space-8' | '--rt-space-lg' | '--rt-space-md' | '--rt-space-sm' | '--rt-space-xl' | '--rt-space-xs' | '--rt-success-100' | '--rt-success-400' | '--rt-success-50' | '--rt-success-500' | '--rt-success-600' | '--rt-success-700' | '--rt-tabs-indicator-duration' | '--rt-tabs-indicator-easing' | '--rt-tabs-panel-duration' | '--rt-tabs-panel-easing' | '--rt-tabs-scroll-duration' | '--rt-tabs-scroll-easing' | '--rt-text-2xl' | '--rt-text-2xs' | '--rt-text-3xl' | '--rt-text-3xs' | '--rt-text-4xl' | '--rt-text-base' | '--rt-text-lg' | '--rt-text-md' | '--rt-text-sm' | '--rt-text-xl' | '--rt-text-xs' | '--rt-textarea-line-height' | '--rt-textarea-min-height' | '--rt-textarea-min-height-lg' | '--rt-textarea-min-height-md' | '--rt-textarea-min-height-sm' | '--rt-textarea-padding-y' | '--rt-toggle-chip-color-bg-selected' | '--rt-toggle-chip-color-border' | '--rt-toggle-chip-color-text' | '--rt-toggle-color-border' | '--rt-toggle-color-icon' | '--rt-toggle-color-thumb' | '--rt-toggle-color-track' | '--rt-toggle-color-track-on' | '--rt-toggle-shadow-border' | '--rt-toggle-shadow-thumb' | '--rt-warning-50' | '--rt-warning-500' | '--rt-warning-600' | '--rt-warning-700' | '--rt-yellow-400' | '--rt-z-base' | '--rt-z-dropdown' | '--rt-z-fixed' | '--rt-z-modal' | '--rt-z-modal-backdrop' | '--rt-z-popover' | '--rt-z-sticky' | '--rt-z-tooltip';
1454
1462
  /** The name of a consumer's handle — a property the kit deliberately does not declare. */
1455
- export type TRtConsumerHandleName = '--rt-action-bar-action-bg-hover' | '--rt-action-bar-action-color-danger' | '--rt-action-bar-action-focus-shadow' | '--rt-action-bar-action-font-size' | '--rt-action-bar-action-height' | '--rt-action-bar-action-padding-block' | '--rt-action-bar-action-padding-inline' | '--rt-action-bar-action-radius' | '--rt-action-bar-action-weight' | '--rt-action-bar-bg' | '--rt-action-bar-close-icon-size' | '--rt-action-bar-close-size' | '--rt-action-bar-color' | '--rt-action-bar-counter-font-size' | '--rt-action-bar-counter-weight' | '--rt-action-bar-font-size' | '--rt-action-bar-gap' | '--rt-action-bar-holder-bottom' | '--rt-action-bar-holder-enter-duration' | '--rt-action-bar-holder-inline' | '--rt-action-bar-holder-leave-duration' | '--rt-action-bar-icon-gap' | '--rt-action-bar-icon-size' | '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-gap' | '--rt-action-bar-menu-item-font-size' | '--rt-action-bar-menu-padding' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-action-bar-padding' | '--rt-action-bar-radius' | '--rt-action-bar-shadow' | '--rt-aside-bg' | '--rt-aside-content-inset' | '--rt-aside-error-margin-block' | '--rt-aside-footer-gap' | '--rt-aside-footer-inset' | '--rt-aside-footer-justify' | '--rt-aside-footer-margin' | '--rt-aside-header-back-icon-size' | '--rt-aside-header-back-size' | '--rt-aside-header-gap' | '--rt-aside-header-inset' | '--rt-aside-header-min-height' | '--rt-aside-header-subtitle-size' | '--rt-aside-header-title-leading' | '--rt-aside-header-title-size' | '--rt-aside-header-title-weight' | '--rt-aside-width' | '--rt-bottom-sheet-max-height' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-bg' | '--rt-dialog-border' | '--rt-dialog-content-max-height' | '--rt-dialog-content-padding' | '--rt-dialog-footer-border' | '--rt-dialog-footer-padding' | '--rt-dialog-header-border' | '--rt-dialog-header-padding' | '--rt-dialog-title-font-size' | '--rt-dialog-title-transform' | '--rt-dialog-title-weight' | '--rt-dialog-width' | '--rt-dynamic-selector-list-actions-gap' | '--rt-dynamic-selector-list-actions-offset' | '--rt-dynamic-selector-list-actions-padding-end' | '--rt-dynamic-selector-list-add-color' | '--rt-dynamic-selector-list-controls-divider-color' | '--rt-dynamic-selector-list-controls-divider-width' | '--rt-dynamic-selector-list-controls-gap' | '--rt-dynamic-selector-list-handle-padding-end' | '--rt-dynamic-selector-list-handle-padding-start' | '--rt-dynamic-selector-list-row-padding-end' | '--rt-dynamic-selector-list-title-gap' | '--rt-dynamic-selector-popup-bg' | '--rt-dynamic-selector-popup-border-width' | '--rt-dynamic-selector-popup-button-font-size' | '--rt-dynamic-selector-popup-button-height' | '--rt-dynamic-selector-popup-empty-gap' | '--rt-dynamic-selector-popup-empty-icon-size' | '--rt-dynamic-selector-popup-empty-icon-wrap-bg' | '--rt-dynamic-selector-popup-empty-text-color' | '--rt-dynamic-selector-popup-empty-text-size' | '--rt-dynamic-selector-popup-empty-text-weight' | '--rt-dynamic-selector-popup-foot-border-width' | '--rt-dynamic-selector-popup-foot-padding' | '--rt-dynamic-selector-popup-highlight-bg' | '--rt-dynamic-selector-popup-highlight-color' | '--rt-dynamic-selector-popup-highlight-radius' | '--rt-dynamic-selector-popup-highlight-weight' | '--rt-dynamic-selector-popup-max-height' | '--rt-dynamic-selector-popup-min-height' | '--rt-dynamic-selector-popup-nav-color' | '--rt-dynamic-selector-popup-option-line-height' | '--rt-dynamic-selector-popup-option-min-height' | '--rt-dynamic-selector-popup-padding' | '--rt-dynamic-selector-popup-radius' | '--rt-dynamic-selector-popup-shadow' | '--rt-dynamic-selector-popup-width' | '--rt-expansion-panel-body-box-sizing' | '--rt-expansion-panel-body-font-size' | '--rt-expansion-panel-body-line-height' | '--rt-fab-small-container-color' | '--rt-field-filled-container-color' | '--rt-field-label-letter-spacing' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-color-danger' | '--rt-icon-color-disabled' | '--rt-icon-color-info' | '--rt-icon-color-inverse' | '--rt-icon-color-muted' | '--rt-icon-color-primary' | '--rt-icon-color-success' | '--rt-icon-color-warning' | '--rt-icon-glyph-font' | '--rt-icon-glyph-grade' | '--rt-icon-glyph-opsz' | '--rt-icon-glyph-weight' | '--rt-icon-step-2xl' | '--rt-icon-step-3xl' | '--rt-icon-step-4xl' | '--rt-icon-step-lg' | '--rt-icon-step-md' | '--rt-icon-step-sm' | '--rt-icon-step-xl' | '--rt-icon-step-xs' | '--rt-input-density' | '--rt-input-height-app' | '--rt-input-letter-spacing' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-menu-container-color' | '--rt-option-selected-state-layer-color' | '--rt-page-header-bg' | '--rt-pagination-field-font-size' | '--rt-side-menu-sub-item-letter-spacing' | '--rt-sys-error' | '--rt-sys-error-container' | '--rt-sys-inverse-on-surface' | '--rt-sys-inverse-surface' | '--rt-sys-level2' | '--rt-sys-level3' | '--rt-sys-level4' | '--rt-sys-on-primary' | '--rt-sys-on-primary-container' | '--rt-sys-on-secondary-container' | '--rt-sys-on-surface' | '--rt-sys-on-surface-variant' | '--rt-sys-outline' | '--rt-sys-outline-variant' | '--rt-sys-primary' | '--rt-sys-primary-container' | '--rt-sys-primary-fixed-dim' | '--rt-sys-secondary-container' | '--rt-sys-surface' | '--rt-sys-surface-container-lowest' | '--rt-sys-surface-variant' | '--rt-table-actions-bg' | '--rt-tag-color-bg' | '--rt-tag-color-border' | '--rt-tag-color-text' | '--rt-tag-letter-spacing' | '--rt-tag-padding-block' | '--rt-tag-padding-inline' | '--rt-toast-action-color' | '--rt-toast-bg' | '--rt-toast-border-color' | '--rt-toast-close-color' | '--rt-toast-color' | '--rt-toast-filled-danger-bg' | '--rt-toast-filled-danger-border-color' | '--rt-toast-filled-danger-color' | '--rt-toast-filled-info-bg' | '--rt-toast-filled-info-border-color' | '--rt-toast-filled-info-color' | '--rt-toast-filled-success-bg' | '--rt-toast-filled-success-border-color' | '--rt-toast-filled-success-color' | '--rt-toast-filled-warning-bg' | '--rt-toast-filled-warning-border-color' | '--rt-toast-filled-warning-color' | '--rt-toast-icon-color' | '--rt-toast-progress-color' | '--rt-toast-progress-height' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
1463
+ export type TRtConsumerHandleName = '--rt-action-bar-action-bg-hover' | '--rt-action-bar-action-color-danger' | '--rt-action-bar-action-focus-shadow' | '--rt-action-bar-action-font-size' | '--rt-action-bar-action-height' | '--rt-action-bar-action-padding-block' | '--rt-action-bar-action-padding-inline' | '--rt-action-bar-action-radius' | '--rt-action-bar-action-weight' | '--rt-action-bar-bg' | '--rt-action-bar-close-icon-size' | '--rt-action-bar-close-size' | '--rt-action-bar-color' | '--rt-action-bar-counter-font-size' | '--rt-action-bar-counter-weight' | '--rt-action-bar-font-size' | '--rt-action-bar-gap' | '--rt-action-bar-holder-bottom' | '--rt-action-bar-holder-enter-duration' | '--rt-action-bar-holder-inline' | '--rt-action-bar-holder-leave-duration' | '--rt-action-bar-icon-gap' | '--rt-action-bar-icon-size' | '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-gap' | '--rt-action-bar-menu-item-font-size' | '--rt-action-bar-menu-padding' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-action-bar-padding' | '--rt-action-bar-radius' | '--rt-action-bar-shadow' | '--rt-aside-bg' | '--rt-aside-content-inset' | '--rt-aside-error-margin-block' | '--rt-aside-footer-gap' | '--rt-aside-footer-inset' | '--rt-aside-footer-justify' | '--rt-aside-footer-margin' | '--rt-aside-header-back-icon-size' | '--rt-aside-header-back-size' | '--rt-aside-header-gap' | '--rt-aside-header-inset' | '--rt-aside-header-min-height' | '--rt-aside-header-subtitle-size' | '--rt-aside-header-title-leading' | '--rt-aside-header-title-size' | '--rt-aside-header-title-weight' | '--rt-aside-width' | '--rt-bottom-sheet-max-height' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-bg' | '--rt-dialog-border' | '--rt-dialog-content-max-height' | '--rt-dialog-content-padding' | '--rt-dialog-footer-border' | '--rt-dialog-footer-padding' | '--rt-dialog-header-border' | '--rt-dialog-header-padding' | '--rt-dialog-title-font-size' | '--rt-dialog-title-transform' | '--rt-dialog-title-weight' | '--rt-dialog-width' | '--rt-dynamic-selector-list-actions-gap' | '--rt-dynamic-selector-list-actions-offset' | '--rt-dynamic-selector-list-actions-padding-end' | '--rt-dynamic-selector-list-add-color' | '--rt-dynamic-selector-list-controls-divider-color' | '--rt-dynamic-selector-list-controls-divider-width' | '--rt-dynamic-selector-list-controls-gap' | '--rt-dynamic-selector-list-handle-padding-end' | '--rt-dynamic-selector-list-handle-padding-start' | '--rt-dynamic-selector-list-row-padding-end' | '--rt-dynamic-selector-list-title-gap' | '--rt-dynamic-selector-popup-bg' | '--rt-dynamic-selector-popup-border-width' | '--rt-dynamic-selector-popup-button-font-size' | '--rt-dynamic-selector-popup-button-height' | '--rt-dynamic-selector-popup-empty-gap' | '--rt-dynamic-selector-popup-empty-icon-size' | '--rt-dynamic-selector-popup-empty-icon-wrap-bg' | '--rt-dynamic-selector-popup-empty-text-color' | '--rt-dynamic-selector-popup-empty-text-size' | '--rt-dynamic-selector-popup-empty-text-weight' | '--rt-dynamic-selector-popup-foot-border-width' | '--rt-dynamic-selector-popup-foot-padding' | '--rt-dynamic-selector-popup-highlight-bg' | '--rt-dynamic-selector-popup-highlight-color' | '--rt-dynamic-selector-popup-highlight-radius' | '--rt-dynamic-selector-popup-highlight-weight' | '--rt-dynamic-selector-popup-max-height' | '--rt-dynamic-selector-popup-min-height' | '--rt-dynamic-selector-popup-nav-color' | '--rt-dynamic-selector-popup-option-line-height' | '--rt-dynamic-selector-popup-option-min-height' | '--rt-dynamic-selector-popup-padding' | '--rt-dynamic-selector-popup-radius' | '--rt-dynamic-selector-popup-shadow' | '--rt-dynamic-selector-popup-width' | '--rt-expansion-panel-body-box-sizing' | '--rt-expansion-panel-body-font-size' | '--rt-expansion-panel-body-line-height' | '--rt-fab-small-container-color' | '--rt-field-filled-container-color' | '--rt-field-label-letter-spacing' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-color-danger' | '--rt-icon-color-disabled' | '--rt-icon-color-info' | '--rt-icon-color-inverse' | '--rt-icon-color-muted' | '--rt-icon-color-primary' | '--rt-icon-color-success' | '--rt-icon-color-warning' | '--rt-icon-glyph-font' | '--rt-icon-glyph-grade' | '--rt-icon-glyph-opsz' | '--rt-icon-glyph-weight' | '--rt-icon-step-2xl' | '--rt-icon-step-3xl' | '--rt-icon-step-4xl' | '--rt-icon-step-lg' | '--rt-icon-step-md' | '--rt-icon-step-sm' | '--rt-icon-step-xl' | '--rt-icon-step-xs' | '--rt-input-density' | '--rt-input-height-app' | '--rt-input-letter-spacing' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-menu-container-color' | '--rt-option-selected-state-layer-color' | '--rt-page-header-bg' | '--rt-pagination-field-font-size' | '--rt-side-menu-sub-item-letter-spacing' | '--rt-stepper-current-color' | '--rt-stepper-description-color' | '--rt-stepper-inset' | '--rt-stepper-label-color' | '--rt-stepper-line-color' | '--rt-stepper-mark-complete-bg' | '--rt-stepper-mark-complete-color' | '--rt-stepper-mark-current-bg' | '--rt-stepper-mark-current-color' | '--rt-stepper-mark-neutral-bg' | '--rt-stepper-mark-neutral-color' | '--rt-stepper-mark-upcoming-bg' | '--rt-stepper-mark-upcoming-color' | '--rt-stepper-point-shadow' | '--rt-stepper-progress-color' | '--rt-stepper-step-description-color' | '--rt-stepper-step-label-color' | '--rt-stepper-track-color' | '--rt-sys-error' | '--rt-sys-error-container' | '--rt-sys-inverse-on-surface' | '--rt-sys-inverse-surface' | '--rt-sys-level2' | '--rt-sys-level3' | '--rt-sys-level4' | '--rt-sys-on-primary' | '--rt-sys-on-primary-container' | '--rt-sys-on-secondary-container' | '--rt-sys-on-surface' | '--rt-sys-on-surface-variant' | '--rt-sys-outline' | '--rt-sys-outline-variant' | '--rt-sys-primary' | '--rt-sys-primary-container' | '--rt-sys-primary-fixed-dim' | '--rt-sys-secondary-container' | '--rt-sys-surface' | '--rt-sys-surface-container-lowest' | '--rt-sys-surface-variant' | '--rt-table-actions-bg' | '--rt-tag-color-bg' | '--rt-tag-color-border' | '--rt-tag-color-text' | '--rt-tag-letter-spacing' | '--rt-tag-padding-block' | '--rt-tag-padding-inline' | '--rt-toast-action-color' | '--rt-toast-bg' | '--rt-toast-border-color' | '--rt-toast-close-color' | '--rt-toast-color' | '--rt-toast-filled-danger-bg' | '--rt-toast-filled-danger-border-color' | '--rt-toast-filled-danger-color' | '--rt-toast-filled-info-bg' | '--rt-toast-filled-info-border-color' | '--rt-toast-filled-info-color' | '--rt-toast-filled-success-bg' | '--rt-toast-filled-success-border-color' | '--rt-toast-filled-success-color' | '--rt-toast-filled-warning-bg' | '--rt-toast-filled-warning-border-color' | '--rt-toast-filled-warning-color' | '--rt-toast-icon-color' | '--rt-toast-progress-color' | '--rt-toast-progress-height' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
1456
1464
  /** All the styling properties declared by the kit. */
1457
1465
  export declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
1458
1466
  /** All the consumer's handles: the value comes from the application, until then the fallback works. */
@@ -1,11 +1,12 @@
1
- import { NumberInput } from "@angular/cdk/coercion";
1
+ import { BooleanInput, NumberInput } from "@angular/cdk/coercion";
2
2
  import * as i0 from "@angular/core";
3
- import { ElementRef, InputSignal, InputSignalWithTransform, Signal, WritableSignal } from "@angular/core";
3
+ import { ElementRef, InputSignal, InputSignalWithTransform, OutputEmitterRef, Signal, WritableSignal } from "@angular/core";
4
4
  import { IRtIcon, IRtInput, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
5
+ import { IRtCalendar } from "@rt-tools/ui-kit-v2/calendar";
6
+ import { IRtToggleButtonGroup } from "@rt-tools/ui-kit-v2/toggle-button-group";
5
7
  import { RtFormControlBase } from "@rt-tools/ui-kit-v2/form-control";
6
8
  import { RtPopoverDirective } from "@rt-tools/ui-kit-v2/popover";
7
9
  import * as i1 from "@rt-tools/ui-kit-v2/radius";
8
- import { IRtCalendar } from "@rt-tools/ui-kit-v2/calendar";
9
10
  /** Контракт rt-date-picker. */
10
11
  export declare namespace IRtDatePicker {
11
12
  /** Тип значения: дата, время или дата со временем. */
@@ -70,6 +71,151 @@ export declare namespace IRtDatePicker {
70
71
  max: string | null;
71
72
  }
72
73
  }
74
+ type TView = 'days' | 'months' | 'years';
75
+ type TTab = 'date' | 'time';
76
+ /**
77
+ * Панель выбора даты и времени: месяц с листанием, сетки месяцев и годов, колонки часов и минут,
78
+ * подвал с «Сегодня», «Сейчас», «Готово» или «Применить» — по типу значения. Её открывает
79
+ * rt-date-picker, а без текстового поля она стоит в поповере или в rt-bottom-sheet потребителя.
80
+ *
81
+ * Панель не пишет в форму: готовое значение уходит событием `picked`, просьба закрыться —
82
+ * `closed`. Черновик живёт, пока панель открыта, поэтому её создают заново на каждое открытие.
83
+ * Поверхности у панели нет: фон, рамку и тень даёт то, во что её положили.
84
+ * Вся арифметика дат — в `rt-date-panel.logic`.
85
+ */
86
+ export declare class RtDatePanelComponent {
87
+ #private;
88
+ protected readonly t: Signal<TRtKitLabelMap>;
89
+ protected readonly weekdays: Signal<readonly string[]>;
90
+ protected readonly timeCells: Signal<readonly ElementRef<HTMLButtonElement>[]>;
91
+ protected readonly view: WritableSignal<TView>;
92
+ protected readonly tab: WritableSignal<TTab>;
93
+ protected readonly activeKey: WritableSignal<string | null>;
94
+ protected readonly today: Signal<string>;
95
+ protected readonly draftDay: WritableSignal<string | null>;
96
+ protected readonly draftTime: WritableSignal<string | null>;
97
+ protected readonly shownMonth: WritableSignal<string>;
98
+ protected readonly year: WritableSignal<number>;
99
+ protected readonly split: Signal<boolean>;
100
+ protected readonly showDate: Signal<boolean>;
101
+ protected readonly showTime: Signal<boolean>;
102
+ protected readonly months: Signal<IRtCalendar.Month[]>;
103
+ protected readonly canPrev: Signal<boolean>;
104
+ protected readonly canNext: Signal<boolean>;
105
+ protected readonly monthCells: Signal<IRtDatePicker.MonthCell[]>;
106
+ protected readonly canPrevYear: Signal<boolean>;
107
+ protected readonly canNextYear: Signal<boolean>;
108
+ /** Первый год блока, который показывает сетка годов. */
109
+ protected readonly yearStart: WritableSignal<number>;
110
+ protected readonly yearCells: Signal<IRtDatePicker.YearCell[]>;
111
+ protected readonly yearSpan: Signal<string>;
112
+ /** Выбранный год — год значения; текущий — год сегодняшнего дня. */
113
+ protected readonly chosenYear: Signal<string | null>;
114
+ protected readonly currentYear: Signal<string>;
115
+ protected readonly currentMonth: Signal<string>;
116
+ protected readonly canPrevYears: Signal<boolean>;
117
+ protected readonly canNextYears: Signal<boolean>;
118
+ protected readonly draftHour: Signal<number | null>;
119
+ protected readonly draftMinute: Signal<number | null>;
120
+ protected readonly columns: Signal<IRtDatePicker.TimeColumns>;
121
+ protected readonly todayOff: Signal<boolean>;
122
+ /** У даты в подвале только «Сегодня»: без неё пустая черта не рисуется. */
123
+ protected readonly hasFooter: Signal<boolean>;
124
+ /** Черновик собирается в значение и лежит в границах. */
125
+ protected readonly canApply: Signal<boolean>;
126
+ /** Черновик даты со временем текстом для подвала шторки: `15.03.2026, 09:30`; не собран — пусто. */
127
+ protected readonly draftText: Signal<string>;
128
+ protected readonly tabs: Signal<IRtToggleButtonGroup.Option<TTab>[]>;
129
+ /** Тип значения: дата, время или дата со временем. */
130
+ readonly type: InputSignal<IRtDatePicker.Type>;
131
+ /** Значение в форме нативного input'а: `YYYY-MM-DD`, `HH:mm`, `YYYY-MM-DDTHH:mm`; пустая строка — пусто. */
132
+ readonly value: InputSignal<string>;
133
+ /** Нижняя граница в форме значения; `null` — границы нет. */
134
+ readonly min: InputSignal<string | null>;
135
+ /** Верхняя граница в форме значения; `null` — границы нет. */
136
+ readonly max: InputSignal<string | null>;
137
+ /** Шаг колонки минут. */
138
+ readonly minuteStep: InputSignalWithTransform<number, NumberInput>;
139
+ /** Раскладка нижней шторки: дни под палец, у даты со временем — переключатель «Дата | Время». */
140
+ readonly sheet: InputSignalWithTransform<boolean, BooleanInput>;
141
+ /** Показывать ли «Сегодня» в подвале у типа `date`. Выключена — подвала у даты нет. */
142
+ readonly isTodayButtonShown: InputSignalWithTransform<boolean, BooleanInput>;
143
+ /**
144
+ * Момент, от которого считаются «сегодня» и «Сейчас». Без него панель читает часы сама; задаёт
145
+ * его витрина, чтобы кадр не менялся день ото дня.
146
+ */
147
+ readonly now: InputSignal<Date | null>;
148
+ /** Готовое значение в форме `value`: панель просит его записать. */
149
+ readonly picked: OutputEmitterRef<string>;
150
+ /** Панель просит закрыть себя: после выбора, а также по Escape в днях. */
151
+ readonly closed: OutputEmitterRef<void>;
152
+ constructor();
153
+ protected pickDay(day: IRtCalendar.Day): void;
154
+ protected pickToday(): void;
155
+ protected pickNow(): void;
156
+ protected pickHour(hour: number): void;
157
+ protected pickMinute(minute: number): void;
158
+ protected onGridKey(event: IRtCalendar.GridKey): void;
159
+ protected page(delta: number): void;
160
+ protected openMonths(): void;
161
+ protected pageYear(delta: number): void;
162
+ protected pickMonth(cell: IRtDatePicker.MonthCell): void;
163
+ protected openYears(): void;
164
+ protected pageYears(delta: number): void;
165
+ protected pickYear(cell: IRtDatePicker.YearCell): void;
166
+ /** Escape в сетке годов или месяцев возвращает на вид назад; в днях закрывает панель. */
167
+ protected onEscape(): void;
168
+ /** «Готово» и «Применить»: черновик уходит значением, панель закрывается. */
169
+ protected apply(): void;
170
+ /** «Сбросить»: значение становится пустым, панель закрывается. */
171
+ protected reset(): void;
172
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtDatePanelComponent, never>;
173
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDatePanelComponent, "rt-date-panel", never, {
174
+ "type": {
175
+ "alias": "type";
176
+ "required": true;
177
+ "isSignal": true;
178
+ };
179
+ "value": {
180
+ "alias": "value";
181
+ "required": false;
182
+ "isSignal": true;
183
+ };
184
+ "min": {
185
+ "alias": "min";
186
+ "required": false;
187
+ "isSignal": true;
188
+ };
189
+ "max": {
190
+ "alias": "max";
191
+ "required": false;
192
+ "isSignal": true;
193
+ };
194
+ "minuteStep": {
195
+ "alias": "minuteStep";
196
+ "required": false;
197
+ "isSignal": true;
198
+ };
199
+ "sheet": {
200
+ "alias": "sheet";
201
+ "required": false;
202
+ "isSignal": true;
203
+ };
204
+ "isTodayButtonShown": {
205
+ "alias": "isTodayButtonShown";
206
+ "required": false;
207
+ "isSignal": true;
208
+ };
209
+ "now": {
210
+ "alias": "now";
211
+ "required": false;
212
+ "isSignal": true;
213
+ };
214
+ }, {
215
+ "picked": "picked";
216
+ "closed": "closed";
217
+ }, never, never, true, never>;
218
+ }
73
219
  /**
74
220
  * Поле даты, времени или даты со временем со своей панелью кита, визуально и по токенам
75
221
  * идентичное rt-input (host — box `--rt-input-*`, input — прозрачный `__field`). Кнопка в конце
@@ -186,7 +332,12 @@ export declare function rtDateAddMonths(month: string, delta: number): string;
186
332
  export declare function rtDateCanPage(month: string, delta: number, min: string | null, max: string | null): boolean;
187
333
  /** Месяц `YYYY-MM` для календаря: подпись по локали, пустые ячейки до первого дня, дни. */
188
334
  export declare function rtDateMonth(month: string, ctx: IRtDatePicker.MonthContext): IRtCalendar.Month;
189
- /** Короткие имена дней недели по локали, начиная с её первого дня. */
335
+ /**
336
+ * Месяц панели даты: тот же месяц, что у поля, но сетка дописана днями соседних месяцев до полных
337
+ * недель, а дни за границей выбора зачёркнуты, как занятые.
338
+ */
339
+ export declare function rtDatePanelMonth(month: string, ctx: IRtDatePicker.MonthContext): IRtCalendar.Month;
340
+ /** Короткие имена дней недели по локали, начиная с её первого дня, с заглавной буквы: «Пн», «Mon». */
190
341
  export declare function rtDateWeekdays(locale: string): string[];
191
342
  /** Двенадцать месяцев года для выбора месяца; месяц за границей выключен. */
192
343
  export declare function rtDateMonths(year: number, locale: string, min: string | null, max: string | null): IRtDatePicker.MonthCell[];
@@ -218,4 +369,5 @@ export declare function rtDateShape(type: IRtDatePicker.Type, layout: IRtDatePic
218
369
  * Читает набранный текст в значение ISO; `null` — текст не значение этого типа. Читается и
219
370
  * порядок локали, и сама форма значения: вставленная `2026-08-01` тоже становится значением.
220
371
  */
221
- export declare function rtDateParse(text: string, type: IRtDatePicker.Type, layout: IRtDatePicker.TextLayout): string | null;
372
+ export declare function rtDateParse(text: string, type: IRtDatePicker.Type, layout: IRtDatePicker.TextLayout): string | null;
373
+ export {};
@@ -3,7 +3,10 @@ import * as i0 from "@angular/core";
3
3
  import { ElementRef, InputSignal, InputSignalWithTransform, OutputEmitterRef, Signal, TemplateRef, WritableSignal } from "@angular/core";
4
4
  import { IRtIcon, TRtKitLabelMap, TRtKitTranslator } from "@rt-tools/ui-kit-v2/core";
5
5
  import { RtPopoverDirective } from "@rt-tools/ui-kit-v2/popover";
6
+ import { ConnectedPosition } from "@angular/cdk/overlay";
6
7
  export declare namespace IRtPageHeader {
8
+ /** Вид шапки: разделы в ряд или рейкой по левому краю окна. */
9
+ type Layout = 'horizontal' | 'vertical';
7
10
  /**
8
11
  * Описание пункта верхней навигации — раздела первого уровня или пункта
9
12
  * панели второго.
@@ -29,6 +32,8 @@ export declare namespace IRtPageHeader {
29
32
  * У раздела с панелью точка горит и от признака любого пункта внутри.
30
33
  */
31
34
  readonly unread?: boolean;
35
+ /** Кнопка подвала рейки включена: например, открыт ассистент. У разделов поле не читается. */
36
+ readonly active?: boolean;
32
37
  /** Панель второго уровня: колонка → группа → пункт. */
33
38
  readonly columns?: ReadonlyArray<Column>;
34
39
  /**
@@ -193,7 +198,7 @@ export declare class RtPageHeaderComponent {
193
198
  protected readonly mobileNavPopoverRef: Signal<RtPopoverDirective | undefined>;
194
199
  /** Кнопка «ещё» сжатой полосы открывает ту же панель, что и бургер, своим поповером. */
195
200
  protected readonly compactNavPopoverRef: Signal<RtPopoverDirective | undefined>;
196
- /** Сжатое состояние: шапка липкая и прилипла к верху. */
201
+ /** Сжатое состояние: шапка липкая, прилипла к верху и стоит в горизонтальном виде — у рейки его нет. */
197
202
  protected readonly compact: Signal<boolean>;
198
203
  /** Разделы в кругах сжатой полосы: первые с иконкой, число — по входу. */
199
204
  protected readonly compactSections: Signal<ReadonlyArray<IRtPageHeaderView.Section>>;
@@ -227,6 +232,7 @@ export declare class RtPageHeaderComponent {
227
232
  */
228
233
  protected readonly expandedSectionIds: WritableSignal<ReadonlySet<string>>;
229
234
  protected readonly EntryKind: typeof ERtPageHeaderEntry;
235
+ protected readonly isVertical: Signal<boolean>;
230
236
  readonly items: InputSignal<ReadonlyArray<IRtPageHeader.Item>>;
231
237
  readonly user: InputSignal<IRtPageHeader.User | null>;
232
238
  readonly userTitle: InputSignal<string>;
@@ -240,6 +246,12 @@ export declare class RtPageHeaderComponent {
240
246
  readonly stickyCompact: InputSignalWithTransform<boolean, BooleanInput>;
241
247
  /** Сколько разделов с иконкой показывать кругами в сжатой полосе; остальные — под «ещё». */
242
248
  readonly compactVisibleCount: InputSignalWithTransform<number, NumberInput>;
249
+ /** Вид шапки: разделы в ряд (`horizontal`) или рейкой по левому краю окна (`vertical`). */
250
+ readonly layout: InputSignal<IRtPageHeader.Layout>;
251
+ /** Кнопки подвала рейки: ассистент, уведомления. Нажатие приходит в `itemClick`. */
252
+ readonly railActions: InputSignal<ReadonlyArray<IRtPageHeader.Item>>;
253
+ /** Подвал рейки: вид с вкладками его убирает и ставит те же кнопки в ряд с вкладками. */
254
+ readonly railFoot: InputSignalWithTransform<boolean, BooleanInput>;
243
255
  /** Своё имя навигации важнее умолчания */
244
256
  readonly navAriaLabel: Signal<string>;
245
257
  readonly itemClick: OutputEmitterRef<string>;
@@ -292,9 +304,197 @@ export declare class RtPageHeaderComponent {
292
304
  "required": false;
293
305
  "isSignal": true;
294
306
  };
307
+ "layout": {
308
+ "alias": "layout";
309
+ "required": false;
310
+ "isSignal": true;
311
+ };
312
+ "railActions": {
313
+ "alias": "railActions";
314
+ "required": false;
315
+ "isSignal": true;
316
+ };
317
+ "railFoot": {
318
+ "alias": "railFoot";
319
+ "required": false;
320
+ "isSignal": true;
321
+ };
322
+ }, {
323
+ "itemClick": "itemClick";
324
+ "userClick": "userClick";
325
+ }, never, ["[rtRailLogo]", "[rtRailPage]", "[rtCompactLeft]", "[rtCompactCenter]", "[rtCompactRight]", "[rtHeaderBell]"], true, never>;
326
+ }
327
+ /**
328
+ * Кнопки вокруг страницы: ассистент, уведомления и профиль. Одна часть на три места: столбец в
329
+ * подвале рейки, строка шапки телефона и ряд вкладок. Состав задаёт приложение.
330
+ */
331
+ export declare class RtPageActionsComponent {
332
+ readonly items: InputSignal<ReadonlyArray<IRtPageHeader.Item>>;
333
+ readonly user: InputSignal<IRtPageHeader.User | null>;
334
+ readonly userMenu: InputSignal<TemplateRef<unknown> | null>;
335
+ /** Где стоят кнопки: в подвале рейки или в ряду вкладок. */
336
+ readonly placement: InputSignal<'rail' | 'bar'>;
337
+ readonly itemClick: OutputEmitterRef<string>;
338
+ readonly userClick: OutputEmitterRef<void>;
339
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtPageActionsComponent, never>;
340
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtPageActionsComponent, "rt-page-actions", never, {
341
+ "items": {
342
+ "alias": "items";
343
+ "required": false;
344
+ "isSignal": true;
345
+ };
346
+ "user": {
347
+ "alias": "user";
348
+ "required": false;
349
+ "isSignal": true;
350
+ };
351
+ "userMenu": {
352
+ "alias": "userMenu";
353
+ "required": false;
354
+ "isSignal": true;
355
+ };
356
+ "placement": {
357
+ "alias": "placement";
358
+ "required": false;
359
+ "isSignal": true;
360
+ };
295
361
  }, {
296
362
  "itemClick": "itemClick";
297
363
  "userClick": "userClick";
298
- }, never, ["[rtCompactLeft]", "[rtCompactCenter]", "[rtCompactRight]", "[rtHeaderBell]"], true, never>;
364
+ }, never, never, true, never>;
365
+ }
366
+ /** Аватар профиля: стоит в подвале рейки и в ряду с вкладками. Меню задаёт приложение. */
367
+ export declare class RtPageUserComponent {
368
+ protected readonly letter: Signal<string>;
369
+ protected readonly positions: Signal<readonly ConnectedPosition[] | null>;
370
+ readonly user: InputSignal<IRtPageHeader.User>;
371
+ readonly userMenu: InputSignal<TemplateRef<unknown> | null>;
372
+ /** Откуда открывается меню: из рейки вправо-вверх или вниз под аватаром. */
373
+ readonly placement: InputSignal<'rail' | 'bar'>;
374
+ readonly userClick: OutputEmitterRef<void>;
375
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtPageUserComponent, never>;
376
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtPageUserComponent, "rt-page-user", never, {
377
+ "user": {
378
+ "alias": "user";
379
+ "required": true;
380
+ "isSignal": true;
381
+ };
382
+ "userMenu": {
383
+ "alias": "userMenu";
384
+ "required": false;
385
+ "isSignal": true;
386
+ };
387
+ "placement": {
388
+ "alias": "placement";
389
+ "required": false;
390
+ "isSignal": true;
391
+ };
392
+ }, {
393
+ "userClick": "userClick";
394
+ }, never, never, true, never>;
395
+ }
396
+ /** Отбор страницы. Шаблон один, а встаёт он в ряд, под кнопку «Ещё отборы» или в шторку телефона. */
397
+ export declare class RtPageBarFilterDirective {
398
+ readonly templateRef: TemplateRef<unknown>;
399
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtPageBarFilterDirective, never>;
400
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtPageBarFilterDirective, "[rtPageBarFilter]", never, {}, {}, never, never, true, never>;
401
+ }
402
+ /** Поиск страницы: поле занимает свободное место ряда, а на телефоне встаёт в шторку над отборами. */
403
+ export declare class RtPageBarSearchDirective {
404
+ readonly templateRef: TemplateRef<unknown>;
405
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtPageBarSearchDirective, never>;
406
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtPageBarSearchDirective, "[rtPageBarSearch]", never, {}, {}, never, never, true, never>;
407
+ }
408
+ /**
409
+ * Ширины, по которым считается раскладка. Ширины отбора и кнопки «Ещё отборы» стоят и в стилях
410
+ * шапки; их равенство держит тест `rt-page-bar.logic.spec.ts`, разойтись молча им не дадут.
411
+ * Промежуток — шаг `--rt-space-3`, минимум поиска есть только здесь: в стилях поиск гибкий.
412
+ */
413
+ declare const RT_PAGE_BAR_SIZES: Readonly<{
414
+ gap: number;
415
+ filterOneRow: number;
416
+ filterTwoRows: number;
417
+ searchMin: number;
418
+ more: number;
419
+ }>;
420
+ declare namespace IRtPageBarFit {
421
+ type Mode = 'one' | 'two' | 'narrow';
422
+ interface Input {
423
+ /** Ширина самой шапки: на странице, суженной ассистентом, она меньше окна. */
424
+ readonly width: number;
425
+ readonly titleWidth: number;
426
+ readonly actionsWidth: number;
427
+ readonly filterCount: number;
428
+ readonly hasSearch: boolean;
429
+ }
430
+ interface Result {
431
+ readonly mode: Mode;
432
+ /** Сколько отборов стоит в ряду; остальные лежат под кнопкой «Ещё отборы». */
433
+ readonly rowFilters: number;
434
+ }
435
+ }
436
+ /** Ширина панели действий: кнопки по 32 с промежутком 8. */
437
+ declare function actionsWidthOf(count: number): number;
438
+ /**
439
+ * Сколько строк нужно шапке и сколько отборов в них встаёт. Третьей строки нет: что не встало во
440
+ * вторую, уходит под кнопку. Ширина без замера (скрытая шапка) оставляет одну строку.
441
+ */
442
+ declare function pageBarFit(input: IRtPageBarFit.Input): IRtPageBarFit.Result;
443
+ export declare namespace IRtPageBar {
444
+ /** Действие страницы: кнопка с иконкой в ряду, строка меню в узком виде. */
445
+ interface Action {
446
+ readonly id: string;
447
+ readonly label: string;
448
+ readonly icon: IRtIcon.Name;
449
+ readonly disabled?: boolean;
450
+ }
451
+ }
452
+ /**
453
+ * Компактная шапка страницы: одна строка 56 или две строки 104. Вид считается по ширине самой
454
+ * шапки, а не окна: страница, суженная ассистентом, уводит отборы так же, как телефон. Шапка
455
+ * отдельная часть: страница без неё остаётся со своим заголовком.
456
+ */
457
+ export declare class RtPageBarComponent {
458
+ #private;
459
+ protected readonly t: Signal<TRtKitLabelMap>;
460
+ protected readonly titleRef: Signal<ElementRef<HTMLElement> | undefined>;
461
+ protected readonly filters: Signal<ReadonlyArray<RtPageBarFilterDirective>>;
462
+ protected readonly search: Signal<RtPageBarSearchDirective | undefined>;
463
+ protected readonly mode: Signal<IRtPageBarFit.Mode>;
464
+ protected readonly isNarrow: Signal<boolean>;
465
+ protected readonly rowFilters: Signal<ReadonlyArray<RtPageBarFilterDirective>>;
466
+ protected readonly moreFilters: Signal<ReadonlyArray<RtPageBarFilterDirective>>;
467
+ /** Шторка отборов узкого вида: смена вида её закрывает, и при возврате в узкий она не открывается сама. */
468
+ protected readonly sheetOpen: WritableSignal<boolean>;
469
+ readonly pageTitle: InputSignal<string>;
470
+ readonly actions: InputSignal<ReadonlyArray<IRtPageBar.Action>>;
471
+ /** Отборы применены: на кнопке отборов узкого вида горит точка. */
472
+ readonly filtersActive: InputSignalWithTransform<boolean, BooleanInput>;
473
+ readonly actionClick: OutputEmitterRef<string>;
474
+ /** Нажата «Применить» в шторке отборов узкого вида. */
475
+ readonly filtersApply: OutputEmitterRef<void>;
476
+ constructor();
477
+ protected onApply(): void;
478
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtPageBarComponent, never>;
479
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtPageBarComponent, "rt-page-bar", never, {
480
+ "pageTitle": {
481
+ "alias": "pageTitle";
482
+ "required": true;
483
+ "isSignal": true;
484
+ };
485
+ "actions": {
486
+ "alias": "actions";
487
+ "required": false;
488
+ "isSignal": true;
489
+ };
490
+ "filtersActive": {
491
+ "alias": "filtersActive";
492
+ "required": false;
493
+ "isSignal": true;
494
+ };
495
+ }, {
496
+ "actionClick": "actionClick";
497
+ "filtersApply": "filtersApply";
498
+ }, ["filters", "search"], never, true, never>;
299
499
  }
300
500
  export {};
@@ -295,6 +295,26 @@ export declare namespace IRtChat {
295
295
  createdAt: string;
296
296
  /** Готовая подпись вместо времени `createdAt`. Подписи дней считаются от `createdAt` и так. */
297
297
  dateLabel?: string;
298
+ /**
299
+ * Подпись перевода перед временем: «Переведено», «Без перевода», «Оригинал». Текст даёт
300
+ * приложение, кит ставит его в строку времени через точку.
301
+ */
302
+ translationLabel?: string | null;
303
+ /**
304
+ * Реплика показана в оригинале, и перевод можно вернуть: под текстом встаёт кнопка «Показать
305
+ * перевод». Нажатие уходит событием `showTranslation`, текст реплики меняет приложение.
306
+ */
307
+ canShowTranslation?: boolean;
308
+ /**
309
+ * Перевод реплики загружается: перед кнопкой «Показать перевод» крутится спиннер, кнопка
310
+ * приглушена и не нажимается. Без `canShowTranslation` ничего не меняет.
311
+ */
312
+ translationLoading?: boolean;
313
+ /**
314
+ * Перевод не пришёл: текст ошибки от приложения встаёт строкой над кнопкой «Показать перевод»,
315
+ * кнопка повторяет запрос. Без `canShowTranslation` ничего не меняет.
316
+ */
317
+ translationError?: string | null;
298
318
  /**
299
319
  * Значок на месте значка статуса, размером как он. Статусы «не ушло» и «не доставлено»
300
320
  * сильнее: их значок предупреждает об ошибке.
@@ -530,6 +550,8 @@ export declare class RtChatComponent {
530
550
  readonly deleteMessage: OutputEmitterRef<IRtChat.Message>;
531
551
  /** Повторная отправка своего сообщения со статусом `failed`. */
532
552
  readonly retryMessage: OutputEmitterRef<IRtChat.Message>;
553
+ /** Нажата кнопка «Показать перевод» под репликой: текст реплики меняет приложение. */
554
+ readonly showTranslation: OutputEmitterRef<IRtChat.Message>;
533
555
  /**
534
556
  * Есть ли у реплики действия потребителя — гейт кнопки «…» у неё.
535
557
  *
@@ -545,6 +567,8 @@ export declare class RtChatComponent {
545
567
  setDraft(text: string): void;
546
568
  /** Текст поля ответа в виде, который сейчас на экране. Файлы сюда не входят, поля нет — пустая строка. */
547
569
  draftText(): string;
570
+ /** Файлы, выбранные к черновику. Вложений нет или нет поля — пустой список. */
571
+ draftFiles(): readonly File[];
548
572
  protected onSubmit(): void;
549
573
  protected onComposerKeydown(event: KeyboardEvent): void;
550
574
  /** Релей submit'а от `rt-message-composer` (rich-режим) наружу как `send`. */
@@ -688,6 +712,7 @@ export declare class RtChatComponent {
688
712
  "expandedChange": "expandedChange";
689
713
  "deleteMessage": "deleteMessage";
690
714
  "retryMessage": "retryMessage";
715
+ "showTranslation": "showTranslation";
691
716
  }, ["messageActions", "messageButtons"], ["[rtChatHeaderActions]", "[rtChatComposerBar]", "[rtChatComposerTools]", "[rtChatFooter]"], true, never>;
692
717
  }
693
718
  /**