@rt-tools/ui-kit-v2 0.5.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 (103) hide show
  1. package/README.md +71 -0
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +166 -166
  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/rt-container.component.scss +91 -87
  23. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  24. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  25. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  26. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  27. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  28. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  29. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  30. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  31. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  32. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  33. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  34. package/src/lib/components/field/rt-field.component.scss +63 -61
  35. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  36. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  37. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  38. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  39. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  40. package/src/lib/components/header/rt-header.component.scss +61 -55
  41. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  42. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  43. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  44. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  45. package/src/lib/components/input/rt-input.component.scss +102 -98
  46. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  47. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  48. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  49. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  50. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  51. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  52. package/src/lib/components/message/rt-message.component.scss +53 -49
  53. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  54. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  55. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  56. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  57. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  58. package/src/lib/components/note/rt-note.component.scss +15 -11
  59. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  60. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  61. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  62. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  63. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  64. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  65. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  66. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  67. package/src/lib/components/select/rt-select.component.scss +146 -138
  68. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  69. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  70. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  71. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  72. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  73. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  74. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
  75. package/src/lib/components/table/rt-table.component.scss +260 -252
  76. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  77. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  78. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  79. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  80. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  81. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  82. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  83. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  84. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  85. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  86. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  87. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  88. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  89. package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
  90. package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
  91. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  92. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  93. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  94. package/src/styles/_index.scss +4 -0
  95. package/src/styles/_layers.scss +22 -0
  96. package/src/styles/_login.scss +87 -85
  97. package/src/styles/_mixins.scss +1 -1
  98. package/src/styles/_primitives.scss +126 -67
  99. package/src/styles/_scrollbar.scss +21 -19
  100. package/src/styles/_semantic.scss +140 -56
  101. package/src/styles/_theme-dark.scss +60 -27
  102. package/styles/tokens.css +628 -408
  103. package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
@@ -1,8 +1,10 @@
1
- /* rt-file-list — ViewEncapsulation.None, плоский `.rt-file-list`.
2
- Host-класс ставится через @Component host:{class}. */
3
- .rt-file-list {
4
- display: flex;
5
- width: 100%;
6
- flex-direction: column;
7
- gap: var(--rt-space-sm);
1
+ @layer rt-kit.components {
2
+ /* rt-file-list — ViewEncapsulation.None, плоский `.rt-file-list`.
3
+ Host-класс ставится через @Component host:{class}. */
4
+ .rt-file-list {
5
+ display: flex;
6
+ width: 100%;
7
+ flex-direction: column;
8
+ gap: var(--rt-space-sm);
9
+ }
8
10
  }
@@ -1,20 +1,22 @@
1
- .rt-filter-control {
2
- display: inline-flex;
1
+ @layer rt-kit.components {
2
+ .rt-filter-control {
3
+ display: inline-flex;
3
4
 
4
- // узкий экран: контрол — компактный select с капом --rt-input-max-width
5
- // (как строка поиска). В ряду тулбара (768–1080px) ширина по контенту.
6
- @media (width <= 1080px) {
7
- display: block;
5
+ // узкий экран: контрол — компактный select с капом --rt-input-max-width
6
+ // (как строка поиска). В ряду тулбара (768–1080px) ширина по контенту.
7
+ @media (width <= 1080px) {
8
+ display: block;
8
9
 
9
- .rt-select {
10
- inline-size: 100%;
11
- max-inline-size: var(--rt-input-max-width);
10
+ .rt-select {
11
+ inline-size: 100%;
12
+ max-inline-size: var(--rt-input-max-width);
13
+ }
12
14
  }
13
- }
14
15
 
15
- // стекнутый тулбар (≤768px): host занимает всю ширину столбца, select
16
- // вытягивается ровно как строка поиска (width:100% до --rt-input-max-width).
17
- @media (width <= 768px) {
18
- inline-size: 100%;
16
+ // стекнутый тулбар (≤768px): host занимает всю ширину столбца, select
17
+ // вытягивается ровно как строка поиска (width:100% до --rt-input-max-width).
18
+ @media (width <= 768px) {
19
+ inline-size: 100%;
20
+ }
19
21
  }
20
22
  }
@@ -1,67 +1,73 @@
1
- .rt-header {
2
- display: block;
3
- height: 45px;
4
- padding: 0 var(--rt-space-5);
5
- background: var(--rt-color-bg-surface);
6
- border-bottom-left-radius: var(--rt-radius-lg);
7
- border-bottom-right-radius: var(--rt-radius-lg);
1
+ @layer rt-kit.components {
2
+ .rt-header {
3
+ --rt-header-radius: var(--rt-radius-lg);
4
+ --rt-header-shadow: var(--rt-shadow-card-soft);
5
+ --rt-header-back-transition-duration: var(--rt-duration-base);
8
6
 
9
- // Мягкая тень (тот же токен, что у карточек) отделяет хедер от контента —
10
- // в тёмной теме фон хедера и страницы почти совпадают и сливались.
11
- box-shadow: var(--rt-shadow-card-soft);
12
- color: var(--rt-color-text-primary);
7
+ display: block;
8
+ height: 45px;
9
+ padding: 0 var(--rt-space-5);
10
+ background: var(--rt-color-bg-surface);
11
+ border-bottom-left-radius: var(--rt-header-radius);
12
+ border-bottom-right-radius: var(--rt-header-radius);
13
13
 
14
- &__content {
15
- display: flex;
16
- width: 100%;
17
- max-width: var(--rt-header-content-max-width, 100%);
18
- height: 100%;
19
- align-items: center;
20
- margin: 0 auto;
21
- gap: 0;
22
- }
14
+ // Мягкая тень (тот же токен, что у карточек) отделяет хедер от контента —
15
+ // в тёмной теме фон хедера и страницы почти совпадают и сливались.
16
+ box-shadow: var(--rt-header-shadow);
17
+ color: var(--rt-color-text-primary);
18
+
19
+ &__content {
20
+ display: flex;
21
+ width: 100%;
22
+ max-width: var(--rt-header-content-max-width, 100%);
23
+ height: 100%;
24
+ align-items: center;
25
+ margin: 0 auto;
26
+ gap: 0;
27
+ }
23
28
 
24
- &__back {
25
- display: inline-flex;
26
- overflow: hidden;
29
+ &__back {
30
+ display: inline-flex;
31
+ overflow: hidden;
27
32
 
28
- /* Hidden state по умолчанию — slot полностью схлопнут (нулевая ширина),
29
- Контент скрыт через opacity + сдвиг влево; pointer-events:none снимает hit-target. */
30
- width: 0;
31
- height: 45px;
32
- align-items: center;
33
- justify-content: flex-start;
34
- opacity: 0;
35
- pointer-events: none;
36
- transform: translateX(-8px);
37
- transition:
38
- width var(--rt-duration-base) cubic-bezier(0.34, 1.56, 0.64, 1),
39
- opacity var(--rt-duration-base) ease-out,
40
- transform var(--rt-duration-base) cubic-bezier(0.34, 1.56, 0.64, 1);
33
+ /* Hidden state по умолчанию — slot полностью схлопнут (нулевая ширина),
34
+ Контент скрыт через opacity + сдвиг влево; pointer-events:none снимает hit-target. */
35
+ width: 0;
36
+ height: 45px;
37
+ align-items: center;
38
+ justify-content: flex-start;
39
+ opacity: 0;
40
+ pointer-events: none;
41
+ transform: translateX(-8px);
42
+ transition:
43
+ width var(--rt-header-back-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1),
44
+ opacity var(--rt-header-back-transition-duration) ease-out,
45
+ transform var(--rt-header-back-transition-duration) cubic-bezier(0.34, 1.56, 0.64, 1);
41
46
 
42
- &--visible {
43
- width: 35px;
44
- opacity: 1;
45
- pointer-events: auto;
46
- transform: translateX(0);
47
+ &--visible {
48
+ width: 35px;
49
+ opacity: 1;
50
+ pointer-events: auto;
51
+ transform: translateX(0);
52
+ }
47
53
  }
48
- }
49
54
 
50
- &__logo {
51
- display: flex;
52
- min-width: 0;
53
- flex: 1 0 0;
54
- align-items: center;
55
+ &__logo {
56
+ display: flex;
57
+ min-width: 0;
58
+ flex: 1 0 0;
59
+ align-items: center;
60
+ }
55
61
  }
56
- }
57
62
 
58
- /* dark override: header bg = navy, близко к --rt-blue-900 */
59
- [data-theme='dark'] .rt-header {
60
- background: var(--rt-blue-900);
61
- }
63
+ /* dark override: подложка обвязки — своё назначение, а не ступень шкалы. */
64
+ [data-theme='dark'] .rt-header {
65
+ background: var(--rt-color-bg-nav);
66
+ }
62
67
 
63
- @media (prefers-reduced-motion: reduce) {
64
- .rt-header__back {
65
- transition: none;
68
+ @media (prefers-reduced-motion: reduce) {
69
+ .rt-header__back {
70
+ transition: none;
71
+ }
66
72
  }
67
73
  }
@@ -1,15 +1,17 @@
1
- /* rt-icon — правила компонента (ViewEncapsulation.None).
2
- Селектор bare `.rt-icon` (класс на host) — им же адресуются и программные
3
- потребители sprite'а, рисующие иконку без компонента. */
4
- .rt-icon {
5
- display: inline-flex;
6
- flex-shrink: 0;
7
- line-height: 0;
1
+ @layer rt-kit.components {
2
+ /* rt-icon — правила компонента (ViewEncapsulation.None).
3
+ Селектор bare `.rt-icon` (класс на host) — им же адресуются и программные
4
+ потребители sprite'а, рисующие иконку без компонента. */
5
+ .rt-icon {
6
+ display: inline-flex;
7
+ flex-shrink: 0;
8
+ line-height: 0;
8
9
 
9
- svg {
10
- display: block;
11
- width: 100%;
12
- height: 100%;
13
- fill: currentcolor;
10
+ svg {
11
+ display: block;
12
+ width: 100%;
13
+ height: 100%;
14
+ fill: currentcolor;
15
+ }
14
16
  }
15
17
  }
@@ -30,8 +30,10 @@
30
30
  **Кнопку компонент рисует внутри себя**, host остаётся обычным элементом. Диаметр держит
31
31
  свойство `--rt-icon-button-size`, и объявляет его модификатор размера на самой кнопке —
32
32
  поэтому ни класс на host-е, ни инлайн-стиль на нём диаметра не меняют: собственное
33
- объявление элемента бьёт унаследованное. Размер вне шкалы получается не обходом, а новой
34
- ступенью здесь же: `sm` 28px, `md` 36px, `lg` 44px, `xl` 52px, `2xl` 60px.
33
+ объявление элемента бьёт унаследованное. Диаметр берётся из общей шкалы высот контролов, а не
34
+ своим рядом: иконочная кнопка стоит в строке рядом с кнопкой и полем и обязана совпадать с ними
35
+ по высоте. Ступени — `sm`, `md`, `lg`, `xl`, `2xl`; значения держит шкала, и здесь они не
36
+ повторяются.
35
37
 
36
38
  ## Как этим пользоваться
37
39
 
@@ -1,152 +1,168 @@
1
- /* rt-icon-button — иконочная кнопка в common/ui. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс `.rt-icon-button` висит
3
- и на `<rt-icon-button>`, и на корне шаблона, поэтому правила блока вложены в хост —
4
- так они достаются только корню шаблона. */
1
+ @layer rt-kit.components {
2
+ /* rt-icon-button — иконочная кнопка в common/ui. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс `.rt-icon-button` висит
4
+ и на `<rt-icon-button>`, и на корне шаблона, поэтому правила блока вложены в хост —
5
+ так они достаются только корню шаблона. */
5
6
 
6
- rt-icon-button {
7
- display: inline-flex;
8
-
9
- /* Дефолт = md; перезаписывается модификаторами sm/lg ниже либо inline стилем потребителя */
10
- --rt-icon-button-size: 36px;
11
-
12
- .rt-icon-button {
13
- position: relative;
7
+ rt-icon-button {
14
8
  display: inline-flex;
15
- width: var(--rt-icon-button-size);
16
- height: var(--rt-icon-button-size);
17
- align-items: center;
18
- justify-content: center;
19
- padding: 0;
20
- border: 0;
21
- background: transparent;
22
- color: var(--rt-icon-button-color, var(--rt-color-text-primary));
23
- cursor: pointer;
24
- transition: background-color var(--rt-duration-fast) ease;
25
-
26
- &--sm {
27
- --rt-icon-button-size: 28px;
28
- }
29
-
30
- &--md {
31
- --rt-icon-button-size: 36px;
32
- }
33
9
 
34
- &--lg {
35
- --rt-icon-button-size: 44px;
36
- }
10
+ /* Дефолт = md; перезаписывается модификаторами sm/lg ниже либо inline стилем потребителя.
11
+ Ряд берётся из общей шкалы высот контролов: иконочная кнопка стоит в строке
12
+ рядом с кнопкой и полем и обязана совпадать с ними по высоте. */
13
+ --rt-icon-button-size: var(--rt-control-height-md);
14
+
15
+ /* Цвет иконки объявлен здесь, а не приходил бы запасным значением на месте
16
+ обращения: запасное переживает смену темы — переопределять нечего. Своё
17
+ свойство блока перебивает тот, кому нужен другой цвет: так делает просмотр
18
+ фотографии, где кнопка стоит на снимке. */
19
+ --rt-icon-button-color: var(--rt-color-text-primary);
20
+
21
+ .rt-icon-button {
22
+ --rt-icon-button-circle-radius: var(--rt-radius-full);
23
+ --rt-icon-button-square-radius: var(--rt-radius-md);
24
+ --rt-icon-button-indicator-radius: var(--rt-radius-full);
25
+ --rt-icon-button-focus-shadow: var(--rt-shadow-focus-ring);
26
+ --rt-icon-button-transition-duration: var(--rt-duration-fast);
27
+
28
+ position: relative;
29
+ display: inline-flex;
30
+ width: var(--rt-icon-button-size);
31
+ height: var(--rt-icon-button-size);
32
+ align-items: center;
33
+ justify-content: center;
34
+ padding: 0;
35
+ border: 0;
36
+ background: transparent;
37
+ color: var(--rt-icon-button-color);
38
+ cursor: pointer;
39
+ transition: background-color var(--rt-icon-button-transition-duration) ease;
40
+
41
+ &--sm {
42
+ --rt-icon-button-size: var(--rt-control-height-sm);
43
+ }
37
44
 
38
- &--xl {
39
- --rt-icon-button-size: 52px;
40
- }
45
+ &--md {
46
+ --rt-icon-button-size: var(--rt-control-height-md);
47
+ }
41
48
 
42
- &--2xl {
43
- --rt-icon-button-size: 60px;
44
- }
49
+ &--lg {
50
+ --rt-icon-button-size: var(--rt-control-height-lg);
51
+ }
45
52
 
46
- &--circle {
47
- border-radius: var(--rt-radius-full);
48
- }
53
+ &--xl {
54
+ --rt-icon-button-size: var(--rt-control-height-xl);
55
+ }
49
56
 
50
- &--square {
51
- border-radius: var(--rt-radius-md);
52
- }
57
+ &--2xl {
58
+ --rt-icon-button-size: var(--rt-control-height-2xl);
59
+ }
53
60
 
54
- &--ghost {
55
- &:hover:not(:disabled) {
56
- background-color: var(--rt-icon-button-color-bg-hover);
61
+ &--circle {
62
+ border-radius: var(--rt-icon-button-circle-radius);
57
63
  }
58
64
 
59
- &.rt-icon-button--active {
60
- background-color: var(--rt-icon-button-color-bg-hover);
65
+ &--square {
66
+ border-radius: var(--rt-icon-button-square-radius);
61
67
  }
62
- }
63
68
 
64
- &--primary {
65
- background-color: var(--rt-color-action-primary);
66
- color: var(--rt-color-action-on-primary);
69
+ &--ghost {
70
+ &:hover:not(:disabled) {
71
+ background-color: var(--rt-icon-button-color-bg-hover);
72
+ }
67
73
 
68
- &:hover:not(:disabled) {
69
- background-color: var(--rt-color-action-primary-hover);
74
+ &.rt-icon-button--active {
75
+ background-color: var(--rt-icon-button-color-bg-hover);
76
+ }
70
77
  }
71
- }
72
78
 
73
- &--secondary {
74
- background-color: var(--rt-color-bg-surface-subtle);
75
- color: var(--rt-color-text-primary);
79
+ &--primary {
80
+ background-color: var(--rt-color-action-primary);
81
+ color: var(--rt-color-action-on-primary);
76
82
 
77
- &:hover:not(:disabled) {
78
- background-color: var(--rt-icon-button-color-bg-hover);
83
+ &:hover:not(:disabled) {
84
+ background-color: var(--rt-color-action-primary-hover);
85
+ }
79
86
  }
80
- }
81
87
 
82
- &--danger {
83
- color: var(--rt-color-state-danger);
88
+ &--secondary {
89
+ background-color: var(--rt-color-bg-surface-subtle);
90
+ color: var(--rt-color-text-primary);
84
91
 
85
- &:hover:not(:disabled) {
86
- background-color: var(--rt-icon-button-color-bg-hover);
92
+ &:hover:not(:disabled) {
93
+ background-color: var(--rt-icon-button-color-bg-hover);
94
+ }
87
95
  }
88
96
 
89
- &.rt-icon-button--active {
90
- background-color: var(--rt-icon-button-color-bg-hover);
91
- }
92
- }
97
+ &--danger {
98
+ color: var(--rt-color-state-danger);
93
99
 
94
- &--success {
95
- color: var(--rt-color-state-success);
100
+ &:hover:not(:disabled) {
101
+ background-color: var(--rt-icon-button-color-bg-hover);
102
+ }
96
103
 
97
- &:hover:not(:disabled) {
98
- background-color: var(--rt-icon-button-color-bg-hover);
104
+ &.rt-icon-button--active {
105
+ background-color: var(--rt-icon-button-color-bg-hover);
106
+ }
99
107
  }
100
108
 
101
- &.rt-icon-button--active {
102
- background-color: var(--rt-icon-button-color-bg-hover);
103
- }
104
- }
109
+ &--success {
110
+ color: var(--rt-color-state-success);
105
111
 
106
- &--warning {
107
- color: var(--rt-color-state-warning);
112
+ &:hover:not(:disabled) {
113
+ background-color: var(--rt-icon-button-color-bg-hover);
114
+ }
108
115
 
109
- &:hover:not(:disabled) {
110
- background-color: var(--rt-icon-button-color-bg-hover);
116
+ &.rt-icon-button--active {
117
+ background-color: var(--rt-icon-button-color-bg-hover);
118
+ }
111
119
  }
112
120
 
113
- &.rt-icon-button--active {
114
- background-color: var(--rt-icon-button-color-bg-hover);
121
+ &--warning {
122
+ color: var(--rt-color-state-warning);
123
+
124
+ &:hover:not(:disabled) {
125
+ background-color: var(--rt-icon-button-color-bg-hover);
126
+ }
127
+
128
+ &.rt-icon-button--active {
129
+ background-color: var(--rt-icon-button-color-bg-hover);
130
+ }
115
131
  }
116
- }
117
132
 
118
- &:disabled {
119
- cursor: not-allowed;
120
- opacity: 0.5;
121
- }
133
+ &:disabled {
134
+ cursor: not-allowed;
135
+ opacity: 0.5;
136
+ }
122
137
 
123
- &:focus-visible {
124
- box-shadow: var(--rt-shadow-focus-ring);
125
- outline: 2px solid transparent;
126
- outline-offset: 2px;
127
- }
138
+ &:focus-visible {
139
+ box-shadow: var(--rt-icon-button-focus-shadow);
140
+ outline: 2px solid transparent;
141
+ outline-offset: 2px;
142
+ }
128
143
 
129
- &__spinner {
130
- --rt-icon-button-spin-duration: 1s;
144
+ &__spinner {
145
+ --rt-icon-button-spin-duration: 1s;
131
146
 
132
- animation: rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite;
133
- }
147
+ animation: rt-icon-button-spin var(--rt-icon-button-spin-duration) linear infinite;
148
+ }
134
149
 
135
- &__indicator {
136
- position: absolute;
137
- width: 8px;
138
- height: 8px;
139
- border-radius: var(--rt-radius-full);
140
- background: var(--rt-color-state-danger);
141
- inset-block-start: -2px;
142
- inset-inline-end: -2px;
143
- pointer-events: none;
150
+ &__indicator {
151
+ position: absolute;
152
+ width: 8px;
153
+ height: 8px;
154
+ border-radius: var(--rt-icon-button-indicator-radius);
155
+ background: var(--rt-color-state-danger);
156
+ inset-block-start: -2px;
157
+ inset-inline-end: -2px;
158
+ pointer-events: none;
159
+ }
144
160
  }
145
161
  }
146
- }
147
162
 
148
- @keyframes rt-icon-button-spin {
149
- to {
150
- transform: rotate(360deg);
163
+ @keyframes rt-icon-button-spin {
164
+ to {
165
+ transform: rotate(360deg);
166
+ }
151
167
  }
152
168
  }
@@ -1,46 +1,48 @@
1
1
  @use '../../../styles/mixins' as kv;
2
2
 
3
- .rt-info-item {
4
- @include kv.surface-card;
3
+ @layer rt-kit.components {
4
+ .rt-info-item {
5
+ @include kv.surface-card;
5
6
 
6
- display: flex;
7
- min-width: 0;
8
- flex-direction: column;
9
- margin: 0;
10
- gap: var(--rt-space-0-5);
11
-
12
- &--grow {
13
- flex: 1 0 0;
14
- }
15
-
16
- &__label {
17
- margin: 0;
18
- color: var(--rt-color-text-primary);
19
- font-size: var(--rt-text-xs);
20
- font-weight: var(--rt-font-weight-regular);
21
- letter-spacing: var(--rt-letter-spacing-wide);
22
- line-height: var(--rt-leading-snug);
23
- }
24
-
25
- &__value {
26
7
  display: flex;
27
- flex-wrap: wrap;
28
- align-items: baseline;
8
+ min-width: 0;
9
+ flex-direction: column;
29
10
  margin: 0;
30
- color: var(--rt-color-text-primary);
31
- font-size: var(--rt-text-sm);
32
- font-weight: var(--rt-font-weight-bold);
33
11
  gap: var(--rt-space-0-5);
34
- letter-spacing: var(--rt-letter-spacing-wide);
35
- line-height: var(--rt-leading-snug);
36
- overflow-wrap: anywhere;
37
- }
38
12
 
39
- &__value-skeleton {
40
- display: block;
13
+ &--grow {
14
+ flex: 1 0 0;
15
+ }
16
+
17
+ &__label {
18
+ margin: 0;
19
+ color: var(--rt-color-text-primary);
20
+ font-size: var(--rt-text-xs);
21
+ font-weight: var(--rt-font-weight-regular);
22
+ letter-spacing: var(--rt-letter-spacing-wide);
23
+ line-height: var(--rt-leading-snug);
24
+ }
25
+
26
+ &__value {
27
+ display: flex;
28
+ flex-wrap: wrap;
29
+ align-items: baseline;
30
+ margin: 0;
31
+ color: var(--rt-color-text-primary);
32
+ font-size: var(--rt-text-sm);
33
+ font-weight: var(--rt-font-weight-bold);
34
+ gap: var(--rt-space-0-5);
35
+ letter-spacing: var(--rt-letter-spacing-wide);
36
+ line-height: var(--rt-leading-snug);
37
+ overflow-wrap: anywhere;
38
+ }
39
+
40
+ &__value-skeleton {
41
+ display: block;
42
+ }
41
43
  }
42
- }
43
44
 
44
- [data-theme='dark'] .rt-info-item {
45
- @include kv.surface-card-dark;
45
+ [data-theme='dark'] .rt-info-item {
46
+ @include kv.surface-card-dark;
47
+ }
46
48
  }