mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-20 07:40:35 +08:00
- 收敛左上角入口为工具和设置中心,并调整新建连接操作优先级 - 优化表设计器 SQL 预览高亮和刷新前未保存字段变更确认 - 下移数据页次级操作并将编辑行收口到单元格右键菜单 - 补充侧边栏布局、表设计器草稿检测和数据页布局回归测试 Refs #324
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import type { CSSProperties } from 'react';
|
|
|
|
export const SIDEBAR_UTILITY_ITEM_KEYS = ['tools', 'settings'] as const;
|
|
|
|
export type AIEntryPlacement = 'content-edge';
|
|
export type AIEdgeHandleAttachment = 'content-shell' | 'panel-shell';
|
|
|
|
export interface ResolveAIEdgeHandleStyleInput {
|
|
darkMode: boolean;
|
|
aiPanelVisible: boolean;
|
|
effectiveUiScale: number;
|
|
}
|
|
|
|
export const resolveAIEntryPlacement = (): AIEntryPlacement => 'content-edge';
|
|
|
|
export const resolveAIEdgeHandleAttachment = (
|
|
aiPanelVisible: boolean,
|
|
): AIEdgeHandleAttachment => (aiPanelVisible ? 'panel-shell' : 'content-shell');
|
|
|
|
export const resolveAIEdgeHandleDockStyle = (
|
|
attachment: AIEdgeHandleAttachment,
|
|
): CSSProperties => ({
|
|
position: 'absolute',
|
|
top: 16,
|
|
right: attachment === 'panel-shell' ? '100%' : 0,
|
|
zIndex: 12,
|
|
});
|
|
|
|
export const resolveAIEdgeHandleStyle = ({
|
|
darkMode,
|
|
aiPanelVisible,
|
|
effectiveUiScale,
|
|
}: ResolveAIEdgeHandleStyleInput): CSSProperties => {
|
|
const inactiveColor = darkMode ? 'rgba(255,255,255,0.86)' : 'rgba(22,32,51,0.82)';
|
|
const inactiveBackground = darkMode ? 'rgba(255,255,255,0.04)' : 'rgba(15,23,42,0.04)';
|
|
const inactiveBorder = darkMode ? 'rgba(255,255,255,0.08)' : 'rgba(15,23,42,0.08)';
|
|
|
|
return {
|
|
height: Math.max(24, Math.round(24 * effectiveUiScale)),
|
|
paddingInline: Math.max(8, Math.round(8 * effectiveUiScale)),
|
|
borderRadius: '10px 0 0 10px',
|
|
border: `1px solid ${aiPanelVisible ? (darkMode ? 'rgba(255,214,102,0.22)' : 'rgba(24,144,255,0.18)') : inactiveBorder}`,
|
|
borderRight: 'none',
|
|
background: aiPanelVisible ? (darkMode ? 'rgba(255,214,102,0.12)' : 'rgba(24,144,255,0.10)') : inactiveBackground,
|
|
color: aiPanelVisible ? (darkMode ? '#ffd666' : '#1677ff') : inactiveColor,
|
|
display: 'inline-flex',
|
|
alignItems: 'center',
|
|
justifyContent: 'center',
|
|
gap: Math.max(4, Math.round(4 * effectiveUiScale)),
|
|
fontSize: Math.max(12, Math.round(12 * effectiveUiScale)),
|
|
fontWeight: 600,
|
|
lineHeight: 1,
|
|
boxShadow: 'none',
|
|
backdropFilter: 'none',
|
|
WebkitBackdropFilter: 'none',
|
|
whiteSpace: 'nowrap',
|
|
flexShrink: 0,
|
|
};
|
|
};
|