@rt-tools/ui-kit-v2 0.4.0 → 0.6.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 (108) hide show
  1. package/README.md +71 -0
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +395 -188
  3. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/rt-tools-ui-kit-v2-0.6.0.tgz +0 -0
  6. package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
  7. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
  8. package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
  9. package/src/lib/components/aside/rt-aside.component.scss +107 -105
  10. package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
  11. package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
  12. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
  13. package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
  14. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
  15. package/src/lib/components/button/rt-button.directive.scss +319 -280
  16. package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
  17. package/src/lib/components/card/rt-card.component.scss +53 -45
  18. package/src/lib/components/chat/rt-chat.component.scss +312 -306
  19. package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
  20. package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
  21. package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
  22. package/src/lib/components/container/CONTEXT.md +22 -0
  23. package/src/lib/components/container/rt-container.component.scss +91 -87
  24. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  25. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  26. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  27. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  28. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  29. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  30. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  31. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  32. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  33. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  34. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  35. package/src/lib/components/field/rt-field.component.scss +63 -61
  36. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  37. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  38. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  39. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  40. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  41. package/src/lib/components/header/rt-header.component.scss +61 -55
  42. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  43. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  44. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  45. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  46. package/src/lib/components/input/rt-input.component.scss +102 -98
  47. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  48. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  49. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  50. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  51. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  52. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  53. package/src/lib/components/message/rt-message.component.scss +53 -49
  54. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  55. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  56. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  57. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  58. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  59. package/src/lib/components/note/rt-note.component.scss +15 -11
  60. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  61. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  62. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  63. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  64. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  65. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  66. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  67. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  68. package/src/lib/components/select/rt-select.component.scss +146 -138
  69. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  70. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  71. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  72. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  73. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  74. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  75. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
  76. package/src/lib/components/table/rt-table.component.scss +260 -252
  77. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  78. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  79. package/src/lib/components/table/sort-header/CONTEXT.md +40 -0
  80. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  81. package/src/lib/components/tabs/CONTEXT.md +5 -0
  82. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  83. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  84. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  85. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  86. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  87. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  88. package/src/lib/components/toast/CONTEXT.md +8 -0
  89. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  90. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  91. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  92. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  93. package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
  94. package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
  95. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  96. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  97. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  98. package/src/styles/_index.scss +4 -0
  99. package/src/styles/_layers.scss +22 -0
  100. package/src/styles/_login.scss +87 -85
  101. package/src/styles/_mixins.scss +1 -1
  102. package/src/styles/_primitives.scss +126 -67
  103. package/src/styles/_scrollbar.scss +21 -19
  104. package/src/styles/_semantic.scss +140 -56
  105. package/src/styles/_theme-dark.scss +60 -27
  106. package/styles/tokens.css +628 -408
  107. package/types/rt-tools-ui-kit-v2.d.ts +9 -16
  108. package/rt-tools-ui-kit-v2-0.4.0.tgz +0 -0
@@ -1,156 +1,164 @@
1
- /* Мобильная панель навигации (гамбургер). Рендерится в CDK Overlay, поэтому
2
- отдельный корневой блок. Раздел — аккордеон, внутри него те же группы, что и в
3
- панели на широком экране, только без колонок: они сюда не помещаются. */
4
- .rt-page-header-mobile {
5
- display: flex;
6
- min-width: 240px;
7
- max-width: 320px;
8
-
9
- /* Панель ужимается до свободного места под гамбургером, а список прокручивается
10
- внутри неё: на низком экране раскрытый раздел уводит половину пунктов под
11
- нижний край, а страница за оверлеем панель не двигает. */
12
- min-height: 0;
13
- max-height: 100%;
14
- box-sizing: border-box;
15
- flex-direction: column;
16
- padding: var(--rt-space-2);
17
- border: var(--rt-border-width-thin) solid var(--rt-nav-panel-color-border);
18
- border-radius: var(--rt-radius-md);
19
- background-color: var(--rt-nav-panel-color-bg);
20
- box-shadow: var(--rt-nav-panel-shadow);
21
- gap: var(--rt-space-2xs);
22
- overflow-y: auto;
23
-
24
- &__link,
25
- &__section {
26
- position: relative;
1
+ @layer rt-kit.components {
2
+ /* Мобильная панель навигации (гамбургер). Рендерится в CDK Overlay, поэтому
3
+ отдельный корневой блок. Раздел — аккордеон, внутри него те же группы, что и в
4
+ панели на широком экране, только без колонок: они сюда не помещаются. */
5
+ .rt-page-header-mobile {
6
+ --rt-nav-panel-radius: var(--rt-radius-md);
7
+ --rt-nav-panel-border-width: var(--rt-border-width-thin);
8
+ --rt-nav-panel-item-radius: var(--rt-radius-md);
9
+ --rt-nav-panel-item-transition-duration: var(--rt-duration-fast);
10
+ --rt-nav-marker-radius: var(--rt-radius-full);
11
+
27
12
  display: flex;
28
- width: 100%;
29
- align-items: center;
30
- padding: var(--rt-nav-item-padding);
31
- border: 0;
32
- border-radius: var(--rt-radius-md);
33
- background-color: transparent;
34
- color: var(--rt-nav-item-color);
35
- cursor: pointer;
36
- font-size: var(--rt-nav-item-font-size);
37
- font-weight: var(--rt-nav-item-font-weight);
38
- gap: var(--rt-nav-item-content-gap);
39
- line-height: var(--rt-leading-tight);
40
- text-align: left;
41
- text-decoration: none;
42
- transition:
43
- background-color var(--rt-duration-fast) linear,
44
- color var(--rt-duration-fast) linear;
45
- white-space: nowrap;
46
-
47
- &:hover {
48
- background-color: var(--rt-nav-panel-item-color-bg-hover);
13
+ min-width: 240px;
14
+ max-width: 320px;
15
+
16
+ /* Панель ужимается до свободного места под гамбургером, а список прокручивается
17
+ внутри неё: на низком экране раскрытый раздел уводит половину пунктов под
18
+ нижний край, а страница за оверлеем панель не двигает. */
19
+ min-height: 0;
20
+ max-height: 100%;
21
+ box-sizing: border-box;
22
+ flex-direction: column;
23
+ padding: var(--rt-space-2);
24
+ border: var(--rt-nav-panel-border-width) solid var(--rt-nav-panel-color-border);
25
+ border-radius: var(--rt-nav-panel-radius);
26
+ background-color: var(--rt-nav-panel-color-bg);
27
+ box-shadow: var(--rt-nav-panel-shadow);
28
+ gap: var(--rt-space-2xs);
29
+ overflow-y: auto;
30
+
31
+ &__link,
32
+ &__section {
33
+ position: relative;
34
+ display: flex;
35
+ width: 100%;
36
+ align-items: center;
37
+ padding: var(--rt-nav-item-padding);
38
+ border: 0;
39
+ border-radius: var(--rt-nav-panel-item-radius);
40
+ background-color: transparent;
41
+ color: var(--rt-nav-item-color);
42
+ cursor: pointer;
43
+ font-size: var(--rt-nav-item-font-size);
44
+ font-weight: var(--rt-nav-item-font-weight);
45
+ gap: var(--rt-nav-item-content-gap);
46
+ line-height: var(--rt-leading-tight);
47
+ text-align: left;
48
+ text-decoration: none;
49
+ transition:
50
+ background-color var(--rt-nav-panel-item-transition-duration) linear,
51
+ color var(--rt-nav-panel-item-transition-duration) linear;
52
+ white-space: nowrap;
53
+
54
+ &:hover {
55
+ background-color: var(--rt-nav-panel-item-color-bg-hover);
56
+ }
57
+
58
+ &:focus {
59
+ outline: none;
60
+ }
61
+
62
+ &:focus-visible {
63
+ outline: 2px dashed var(--rt-nav-color-focus);
64
+ outline-offset: 2px;
65
+ }
49
66
  }
50
67
 
51
- &:focus {
52
- outline: none;
68
+ /* Пункт второго уровня набран легче раздела — как в панели на широком
69
+ экране; сам раздел остаётся полужирным. */
70
+ &__link--child {
71
+ color: var(--rt-nav-panel-item-color);
72
+ font-weight: var(--rt-nav-panel-item-font-weight);
53
73
  }
54
74
 
55
- &:focus-visible {
56
- outline: 2px dashed var(--rt-nav-color-focus);
57
- outline-offset: 2px;
75
+ &__link--is-active {
76
+ background-color: var(--rt-nav-panel-item-color-bg-active);
77
+ color: var(--rt-nav-panel-item-color-active);
58
78
  }
59
- }
60
79
 
61
- /* Пункт второго уровня набран легче раздела — как в панели на широком
62
- экране; сам раздел остаётся полужирным. */
63
- &__link--child {
64
- color: var(--rt-nav-panel-item-color);
65
- font-weight: var(--rt-nav-panel-item-font-weight);
66
- }
67
-
68
- &__link--is-active {
69
- background-color: var(--rt-nav-panel-item-color-bg-active);
70
- color: var(--rt-nav-panel-item-color-active);
71
- }
72
-
73
- &__link--disabled,
74
- &__link:disabled,
75
- &__link[aria-disabled='true'] {
76
- background-color: transparent;
77
- color: var(--rt-nav-color-disabled);
78
- cursor: not-allowed;
79
-
80
- &:hover {
80
+ &__link--disabled,
81
+ &__link:disabled,
82
+ &__link[aria-disabled='true'] {
81
83
  background-color: transparent;
84
+ color: var(--rt-nav-color-disabled);
85
+ cursor: not-allowed;
86
+
87
+ &:hover {
88
+ background-color: transparent;
89
+ }
82
90
  }
83
- }
84
91
 
85
- &__disabled-slot {
86
- display: flex;
87
- flex-direction: column;
88
- align-items: stretch;
89
- }
92
+ &__disabled-slot {
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: stretch;
96
+ }
90
97
 
91
- &__section--is-active {
92
- background-color: var(--rt-color-bg-surface-subtle);
93
- }
98
+ &__section--is-active {
99
+ background-color: var(--rt-color-bg-surface-subtle);
100
+ }
94
101
 
95
- &__caret {
96
- display: inline-flex;
97
- flex-shrink: 0;
98
- margin-left: auto;
99
- color: var(--rt-nav-item-color-caret);
100
- transition: transform var(--rt-duration-fast) linear;
101
- }
102
+ &__caret {
103
+ display: inline-flex;
104
+ flex-shrink: 0;
105
+ margin-left: auto;
106
+ color: var(--rt-nav-item-color-caret);
107
+ transition: transform var(--rt-nav-panel-item-transition-duration) linear;
108
+ }
102
109
 
103
- &__section--is-expanded &__caret {
104
- transform: rotate(180deg);
105
- }
110
+ &__section--is-expanded &__caret {
111
+ transform: rotate(180deg);
112
+ }
106
113
 
107
- /* Точка идёт следом за подписью, а не поверх неё: указатель раскрытия здесь
108
- отжат к правому краю, и место у текста свободно. */
109
- &__marker {
110
- width: var(--rt-nav-marker-size);
111
- height: var(--rt-nav-marker-size);
112
- flex-shrink: 0;
113
- border-radius: var(--rt-radius-full);
114
- background-color: var(--rt-nav-marker-color);
115
- }
114
+ /* Точка идёт следом за подписью, а не поверх неё: указатель раскрытия здесь
115
+ отжат к правому краю, и место у текста свободно. */
116
+ &__marker {
117
+ width: var(--rt-nav-marker-size);
118
+ height: var(--rt-nav-marker-size);
119
+ flex-shrink: 0;
120
+ border-radius: var(--rt-nav-marker-radius);
121
+ background-color: var(--rt-nav-marker-color);
122
+ }
116
123
 
117
- &__children {
118
- display: flex;
119
- flex-direction: column;
120
- padding-left: var(--rt-space-4);
121
- gap: var(--rt-nav-panel-group-gap);
122
- }
124
+ &__children {
125
+ display: flex;
126
+ flex-direction: column;
127
+ padding-left: var(--rt-space-4);
128
+ gap: var(--rt-nav-panel-group-gap);
129
+ }
123
130
 
124
- &__group {
125
- display: flex;
126
- flex-direction: column;
127
- gap: var(--rt-space-2xs);
128
- }
131
+ &__group {
132
+ display: flex;
133
+ flex-direction: column;
134
+ gap: var(--rt-space-2xs);
135
+ }
129
136
 
130
- &__group-title {
131
- display: flex;
132
- min-height: var(--rt-nav-panel-item-height);
133
- align-items: center;
134
- padding: var(--rt-nav-panel-item-padding);
135
- color: var(--rt-nav-panel-group-color);
136
- cursor: default;
137
- font-size: var(--rt-nav-panel-group-font-size);
138
- font-weight: var(--rt-nav-panel-group-font-weight);
139
- gap: var(--rt-nav-panel-group-content-gap);
140
- line-height: var(--rt-leading-none);
141
- }
137
+ &__group-title {
138
+ display: flex;
139
+ min-height: var(--rt-nav-panel-item-height);
140
+ align-items: center;
141
+ padding: var(--rt-nav-panel-item-padding);
142
+ color: var(--rt-nav-panel-group-color);
143
+ cursor: default;
144
+ font-size: var(--rt-nav-panel-group-font-size);
145
+ font-weight: var(--rt-nav-panel-group-font-weight);
146
+ gap: var(--rt-nav-panel-group-content-gap);
147
+ line-height: var(--rt-leading-none);
148
+ }
142
149
 
143
- &__group-label {
144
- overflow: hidden;
145
- text-overflow: ellipsis;
146
- white-space: nowrap;
147
- }
150
+ &__group-label {
151
+ overflow: hidden;
152
+ text-overflow: ellipsis;
153
+ white-space: nowrap;
154
+ }
148
155
 
149
- &__group-icon {
150
- flex-shrink: 0;
151
- }
156
+ &__group-icon {
157
+ flex-shrink: 0;
158
+ }
152
159
 
153
- &__icon {
154
- flex-shrink: 0;
160
+ &__icon {
161
+ flex-shrink: 0;
162
+ }
155
163
  }
156
164
  }
@@ -1,147 +1,154 @@
1
- /* Панель второго уровня. Рендерится в CDK Overlay (вне DOM хедера), поэтому
2
- отдельный корневой блок, а не элемент rt-page-header.
3
-
4
- Ширина считается числом колонок, а не содержимым: колонки разной длины иначе
5
- меняли бы габарит панели при каждом переходе между разделами. Число колонок
6
- приходит инлайн-переменной `--rt-nav-panel-columns` из шаблона. */
7
- .rt-page-header-submenu {
8
- --rt-nav-panel-columns-width: calc(var(--rt-nav-panel-columns) * var(--rt-nav-panel-column-width));
9
- --rt-nav-panel-gaps-width: calc((var(--rt-nav-panel-columns) - 1) * var(--rt-nav-panel-column-gap));
10
- --rt-nav-panel-padding-width: calc(var(--rt-nav-panel-padding) + var(--rt-nav-panel-padding));
11
-
12
- display: flex;
13
- width: calc(var(--rt-nav-panel-columns-width) + var(--rt-nav-panel-gaps-width) + var(--rt-nav-panel-padding-width));
14
- box-sizing: border-box;
15
- align-items: flex-start;
16
- padding: var(--rt-nav-panel-padding-y) var(--rt-nav-panel-padding);
17
- border: var(--rt-border-width-thin) solid var(--rt-nav-panel-color-border);
18
- border-radius: var(--rt-radius-md);
19
- background-color: var(--rt-nav-panel-color-bg);
20
- box-shadow: var(--rt-nav-panel-shadow);
21
- color: var(--rt-nav-panel-item-color);
22
- font-size: var(--rt-nav-panel-item-font-size);
23
- font-weight: var(--rt-nav-panel-item-font-weight);
24
- gap: var(--rt-nav-panel-column-gap);
25
-
26
- &__column {
27
- display: flex;
28
- min-width: 0;
29
- flex: 0 0 var(--rt-nav-panel-column-width);
30
- flex-direction: column;
31
- gap: var(--rt-nav-panel-group-gap);
32
- }
1
+ @layer rt-kit.components {
2
+ /* Панель второго уровня. Рендерится в CDK Overlay (вне DOM хедера), поэтому
3
+ отдельный корневой блок, а не элемент rt-page-header.
4
+
5
+ Ширина считается числом колонок, а не содержимым: колонки разной длины иначе
6
+ меняли бы габарит панели при каждом переходе между разделами. Число колонок
7
+ приходит инлайн-переменной `--rt-nav-panel-columns` из шаблона. */
8
+ .rt-page-header-submenu {
9
+ --rt-nav-panel-columns-width: calc(var(--rt-nav-panel-columns) * var(--rt-nav-panel-column-width));
10
+ --rt-nav-panel-gaps-width: calc((var(--rt-nav-panel-columns) - 1) * var(--rt-nav-panel-column-gap));
11
+ --rt-nav-panel-padding-width: calc(var(--rt-nav-panel-padding) + var(--rt-nav-panel-padding));
12
+ --rt-nav-panel-radius: var(--rt-radius-md);
13
+ --rt-nav-panel-border-width: var(--rt-border-width-thin);
14
+ --rt-nav-panel-item-radius: var(--rt-radius-md);
15
+ --rt-nav-panel-item-transition-duration: var(--rt-duration-fast);
16
+ --rt-nav-marker-radius: var(--rt-radius-full);
33
17
 
34
- /* Пункты обжимают подпись, поэтому колонка выравнивает их по левому краю:
35
- растянутый на всю ширину пункт давал бы подсветку во всю колонку. */
36
- &__group {
37
18
  display: flex;
38
- flex-direction: column;
39
- align-items: flex-start;
40
- gap: var(--rt-nav-panel-item-gap);
41
- }
42
-
43
- &__group-title {
44
- display: inline-flex;
45
- max-width: 100%;
46
- min-height: var(--rt-nav-panel-item-height);
47
- align-items: center;
48
- padding: var(--rt-nav-panel-item-padding);
49
- color: var(--rt-nav-panel-group-color);
50
- cursor: default;
51
- font-size: var(--rt-nav-panel-group-font-size);
52
- font-weight: var(--rt-nav-panel-group-font-weight);
53
- gap: var(--rt-nav-panel-group-content-gap);
54
- line-height: var(--rt-leading-none);
55
- }
56
-
57
- &__group-label {
58
- overflow: hidden;
59
- text-overflow: ellipsis;
60
- white-space: nowrap;
61
- }
62
-
63
- &__group-icon {
64
- flex-shrink: 0;
65
- }
66
-
67
- &__disabled-slot {
68
- display: inline-flex;
69
- max-width: 100%;
70
- flex-direction: column;
19
+ width: calc(var(--rt-nav-panel-columns-width) + var(--rt-nav-panel-gaps-width) + var(--rt-nav-panel-padding-width));
20
+ box-sizing: border-box;
71
21
  align-items: flex-start;
72
- }
73
-
74
- &__link {
75
- display: inline-flex;
76
- max-width: 100%;
77
- min-height: var(--rt-nav-panel-item-height);
78
- align-items: center;
79
- padding: var(--rt-nav-panel-item-padding);
80
- border: 0;
81
- border-radius: var(--rt-radius-md);
82
- background-color: transparent;
22
+ padding: var(--rt-nav-panel-padding-y) var(--rt-nav-panel-padding);
23
+ border: var(--rt-nav-panel-border-width) solid var(--rt-nav-panel-color-border);
24
+ border-radius: var(--rt-nav-panel-radius);
25
+ background-color: var(--rt-nav-panel-color-bg);
26
+ box-shadow: var(--rt-nav-panel-shadow);
83
27
  color: var(--rt-nav-panel-item-color);
84
- cursor: pointer;
85
28
  font-size: var(--rt-nav-panel-item-font-size);
86
29
  font-weight: var(--rt-nav-panel-item-font-weight);
87
- gap: var(--rt-nav-panel-item-content-gap);
88
- line-height: var(--rt-leading-none);
89
- text-align: left;
90
- text-decoration: none;
91
- transition:
92
- background-color var(--rt-duration-fast) linear,
93
- color var(--rt-duration-fast) linear;
94
- white-space: nowrap;
95
-
96
- &--is-active {
97
- background-color: var(--rt-nav-panel-item-color-bg-active);
98
- color: var(--rt-nav-panel-item-color-active);
30
+ gap: var(--rt-nav-panel-column-gap);
31
+
32
+ &__column {
33
+ display: flex;
34
+ min-width: 0;
35
+ flex: 0 0 var(--rt-nav-panel-column-width);
36
+ flex-direction: column;
37
+ gap: var(--rt-nav-panel-group-gap);
38
+ }
39
+
40
+ /* Пункты обжимают подпись, поэтому колонка выравнивает их по левому краю:
41
+ растянутый на всю ширину пункт давал бы подсветку во всю колонку. */
42
+ &__group {
43
+ display: flex;
44
+ flex-direction: column;
45
+ align-items: flex-start;
46
+ gap: var(--rt-nav-panel-item-gap);
99
47
  }
100
48
 
101
- &:not(&--is-active):hover,
102
- &:not(&--is-active):active {
103
- background-color: var(--rt-nav-panel-item-color-bg-hover);
49
+ &__group-title {
50
+ display: inline-flex;
51
+ max-width: 100%;
52
+ min-height: var(--rt-nav-panel-item-height);
53
+ align-items: center;
54
+ padding: var(--rt-nav-panel-item-padding);
55
+ color: var(--rt-nav-panel-group-color);
56
+ cursor: default;
57
+ font-size: var(--rt-nav-panel-group-font-size);
58
+ font-weight: var(--rt-nav-panel-group-font-weight);
59
+ gap: var(--rt-nav-panel-group-content-gap);
60
+ line-height: var(--rt-leading-none);
104
61
  }
105
62
 
106
- &:focus {
107
- outline: none;
63
+ &__group-label {
64
+ overflow: hidden;
65
+ text-overflow: ellipsis;
66
+ white-space: nowrap;
108
67
  }
109
68
 
110
- &:focus-visible {
111
- outline: 2px dashed var(--rt-nav-color-focus);
112
- outline-offset: 2px;
69
+ &__group-icon {
70
+ flex-shrink: 0;
113
71
  }
114
72
 
115
- &--disabled,
116
- &:disabled,
117
- &[aria-disabled='true'] {
73
+ &__disabled-slot {
74
+ display: inline-flex;
75
+ max-width: 100%;
76
+ flex-direction: column;
77
+ align-items: flex-start;
78
+ }
79
+
80
+ &__link {
81
+ display: inline-flex;
82
+ max-width: 100%;
83
+ min-height: var(--rt-nav-panel-item-height);
84
+ align-items: center;
85
+ padding: var(--rt-nav-panel-item-padding);
86
+ border: 0;
87
+ border-radius: var(--rt-nav-panel-item-radius);
118
88
  background-color: transparent;
119
- color: var(--rt-nav-color-disabled);
120
- cursor: not-allowed;
89
+ color: var(--rt-nav-panel-item-color);
90
+ cursor: pointer;
91
+ font-size: var(--rt-nav-panel-item-font-size);
92
+ font-weight: var(--rt-nav-panel-item-font-weight);
93
+ gap: var(--rt-nav-panel-item-content-gap);
94
+ line-height: var(--rt-leading-none);
95
+ text-align: left;
96
+ text-decoration: none;
97
+ transition:
98
+ background-color var(--rt-nav-panel-item-transition-duration) linear,
99
+ color var(--rt-nav-panel-item-transition-duration) linear;
100
+ white-space: nowrap;
101
+
102
+ &--is-active {
103
+ background-color: var(--rt-nav-panel-item-color-bg-active);
104
+ color: var(--rt-nav-panel-item-color-active);
105
+ }
106
+
107
+ &:not(&--is-active):hover,
108
+ &:not(&--is-active):active {
109
+ background-color: var(--rt-nav-panel-item-color-bg-hover);
110
+ }
111
+
112
+ &:focus {
113
+ outline: none;
114
+ }
115
+
116
+ &:focus-visible {
117
+ outline: 2px dashed var(--rt-nav-color-focus);
118
+ outline-offset: 2px;
119
+ }
121
120
 
122
- &:hover {
121
+ &--disabled,
122
+ &:disabled,
123
+ &[aria-disabled='true'] {
123
124
  background-color: transparent;
125
+ color: var(--rt-nav-color-disabled);
126
+ cursor: not-allowed;
127
+
128
+ &:hover {
129
+ background-color: transparent;
130
+ }
124
131
  }
125
132
  }
126
- }
127
133
 
128
- &__label {
129
- overflow: hidden;
130
- text-overflow: ellipsis;
131
- }
134
+ &__label {
135
+ overflow: hidden;
136
+ text-overflow: ellipsis;
137
+ }
132
138
 
133
- /* Пункт панели обжимает подпись и стоит на своей строке, поэтому точка идёт
134
- следом за текстом: соседей она не сдвигает, а у правого края колонки
135
- оторвалась бы от подписи, к которой относится. */
136
- &__marker {
137
- width: var(--rt-nav-marker-size);
138
- height: var(--rt-nav-marker-size);
139
- flex-shrink: 0;
140
- border-radius: var(--rt-radius-full);
141
- background-color: var(--rt-nav-marker-color);
142
- }
139
+ /* Пункт панели обжимает подпись и стоит на своей строке, поэтому точка идёт
140
+ следом за текстом: соседей она не сдвигает, а у правого края колонки
141
+ оторвалась бы от подписи, к которой относится. */
142
+ &__marker {
143
+ width: var(--rt-nav-marker-size);
144
+ height: var(--rt-nav-marker-size);
145
+ flex-shrink: 0;
146
+ border-radius: var(--rt-nav-marker-radius);
147
+ background-color: var(--rt-nav-marker-color);
148
+ }
143
149
 
144
- &__icon {
145
- flex-shrink: 0;
150
+ &__icon {
151
+ flex-shrink: 0;
152
+ }
146
153
  }
147
154
  }