feat(ui): confirm ending a show and surface help

End-session buttons, Escape, and window close share one confirm. Help is a question-mark icon on the control panel and after the version. About opens directly. Scene editor follows the UI language.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-10-02 08:10:54 +08:00
parent d228b9aab7
commit 060bbd471a
12 changed files with 245 additions and 176 deletions
@@ -1,6 +1,7 @@
import React from 'react';
import type { SceneToken } from '../../shared/types';
import { useEditorI18n } from '../editor/i18n/EditorI18nContext';
import { useTokenImageUrl } from '../shared/tokens/useTokenImageUrl';
import styles from './SceneEditorApp.module.css';
@@ -30,6 +31,7 @@ export function SceneTokenMarker({
onResizePointerDown,
onRotatePointerDown,
}: Props) {
const { t } = useEditorI18n();
const url = useTokenImageUrl(token.tokenId);
return (
<div
@@ -41,7 +43,7 @@ export function SceneTokenMarker({
height: sizePx,
transform: `translate(-50%, -50%) rotate(${String(token.rotationDeg)}deg)`,
}}
title="Перетащите · ПКМ — удалить"
title={t('sceneEditor.dragDelete')}
onContextMenu={onContextMenu}
onPointerDown={(e) => {
if (e.button !== 0) return;
@@ -56,8 +58,8 @@ export function SceneTokenMarker({
<button
type="button"
className={styles.rotateHandle}
aria-label="Повернуть"
title="Повернуть"
aria-label={t('sceneEditor.rotate')}
title={t('sceneEditor.rotate')}
onPointerDown={onRotatePointerDown}
>
↻