Add AutoRobot directory with Windows line endings
This commit is contained in:
13
AutoRobot/Windows/Robot/Web/src/styles/index.css
Normal file
13
AutoRobot/Windows/Robot/Web/src/styles/index.css
Normal file
@@ -0,0 +1,13 @@
|
||||
/* 共享样式入口文件 */
|
||||
|
||||
/* 基础变量 */
|
||||
@import './variables.css';
|
||||
|
||||
/* 自定义工具类 */
|
||||
@import './utilities.css';
|
||||
|
||||
/* 面板组件共享样式 */
|
||||
@import './panel-shared.css';
|
||||
|
||||
/* 任务栏组件共享样式 */
|
||||
@import './taskbar-shared.css';
|
||||
313
AutoRobot/Windows/Robot/Web/src/styles/panel-shared.css
Normal file
313
AutoRobot/Windows/Robot/Web/src/styles/panel-shared.css
Normal file
@@ -0,0 +1,313 @@
|
||||
/* 面板组件共享样式 */
|
||||
|
||||
/* 引入变量文件 */
|
||||
@import './variables.css';
|
||||
|
||||
/* 面板基础样式 */
|
||||
.dock-panel {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
background-color: var(--color-background);
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
/* 面板标题栏样式 */
|
||||
.dock-panel-titlebar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 var(--spacing-md);
|
||||
height: var(--panel-titlebar-height);
|
||||
background-color: var(--color-background-secondary);
|
||||
cursor: grab;
|
||||
user-select: none;
|
||||
font-size: var(--font-size-sm);
|
||||
font-weight: 500;
|
||||
transition: all var(--transition-fast);
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.dock-panel-titlebar:hover {
|
||||
background-color: var(--color-background-tertiary);
|
||||
}
|
||||
|
||||
.dock-panel-titlebar:active {
|
||||
cursor: grabbing;
|
||||
}
|
||||
|
||||
/* 面板内容区域样式 */
|
||||
.dock-panel-content {
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
/* 面板图标样式 */
|
||||
.dock-panel-icon {
|
||||
font-size: var(--font-size-base);
|
||||
margin-right: 6px;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
|
||||
/* 面板标题样式 */
|
||||
.dock-panel-title {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
flex: 1;
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
|
||||
/* 面板操作按钮容器 */
|
||||
.dock-panel-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
/* 面板按钮基础样式 */
|
||||
.dock-panel-btn {
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: 2px 4px;
|
||||
border-radius: var(--panel-border-radius);
|
||||
color: var(--color-text-secondary);
|
||||
font-size: var(--font-size-xs);
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all var(--transition-fast);
|
||||
}
|
||||
|
||||
.dock-panel-btn:hover {
|
||||
background-color: var(--color-background-tertiary);
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
|
||||
/* 关闭按钮特殊样式 */
|
||||
.dock-panel-close-btn:hover {
|
||||
background-color: #ef4444 !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
/* 空面板内容样式 */
|
||||
.dock-panel-empty-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
color: var(--color-text-tertiary);
|
||||
font-size: var(--font-size-sm);
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
/* 面板位置相关样式 */
|
||||
.dock-panel-left, .dock-panel-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.dock-panel-top, .dock-panel-bottom {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* 位置相关面板样式 */
|
||||
.dock-panel-left {
|
||||
border-right: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.dock-panel-right {
|
||||
border-left: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.dock-panel-top {
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.dock-panel-bottom {
|
||||
border-top: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
/* 面板折叠状态样式 */
|
||||
.dock-panel-collapsed {
|
||||
background-color: var(--color-background-tertiary);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.dock-panel-collapsed .dock-panel-titlebar {
|
||||
padding: 0;
|
||||
min-width: 40px;
|
||||
min-height: 40px;
|
||||
background-color: var(--color-background-tertiary);
|
||||
z-index: var(--z-index-panel);
|
||||
}
|
||||
|
||||
.dock-panel-collapsed .dock-panel-content {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* 左侧/右侧面板折叠样式 */
|
||||
.dock-panel-left.collapsed, .dock-panel-right.collapsed {
|
||||
width: var(--panel-titlebar-height-collapsed);
|
||||
}
|
||||
|
||||
.dock-panel-left.collapsed .dock-panel-titlebar,
|
||||
.dock-panel-right.collapsed .dock-panel-titlebar {
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
width: 40px;
|
||||
}
|
||||
|
||||
/* 顶部/底部面板折叠样式 */
|
||||
.dock-panel-top.collapsed, .dock-panel-bottom.collapsed {
|
||||
height: var(--panel-titlebar-height-collapsed);
|
||||
}
|
||||
|
||||
.dock-panel-top.collapsed .dock-panel-titlebar,
|
||||
.dock-panel-bottom.collapsed .dock-panel-titlebar {
|
||||
justify-content: center;
|
||||
flex-direction: row;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
/* 折叠状态下的展开按钮 */
|
||||
.dock-panel-expand-btn {
|
||||
background: var(--color-background-secondary);
|
||||
border: 1px solid var(--color-border);
|
||||
cursor: pointer;
|
||||
padding: var(--spacing-sm);
|
||||
border-radius: var(--panel-border-radius);
|
||||
color: var(--color-text-primary);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all var(--transition-fast);
|
||||
}
|
||||
|
||||
.dock-panel-expand-btn:hover {
|
||||
background-color: var(--color-background-tertiary);
|
||||
border-color: var(--color-border-hover);
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
/* 面板区域容器样式 */
|
||||
.panel-area-left, .panel-area-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
.panel-area-top, .panel-area-bottom {
|
||||
display: flex;
|
||||
overflow: hidden;
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
/* 面板区域位置样式 */
|
||||
.panel-area-left {
|
||||
border-right: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.panel-area-right {
|
||||
border-left: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.panel-area-top {
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.panel-area-bottom {
|
||||
border-top: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
/* 面板分隔条样式 */
|
||||
.dock-panel-separator {
|
||||
background-color: var(--color-border);
|
||||
transition: background-color var(--transition-fast);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.dock-panel-separator:hover {
|
||||
background-color: var(--color-border-hover);
|
||||
}
|
||||
|
||||
/* 垂直分隔条(适用于上下方向面板之间) */
|
||||
.dock-panel-separator-vertical {
|
||||
width: var(--panel-separator-size);
|
||||
cursor: col-resize;
|
||||
z-index: var(--z-index-base);
|
||||
}
|
||||
|
||||
/* 水平分隔条(适用于左右方向面板之间) */
|
||||
.dock-panel-separator-horizontal {
|
||||
height: var(--panel-separator-size);
|
||||
cursor: row-resize;
|
||||
z-index: var(--z-index-base);
|
||||
}
|
||||
|
||||
/* 面板区域之间的分隔条 - 保持原始尺寸 */
|
||||
.dock-panel-container > div[class*="cursor-col-resize"],
|
||||
.dock-panel-container > div[class*="cursor-row-resize"] {
|
||||
background-color: var(--color-border);
|
||||
transition: background-color var(--transition-fast);
|
||||
}
|
||||
|
||||
/* 面板区域之间的分隔条 - 鼠标悬停效果 */
|
||||
.dock-panel-container > div[class*="cursor-col-resize"]:hover,
|
||||
.dock-panel-container > div[class*="cursor-row-resize"]:hover {
|
||||
background-color: var(--color-border-hover);
|
||||
}
|
||||
|
||||
/* 子面板之间的分隔条 - 使用更小的尺寸 */
|
||||
.panel-area-left .dock-panel-separator-horizontal,
|
||||
.panel-area-right .dock-panel-separator-horizontal {
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
.panel-area-top .dock-panel-separator-vertical,
|
||||
.panel-area-bottom .dock-panel-separator-vertical {
|
||||
width: 4px;
|
||||
}
|
||||
|
||||
/* 面板过渡动画 */
|
||||
.dock-panel-enter-active,
|
||||
.dock-panel-leave-active {
|
||||
transition: all var(--transition-normal);
|
||||
}
|
||||
|
||||
.dock-panel-enter-from,
|
||||
.dock-panel-leave-to {
|
||||
opacity: 0;
|
||||
transform: translateY(10px);
|
||||
}
|
||||
|
||||
/* 停靠预览动画 */
|
||||
@keyframes dockPreviewPulse {
|
||||
0% { opacity: 0.5; }
|
||||
50% { opacity: 0.7; }
|
||||
100% { opacity: 0.5; }
|
||||
}
|
||||
|
||||
.dock-preview {
|
||||
animation: dockPreviewPulse 1.5s infinite;
|
||||
}
|
||||
|
||||
/* 过渡动画通用类 */
|
||||
.panel-transition {
|
||||
transition: all var(--transition-fast) ease;
|
||||
}
|
||||
88
AutoRobot/Windows/Robot/Web/src/styles/taskbar-shared.css
Normal file
88
AutoRobot/Windows/Robot/Web/src/styles/taskbar-shared.css
Normal file
@@ -0,0 +1,88 @@
|
||||
/* 任务栏组件共享样式 */
|
||||
|
||||
/* 引入变量文件 */
|
||||
@import './variables.css';
|
||||
|
||||
/* 任务栏基础样式 */
|
||||
.taskbar {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: var(--taskbar-height);
|
||||
background-color: var(--color-background-secondary);
|
||||
color: var(--color-text-primary);
|
||||
padding: var(--spacing-sm);
|
||||
z-index: var(--z-index-taskbar);
|
||||
box-shadow: 0 -2px 8px var(--color-shadow);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
/* 任务栏项目样式 */
|
||||
.taskbar-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--spacing-sm);
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
background-color: var(--color-background-tertiary);
|
||||
border-radius: var(--panel-border-radius);
|
||||
cursor: pointer;
|
||||
font-size: var(--font-size-sm);
|
||||
transition: all var(--transition-fast);
|
||||
white-space: nowrap;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
.taskbar-item:hover {
|
||||
background-color: var(--color-background);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 2px 4px var(--color-shadow);
|
||||
}
|
||||
|
||||
/* 任务栏图标样式 */
|
||||
.taskbar-item-icon {
|
||||
font-size: var(--font-size-xs);
|
||||
}
|
||||
|
||||
/* 任务栏项目文本样式 */
|
||||
.taskbar-item-text {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
/* 最小化窗口任务栏样式 */
|
||||
.taskbar-minimized {
|
||||
background-color: var(--color-background-secondary);
|
||||
}
|
||||
|
||||
.taskbar-minimized:hover {
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
/* 任务栏项目激活状态 */
|
||||
.taskbar-item-active {
|
||||
background-color: var(--color-primary-light);
|
||||
border: 1px solid var(--color-primary);
|
||||
}
|
||||
|
||||
.taskbar-item-active:hover {
|
||||
background-color: var(--color-primary-light);
|
||||
}
|
||||
|
||||
/* 任务栏响应式调整 */
|
||||
@media (max-width: 768px) {
|
||||
.taskbar {
|
||||
height: calc(var(--taskbar-height) - 8px);
|
||||
padding: 2px;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.taskbar-item {
|
||||
padding: 4px 8px;
|
||||
font-size: var(--font-size-xs);
|
||||
max-width: 150px;
|
||||
}
|
||||
}
|
||||
91
AutoRobot/Windows/Robot/Web/src/styles/utilities.css
Normal file
91
AutoRobot/Windows/Robot/Web/src/styles/utilities.css
Normal file
@@ -0,0 +1,91 @@
|
||||
/* 自定义工具类 */
|
||||
|
||||
/* 引入变量文件 */
|
||||
@import './variables.css';
|
||||
|
||||
@layer utilities {
|
||||
.content-auto {
|
||||
content-visibility: auto;
|
||||
}
|
||||
|
||||
.text-shadow {
|
||||
text-shadow: 0 2px 4px var(--color-shadow);
|
||||
}
|
||||
|
||||
.text-shadow-lg {
|
||||
text-shadow: 0 4px 8px var(--color-shadow-lg);
|
||||
}
|
||||
|
||||
.transition-custom {
|
||||
transition: all var(--transition-custom);
|
||||
}
|
||||
|
||||
.transition-fast {
|
||||
transition: all var(--transition-fast);
|
||||
}
|
||||
|
||||
.transition-slow {
|
||||
transition: all var(--transition-slow);
|
||||
}
|
||||
|
||||
/* 自定义滚动条样式 */
|
||||
.scrollbar-thin {
|
||||
scrollbar-width: thin;
|
||||
}
|
||||
|
||||
.scrollbar-thumb-primary {
|
||||
scrollbar-color: var(--color-primary-light) var(--color-background-secondary);
|
||||
}
|
||||
|
||||
.scrollbar-track-gray-100 {
|
||||
scrollbar-track-color: var(--color-background-secondary);
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar {
|
||||
width: var(--scrollbar-width);
|
||||
height: var(--scrollbar-height);
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-track {
|
||||
background: var(--color-background-secondary);
|
||||
border-radius: var(--panel-border-radius);
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-thumb {
|
||||
background-color: var(--color-primary-light);
|
||||
border-radius: var(--panel-border-radius);
|
||||
}
|
||||
|
||||
.scrollbar-thin::-webkit-scrollbar-thumb:hover {
|
||||
background-color: var(--color-primary-hover);
|
||||
}
|
||||
|
||||
/* 响应式工具类 */
|
||||
.card-hover-effect {
|
||||
@apply transition-all duration-300 hover:shadow-xl hover:-translate-y-1;
|
||||
}
|
||||
|
||||
.btn-primary-effect {
|
||||
@apply transition-all duration-300 hover:shadow-lg hover:-translate-y-0.5 active:translate-y-0 active:shadow-md;
|
||||
}
|
||||
|
||||
.backdrop-blur-sm {
|
||||
backdrop-filter: blur(4px);
|
||||
-webkit-backdrop-filter: blur(4px);
|
||||
}
|
||||
|
||||
.backdrop-blur-md {
|
||||
backdrop-filter: blur(8px);
|
||||
-webkit-backdrop-filter: blur(8px);
|
||||
}
|
||||
|
||||
.backdrop-blur-lg {
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
}
|
||||
|
||||
/* 自定义表格样式 */
|
||||
.table-hover-effect {
|
||||
@apply transition-colors duration-200 hover:bg-gray-50;
|
||||
}
|
||||
}
|
||||
67
AutoRobot/Windows/Robot/Web/src/styles/variables.css
Normal file
67
AutoRobot/Windows/Robot/Web/src/styles/variables.css
Normal file
@@ -0,0 +1,67 @@
|
||||
/* CSS变量定义 - 设计系统基础值 */
|
||||
|
||||
:root {
|
||||
/* 颜色变量 */
|
||||
--color-primary: #3b82f6;
|
||||
--color-primary-hover: rgba(59, 130, 246, 0.7);
|
||||
--color-primary-light: rgba(59, 130, 246, 0.3);
|
||||
|
||||
--color-background: #ffffff;
|
||||
--color-background-secondary: #f3f4f6;
|
||||
--color-background-tertiary: #e5e7eb;
|
||||
|
||||
--color-border: #e5e7eb;
|
||||
--color-border-hover: rgba(59, 130, 246, 0.3);
|
||||
|
||||
--color-text-primary: #1f2937;
|
||||
--color-text-secondary: #6b7280;
|
||||
--color-text-tertiary: #9ca3af;
|
||||
|
||||
--color-shadow: rgba(0, 0, 0, 0.1);
|
||||
--color-shadow-lg: rgba(0, 0, 0, 0.12);
|
||||
|
||||
/* 面板相关尺寸变量 */
|
||||
--min-panel-width: 180px;
|
||||
--min-panel-height: 100px;
|
||||
--min-panel-width-sm: 120px;
|
||||
--min-panel-height-sm: 80px;
|
||||
--panel-titlebar-height: 30px;
|
||||
--panel-titlebar-height-collapsed: 45px;
|
||||
--panel-separator-size: 8px;
|
||||
--panel-border-radius: 2px;
|
||||
|
||||
/* 任务栏尺寸变量 */
|
||||
--taskbar-height: 40px;
|
||||
|
||||
/* 动画过渡时间变量 */
|
||||
--transition-fast: 0.2s ease;
|
||||
--transition-normal: 0.3s ease;
|
||||
--transition-slow: 0.5s ease;
|
||||
--transition-custom: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
|
||||
/* 滚动条尺寸 */
|
||||
--scrollbar-width: 6px;
|
||||
--scrollbar-height: 6px;
|
||||
|
||||
/* 字体变量 */
|
||||
--font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
--font-family-mono: 'SF Mono', Monaco, Inconsolata, 'Roboto Mono', Consolas, 'Courier New', monospace;
|
||||
--font-size-xs: 10px;
|
||||
--font-size-sm: 12px;
|
||||
--font-size-base: 14px;
|
||||
--font-size-lg: 16px;
|
||||
|
||||
/* 间距变量 */
|
||||
--spacing-xs: 2px;
|
||||
--spacing-sm: 4px;
|
||||
--spacing-md: 8px;
|
||||
--spacing-lg: 12px;
|
||||
--spacing-xl: 16px;
|
||||
|
||||
/* Z-index层级变量 */
|
||||
--z-index-base: 1;
|
||||
--z-index-panel: 10;
|
||||
--z-index-dock-preview: 40;
|
||||
--z-index-taskbar: 50;
|
||||
--z-index-context-menu: 100;
|
||||
}
|
||||
Reference in New Issue
Block a user