@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.
- package/README.md +71 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs +166 -166
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.6.0.tgz +0 -0
- package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
- package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
- package/src/lib/components/aside/rt-aside.component.scss +107 -105
- package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
- package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
- package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
- package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
- package/src/lib/components/button/rt-button.directive.scss +319 -280
- package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
- package/src/lib/components/card/rt-card.component.scss +53 -45
- package/src/lib/components/chat/rt-chat.component.scss +312 -306
- package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
- package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
- package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
- package/src/lib/components/container/rt-container.component.scss +91 -87
- package/src/lib/components/counter/rt-counter.component.scss +14 -12
- package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
- package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
- package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
- package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
- package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
- package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
- package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
- package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
- package/src/lib/components/field/rt-field.component.scss +63 -61
- package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
- package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
- package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
- package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
- package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
- package/src/lib/components/header/rt-header.component.scss +61 -55
- package/src/lib/components/icon/rt-icon.component.scss +14 -12
- package/src/lib/components/icon-button/CONTEXT.md +4 -2
- package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
- package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
- package/src/lib/components/input/rt-input.component.scss +102 -98
- package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
- package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
- package/src/lib/components/logo/rt-logo.component.scss +54 -52
- package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
- package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
- package/src/lib/components/menu/rt-menu.component.scss +23 -15
- package/src/lib/components/message/rt-message.component.scss +53 -49
- package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
- package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
- package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
- package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
- package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
- package/src/lib/components/note/rt-note.component.scss +15 -11
- package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
- package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
- package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
- package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
- package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
- package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
- package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
- package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
- package/src/lib/components/select/rt-select.component.scss +146 -138
- package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
- package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
- package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
- package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
- package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
- package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
- package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
- package/src/lib/components/table/rt-table.component.scss +260 -252
- package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
- package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
- package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
- package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
- package/src/lib/components/tag/rt-tag.component.scss +97 -92
- package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
- package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
- package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
- package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
- package/src/lib/components/toast/rt-toast.component.scss +169 -160
- package/src/lib/components/toast/rt-toaster.component.scss +37 -35
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
- package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
- package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
- package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
- package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
- package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
- package/src/styles/_index.scss +4 -0
- package/src/styles/_layers.scss +22 -0
- package/src/styles/_login.scss +87 -85
- package/src/styles/_mixins.scss +1 -1
- package/src/styles/_primitives.scss +126 -67
- package/src/styles/_scrollbar.scss +21 -19
- package/src/styles/_semantic.scss +140 -56
- package/src/styles/_theme-dark.scss +60 -27
- package/styles/tokens.css +628 -408
- package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
|
@@ -1,89 +1,91 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
.rt-date-picker {
|
|
3
|
+
position: relative;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
width: 100%;
|
|
6
|
+
min-height: var(--rt-input-height);
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
align-items: center;
|
|
9
|
+
padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
|
|
10
|
+
border: var(--rt-input-border-width) solid var(--rt-input-color-border);
|
|
11
|
+
border-radius: var(--rt-input-radius);
|
|
12
|
+
background-color: var(--rt-input-color-bg);
|
|
13
|
+
color: var(--rt-input-color-text);
|
|
14
|
+
cursor: text;
|
|
15
|
+
font-size: var(--rt-input-font-size);
|
|
16
|
+
gap: var(--rt-space-sm);
|
|
17
|
+
line-height: var(--rt-input-line-height);
|
|
18
|
+
transition: var(--rt-input-transition);
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
&:focus-within {
|
|
21
|
+
border-color: var(--rt-input-color-border-focus);
|
|
22
|
+
box-shadow: var(--rt-input-focus-shadow);
|
|
23
|
+
outline: 2px solid transparent;
|
|
24
|
+
outline-offset: var(--rt-input-focus-outline-offset);
|
|
25
|
+
}
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
/* bordered=false: снимаем только resting-рамку; invalid/focus/readonly идут
|
|
28
|
+
ниже по source-order и перекрывают её своей рамкой. */
|
|
29
|
+
&--borderless {
|
|
30
|
+
border-color: transparent;
|
|
31
|
+
}
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
&--invalid {
|
|
34
|
+
border-color: var(--rt-input-color-border-error);
|
|
34
35
|
|
|
35
|
-
|
|
36
|
-
|
|
36
|
+
&:focus-within {
|
|
37
|
+
box-shadow: var(--rt-input-focus-shadow-error);
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
|
-
}
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
&--disabled {
|
|
42
|
+
cursor: not-allowed;
|
|
43
|
+
opacity: var(--rt-input-disabled-opacity);
|
|
44
|
+
}
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
&--size--sm {
|
|
47
|
+
min-height: var(--rt-input-height-sm);
|
|
48
|
+
}
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
&--size--lg {
|
|
51
|
+
min-height: var(--rt-input-height-lg);
|
|
52
|
+
}
|
|
52
53
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
/* Read-only: дата как плоский текст — снимаем рамку/фон/паддинги. */
|
|
55
|
+
&--readonly {
|
|
56
|
+
padding-right: 0;
|
|
57
|
+
padding-left: 0;
|
|
58
|
+
border-color: transparent;
|
|
59
|
+
background-color: transparent;
|
|
60
|
+
cursor: default;
|
|
61
|
+
}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
&__readonly {
|
|
64
|
+
color: var(--rt-field-value-color);
|
|
65
|
+
font-size: var(--rt-field-value-font-size);
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
&--empty {
|
|
68
|
+
color: var(--rt-field-value-empty-color);
|
|
69
|
+
}
|
|
68
70
|
}
|
|
69
|
-
}
|
|
70
71
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
72
|
+
&__field {
|
|
73
|
+
min-width: 0;
|
|
74
|
+
flex: 1 1 auto;
|
|
75
|
+
padding: 0;
|
|
76
|
+
border: none;
|
|
77
|
+
background: transparent;
|
|
78
|
+
color: inherit;
|
|
79
|
+
font: inherit;
|
|
80
|
+
outline: none;
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
&:disabled {
|
|
83
|
+
cursor: not-allowed;
|
|
84
|
+
}
|
|
83
85
|
}
|
|
84
|
-
}
|
|
85
86
|
|
|
86
|
-
|
|
87
|
-
|
|
87
|
+
&__clear {
|
|
88
|
+
flex-shrink: 0;
|
|
89
|
+
}
|
|
88
90
|
}
|
|
89
91
|
}
|
|
@@ -1,31 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
.rt-delta-view {
|
|
3
|
+
display: block;
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
5
|
+
p,
|
|
6
|
+
ul,
|
|
7
|
+
ol,
|
|
8
|
+
blockquote,
|
|
9
|
+
pre,
|
|
10
|
+
h1,
|
|
11
|
+
h2,
|
|
12
|
+
h3 {
|
|
13
|
+
margin: 0;
|
|
14
|
+
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
ul,
|
|
17
|
+
ol {
|
|
18
|
+
padding-inline-start: var(--rt-space-lg);
|
|
19
|
+
}
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
blockquote {
|
|
22
|
+
border-inline-start: 1px solid var(--rt-color-border-default);
|
|
23
|
+
color: var(--rt-color-text-muted);
|
|
24
|
+
padding-inline-start: var(--rt-space-sm);
|
|
25
|
+
}
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
pre {
|
|
28
|
+
margin: 0;
|
|
29
|
+
font-family: monospace;
|
|
30
|
+
white-space: pre-wrap;
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
33
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-detail-list — контейнер read-only строк деталей (ViewEncapsulation.None).
|
|
3
|
+
Селектор bare `.rt-detail-list` (класс на host). */
|
|
3
4
|
|
|
4
|
-
.rt-detail-list {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
.rt-detail-list {
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
gap: var(--rt-space-md);
|
|
9
|
+
}
|
|
8
10
|
}
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-detail-row — stacked строка «лейбл + значение» (ViewEncapsulation.None).
|
|
3
|
+
Селектор bare `.rt-detail-row` (класс на host). Типографика лейбла и значения
|
|
4
|
+
берётся из тех же `--rt-field-*` токенов, что и `rt-field`, — read-only строка
|
|
5
|
+
и редактируемое поле в одной секции выглядят одинаково. */
|
|
5
6
|
|
|
6
|
-
.rt-detail-row {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
.rt-detail-row {
|
|
8
|
+
display: flex;
|
|
9
|
+
flex-direction: column;
|
|
10
|
+
gap: var(--rt-field-gap);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
&__label {
|
|
13
|
+
color: var(--rt-field-label-color);
|
|
14
|
+
font-size: var(--rt-field-label-font-size);
|
|
15
|
+
font-weight: var(--rt-field-label-font-weight);
|
|
16
|
+
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
&__value {
|
|
19
|
+
color: var(--rt-field-value-color);
|
|
20
|
+
font-size: var(--rt-field-value-font-size);
|
|
21
|
+
}
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-dialog-footer — footer-слот модалки. ViewEncapsulation.None.
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Хост адресуется по имени элемента, а не по классу блока: класс
|
|
5
|
+
`.rt-dialog-footer` висит и на `<rt-dialog-footer>`, и на `<footer>` внутри
|
|
6
|
+
него. Правило на голом классе доставалось обоим — кнопки прижимались к правому
|
|
7
|
+
краю не окна, а строки по содержимому, и разделитель рисовался дважды. Заодно
|
|
8
|
+
`:empty` теперь спрашивается у `<footer>`, а не у хоста: у хоста внутри всегда
|
|
9
|
+
лежит `<footer>`, и пустым он не бывал никогда. */
|
|
9
10
|
|
|
10
|
-
rt-dialog-footer {
|
|
11
|
-
|
|
11
|
+
rt-dialog-footer {
|
|
12
|
+
display: contents;
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
.rt-dialog-footer {
|
|
15
|
+
display: flex;
|
|
16
|
+
justify-content: flex-end;
|
|
17
|
+
padding: var(--rt-space-lg);
|
|
18
|
+
border-block-start: 1px solid var(--rt-color-border-subtle);
|
|
19
|
+
gap: var(--rt-space-sm);
|
|
19
20
|
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
&:empty {
|
|
22
|
+
display: none;
|
|
23
|
+
}
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
26
|
}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-dialog-header — заголовок модалки. ViewEncapsulation.None.
|
|
3
|
+
Селекторы префиксованы `.rt-dialog-header`.
|
|
3
4
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
Хост адресуется по имени элемента, а не по классу блока: класс
|
|
6
|
+
`.rt-dialog-header` висит и на `<rt-dialog-header>`, и на `<header>` внутри
|
|
7
|
+
него. Правило на голом классе доставалось обоим — хост становился flex-строкой,
|
|
8
|
+
а `<header>` внутри неё сжимался по содержимому: заголовок и крестик стояли
|
|
9
|
+
вплотную вместо краёв окна, и разделитель рисовался дважды, двумя линиями
|
|
10
|
+
разной длины. Хост боксом не становится: строка шапки должна быть прямым
|
|
11
|
+
flex-ребёнком рамки окна. */
|
|
11
12
|
|
|
12
|
-
rt-dialog-header {
|
|
13
|
-
|
|
13
|
+
rt-dialog-header {
|
|
14
|
+
display: contents;
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
.rt-dialog-header {
|
|
17
|
+
display: flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
padding: var(--rt-space-lg);
|
|
21
|
+
border-block-end: 1px solid var(--rt-color-border-subtle);
|
|
22
|
+
gap: var(--rt-space-sm);
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
&__title {
|
|
25
|
+
margin: 0;
|
|
26
|
+
color: var(--rt-color-text-primary);
|
|
27
|
+
font-size: var(--rt-text-xl);
|
|
28
|
+
}
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
&__close {
|
|
31
|
+
margin-inline-start: auto;
|
|
32
|
+
}
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
}
|
|
@@ -1,66 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-dialog — styled frame модалки поверх CDK Overlay.
|
|
3
|
+
ViewEncapsulation.None — селекторы префиксованы `.rt-dialog`.
|
|
4
|
+
Видимость / backdrop / focus-trap обеспечивает CDK Overlay через RtDialogService. */
|
|
4
5
|
|
|
5
|
-
/* Хост адресуется по имени элемента, а не по классу блока: класс `.rt-dialog`
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
rt-dialog {
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/* Size tokens — sm/md/lg.
|
|
14
|
-
Component-локальные tokens для backdrop/shadow держим в :root, чтобы
|
|
15
|
-
feature-консьюмеры могли переопределить per-instance через --rt-dialog-*. */
|
|
16
|
-
:root {
|
|
17
|
-
--rt-dialog-width-sm: 460px;
|
|
18
|
-
--rt-dialog-width-md: 660px;
|
|
19
|
-
--rt-dialog-width-lg: 860px;
|
|
20
|
-
--rt-dialog-shadow: 0 0 40px 0 rgb(0 0 0 / 25%);
|
|
21
|
-
--rt-dialog-backdrop-bg: rgb(25 41 64 / 70%);
|
|
22
|
-
--rt-dialog-backdrop-blur: 5px;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
rt-dialog .rt-dialog {
|
|
26
|
-
display: flex;
|
|
27
|
-
overflow: hidden;
|
|
28
|
-
width: var(--rt-dialog-width, var(--rt-dialog-width-md));
|
|
29
|
-
max-width: 90dvw;
|
|
30
|
-
max-height: 90dvh;
|
|
31
|
-
flex-direction: column;
|
|
32
|
-
padding: 0;
|
|
33
|
-
border: none;
|
|
34
|
-
border-radius: var(--rt-radius-xl, 15px);
|
|
35
|
-
background: var(--rt-color-bg-surface);
|
|
36
|
-
box-shadow: var(--rt-dialog-shadow);
|
|
37
|
-
color: var(--rt-color-text-primary);
|
|
6
|
+
/* Хост адресуется по имени элемента, а не по классу блока: класс `.rt-dialog`
|
|
7
|
+
висит и на `<rt-dialog>`, и на рамке внутри него, поэтому правила рамки
|
|
8
|
+
вложены в хост — так они достаются только рамке. Сам хост боксом не
|
|
9
|
+
становится: рамка должна быть прямым flex-ребёнком overlay-панели. */
|
|
10
|
+
rt-dialog {
|
|
11
|
+
display: contents;
|
|
12
|
+
}
|
|
38
13
|
|
|
39
|
-
|
|
40
|
-
|
|
14
|
+
/* Size tokens — sm/md/lg.
|
|
15
|
+
Component-локальные tokens для backdrop/shadow держим в :root, чтобы
|
|
16
|
+
feature-консьюмеры могли переопределить per-instance через --rt-dialog-*. */
|
|
17
|
+
:root {
|
|
18
|
+
--rt-dialog-width-sm: 460px;
|
|
19
|
+
--rt-dialog-width-md: 660px;
|
|
20
|
+
--rt-dialog-width-lg: 860px;
|
|
21
|
+
--rt-dialog-shadow: var(--rt-shadow-dialog);
|
|
22
|
+
--rt-dialog-radius: var(--rt-radius-xl);
|
|
23
|
+
--rt-dialog-backdrop-bg: var(--rt-overlay-navy-70);
|
|
24
|
+
--rt-dialog-backdrop-blur: 5px;
|
|
41
25
|
}
|
|
42
26
|
|
|
43
|
-
|
|
27
|
+
rt-dialog .rt-dialog {
|
|
28
|
+
display: flex;
|
|
29
|
+
overflow: hidden;
|
|
44
30
|
width: var(--rt-dialog-width, var(--rt-dialog-width-md));
|
|
45
|
-
|
|
31
|
+
max-width: 90dvw;
|
|
32
|
+
max-height: 90dvh;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
padding: 0;
|
|
35
|
+
border: none;
|
|
36
|
+
border-radius: var(--rt-dialog-radius);
|
|
37
|
+
background: var(--rt-color-bg-surface);
|
|
38
|
+
box-shadow: var(--rt-dialog-shadow);
|
|
39
|
+
color: var(--rt-color-text-primary);
|
|
46
40
|
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
&--size--sm {
|
|
42
|
+
width: var(--rt-dialog-width, var(--rt-dialog-width-sm));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&--size--md {
|
|
46
|
+
width: var(--rt-dialog-width, var(--rt-dialog-width-md));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&--size--lg {
|
|
50
|
+
width: var(--rt-dialog-width, var(--rt-dialog-width-lg));
|
|
51
|
+
}
|
|
49
52
|
}
|
|
50
|
-
}
|
|
51
53
|
|
|
52
|
-
/* CDK Overlay backdrop + panel classes, выставляемые RtDialogService.
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
.rt-dialog-backdrop {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
54
|
+
/* CDK Overlay backdrop + panel classes, выставляемые RtDialogService.
|
|
55
|
+
Live в global scope — overlay-container — sibling от <body>,
|
|
56
|
+
encapsulation не работает. */
|
|
57
|
+
.rt-dialog-backdrop {
|
|
58
|
+
/* stylelint-disable-next-line property-no-vendor-prefix -- Safari < 18 */
|
|
59
|
+
-webkit-backdrop-filter: blur(var(--rt-dialog-backdrop-blur));
|
|
60
|
+
backdrop-filter: blur(var(--rt-dialog-backdrop-blur));
|
|
61
|
+
background: var(--rt-dialog-backdrop-bg);
|
|
62
|
+
}
|
|
61
63
|
|
|
62
|
-
.rt-dialog-overlay {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
.rt-dialog-overlay {
|
|
65
|
+
display: flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
justify-content: center;
|
|
68
|
+
}
|
|
66
69
|
}
|
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
.rt-download-link {
|
|
3
|
+
--rt-download-link-focus-radius: var(--rt-radius-sm);
|
|
4
|
+
--rt-download-link-focus-shadow: var(--rt-shadow-focus-ring);
|
|
3
5
|
|
|
4
|
-
&__button {
|
|
5
6
|
display: inline-flex;
|
|
6
|
-
align-items: center;
|
|
7
|
-
padding: 0;
|
|
8
|
-
border: 0;
|
|
9
|
-
background: transparent;
|
|
10
|
-
color: var(--rt-color-text-link);
|
|
11
|
-
cursor: pointer;
|
|
12
|
-
font-family: var(--rt-font-family-sans);
|
|
13
|
-
font-size: var(--rt-text-xs);
|
|
14
|
-
font-weight: var(--rt-font-weight-medium);
|
|
15
|
-
gap: var(--rt-space-sm);
|
|
16
|
-
line-height: var(--rt-leading-snug);
|
|
17
7
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
8
|
+
&__button {
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
align-items: center;
|
|
11
|
+
padding: 0;
|
|
12
|
+
border: 0;
|
|
13
|
+
background: transparent;
|
|
14
|
+
color: var(--rt-color-text-link);
|
|
15
|
+
cursor: pointer;
|
|
16
|
+
font-family: var(--rt-font-family-sans);
|
|
17
|
+
font-size: var(--rt-text-xs);
|
|
18
|
+
font-weight: var(--rt-font-weight-medium);
|
|
19
|
+
gap: var(--rt-space-sm);
|
|
20
|
+
line-height: var(--rt-leading-snug);
|
|
21
|
+
|
|
22
|
+
&:hover {
|
|
23
|
+
text-decoration: underline;
|
|
24
|
+
}
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
/* Своей рамки у кнопки нет — она нарисована как ссылка, и умолчательный контур
|
|
27
|
+
браузер снимает вместе с рамкой. Без этого правила место фокуса с клавиатуры
|
|
28
|
+
не видно вовсе: кнопка выглядит одинаково выбранной и невыбранной. */
|
|
29
|
+
&:focus-visible {
|
|
30
|
+
border-radius: var(--rt-download-link-focus-radius);
|
|
31
|
+
box-shadow: var(--rt-download-link-focus-shadow);
|
|
32
|
+
outline: none;
|
|
33
|
+
}
|
|
29
34
|
}
|
|
30
|
-
}
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
&__icon {
|
|
37
|
+
color: var(--rt-color-text-link);
|
|
38
|
+
}
|
|
34
39
|
}
|
|
35
40
|
}
|