chuijs 4.0.3 → 4.0.4
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/CHANGELOG.md +536 -0
- package/framework/appLayout/default/chui_app_layout.js +361 -303
- package/framework/appLayout/default/global_style.css +243 -89
- package/framework/appLayout/default/main_theme_style.css +188 -101
- package/framework/components/chui_accordion/accordion.js +17 -17
- package/framework/components/chui_accordion/styles.css +7 -7
- package/framework/components/chui_action_sheet/action_sheet.js +35 -32
- package/framework/components/chui_action_sheet/styles.css +10 -4
- package/framework/components/chui_actions_bar/actions_bar.js +338 -0
- package/framework/components/chui_actions_bar/styles.css +139 -0
- package/framework/components/chui_affix/affix.js +4 -4
- package/framework/components/chui_affix/styles.css +5 -0
- package/framework/components/chui_alert/alert.js +11 -5
- package/framework/components/chui_alert/styles.css +7 -0
- package/framework/components/chui_avatar/avatar.js +13 -13
- package/framework/components/chui_avatar/styles.css +1 -1
- package/framework/components/chui_avatar_group/avatar_group.js +4 -4
- package/framework/components/chui_avatar_group/styles.css +1 -1
- package/framework/components/chui_backtop/backtop.js +25 -2
- package/framework/components/chui_backtop/styles.css +21 -0
- package/framework/components/chui_badge/badge.js +15 -15
- package/framework/components/chui_badge/styles.css +6 -6
- package/framework/components/chui_banner/banner.js +222 -0
- package/framework/components/chui_banner/styles.css +170 -0
- package/framework/components/chui_breadcrumb/styles.css +1 -1
- package/framework/components/chui_button/button.js +24 -28
- package/framework/components/chui_button/styles.css +5 -5
- package/framework/components/chui_calendar/calendar.js +6 -6
- package/framework/components/chui_card/card.js +14 -14
- package/framework/components/chui_card_scroll/card_scroll.js +169 -0
- package/framework/components/chui_card_scroll/styles.css +86 -0
- package/framework/components/chui_chat/chat.js +73 -51
- package/framework/components/chui_chat/styles.css +18 -7
- package/framework/components/chui_clipboard_history/clipboard_history.js +25 -20
- package/framework/components/chui_clipboard_history/styles.css +10 -8
- package/framework/components/chui_code/code.js +8 -8
- package/framework/components/chui_code/styles.css +2 -2
- package/framework/components/chui_code_editor/code_editor.js +26 -26
- package/framework/components/chui_code_editor/styles.css +3 -3
- package/framework/components/chui_command_palette/command_palette.js +29 -29
- package/framework/components/chui_command_palette/styles.css +5 -5
- package/framework/components/chui_console/console.js +9 -9
- package/framework/components/chui_console/styles.css +5 -2
- package/framework/components/chui_content_block/content_block.js +2 -2
- package/framework/components/chui_context_menu/context_menu.js +162 -54
- package/framework/components/chui_context_menu/styles.css +82 -8
- package/framework/components/chui_custom_element/custom_element.js +11 -11
- package/framework/components/chui_data_grid/data_grid.js +268 -268
- package/framework/components/chui_data_grid/styles.css +14 -14
- package/framework/components/chui_descriptions/styles.css +1 -1
- package/framework/components/chui_details/details.js +12 -12
- package/framework/components/chui_details/styles.css +7 -7
- package/framework/components/chui_diff_viewer/diff_viewer.js +88 -88
- package/framework/components/chui_diff_viewer/styles.css +9 -9
- package/framework/components/chui_divider/divider.js +6 -6
- package/framework/components/chui_divider/styles.css +2 -2
- package/framework/components/chui_drawer/drawer.js +37 -14
- package/framework/components/chui_drawer/styles.css +18 -4
- package/framework/components/chui_drop_zone/drop_zone.js +6 -6
- package/framework/components/chui_drop_zone/styles.css +10 -6
- package/framework/components/chui_fieldset/fieldset.js +6 -6
- package/framework/components/chui_fieldset/styles.css +5 -5
- package/framework/components/chui_file_explorer/file_explorer.js +115 -115
- package/framework/components/chui_file_explorer/styles.css +6 -6
- package/framework/components/chui_form/form.js +11 -11
- package/framework/components/chui_gantt/gantt.js +41 -41
- package/framework/components/chui_gantt/styles.css +5 -5
- package/framework/components/chui_graphs/graphs.js +82 -46
- package/framework/components/chui_graphs/styles.css +26 -5
- package/framework/components/chui_hero/hero.js +63 -20
- package/framework/components/chui_hero/styles.css +176 -7
- package/framework/components/chui_html_block/html_block.js +5 -5
- package/framework/components/chui_html_block/styles.css +1 -1
- package/framework/components/chui_hx/styles.css +2 -2
- package/framework/components/chui_icons/icons.js +7 -7
- package/framework/components/chui_icons/styles.css +2 -1
- package/framework/components/chui_inputs/chui_check_box/styles.css +12 -3
- package/framework/components/chui_inputs/chui_chips/chips.js +92 -31
- package/framework/components/chui_inputs/chui_chips/styles.css +28 -5
- package/framework/components/chui_inputs/chui_color_picker/color_picker.js +20 -15
- package/framework/components/chui_inputs/chui_color_picker/styles.css +7 -7
- package/framework/components/chui_inputs/chui_combo_box/combo_box.js +58 -58
- package/framework/components/chui_inputs/chui_combo_box/styles.css +9 -9
- package/framework/components/chui_inputs/chui_date/date.js +93 -95
- package/framework/components/chui_inputs/chui_date/styles.css +8 -8
- package/framework/components/chui_inputs/chui_date_range/date_range.js +22 -22
- package/framework/components/chui_inputs/chui_date_range/styles.css +3 -3
- package/framework/components/chui_inputs/chui_datetime/datetime.js +12 -12
- package/framework/components/chui_inputs/chui_datetime/styles.css +3 -3
- package/framework/components/chui_inputs/chui_email/email.js +10 -10
- package/framework/components/chui_inputs/chui_email/styles.css +6 -6
- package/framework/components/chui_inputs/chui_file/file.js +8 -8
- package/framework/components/chui_inputs/chui_file/styles.css +12 -9
- package/framework/components/chui_inputs/chui_hotkey/hotkey.js +39 -39
- package/framework/components/chui_inputs/chui_hotkey/styles.css +6 -6
- package/framework/components/chui_inputs/chui_masked/masked.js +44 -44
- package/framework/components/chui_inputs/chui_masked/styles.css +5 -5
- package/framework/components/chui_inputs/chui_mention/mention.js +13 -13
- package/framework/components/chui_inputs/chui_mention/styles.css +14 -8
- package/framework/components/chui_inputs/chui_multi_combo_box/multi_combo_box.js +147 -137
- package/framework/components/chui_inputs/chui_multi_combo_box/styles.css +14 -8
- package/framework/components/chui_inputs/chui_number/number.js +42 -45
- package/framework/components/chui_inputs/chui_number/styles.css +6 -6
- package/framework/components/chui_inputs/chui_otp/otp.js +32 -32
- package/framework/components/chui_inputs/chui_otp/styles.css +5 -5
- package/framework/components/chui_inputs/chui_password/password.js +30 -36
- package/framework/components/chui_inputs/chui_password/styles.css +7 -7
- package/framework/components/chui_inputs/chui_radio_button/styles.css +2 -2
- package/framework/components/chui_inputs/chui_rating/rating.js +28 -28
- package/framework/components/chui_inputs/chui_rating/styles.css +3 -3
- package/framework/components/chui_inputs/chui_select_box/select_box.js +54 -54
- package/framework/components/chui_inputs/chui_select_box/styles.css +10 -10
- package/framework/components/chui_inputs/chui_slider/slider.js +14 -14
- package/framework/components/chui_inputs/chui_slider/styles.css +5 -4
- package/framework/components/chui_inputs/chui_text/styles.css +7 -7
- package/framework/components/chui_inputs/chui_text/text.js +13 -17
- package/framework/components/chui_inputs/chui_text_area/styles.css +8 -8
- package/framework/components/chui_inputs/chui_text_area/text_area.js +23 -23
- package/framework/components/chui_inputs/chui_time/styles.css +13 -17
- package/framework/components/chui_inputs/chui_time/time.js +35 -24
- package/framework/components/chui_inputs/chui_toggle/styles.css +10 -3
- package/framework/components/chui_inputs/chui_toggle/toggle.js +16 -16
- package/framework/components/chui_json_editor/json_editor.js +87 -87
- package/framework/components/chui_json_editor/styles.css +5 -5
- package/framework/components/chui_json_viewer/json_viewer.js +80 -80
- package/framework/components/chui_json_viewer/styles.css +6 -6
- package/framework/components/chui_kanban/kanban.js +27 -27
- package/framework/components/chui_kanban/styles.css +8 -4
- package/framework/components/chui_kbd/styles.css +1 -1
- package/framework/components/chui_label/label.js +17 -17
- package/framework/components/chui_label/styles.css +1 -1
- package/framework/components/chui_link/link.js +9 -9
- package/framework/components/chui_link/styles.css +11 -4
- package/framework/components/chui_list/list.js +11 -11
- package/framework/components/chui_list/styles.css +2 -2
- package/framework/components/chui_markdown_editor/markdown_editor.js +66 -66
- package/framework/components/chui_markdown_editor/styles.css +5 -5
- package/framework/components/chui_media/audio.js +240 -246
- package/framework/components/chui_media/audio_styles.css +41 -23
- package/framework/components/chui_media/image.js +49 -46
- package/framework/components/chui_media/image_compare.js +35 -35
- package/framework/components/chui_media/image_compare_styles.css +5 -5
- package/framework/components/chui_media/image_styles.css +1 -1
- package/framework/components/chui_media/video.js +148 -148
- package/framework/components/chui_media/video_styles.css +27 -11
- package/framework/components/chui_menu_bar/menu_bar.js +54 -54
- package/framework/components/chui_menu_bar/styles.css +10 -10
- package/framework/components/chui_message_bar/message_bar.js +551 -0
- package/framework/components/chui_message_bar/styles.css +248 -0
- package/framework/components/chui_modal/modal.js +37 -13
- package/framework/components/chui_notification/notification.js +76 -54
- package/framework/components/chui_notification/notification_download.js +26 -81
- package/framework/components/chui_notification/notification_download_card.js +115 -0
- package/framework/components/chui_notification/notification_download_progress.css +2 -2
- package/framework/components/chui_notification/notification_download_progress.js +70 -108
- package/framework/components/chui_notification/notification_update.js +31 -31
- package/framework/components/chui_notification/status_plate.css +3 -3
- package/framework/components/chui_notification/styles.css +6 -1
- package/framework/components/chui_notification/styles_download.css +1 -1
- package/framework/components/chui_notification/styles_update.css +2 -2
- package/framework/components/chui_org_chart/org_chart.js +29 -29
- package/framework/components/chui_org_chart/styles.css +2 -2
- package/framework/components/chui_pagination/pagination.js +3 -3
- package/framework/components/chui_pagination/styles.css +1 -1
- package/framework/components/chui_paragraph/styles.css +2 -2
- package/framework/components/chui_popover/popover.js +29 -23
- package/framework/components/chui_popover/styles.css +1 -1
- package/framework/components/chui_popups/popups.js +124 -124
- package/framework/components/chui_popups/styles.css +5 -5
- package/framework/components/chui_print_button/print_button.js +15 -10
- package/framework/components/chui_progress_bar/progress_bar.js +34 -12
- package/framework/components/chui_progress_bar/styles.css +4 -4
- package/framework/components/chui_progress_ring/progress_ring.js +15 -15
- package/framework/components/chui_progress_ring/styles.css +1 -1
- package/framework/components/chui_qrcode/qrcode.js +12 -12
- package/framework/components/chui_query_builder/query_builder.js +46 -46
- package/framework/components/chui_query_builder/styles.css +4 -4
- package/framework/components/chui_radio_group/styles.css +1 -1
- package/framework/components/chui_result/result.js +15 -15
- package/framework/components/chui_result/styles.css +3 -3
- package/framework/components/chui_scheduler/scheduler.js +74 -74
- package/framework/components/chui_scheduler/styles.css +5 -5
- package/framework/components/chui_screen_spinner/screen_spinner.js +167 -0
- package/framework/components/chui_screen_spinner/styles.css +49 -0
- package/framework/components/chui_segmented_control/segmented_control.js +63 -6
- package/framework/components/chui_segmented_control/styles.css +32 -6
- package/framework/components/chui_settings/settings.js +45 -46
- package/framework/components/chui_settings/styles.css +4 -4
- package/framework/components/chui_shortcut_help/shortcut_help.js +32 -34
- package/framework/components/chui_sidebar_nav/sidebar_nav.js +98 -29
- package/framework/components/chui_sidebar_nav/styles.css +9 -3
- package/framework/components/chui_slideshow/slideshow.js +85 -85
- package/framework/components/chui_slideshow/styles.css +6 -6
- package/framework/components/chui_spinner/spinner.js +10 -10
- package/framework/components/chui_split_button/split_button.js +30 -12
- package/framework/components/chui_split_button/styles.css +21 -5
- package/framework/components/chui_splitter/splitter.js +11 -11
- package/framework/components/chui_splitter/styles.css +2 -2
- package/framework/components/chui_statistic/statistic.js +47 -47
- package/framework/components/chui_status_bar/styles.css +2 -2
- package/framework/components/chui_stepper/stepper.js +202 -31
- package/framework/components/chui_stepper/styles.css +79 -14
- package/framework/components/chui_sticky_bar/sticky_bar.js +44 -13
- package/framework/components/chui_sticky_bar/styles.css +10 -8
- package/framework/components/chui_tabs/chui_tabs.js +74 -26
- package/framework/components/chui_tabs/styles.css +40 -12
- package/framework/components/chui_text_editor/styles.css +7 -7
- package/framework/components/chui_text_editor/text_editor.js +56 -56
- package/framework/components/chui_text_editor/text_editor_panel.js +173 -174
- package/framework/components/chui_theme_toggle/theme_toggle.js +21 -5
- package/framework/components/chui_timeline/styles.css +3 -1
- package/framework/components/chui_toast_queue/styles.css +11 -11
- package/framework/components/chui_toast_queue/toast_queue.js +30 -27
- package/framework/components/chui_toolbar/styles.css +2 -2
- package/framework/components/chui_tooltip/styles.css +2 -2
- package/framework/components/chui_tooltip/tooltip.js +3 -3
- package/framework/components/chui_tour/styles.css +8 -8
- package/framework/components/chui_tour/tour.js +72 -72
- package/framework/components/chui_transfer/styles.css +6 -6
- package/framework/components/chui_transfer/transfer.js +93 -106
- package/framework/components/chui_tree_table/styles.css +4 -4
- package/framework/components/chui_tree_table/tree_table.js +45 -45
- package/framework/components/chui_tree_view/styles.css +10 -8
- package/framework/components/chui_tree_view/tree_view.js +185 -183
- package/framework/components/chui_user_bar/styles.css +145 -0
- package/framework/components/chui_user_bar/user_bar.js +402 -0
- package/framework/components/chui_user_list_bar/styles.css +173 -0
- package/framework/components/chui_user_list_bar/user_list_bar.js +485 -0
- package/framework/components/chui_watermark/watermark.js +17 -17
- package/framework/components/chui_webview/webview.js +9 -9
- package/framework/components/chui_write_bar/styles.css +172 -0
- package/framework/components/chui_write_bar/write_bar.js +320 -0
- package/framework/main_window.js +1234 -0
- package/framework/modules/chui_a11y/chui_a11y.js +78 -79
- package/framework/modules/chui_animations/animations.js +77 -15
- package/framework/modules/chui_animations/motion.js +120 -0
- package/framework/modules/chui_animations/styles.css +36 -3
- package/framework/modules/chui_functions.js +31 -27
- package/framework/modules/chui_highlight/styles.css +13 -10
- package/framework/modules/chui_i18n/chui_i18n.js +3 -3
- package/framework/modules/chui_i18n/locales/feedback.js +62 -0
- package/framework/modules/chui_i18n/locales/navigation.js +4 -0
- package/framework/modules/chui_json/chui_json.js +2 -2
- package/framework/modules/chui_logger/chui_logger.js +23 -8
- package/framework/modules/chui_page/page.js +10 -10
- package/framework/modules/chui_palette/palette.js +61 -0
- package/framework/modules/chui_qr/chui_qr.js +23 -23
- package/framework/modules/chui_scrollbar/chui_scrollbar.js +45 -45
- package/framework/modules/chui_scrollbar/styles.css +3 -3
- package/framework/modules/chui_services/chui_services.js +8 -8
- package/framework/modules/chui_services/desktop.js +77 -71
- package/framework/modules/chui_sortable/chui_sortable.js +17 -17
- package/framework/modules/chui_validate/chui_validate.js +3 -3
- package/framework/tray_bar/chui_menu_items.js +2 -2
- package/index.d.ts +266 -34
- package/index.js +20 -1168
- package/package.json +6 -4
- package/framework/components/telegram_bot/chui_telegram_bot.js +0 -191
|
@@ -37,7 +37,11 @@
|
|
|
37
37
|
он дорого (композитинг всего, что под слоем). Насыщенность оставлена: она и даёт
|
|
38
38
|
ощущение стекла, а не серой плёнки. */
|
|
39
39
|
--global_blur: saturate(180%) blur(20px);
|
|
40
|
+
/* Отступ поверхности (карточка, панель, список): 8px по вертикали, 13px по горизонтали.
|
|
41
|
+
Значение держит прежнее имя --main_padding, новое --block_padding читает его:
|
|
42
|
+
чужие стили правят ключ по имени, и переименование не должно их отключать. */
|
|
40
43
|
--main_padding: calc(8px * var(--density)) calc(13px * var(--density));
|
|
44
|
+
--block_padding: var(--main_padding);
|
|
41
45
|
/* Отступ внутри контрола — 8px по всем сторонам: пара к --control_width.
|
|
42
46
|
Прежнее имя --test_padding оставлено псевдонимом: оно попало в документацию и в
|
|
43
47
|
чужие проекты, поэтому убираем его отдельным шагом, а не молча ломаем вёрстку. */
|
|
@@ -46,10 +50,11 @@
|
|
|
46
50
|
|
|
47
51
|
/* Компактный шаг контрола — для кнопки и полей ввода. 5px по вертикали дают 29px высоты
|
|
48
52
|
(строка 17 + отступы 10 + 2 черты при `box-sizing: border-box`), то есть тот же шаг,
|
|
49
|
-
что у кнопок шапки (30px). Общие --
|
|
53
|
+
что у кнопок шапки (30px). Общие --block_padding/--control_padding трогать нельзя:
|
|
50
54
|
их берут ещё 43 файла поверхностей и списков, где 8px и есть нужная плотность,
|
|
51
55
|
поэтому контролы задают себе компактные значения локально у своего корня. */
|
|
52
56
|
--main_padding_sm: calc(5px * var(--density)) calc(11px * var(--density));
|
|
57
|
+
--block_padding_sm: var(--main_padding_sm);
|
|
53
58
|
--control_padding_sm: calc(5px * var(--density));
|
|
54
59
|
/* Высота контрола одним числом: её берут те поля, у которых высота не следует
|
|
55
60
|
из содержимого (chips, color_picker, hotkey, masked, date, time) */
|
|
@@ -61,17 +66,18 @@
|
|
|
61
66
|
До неё плееры держали числа у себя (30/36 px у кнопки, 24/30 px у глифов) */
|
|
62
67
|
--player_control_size: calc(32px * var(--density));
|
|
63
68
|
--player_play_size: calc(36px * var(--density));
|
|
64
|
-
/* Глифы панели: глиф меньше кнопки — кнопка читается площадкой, а не рамкой
|
|
69
|
+
/* Глифы панели: глиф меньше кнопки — кнопка читается площадкой, а не рамкой значка.
|
|
70
|
+
Размер берут стили плееров (`font-size` у кнопки), а значок его наследует: одно число
|
|
71
|
+
на оба плеера. Прежде оно было вписано числом в код (пять мест) */
|
|
65
72
|
--player_icon_size: 18px;
|
|
66
73
|
/* Высота полосы прогресса и дорожки громкости */
|
|
67
74
|
--player_track_height: 4px;
|
|
68
|
-
--player_row_height: calc(34px * var(--density));
|
|
69
|
-
/* Ползунок дорожек: белый круг в обеих схемах — он лежит и на акцентной заливке,
|
|
70
|
-
и на серой дорожке, а цвет подложки на нём пропадал (в тёмной схеме — чёрный блоб) */
|
|
71
|
-
--player_thumb_background: #ffffff;
|
|
72
75
|
--header_icon_size: 13pt;
|
|
73
76
|
--font_default_size: 14px;
|
|
74
77
|
--font_labels_size: 12px;
|
|
78
|
+
/* Моно-шрифт: семейство ставит `chui_fonts.installMono()`. Ключ общий, потому что
|
|
79
|
+
код рисуют несколько компонентов (вставка кода, редакторы, примеры в подписях) */
|
|
80
|
+
--font_mono: "chui_mono", monospace;
|
|
75
81
|
/* Дубль размера подписи: уведомление читается тем же кеглем. Алиас разрешается
|
|
76
82
|
на `:root`, поэтому локальное переопределение `--font_labels_size` его не меняет */
|
|
77
83
|
--font_notification_size: var(--font_labels_size);
|
|
@@ -84,7 +90,10 @@
|
|
|
84
90
|
--font_lead_size: 18px;
|
|
85
91
|
--font_display_size: 30px;
|
|
86
92
|
--button_text_color: var(--text_color);
|
|
93
|
+
/* Отступ между блоками. Значение держит прежнее имя --margin, новое --block_margin
|
|
94
|
+
читает его — по той же причине, что и у отступа поверхности. */
|
|
87
95
|
--margin: calc(6px * var(--density));
|
|
96
|
+
--block_margin: var(--margin);
|
|
88
97
|
/* Высота шапки: одна точка правды. От неё считаются отступ содержимого, положение
|
|
89
98
|
и отступы выдвижных панелей — раньше то же число было вписано в четырёх местах
|
|
90
99
|
(47px, 46px, 65px), и правка одного значения уводила панели.
|
|
@@ -93,31 +102,23 @@
|
|
|
93
102
|
47px = кнопка 30px + отступы 8px сверху и снизу + черта 1px. */
|
|
94
103
|
--header_height: calc(47px * var(--density));
|
|
95
104
|
/* Вертикальный отступ содержимого полосы: 30px кнопка + 8 сверху и снизу = 46px полосы.
|
|
96
|
-
Горизонтальные зазоры шапки — общий --
|
|
105
|
+
Горизонтальные зазоры шапки — общий --block_margin. */
|
|
97
106
|
--header_margin: calc(8px * var(--density));
|
|
98
107
|
|
|
99
108
|
/* Скругления: контролы — radius_sm, поверхности — radius_md, капсулы — pill.
|
|
100
109
|
Отдельного «среднего» значения больше нет: 10px рядом с 8 и 12 не читались как
|
|
101
110
|
система, а выглядели как случайный набор. */
|
|
102
|
-
--border_radius: var(--radius_sm);
|
|
103
111
|
--radius_sm: 8px;
|
|
104
112
|
--radius_md: 12px;
|
|
105
113
|
--radius_pill: 999px;
|
|
106
114
|
--radius_circle: 50%;
|
|
115
|
+
/* Прежнее имя малого скругления: было --border_radius без шкалы в названии. Внутри
|
|
116
|
+
стили читают --radius_sm, чужой ключ остаётся псевдонимом и уйдёт отдельным шагом. */
|
|
117
|
+
--border_radius: var(--radius_sm);
|
|
107
118
|
|
|
108
119
|
/* Ширина управляющих элементов */
|
|
109
120
|
--control_width: 200px;
|
|
110
121
|
|
|
111
|
-
/* Тени: три уровня — контактный (main), всплывающий (drop) и модальный (modal).
|
|
112
|
-
Форма одна на всю оболочку: два слоя с большим разлётом и малым процентом — тень
|
|
113
|
-
читается как мягкое затемнение под элементом, а не как обводка. Одиночный слой с
|
|
114
|
-
малым разлётом читался именно обводкой, а резкие тени (20–40%) — как грязь на карточках.
|
|
115
|
-
В тёмной схеме та же форма с большими процентами: чёрная тень на почти чёрной
|
|
116
|
-
подложке иначе не видна (см. main_theme_style.css). */
|
|
117
|
-
--box_shadow_main: 0 1px 2px rgb(0 0 0 / 4%), 0 3px 10px rgb(0 0 0 / 5%);
|
|
118
|
-
--box_shadow_drop: 0 2px 6px rgb(0 0 0 / 5%), 0 14px 36px rgb(0 0 0 / 9%);
|
|
119
|
-
--box_shadow_modal: 0 4px 12px rgb(0 0 0 / 6%), 0 28px 72px rgb(0 0 0 / 14%);
|
|
120
|
-
|
|
121
122
|
/* Фокус. Кольцо одно на всю оболочку: `--focus_outline` для обычных
|
|
122
123
|
элементов и `--focus_outline_offset_inset` — для тех, кого обрезает
|
|
123
124
|
контейнер (ячейка сетки, журнал чата, строки листа действий). */
|
|
@@ -125,11 +126,26 @@
|
|
|
125
126
|
--focus_outline_offset: 2px;
|
|
126
127
|
--focus_outline_offset_inset: -2px;
|
|
127
128
|
|
|
128
|
-
/*
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
/* Движение: три длительности и три кривые — один набор на всё приложение.
|
|
130
|
+
Длительность выбирается по роли, а не «на глаз»: состояния (наведение, нажатие,
|
|
131
|
+
фокус) быстрые, появление и перемещение — базовые, крупные поверхности (ящик,
|
|
132
|
+
шторка, полоса меню) медленные. Уход короче входа: покачивание на выходе задерживало
|
|
133
|
+
бы следующий экран.
|
|
134
|
+
Кривые: `--motion_ease` тормозит к покою (вход и перемещение читаются как отклик),
|
|
135
|
+
`--motion_ease_in_out` — для обратимых ходов (высота раскрытия, уход карточки),
|
|
136
|
+
`--motion_spring` даёт лёгкий перелёт на отклике (появление меню и диалога).
|
|
137
|
+
Прежние имена оставлены псевдонимами: они разошлись по стилям и документации. */
|
|
138
|
+
--motion_fast: 0.15s;
|
|
139
|
+
--motion_base: 0.25s;
|
|
140
|
+
--motion_slow: 0.4s;
|
|
141
|
+
--motion_ease: cubic-bezier(0.32, 0.72, 0, 1);
|
|
142
|
+
--motion_ease_in_out: cubic-bezier(0.4, 0, 0.2, 1);
|
|
143
|
+
--motion_spring: cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
144
|
+
/* Переключатель состояния без движения: у `visibility` время нулевое, а всё движение
|
|
145
|
+
несёт соседнее свойство — так узел появляется сразу, а исчезает только после ухода */
|
|
146
|
+
--motion_none: 0s;
|
|
147
|
+
--transition_time: var(--motion_fast);
|
|
148
|
+
--ease_out: var(--motion_ease);
|
|
133
149
|
|
|
134
150
|
/* Схема нативных частей: палитры приложения разложены по prefers-color-scheme,
|
|
135
151
|
поэтому браузер должен рисовать и родные части (каретка, выделение, системные
|
|
@@ -149,6 +165,67 @@ html {
|
|
|
149
165
|
background: var(--main_background);
|
|
150
166
|
}
|
|
151
167
|
|
|
168
|
+
/* Вложенная поверхность. Контейнерные поверхности носят заливку карточки — и карточка тоже:
|
|
169
|
+
внутри карточки контейнер сливался с хозяином, и разделяла их только граница (шаг светлоты 0;
|
|
170
|
+
так в витрине выглядели SidebarNav, List, Toolbar, CodeEditor и остальные). Вложенный
|
|
171
|
+
контейнер берёт нейтральную заливку: на карточке это шаг светлоты 8.4 в тёмной схеме и 5.6
|
|
172
|
+
в светлой — не меньше, чем между подложкой и карточкой (7.7 и 4.4), а числа печатает
|
|
173
|
+
`npm run palette:check`. В обоих списках — контейнерные поверхности: то, что носит заливку
|
|
174
|
+
карточки и может оказаться внутри другого такого же. Своя заливка у контейнера остаётся:
|
|
175
|
+
на подложке он читается как карточка, и лишь вложенность опускает его на нейтральную ступень. */
|
|
176
|
+
:is(
|
|
177
|
+
chui_card,
|
|
178
|
+
chui_list,
|
|
179
|
+
chui_sidebar_nav,
|
|
180
|
+
chui_toolbar,
|
|
181
|
+
chui_status_bar,
|
|
182
|
+
chui_shortcut_help,
|
|
183
|
+
chui_clipboard_history,
|
|
184
|
+
chui_code_editor,
|
|
185
|
+
chui_json_viewer,
|
|
186
|
+
chui_tree_view,
|
|
187
|
+
chui_gantt,
|
|
188
|
+
chui_scheduler,
|
|
189
|
+
chui_splitter,
|
|
190
|
+
chui_drop_zone,
|
|
191
|
+
chui_statistic,
|
|
192
|
+
chui_alert,
|
|
193
|
+
chui_banner,
|
|
194
|
+
chui_actions_bar,
|
|
195
|
+
chui_user_bar,
|
|
196
|
+
write_bar_row,
|
|
197
|
+
chui_editor_controls,
|
|
198
|
+
.chui_code,
|
|
199
|
+
.settings_section
|
|
200
|
+
)
|
|
201
|
+
:is(
|
|
202
|
+
chui_card,
|
|
203
|
+
chui_list,
|
|
204
|
+
chui_sidebar_nav,
|
|
205
|
+
chui_toolbar,
|
|
206
|
+
chui_status_bar,
|
|
207
|
+
chui_shortcut_help,
|
|
208
|
+
chui_clipboard_history,
|
|
209
|
+
chui_code_editor,
|
|
210
|
+
chui_json_viewer,
|
|
211
|
+
chui_tree_view,
|
|
212
|
+
chui_gantt,
|
|
213
|
+
chui_scheduler,
|
|
214
|
+
chui_splitter,
|
|
215
|
+
chui_drop_zone,
|
|
216
|
+
chui_statistic,
|
|
217
|
+
chui_alert,
|
|
218
|
+
chui_banner,
|
|
219
|
+
chui_actions_bar,
|
|
220
|
+
chui_user_bar,
|
|
221
|
+
write_bar_row,
|
|
222
|
+
chui_editor_controls,
|
|
223
|
+
.chui_code,
|
|
224
|
+
.settings_section
|
|
225
|
+
) {
|
|
226
|
+
background: var(--element_background);
|
|
227
|
+
}
|
|
228
|
+
|
|
152
229
|
/* Коробки полей ввода. У внутреннего `input` своей рамки нет, а общее правило фокуса его
|
|
153
230
|
намеренно исключает (`:not(input)` — у полей рисуется системная рамка), поэтому активное
|
|
154
231
|
поле было видно только по карету. Наведение и фокус описаны одним правилом на список
|
|
@@ -263,7 +340,7 @@ chui_error_message {
|
|
|
263
340
|
display: block;
|
|
264
341
|
color: var(--red_prime_background);
|
|
265
342
|
font-size: var(--font_labels_size);
|
|
266
|
-
margin: var(--
|
|
343
|
+
margin: var(--block_margin);
|
|
267
344
|
}
|
|
268
345
|
|
|
269
346
|
/* Активный пункт меню/опции при навигации с клавиатуры — совпадает с :hover.
|
|
@@ -283,14 +360,18 @@ chui_error_message {
|
|
|
283
360
|
font-style: normal;
|
|
284
361
|
user-select: none;
|
|
285
362
|
outline: none;
|
|
363
|
+
/* Движение по умолчанию: цвет, тень и яркость — быстрые состояния, прозрачность и
|
|
364
|
+
перемещение — базовые. Кривая одна (торможение к покою), поэтому один и тот же жест
|
|
365
|
+
в разных местах читается одинаково, а свои списки ниже только уточняют его */
|
|
286
366
|
transition:
|
|
287
|
-
background-color var(--
|
|
288
|
-
color var(--
|
|
289
|
-
border-color var(--
|
|
290
|
-
box-shadow var(--
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
367
|
+
background-color var(--motion_fast) var(--motion_ease),
|
|
368
|
+
color var(--motion_fast) var(--motion_ease),
|
|
369
|
+
border-color var(--motion_fast) var(--motion_ease),
|
|
370
|
+
box-shadow var(--motion_fast) var(--motion_ease),
|
|
371
|
+
filter var(--motion_fast) var(--motion_ease),
|
|
372
|
+
opacity var(--motion_base) var(--motion_ease),
|
|
373
|
+
transform var(--motion_base) var(--motion_ease);
|
|
374
|
+
animation-duration: var(--motion_base);
|
|
294
375
|
position: relative;
|
|
295
376
|
font-size: var(--font_default_size);
|
|
296
377
|
line-height: normal;
|
|
@@ -302,23 +383,36 @@ chui_error_message {
|
|
|
302
383
|
user-select: none;
|
|
303
384
|
outline: none;
|
|
304
385
|
transition:
|
|
305
|
-
background-color var(--
|
|
306
|
-
color var(--
|
|
307
|
-
border-color var(--
|
|
308
|
-
box-shadow var(--
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
386
|
+
background-color var(--motion_fast) var(--motion_ease),
|
|
387
|
+
color var(--motion_fast) var(--motion_ease),
|
|
388
|
+
border-color var(--motion_fast) var(--motion_ease),
|
|
389
|
+
box-shadow var(--motion_fast) var(--motion_ease),
|
|
390
|
+
filter var(--motion_fast) var(--motion_ease),
|
|
391
|
+
opacity var(--motion_base) var(--motion_ease),
|
|
392
|
+
transform var(--motion_base) var(--motion_ease);
|
|
393
|
+
animation-duration: var(--motion_base);
|
|
312
394
|
position: relative;
|
|
313
395
|
font-size: var(--font_default_size);
|
|
314
396
|
line-height: normal;
|
|
315
397
|
}
|
|
316
398
|
|
|
399
|
+
/* Смена темы — кроссфейдом: браузер снимает страницу до и после смены и переводит один кадр
|
|
400
|
+
в другой (ведёт его служба темы, `crossFade` в `chui_animations/motion`). Своим переходом
|
|
401
|
+
смену схемы не показать: цвет приходит сменой `prefers-color-scheme`, а переходы на такое
|
|
402
|
+
изменение браузер не запускает (проверено замером — цвет подложки менялся кадром, хотя
|
|
403
|
+
класс с временем перехода на корне уже стоял). Время и кривая — из токенов движения:
|
|
404
|
+
смена схемы меняет цвет всего окна сразу, это крупная поверхность. При уменьшенном
|
|
405
|
+
движении кроссфейд не запускается вовсе — это решает JS. */
|
|
406
|
+
::view-transition-old(root),
|
|
407
|
+
::view-transition-new(root) {
|
|
408
|
+
animation-duration: var(--motion_slow, 0.4s);
|
|
409
|
+
animation-timing-function: var(--motion_ease, ease-out);
|
|
410
|
+
}
|
|
411
|
+
|
|
317
412
|
:root *:focus-visible:not(input):not(textarea):not(select):not([contenteditable="true"]) {
|
|
318
413
|
outline: var(--focus_outline);
|
|
319
414
|
outline-offset: var(--focus_outline_offset);
|
|
320
415
|
}
|
|
321
|
-
|
|
322
416
|
/* Кольцо изнутри — там, где внешний контур срезает край контейнера с
|
|
323
417
|
`overflow: hidden` или прокруткой: ячейка сетки уезжает под закреплённые
|
|
324
418
|
колонки, журнал чата и строки листа действий лежат в обрезанной коробке.
|
|
@@ -330,6 +424,9 @@ chui_error_message {
|
|
|
330
424
|
data_grid_cell,
|
|
331
425
|
chat_log,
|
|
332
426
|
chat_input,
|
|
427
|
+
message_bar_feed,
|
|
428
|
+
user_list_bar_item,
|
|
429
|
+
chui_user_bar,
|
|
333
430
|
time_option,
|
|
334
431
|
action_sheet_action,
|
|
335
432
|
action_sheet_cancel
|
|
@@ -469,7 +566,7 @@ header {
|
|
|
469
566
|
логическими свойствами, поэтому в RTL скругление зеркалится; верхние углы прямые —
|
|
470
567
|
их срезал бы композитор. */
|
|
471
568
|
align-items: start;
|
|
472
|
-
background-color: var(--
|
|
569
|
+
background-color: var(--bar_background);
|
|
473
570
|
backdrop-filter: var(--global_blur);
|
|
474
571
|
justify-content: space-between;
|
|
475
572
|
border-bottom: 1px solid var(--border_color);
|
|
@@ -533,7 +630,7 @@ notification_panel {
|
|
|
533
630
|
position: fixed;
|
|
534
631
|
top: calc(var(--header_height) - 1px);
|
|
535
632
|
inset-inline-end: 0;
|
|
536
|
-
padding: var(--
|
|
633
|
+
padding: var(--block_margin);
|
|
537
634
|
align-items: flex-end;
|
|
538
635
|
justify-content: flex-start;
|
|
539
636
|
z-index: 1001;
|
|
@@ -543,8 +640,10 @@ notification_panel {
|
|
|
543
640
|
chui_notification/styles.css): у всплывающей тени разлёт больше, и её обрезало бы
|
|
544
641
|
краем панели в серый прямоугольник под карточками. */
|
|
545
642
|
overflow: hidden auto;
|
|
546
|
-
max-height: calc(100% - var(--header_height) - 18px - (var(--
|
|
547
|
-
|
|
643
|
+
max-height: calc(100% - var(--header_height) - 18px - (var(--block_margin) * 2));
|
|
644
|
+
/* Раскрытие панели — обратимый ход по высоте, поэтому базовая длительность и мягкая кривая
|
|
645
|
+
с обеих сторон, а не быстрая кривая состояний */
|
|
646
|
+
transition: max-height var(--motion_base) var(--motion_ease_in_out);
|
|
548
647
|
}
|
|
549
648
|
|
|
550
649
|
app_menu {
|
|
@@ -554,11 +653,12 @@ app_menu {
|
|
|
554
653
|
justify-content: flex-start;
|
|
555
654
|
align-items: flex-start;
|
|
556
655
|
z-index: 1000;
|
|
557
|
-
margin: calc(var(--header_height) + (var(--
|
|
558
|
-
calc(var(--
|
|
656
|
+
margin: calc(var(--header_height) + (var(--block_margin) * 2)) calc(var(--block_margin) * 2)
|
|
657
|
+
calc(var(--block_margin) * 2) calc(var(--block_margin) * 2);
|
|
559
658
|
border-radius: var(--radius_md);
|
|
560
659
|
box-shadow: var(--box_shadow_drop);
|
|
561
|
-
|
|
660
|
+
/* Меню маршрутов — полоса оболочки: заливка — цвет подложки, а не карточки */
|
|
661
|
+
background: var(--bar_background);
|
|
562
662
|
backdrop-filter: var(--global_blur);
|
|
563
663
|
height: -webkit-fill-available;
|
|
564
664
|
width: -webkit-fill-available;
|
|
@@ -573,28 +673,29 @@ notification_box {
|
|
|
573
673
|
align-items: flex-start;
|
|
574
674
|
height: -webkit-fill-available;
|
|
575
675
|
z-index: 1000;
|
|
576
|
-
margin: calc(var(--header_height) + (var(--
|
|
577
|
-
calc(var(--
|
|
676
|
+
margin: calc(var(--header_height) + (var(--block_margin) * 2)) calc(var(--block_margin) * 2)
|
|
677
|
+
calc(var(--block_margin) * 2) calc(var(--block_margin) * 2);
|
|
578
678
|
border-radius: var(--radius_md);
|
|
579
679
|
box-shadow: var(--box_shadow_drop);
|
|
580
|
-
|
|
680
|
+
/* Ящик уведомлений — тоже полоса оболочки: заливка — цвет подложки */
|
|
681
|
+
background: var(--bar_background);
|
|
581
682
|
backdrop-filter: var(--global_blur);
|
|
582
683
|
width: -webkit-fill-available;
|
|
583
684
|
border: 1px solid var(--border_color);
|
|
584
685
|
}
|
|
585
686
|
|
|
586
|
-
/* Панели выезжают сдвигом (transform ставит JS), поэтому движение задано здесь явно и
|
|
587
|
-
кривой --
|
|
588
|
-
переходят как у всех
|
|
687
|
+
/* Панели выезжают сдвигом (transform ставит JS), поэтому движение задано здесь явно и
|
|
688
|
+
с кривой --motion_ease: выезд читается как отклик, а не как линейный сдвиг. Остальные
|
|
689
|
+
свойства переходят как у всех элементов, но с быстрой длительностью — это состояния. */
|
|
589
690
|
app_menu,
|
|
590
691
|
notification_box {
|
|
591
692
|
transition:
|
|
592
|
-
transform var(--
|
|
593
|
-
background-color var(--
|
|
594
|
-
color var(--
|
|
595
|
-
border-color var(--
|
|
596
|
-
box-shadow var(--
|
|
597
|
-
opacity var(--
|
|
693
|
+
transform var(--motion_base) var(--motion_ease),
|
|
694
|
+
background-color var(--motion_fast) var(--motion_ease),
|
|
695
|
+
color var(--motion_fast) var(--motion_ease),
|
|
696
|
+
border-color var(--motion_fast) var(--motion_ease),
|
|
697
|
+
box-shadow var(--motion_fast) var(--motion_ease),
|
|
698
|
+
opacity var(--motion_fast) var(--motion_ease);
|
|
598
699
|
}
|
|
599
700
|
|
|
600
701
|
/* Шапка ящика уведомлений: заголовок со счётчиком истории и действие «Очистить». */
|
|
@@ -603,7 +704,7 @@ notification_box_header {
|
|
|
603
704
|
flex-direction: row;
|
|
604
705
|
align-items: center;
|
|
605
706
|
justify-content: space-between;
|
|
606
|
-
gap: var(--
|
|
707
|
+
gap: var(--block_margin);
|
|
607
708
|
width: -webkit-fill-available;
|
|
608
709
|
padding-block: 10px 10px;
|
|
609
710
|
padding-inline: 14px 10px;
|
|
@@ -701,8 +802,10 @@ route_views > * {
|
|
|
701
802
|
}
|
|
702
803
|
|
|
703
804
|
/* Разделитель дней в истории: липнет к верху списка, пока видна его группа, поэтому день
|
|
704
|
-
остаётся названным и в середине длинной истории.
|
|
705
|
-
|
|
805
|
+
остаётся названным и в середине длинной истории. Подпись прозрачная полностью — ни заливки,
|
|
806
|
+
ни размытия: она не рисует полосу поверх списка, а только называет день. Текст — по центру
|
|
807
|
+
ящика. Из-за этого карточки при прокрутке проходят под подписью: это цена прозрачности,
|
|
808
|
+
прежде её закрывала заливка материала. */
|
|
706
809
|
notification_group {
|
|
707
810
|
position: sticky;
|
|
708
811
|
top: 0;
|
|
@@ -710,11 +813,12 @@ notification_group {
|
|
|
710
813
|
flex: none;
|
|
711
814
|
width: -webkit-fill-available;
|
|
712
815
|
padding: 8px 6px 6px;
|
|
713
|
-
background:
|
|
714
|
-
backdrop-filter:
|
|
816
|
+
background: transparent;
|
|
817
|
+
backdrop-filter: none;
|
|
715
818
|
color: var(--text_color_disabled);
|
|
716
819
|
font-size: var(--font_notification_size);
|
|
717
820
|
font-weight: 500;
|
|
821
|
+
text-align: center;
|
|
718
822
|
}
|
|
719
823
|
|
|
720
824
|
/* Отметка непрочитанного: точка в углу записи, пока ящик не открывали. Абсолютная, а не
|
|
@@ -746,6 +850,35 @@ notification_box_empty {
|
|
|
746
850
|
|
|
747
851
|
.notification_box_empty_visible {
|
|
748
852
|
display: flex;
|
|
853
|
+
/* Подсказка приходит движением: класс включает `display`, поэтому общий кадр
|
|
854
|
+
появления проигрывается заново, а не вспыхивает после очистки */
|
|
855
|
+
animation: chui_appear_up var(--motion_base) var(--motion_ease);
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
/*
|
|
859
|
+
* Очистка истории. Карточки уходят каскадом: номер в очереди ставит JS
|
|
860
|
+
* (`--notification_clear_index`), шаг — доля токена движения, поэтому весь список
|
|
861
|
+
* читается как рассыпающийся, а не выключенный одним щелчком. `forwards` держит
|
|
862
|
+
* конечное состояние, пока узел ещё в разметке: узел убирают по концу кадра.
|
|
863
|
+
*/
|
|
864
|
+
.notification_clearing {
|
|
865
|
+
animation: notification_clear var(--motion_fast) var(--motion_ease) forwards;
|
|
866
|
+
animation-delay: calc(var(--motion_fast) / 4 * var(--notification_clear_index, 0));
|
|
867
|
+
/* Уезжающая карточка уже не цель: иначе её можно было бы нажать на ходу */
|
|
868
|
+
pointer-events: none;
|
|
869
|
+
}
|
|
870
|
+
|
|
871
|
+
@keyframes notification_clear {
|
|
872
|
+
to {
|
|
873
|
+
opacity: 0;
|
|
874
|
+
transform: translateX(100%);
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
/* Уход подписи дня: она гаснет вместе с карточками, а не пропадает из-под них */
|
|
879
|
+
.notification_group_leaving {
|
|
880
|
+
animation: chui_leave_up var(--motion_fast) var(--motion_ease) forwards;
|
|
881
|
+
pointer-events: none;
|
|
749
882
|
}
|
|
750
883
|
|
|
751
884
|
/* Кнопки шапки — одна высота и один вертикальный отступ: 30 + 8 + 8 = 46px полосы.
|
|
@@ -768,19 +901,16 @@ notification_button {
|
|
|
768
901
|
высоты) — пилюля наведения казалась узкой. */
|
|
769
902
|
width: 30px;
|
|
770
903
|
border: none;
|
|
771
|
-
border-radius: var(--
|
|
904
|
+
border-radius: var(--radius_sm);
|
|
772
905
|
padding: 0;
|
|
773
906
|
margin-block: var(--header_margin) var(--header_margin);
|
|
774
907
|
/* Отступ справа такой же, как слева: справа от кнопки уведомлений стоит группа
|
|
775
908
|
кнопок окна с разделительной чертой (см. wc_box), и без своего отступа черта
|
|
776
909
|
прилипала к значку */
|
|
777
|
-
margin-inline: var(--
|
|
910
|
+
margin-inline: var(--block_margin) var(--block_margin);
|
|
778
911
|
background: transparent;
|
|
779
912
|
color: var(--text_color);
|
|
780
913
|
-webkit-app-region: no-drag;
|
|
781
|
-
transition:
|
|
782
|
-
background-color var(--transition_time) ease,
|
|
783
|
-
color var(--transition_time) ease;
|
|
784
914
|
}
|
|
785
915
|
|
|
786
916
|
notification_button:hover {
|
|
@@ -831,16 +961,13 @@ app_menu_button {
|
|
|
831
961
|
height: 30px;
|
|
832
962
|
width: 30px;
|
|
833
963
|
border: none;
|
|
834
|
-
border-radius: var(--
|
|
964
|
+
border-radius: var(--radius_sm);
|
|
835
965
|
padding: 0;
|
|
836
966
|
margin-block: var(--header_margin) var(--header_margin);
|
|
837
|
-
margin-inline: var(--
|
|
967
|
+
margin-inline: var(--block_margin) var(--block_margin);
|
|
838
968
|
background: transparent;
|
|
839
969
|
color: var(--text_color);
|
|
840
970
|
-webkit-app-region: no-drag;
|
|
841
|
-
transition:
|
|
842
|
-
background-color var(--transition_time) ease,
|
|
843
|
-
color var(--transition_time) ease;
|
|
844
971
|
}
|
|
845
972
|
|
|
846
973
|
app_menu_button:hover {
|
|
@@ -925,7 +1052,7 @@ page_name {
|
|
|
925
1052
|
border-radius: var(--radius_pill);
|
|
926
1053
|
padding: 0 12px;
|
|
927
1054
|
margin-block: var(--header_margin) var(--header_margin);
|
|
928
|
-
margin-inline: 0 var(--
|
|
1055
|
+
margin-inline: 0 var(--block_margin);
|
|
929
1056
|
font-size: var(--font_default_size);
|
|
930
1057
|
font-weight: 500;
|
|
931
1058
|
background: var(--element_background_disabled);
|
|
@@ -1056,7 +1183,7 @@ blockquote {
|
|
|
1056
1183
|
margin: 1.5em 10px;
|
|
1057
1184
|
padding: 9px 14px;
|
|
1058
1185
|
color: var(--text_color);
|
|
1059
|
-
border-radius: var(--
|
|
1186
|
+
border-radius: var(--radius_sm);
|
|
1060
1187
|
display: flex;
|
|
1061
1188
|
}
|
|
1062
1189
|
|
|
@@ -1092,10 +1219,10 @@ user_button {
|
|
|
1092
1219
|
width: max-content;
|
|
1093
1220
|
border: none;
|
|
1094
1221
|
color: var(--text_color);
|
|
1095
|
-
border-radius: var(--
|
|
1222
|
+
border-radius: var(--radius_sm);
|
|
1096
1223
|
padding: 5px 13px;
|
|
1097
1224
|
margin-block: var(--header_margin) var(--header_margin);
|
|
1098
|
-
margin-inline: var(--
|
|
1225
|
+
margin-inline: var(--block_margin) 0;
|
|
1099
1226
|
font-size: var(--font_default_size);
|
|
1100
1227
|
background: transparent;
|
|
1101
1228
|
font-weight: 500;
|
|
@@ -1138,7 +1265,7 @@ user_dropdown {
|
|
|
1138
1265
|
z-index: 1002;
|
|
1139
1266
|
flex-direction: column;
|
|
1140
1267
|
min-width: 165px;
|
|
1141
|
-
padding: var(--
|
|
1268
|
+
padding: var(--block_margin);
|
|
1142
1269
|
background: var(--header_background);
|
|
1143
1270
|
color: var(--text_color);
|
|
1144
1271
|
border: 1px solid var(--border_color);
|
|
@@ -1149,7 +1276,7 @@ user_dropdown {
|
|
|
1149
1276
|
}
|
|
1150
1277
|
|
|
1151
1278
|
/* Пункт — плоская строка в стиле context_menu_item / пункта меню-бара: синяя заливка
|
|
1152
|
-
ховера одна на всю семью меню, а размеры строки берутся из --
|
|
1279
|
+
ховера одна на всю семью меню, а размеры строки берутся из --block_padding. */
|
|
1153
1280
|
user_dropdown user_item {
|
|
1154
1281
|
color: var(--text_color);
|
|
1155
1282
|
display: flex;
|
|
@@ -1159,8 +1286,8 @@ user_dropdown user_item {
|
|
|
1159
1286
|
cursor: pointer;
|
|
1160
1287
|
text-align: start;
|
|
1161
1288
|
width: -webkit-fill-available;
|
|
1162
|
-
padding: var(--
|
|
1163
|
-
border-radius: var(--
|
|
1289
|
+
padding: var(--block_padding);
|
|
1290
|
+
border-radius: var(--radius_sm);
|
|
1164
1291
|
}
|
|
1165
1292
|
|
|
1166
1293
|
user_dropdown user_item:hover {
|
|
@@ -1205,10 +1332,10 @@ header_button {
|
|
|
1205
1332
|
height: calc(30px * var(--density));
|
|
1206
1333
|
width: max-content;
|
|
1207
1334
|
border: none;
|
|
1208
|
-
border-radius: var(--
|
|
1335
|
+
border-radius: var(--radius_sm);
|
|
1209
1336
|
padding: 5px 13px;
|
|
1210
1337
|
margin-block: var(--header_margin) var(--header_margin);
|
|
1211
|
-
margin-inline: var(--
|
|
1338
|
+
margin-inline: var(--block_margin) 0;
|
|
1212
1339
|
font-size: var(--font_default_size);
|
|
1213
1340
|
background: transparent;
|
|
1214
1341
|
color: var(--text_color);
|
|
@@ -1217,9 +1344,6 @@ header_button {
|
|
|
1217
1344
|
flex-direction: row;
|
|
1218
1345
|
align-items: center;
|
|
1219
1346
|
-webkit-app-region: no-drag;
|
|
1220
|
-
transition:
|
|
1221
|
-
background-color var(--transition_time) ease,
|
|
1222
|
-
color var(--transition_time) ease;
|
|
1223
1347
|
}
|
|
1224
1348
|
|
|
1225
1349
|
header_button header_button_title {
|
|
@@ -1285,9 +1409,6 @@ wc_minimize {
|
|
|
1285
1409
|
border-radius: var(--radius_sm);
|
|
1286
1410
|
background: transparent;
|
|
1287
1411
|
color: var(--text_color_disabled);
|
|
1288
|
-
transition:
|
|
1289
|
-
background-color var(--transition_time) ease,
|
|
1290
|
-
color var(--transition_time) ease;
|
|
1291
1412
|
}
|
|
1292
1413
|
|
|
1293
1414
|
/* Значки кнопок окна нарисованы линиями (SVG), а не взяты из шрифта иконок: три системные
|
|
@@ -1371,3 +1492,36 @@ header_tabs {
|
|
|
1371
1492
|
.header_tab_active header_button_icon chui_icon {
|
|
1372
1493
|
color: var(--link_color);
|
|
1373
1494
|
}
|
|
1495
|
+
|
|
1496
|
+
/* ── Появление строки в списке ─────────────────────────────── */
|
|
1497
|
+
/* Списки, которые наполняются по одной (журнал, чат, буфер обмена, лента), читаются
|
|
1498
|
+
растущим документом, если строка встаёт на место, а не возникает рывком. Кадр общий:
|
|
1499
|
+
одно движение на все списки, а время и кривая — из токенов движения */
|
|
1500
|
+
@keyframes chui_appear_up {
|
|
1501
|
+
from {
|
|
1502
|
+
opacity: 0;
|
|
1503
|
+
transform: translateY(6px);
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
/* Уход строки или слоя: гаснет и сходит вверх. Пара к `chui_appear_up`: узел убирается
|
|
1508
|
+
по концу кадра, а `forwards` держит конечное состояние, пока он ещё в документе */
|
|
1509
|
+
@keyframes chui_leave_up {
|
|
1510
|
+
to {
|
|
1511
|
+
opacity: 0;
|
|
1512
|
+
transform: translateY(-6px);
|
|
1513
|
+
}
|
|
1514
|
+
}
|
|
1515
|
+
|
|
1516
|
+
/* ── Появление всплывающей панели у триггера ───────────────── */
|
|
1517
|
+
/* Выпадающий список, меню и поповер читаются раскрывшимися у своего триггера, если панель
|
|
1518
|
+
приходит сверху вниз и чуть вырастает. Прежний `fade-in` менял только прозрачность —
|
|
1519
|
+
открытие получалось рывком.
|
|
1520
|
+
Конечное состояние не объявлено: панель возвращается к своим стилям, и вычисленный
|
|
1521
|
+
`transform` на ней не остаётся (иначе панель стала бы содержащим блоком для детей). */
|
|
1522
|
+
@keyframes chui_panel_in {
|
|
1523
|
+
from {
|
|
1524
|
+
opacity: 0;
|
|
1525
|
+
transform: translateY(-4px) scale(0.97);
|
|
1526
|
+
}
|
|
1527
|
+
}
|