Merge origin/master into feature/首页和下方的功能页面 - 解决冲突

This commit is contained in:
OmniAI Developer
2026-06-02 19:05:43 +08:00
27 changed files with 709 additions and 168 deletions
@@ -48,6 +48,7 @@
background: var(--surface-elevated);
box-shadow: var(--shadow-elevated);
backdrop-filter: none;
transform-origin: top right;
}
.profile-popover__head {
+107
View File
@@ -34,11 +34,118 @@
}
}
/* 260ms variant for carousel labels */
.slide-up-in-260 {
animation: slide-up-in 260ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
@keyframes backdrop-in {
from { opacity: 0; }
to { opacity: 1; }
}
/* Popover / panel entrance utilities */
.panel-enter {
animation: scale-in 150ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both,
slide-up-in 150ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.backdrop-enter {
animation: backdrop-in 140ms ease both;
}
/* Heart toggle spring animation */
@keyframes heart-pop {
0% { transform: scale(1); }
40% { transform: scale(1.3); }
70% { transform: scale(0.9); }
100% { transform: scale(1); }
}
.heart-animate {
animation: heart-pop 420ms var(--ease-spring, cubic-bezier(0.34, 1.2, 0.64, 1)) both;
}
/* Result reveal stagger for generation output grids */
.result-reveal > * {
opacity: 0;
animation: slide-up-in 320ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.result-reveal > *:nth-child(1) { animation-delay: 0ms; }
.result-reveal > *:nth-child(2) { animation-delay: 80ms; }
.result-reveal > *:nth-child(3) { animation-delay: 160ms; }
.result-reveal > *:nth-child(4) { animation-delay: 240ms; }
.result-reveal > *:nth-child(5) { animation-delay: 320ms; }
.result-reveal > *:nth-child(n+6) { animation-delay: 400ms; }
/* Scroll-triggered entrance: hidden until revealed by IntersectionObserver */
.scroll-entrance {
opacity: 0;
transform: translateY(16px);
transition: opacity 480ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
transform 480ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1));
}
.scroll-entrance.is-visible {
opacity: 1;
transform: translateY(0);
}
.scroll-entrance.is-visible > * {
animation: slide-up-in 380ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.scroll-entrance.is-visible > *:nth-child(1) { animation-delay: 60ms; }
.scroll-entrance.is-visible > *:nth-child(2) { animation-delay: 140ms; }
.scroll-entrance.is-visible > *:nth-child(3) { animation-delay: 220ms; }
/* Chat message entrance animation */
@keyframes chat-message-in {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.chat-message-enter {
animation: chat-message-in 220ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
/* AnimatedPanel: CSS transition-based enter/exit for popovers */
.animated-panel {
opacity: 0;
transform: scale(0.95) translateY(8px);
transition:
opacity 140ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
transform 140ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1));
pointer-events: none;
}
.animated-panel.is-visible {
opacity: 1;
transform: scale(1) translateY(0);
pointer-events: auto;
}
/* Ecommerce tool panel crossfade on tool switch */
@keyframes tool-panel-fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.tool-panel-enter {
animation: tool-panel-fade-in 180ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
/* Stagger utility: apply to parent, children get delayed entrance */
.motion-stagger > * {
animation: list-item-in 280ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
+53
View File
@@ -15,3 +15,56 @@
transform: translateY(0);
}
}
/* Directional page transitions */
.page-motion--enter.is-forward {
animation: page-slide-in-forward 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.page-motion--enter.is-backward {
animation: page-slide-in-backward 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.page-motion--exit.is-forward {
animation: page-slide-out-forward 180ms ease both;
}
.page-motion--exit.is-backward {
animation: page-slide-out-backward 180ms ease both;
}
@keyframes page-slide-in-forward {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes page-slide-in-backward {
from {
opacity: 0;
transform: translateX(-20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
@keyframes page-slide-out-forward {
to {
opacity: 0;
transform: translateX(-16px);
}
}
@keyframes page-slide-out-backward {
to {
opacity: 0;
transform: translateX(16px);
}
}
+6 -8
View File
@@ -29,7 +29,8 @@
width: 40%;
height: 24px;
border-radius: 8px;
background: var(--surface-elevated, #222);
background: linear-gradient(90deg, rgba(255,255,255,0.04), rgba(255,255,255,0.1), rgba(255,255,255,0.04));
background-size: 220% 100%;
animation: skeleton-shimmer 1.4s ease infinite;
}
@@ -42,7 +43,8 @@
flex: 1;
height: 140px;
border-radius: 14px;
background: var(--surface-elevated, #222);
background: linear-gradient(90deg, rgba(255,255,255,0.04), rgba(255,255,255,0.1), rgba(255,255,255,0.04));
background-size: 220% 100%;
animation: skeleton-shimmer 1.4s ease infinite;
animation-delay: 0.15s;
}
@@ -51,16 +53,12 @@
width: 100%;
height: 200px;
border-radius: 14px;
background: var(--surface-elevated, #222);
background: linear-gradient(90deg, rgba(255,255,255,0.04), rgba(255,255,255,0.1), rgba(255,255,255,0.04));
background-size: 220% 100%;
animation: skeleton-shimmer 1.4s ease infinite;
animation-delay: 0.3s;
}
@keyframes skeleton-shimmer {
0%, 100% { opacity: 0.4; }
50% { opacity: 0.7; }
}
.page-transition-wrap {
width: 100%;
height: 100%;
+42
View File
@@ -9,6 +9,48 @@
font-family: Inter, "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
}
/* Ecommerce generation progress bar */
.ecommerce-progress-bar {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 16px;
border-radius: var(--radius-sm, 10px);
background: rgba(var(--accent-rgb, 0, 255, 136), 0.08);
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.18);
margin: 8px 0;
}
.ecommerce-progress-bar__label {
font-size: 13px;
font-weight: 700;
color: var(--fg-muted, #aeb8b1);
white-space: nowrap;
}
.ecommerce-progress-bar__track {
flex: 1;
height: 6px;
border-radius: 999px;
background: rgba(var(--accent-rgb, 0, 255, 136), 0.12);
overflow: hidden;
}
.ecommerce-progress-bar__fill {
height: 100%;
border-radius: 999px;
background: var(--accent, #00ff88);
transition: width 80ms linear;
}
.ecommerce-progress-bar__value {
font-size: 12px;
font-weight: 900;
color: var(--accent, #00ff88);
min-width: 40px;
text-align: right;
}
/* Product set page: target dark two-column workspace with floating detail input. */
.product-clone-page[data-tool="set"] {
display: block;
+30
View File
@@ -405,6 +405,21 @@
transform: translateZ(20px) scale(1.02);
}
.omni-home__carousel-card-label {
position: absolute;
bottom: 12px;
left: 14px;
z-index: 2;
padding: 4px 12px;
border-radius: 999px;
background: rgba(var(--accent-rgb, 0, 255, 136), 0.16);
border: 1px solid rgba(var(--accent-rgb, 0, 255, 136), 0.24);
color: var(--fg-body, #f3f5f2);
font-size: 12px;
font-weight: 900;
white-space: nowrap;
}
.omni-home__carousel-card:hover {
box-shadow:
0 28px 58px rgb(0 0 0 / 34%),
@@ -570,6 +585,13 @@
object-position: center;
transform: none;
transform-origin: center;
transition: transform 280ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
filter 280ms ease;
}
.omni-home__feature-visual:hover img {
transform: scale(1.03);
filter: saturate(1.1) contrast(1.06) brightness(1.04);
}
@@ -722,6 +744,14 @@
padding: 16px 18px;
box-shadow: 0 20px 46px rgb(0 0 0 / 26%);
backdrop-filter: blur(12px);
cursor: pointer;
transition: transform 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
box-shadow 200ms ease;
}
.omni-home__experience-route:hover {
transform: translateY(-2px);
box-shadow: 0 24px 52px rgb(0 0 0 / 32%);
}
.omni-home__experience-route b {
-13
View File
@@ -14271,19 +14271,6 @@
}
/* ─── Page Motion Animation ─── */
.page-motion {
animation: pixel-page-enter 0.3s ease-out;
}
@keyframes pixel-page-enter {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/* ─── Workbench Page Layout Overrides ─── */
.ai-workbench-page.is-active .ai-workbench-shell {
grid-template-columns: 1fr auto;
+23
View File
@@ -135,6 +135,11 @@
font-size: 15px;
font-weight: 900;
cursor: pointer;
transition: opacity 160ms ease;
}
.brand-lockup:active {
opacity: 0.85;
}
.brand-lockup__mark {
@@ -303,6 +308,15 @@
background: var(--bg-hover);
}
.creator-button:active,
.member-button:active,
.profile-button:active,
.icon-button:active,
.theme-toggle:active {
transform: scale(0.97);
transition-duration: 80ms;
}
.profile-button--guest:hover {
background: rgba(var(--accent-rgb), 0.88);
color: #07100b;
@@ -481,6 +495,15 @@
box-shadow: inset 0 0 0 1px rgba(var(--accent-rgb), 0.34);
}
@keyframes nav-activate-pulse {
0% { box-shadow: inset 0 0 0 1px rgba(var(--accent-rgb), 0.34), 0 0 8px rgba(var(--accent-rgb), 0.25); }
100% { box-shadow: inset 0 0 0 1px rgba(var(--accent-rgb), 0.34); }
}
.floating-nav__button.nav-just-activated {
animation: nav-activate-pulse 320ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)) both;
}
.floating-nav__button:hover .floating-nav__label,
.floating-nav__button:focus-visible .floating-nav__label,
.floating-nav__button.is-active .floating-nav__label {
+7
View File
@@ -3990,6 +3990,13 @@
isolation: isolate;
break-inside: avoid;
aspect-ratio: 4 / 5;
transition: transform 200ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1)),
box-shadow 200ms ease;
}
.web-shell[data-ui-theme="dark-green"] .community-page .community-case-card--mosaic:hover {
transform: scale(1.02);
box-shadow: 0 8px 24px rgb(0 0 0 / 20%);
}
.web-shell[data-ui-theme="dark-green"] .community-page .community-case-card--tile-0,