@rt-tools/ui-kit-v2 0.5.0 → 0.7.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 +87 -7
- package/fesm2022/rt-tools-ui-kit-v2.mjs +1929 -994
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +1 -1
- package/rt-tools-ui-kit-v2-0.7.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/CONTEXT.md +16 -10
- 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/CONTEXT.md +9 -7
- 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/markdown-text/CONTEXT.md +40 -0
- package/src/lib/components/markdown-text/rt-markdown-text.component.scss +130 -0
- 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/CONTEXT.md +1 -1
- 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/CONTEXT.md +1 -1
- 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 +39 -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 +63 -54
- package/src/lib/components/tooltip/rt-tooltip.component.scss +24 -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 +11 -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 +138 -66
- package/src/styles/_scrollbar.scss +21 -19
- package/src/styles/_semantic.scss +155 -62
- package/src/styles/_theme-dark-rules.scss +23 -0
- package/src/styles/_theme-dark.scss +61 -42
- package/styles/tokens.css +754 -418
- package/types/rt-tools-ui-kit-v2.d.ts +292 -103
- package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
package/README.md
CHANGED
|
@@ -34,10 +34,24 @@ export const appConfig: ApplicationConfig = {
|
|
|
34
34
|
@use '@rt-tools/ui-kit-v2/styles/tokens.css';
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
Стили кита объявлены слоем каскада `rt-kit` — тремя подслоями в порядке `vendor`, `base`,
|
|
38
|
+
`components`. Правило приложения, объявленное вне слоя, выигрывает у любого правила кита
|
|
39
|
+
независимо от специфичности: перебирать её счётом и обходить чужую вёрстку больше не нужно.
|
|
40
|
+
|
|
41
|
+
Объявления свойств на корне страницы в слой не уходят — их приложение перебивает порядком,
|
|
42
|
+
объявляя своё после `tokens.css`.
|
|
43
|
+
|
|
44
|
+
Подслой `vendor` — для чужого CSS, который чинит кит. Тема редактора текста подключается в
|
|
45
|
+
него, иначе она выигрывает у правил кита и панель редактора перестраивается:
|
|
46
|
+
|
|
47
|
+
```scss
|
|
48
|
+
@import 'quill/dist/quill.snow.css' layer(rt-kit.vendor);
|
|
49
|
+
```
|
|
50
|
+
|
|
37
51
|
Иконки лежат отдельными файлами в `node_modules/@rt-tools/ui-kit-v2/src/assets/icons`: сборка
|
|
38
52
|
копирует каталог в свою статику, а `provideRtIcons('/icons')` называет адрес, по которому он
|
|
39
|
-
опубликован.
|
|
40
|
-
|
|
53
|
+
опубликован. Файл забирается тогда, когда значок с этим именем попросила разметка, и дальше
|
|
54
|
+
живёт в inline-sprite: страница платит за те значки, которые нарисовала, а не за весь набор.
|
|
41
55
|
|
|
42
56
|
```json
|
|
43
57
|
{
|
|
@@ -49,16 +63,25 @@ export const appConfig: ApplicationConfig = {
|
|
|
49
63
|
|
|
50
64
|
## Что внутри
|
|
51
65
|
|
|
52
|
-
**Компоненты** —
|
|
66
|
+
**Компоненты** — 73 семейства: поля формы (`rt-input`, `rt-select`, `rt-multiselect`,
|
|
53
67
|
`rt-date-picker`, `rt-file-input`, `rt-rich-editor`, `rt-field`), таблица с настройкой колонок и
|
|
54
68
|
пагинацией, панель правки записи с маршрутом и защитой несохранённого, диалоги, чат с композером,
|
|
55
|
-
календарь, шапка страницы с навигацией, тосты, просмотрщик
|
|
69
|
+
календарь, шапка страницы с навигацией, тосты, просмотрщик фотографий, показ размеченного текста
|
|
70
|
+
(`rt-markdown-text`) и остальное.
|
|
56
71
|
|
|
57
72
|
**Дизайн-система** — `src/styles`:
|
|
58
73
|
|
|
74
|
+
- `tokens.source.mjs` — вход источника: ступени шкал, назначения и ответ тёмной темы рядом со
|
|
75
|
+
своим назначением. Сами узлы лежат частями рядом — `tokens.scale-*.mjs` для шкал,
|
|
76
|
+
`tokens.light-*.mjs` для назначений, `tokens.dark-layout.mjs` и `tokens.coarse-pointer.mjs`
|
|
77
|
+
для порядка тёмного файла и грубого указателя, — а вход складывает их в два ряда. Три файла
|
|
78
|
+
ниже и имена в `src/lib/tokens/rt-design-tokens.ts` собираются отсюда командой
|
|
79
|
+
`pnpm run build:tokens-source` и руками не правятся;
|
|
59
80
|
- `_primitives.scss` — шкалы: нейтральные и цветные ряды, отступы, радиусы, тени, типографика;
|
|
60
81
|
- `_semantic.scss` — назначения поверх шкал (`--rt-color-bg-surface`, `--rt-color-text-muted`);
|
|
61
82
|
- `_theme-dark.scss` — переопределения назначений для `[data-theme='dark']`;
|
|
83
|
+
- `_theme-dark-rules.scss` — правила тёмной темы, которые свойств не объявляют: подложка экранов
|
|
84
|
+
входа и инверсия логотипа;
|
|
62
85
|
- `_scrollbar.scss` — оформление полос прокрутки;
|
|
63
86
|
- `_breakpoints.scss` — SCSS-переменные порогов: свойства оформления в `@media` не работают,
|
|
64
87
|
поэтому пороги остаются переменными препроцессора;
|
|
@@ -84,19 +107,60 @@ export const appConfig: ApplicationConfig = {
|
|
|
84
107
|
отдаёт функцией-переводчиком:
|
|
85
108
|
|
|
86
109
|
```typescript
|
|
87
|
-
import { provideRtKitLabels,
|
|
110
|
+
import { provideRtKitLabels, TRtKitLabelKey, TRtKitLabelParams } from '@rt-tools/ui-kit-v2';
|
|
88
111
|
|
|
89
112
|
provideRtKitLabels({
|
|
90
|
-
translator: computed(() => (key:
|
|
113
|
+
translator: computed(() => (key: TRtKitLabelKey, params?: TRtKitLabelParams) => myDictionary(key, params)),
|
|
91
114
|
locale: myLocale, // Signal<string>; ею кит форматирует даты
|
|
92
115
|
});
|
|
93
116
|
```
|
|
94
117
|
|
|
95
118
|
Способ доставки — дело приложения: Transloco, `$localize`, собственный словарь. Кит знает
|
|
96
|
-
только ключи (`
|
|
119
|
+
только ключи (`TRtKitLabelKey` — перечень выводится из английского набора, поэтому опечатка не
|
|
97
120
|
доживает до рантайма) и то, что на них отвечают готовой строкой: подстановки вида `{{name}}`
|
|
98
121
|
переводчик делает сам. Подпись, которой он не дал, берётся английской — поштучно, не набором.
|
|
99
122
|
|
|
123
|
+
## Настройка компонента снаружи
|
|
124
|
+
|
|
125
|
+
Компонент не берёт ступень шкалы там, где рисует себя: между ступенью и местом употребления
|
|
126
|
+
стоит своё свойство компонента — `--rt-<блок>-<что>`. Объявлено оно в корне блока, значением по
|
|
127
|
+
умолчанию стоит та самая ступень, поэтому без единой строки от приложения кит выглядит так же,
|
|
128
|
+
как выглядел.
|
|
129
|
+
|
|
130
|
+
Своими свойствами покрыты четыре рода назначений:
|
|
131
|
+
|
|
132
|
+
| Род | Имя свойства | Где применяется |
|
|
133
|
+
| ------------- | ----------------------------------- | --------------------------------------------------------------- |
|
|
134
|
+
| скругление | `--rt-<блок>-*-radius` | рамка блока, пузырь, значок, плашка, кольцо аватара |
|
|
135
|
+
| тень | `--rt-<блок>-*-shadow` | карточка, панель в перекрытии, кольцо фокуса, приподнятая точка |
|
|
136
|
+
| толщина рамки | `--rt-<блок>-*-border-width` | обводка, разделитель строк, дорожка, полоса под вкладкой |
|
|
137
|
+
| длительность | `--rt-<блок>-*-transition-duration` | переход цвета, фона, размера и сдвига |
|
|
138
|
+
|
|
139
|
+
Отступ, кегль и габариты остаются на ступенях намеренно: роль отступа одним словом не
|
|
140
|
+
называется, и свойство под неё вышло бы именем места, а не именем роли.
|
|
141
|
+
|
|
142
|
+
Приложение переопределяет свойство правилом той же цели и большей силы — наследования тут мало,
|
|
143
|
+
объявление живёт на самом блоке:
|
|
144
|
+
|
|
145
|
+
```css
|
|
146
|
+
.my-app .rt-button {
|
|
147
|
+
--rt-btn-radius: 0;
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Часть, которую браузер уносит из поддерева блока — панель списка, меню, перетаскиваемая
|
|
152
|
+
строка, — объявляет свойство на себе, и целиться в неё надо тоже отдельно:
|
|
153
|
+
|
|
154
|
+
```css
|
|
155
|
+
.my-app .rt-select__panel {
|
|
156
|
+
--rt-select-panel-shadow: none;
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Что ни один компонент этот порядок не обошёл, проверяет `pnpm run check:tokens-styles`: ступень,
|
|
161
|
+
взятая в стилях компонента напрямую, роняет прогон. Показ на витрине — страница
|
|
162
|
+
`Foundation / Design Tokens / Component Props`.
|
|
163
|
+
|
|
100
164
|
## Свой логотип
|
|
101
165
|
|
|
102
166
|
`rt-logo` рисует то, что даст приложение: своих начертаний кит не везёт.
|
|
@@ -121,3 +185,19 @@ pnpm exec nx test @rt-tools/ui-kit-v2
|
|
|
121
185
|
pnpm exec nx lint @rt-tools/ui-kit-v2
|
|
122
186
|
pnpm exec stylelint "projects/ui-kit-v2/**/*.scss"
|
|
123
187
|
```
|
|
188
|
+
|
|
189
|
+
## Переход на слой каскада
|
|
190
|
+
|
|
191
|
+
Стили кита переехали в слой `rt-kit`, и это меняет вид у тех, кто настраивал кит поверх. Ошибки
|
|
192
|
+
сборки не будет — узнаётся глазами, поэтому названо здесь прямо.
|
|
193
|
+
|
|
194
|
+
- **Правило приложения теперь выигрывает у правила кита независимо от специфичности.** Место,
|
|
195
|
+
где кит перебивали поднятой специфичностью или обходом чужой вёрстки, продолжит работать, но
|
|
196
|
+
надобности в этом больше нет: обычное правило сильнее любого правила из слоя.
|
|
197
|
+
- **Правило кита теперь проигрывает и чужой библиотеке, чей CSS объявлен вне слоя.** Тема
|
|
198
|
+
редактора текста подключается в подслой `vendor` — импортом с именем подслоя; подключённая
|
|
199
|
+
мимо, она перестраивает панель редактора.
|
|
200
|
+
- **Кит больше не настаивает на своём восклицательным знаком.** Таблица в карточном виде
|
|
201
|
+
перестала перебивать `min-width` приложения: приложению, которому нужен и горизонтальный
|
|
202
|
+
скролл, и карточный вид, остаётся сузить свой селектор до широкого экрана.
|
|
203
|
+
|