Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e24ccf7b1 | |||
| f8ccad52f9 | |||
| 57cf34b0d0 | |||
| c7adbc153b | |||
| 17152efa2c | |||
| a605fad7e0 | |||
| 30222cd830 | |||
| 4ca2ab4a9c | |||
| 588da45902 | |||
| 5466036349 | |||
| 9869c0c5e6 | |||
| c38f056527 |
+35
-108
@@ -4,19 +4,16 @@ import {
|
|||||||
CheckCircleFilled,
|
CheckCircleFilled,
|
||||||
CloseOutlined,
|
CloseOutlined,
|
||||||
HomeOutlined,
|
HomeOutlined,
|
||||||
IdcardOutlined,
|
|
||||||
LockOutlined,
|
LockOutlined,
|
||||||
LoadingOutlined,
|
LoadingOutlined,
|
||||||
LoginOutlined,
|
|
||||||
LogoutOutlined,
|
LogoutOutlined,
|
||||||
MailOutlined,
|
MailOutlined,
|
||||||
MobileOutlined,
|
MobileOutlined,
|
||||||
PictureOutlined,
|
|
||||||
SafetyOutlined,
|
SafetyOutlined,
|
||||||
UserOutlined,
|
UserOutlined,
|
||||||
VideoCameraOutlined,
|
|
||||||
WalletOutlined,
|
|
||||||
} from "@ant-design/icons";
|
} from "@ant-design/icons";
|
||||||
|
import { LocalAvatar } from "./components/LocalAvatar";
|
||||||
|
import { Topbar } from "./components/Topbar";
|
||||||
import ErrorBoundary from "./components/ErrorBoundary";
|
import ErrorBoundary from "./components/ErrorBoundary";
|
||||||
import ToastContainer from "./components/toast/ToastContainer";
|
import ToastContainer from "./components/toast/ToastContainer";
|
||||||
import { toast } from "./components/toast/toastStore";
|
import { toast } from "./components/toast/toastStore";
|
||||||
@@ -40,6 +37,9 @@ const EcommercePage = lazy(() => import("./features/ecommerce/EcommercePage"));
|
|||||||
|
|
||||||
type AuthMode = "login" | "register";
|
type AuthMode = "login" | "register";
|
||||||
type AuthMethod = "account" | "email" | "phone";
|
type AuthMethod = "account" | "email" | "phone";
|
||||||
|
type WorkspaceChromeState = {
|
||||||
|
isToolPage: boolean;
|
||||||
|
};
|
||||||
|
|
||||||
interface LocalProfilePageProps {
|
interface LocalProfilePageProps {
|
||||||
session: WebUserSession;
|
session: WebUserSession;
|
||||||
@@ -51,17 +51,6 @@ interface LocalProfilePageProps {
|
|||||||
onLogout: () => void;
|
onLogout: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
function LocalAvatar({ session, size = "md" }: { session: WebUserSession; size?: "sm" | "md" | "lg" }) {
|
|
||||||
const displayName = session.user.displayName || session.user.username || "用户";
|
|
||||||
const label = displayName.trim().slice(0, 1).toUpperCase() || "用";
|
|
||||||
const avatarUrl = session.user.avatarUrl;
|
|
||||||
return (
|
|
||||||
<span className={`local-user-avatar local-user-avatar--${size}`}>
|
|
||||||
{avatarUrl ? <img src={avatarUrl} alt={displayName} /> : <span>{label}</span>}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function LocalProfilePage({ session, balance, imageCount, videoCount, onBack, onBugFeedback, onLogout }: LocalProfilePageProps) {
|
function LocalProfilePage({ session, balance, imageCount, videoCount, onBack, onBugFeedback, onLogout }: LocalProfilePageProps) {
|
||||||
const displayName = session.user.displayName || session.user.username || "用户";
|
const displayName = session.user.displayName || session.user.username || "用户";
|
||||||
const workCount = Math.max(imageCount + videoCount, 0);
|
const workCount = Math.max(imageCount + videoCount, 0);
|
||||||
@@ -166,6 +155,9 @@ function App() {
|
|||||||
const [sessionNotice, setSessionNotice] = useState<string | null>(null);
|
const [sessionNotice, setSessionNotice] = useState<string | null>(null);
|
||||||
const [profileMenuOpen, setProfileMenuOpen] = useState(false);
|
const [profileMenuOpen, setProfileMenuOpen] = useState(false);
|
||||||
const [currentPage, setCurrentPage] = useState<"workspace" | "profile">("workspace");
|
const [currentPage, setCurrentPage] = useState<"workspace" | "profile">("workspace");
|
||||||
|
const [workspaceChrome, setWorkspaceChrome] = useState<WorkspaceChromeState>({
|
||||||
|
isToolPage: false,
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
void loadDarkGreenTheme();
|
void loadDarkGreenTheme();
|
||||||
@@ -318,20 +310,6 @@ function App() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const balance = Math.max(usage.balanceCents, 0) / 100;
|
const balance = Math.max(usage.balanceCents, 0) / 100;
|
||||||
const displayName = session?.user.displayName || session?.user.username || "用户";
|
|
||||||
const actualWorkCount = Math.max(usage.imageUsed + usage.videoUsed, 0);
|
|
||||||
const shownWorkCount = actualWorkCount;
|
|
||||||
|
|
||||||
const avatarMenuStats = useMemo(
|
|
||||||
() => [
|
|
||||||
{ icon: <IdcardOutlined />, label: "UID", value: session?.user.id ?? "-" },
|
|
||||||
{ icon: <WalletOutlined />, label: "积分", value: `${balance.toFixed(2)} 积分` },
|
|
||||||
{ icon: <PictureOutlined />, label: "图片", value: usage.imageUsed },
|
|
||||||
{ icon: <VideoCameraOutlined />, label: "视频", value: usage.videoUsed },
|
|
||||||
{ icon: <PictureOutlined />, label: "作品", value: shownWorkCount },
|
|
||||||
],
|
|
||||||
[balance, session?.user.id, shownWorkCount, usage.imageUsed, usage.videoUsed],
|
|
||||||
);
|
|
||||||
|
|
||||||
const handleOpenProfile = () => {
|
const handleOpenProfile = () => {
|
||||||
setProfileMenuOpen(false);
|
setProfileMenuOpen(false);
|
||||||
@@ -349,86 +327,31 @@ function App() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="ecommerce-standalone web-shell" data-theme="dark" data-ui-theme="dark-green" data-view="ecommerce">
|
<div
|
||||||
<header className="ecommerce-standalone__topbar">
|
className="ecommerce-standalone web-shell"
|
||||||
<button type="button" className="ecommerce-standalone__brand" onClick={handleOpenWorkspace}>
|
data-theme="dark"
|
||||||
<span className="ecommerce-standalone__logo" aria-hidden="true">
|
data-ui-theme="dark-green"
|
||||||
<img src="https://stringtest.oss-cn-hangzhou.aliyuncs.com/logo.png" alt="" />
|
data-view="ecommerce"
|
||||||
</span>
|
data-workspace-tool-page={workspaceChrome.isToolPage ? "true" : "false"}
|
||||||
<strong>OmniAI 电商智能体</strong>
|
>
|
||||||
</button>
|
<Topbar
|
||||||
<div className="ecommerce-standalone__account">
|
session={session}
|
||||||
{session ? (
|
usage={usage}
|
||||||
<div className="ecommerce-profile-menu">
|
profileMenuOpen={profileMenuOpen}
|
||||||
<span className="ecommerce-standalone__credits">
|
onProfileMenuOpenChange={setProfileMenuOpen}
|
||||||
{(Math.max(usage.balanceCents, 0) / 100).toFixed(2)} 积分
|
onOpenWorkspace={handleOpenWorkspace}
|
||||||
</span>
|
onOpenProfile={handleOpenProfile}
|
||||||
<button
|
onOpenAuth={openAuth}
|
||||||
type="button"
|
onLogout={handleLogout}
|
||||||
className="ecommerce-profile-menu__trigger"
|
onBugFeedback={handleBugFeedback}
|
||||||
onClick={() => setProfileMenuOpen((open) => !open)}
|
/>
|
||||||
aria-haspopup="dialog"
|
|
||||||
aria-expanded={profileMenuOpen}
|
|
||||||
>
|
|
||||||
<LocalAvatar session={session} size="sm" />
|
|
||||||
<span>{displayName}</span>
|
|
||||||
</button>
|
|
||||||
{profileMenuOpen ? (
|
|
||||||
<>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
className="ecommerce-profile-popover__backdrop"
|
|
||||||
aria-label="关闭账户信息"
|
|
||||||
onClick={() => setProfileMenuOpen(false)}
|
|
||||||
/>
|
|
||||||
<section className="ecommerce-profile-popover" role="dialog" aria-label="账户信息">
|
|
||||||
<div className="ecommerce-profile-popover__head">
|
|
||||||
<LocalAvatar session={session} size="md" />
|
|
||||||
<div>
|
|
||||||
<strong>{displayName}</strong>
|
|
||||||
<span>{session.user.username}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<dl className="ecommerce-profile-popover__stats">
|
|
||||||
{avatarMenuStats.map((item) => (
|
|
||||||
<div key={item.label}>
|
|
||||||
<dt>{item.icon}{item.label}</dt>
|
|
||||||
<dd>{item.value}</dd>
|
|
||||||
</div>
|
|
||||||
))}
|
|
||||||
</dl>
|
|
||||||
|
|
||||||
<div className="ecommerce-profile-popover__actions">
|
|
||||||
<button type="button" className="is-primary" onClick={handleOpenProfile}>
|
|
||||||
<UserOutlined />
|
|
||||||
个人中心
|
|
||||||
</button>
|
|
||||||
<button type="button" onClick={handleBugFeedback}>
|
|
||||||
<BugOutlined />
|
|
||||||
Bug 反馈
|
|
||||||
</button>
|
|
||||||
<button type="button" className="is-danger" onClick={handleLogout}>
|
|
||||||
<LogoutOutlined />
|
|
||||||
退出
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</>
|
|
||||||
) : null}
|
|
||||||
</div>
|
|
||||||
) : (
|
|
||||||
<button type="button" onClick={() => openAuth("login")}>
|
|
||||||
<LoginOutlined />
|
|
||||||
<span>登录 / 注册</span>
|
|
||||||
</button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<main className="ecommerce-standalone__content">
|
<main className="ecommerce-standalone__content">
|
||||||
{session ? (
|
{session ? (
|
||||||
<div className="ecommerce-standalone__page" hidden={currentPage !== "profile"}>
|
<div
|
||||||
|
className="ecommerce-standalone__page ecommerce-standalone__page--profile"
|
||||||
|
hidden={currentPage !== "profile"}
|
||||||
|
>
|
||||||
<LocalProfilePage
|
<LocalProfilePage
|
||||||
session={session}
|
session={session}
|
||||||
balance={balance}
|
balance={balance}
|
||||||
@@ -442,7 +365,10 @@ function App() {
|
|||||||
) : null}
|
) : null}
|
||||||
{/* 工作台常驻挂载,仅用 hidden 切换。切到个人中心时不卸载,
|
{/* 工作台常驻挂载,仅用 hidden 切换。切到个人中心时不卸载,
|
||||||
生成任务、进度动画、已上传图片等本地状态全部保留,切回即继续。 */}
|
生成任务、进度动画、已上传图片等本地状态全部保留,切回即继续。 */}
|
||||||
<div className="ecommerce-standalone__page" hidden={Boolean(session) && currentPage === "profile"}>
|
<div
|
||||||
|
className="ecommerce-standalone__page ecommerce-standalone__page--workspace"
|
||||||
|
hidden={Boolean(session) && currentPage === "profile"}
|
||||||
|
>
|
||||||
<ErrorBoundary>
|
<ErrorBoundary>
|
||||||
<Suspense
|
<Suspense
|
||||||
fallback={
|
fallback={
|
||||||
@@ -455,6 +381,7 @@ function App() {
|
|||||||
<EcommercePage
|
<EcommercePage
|
||||||
projects={[]}
|
projects={[]}
|
||||||
isAuthenticated={Boolean(session)}
|
isAuthenticated={Boolean(session)}
|
||||||
|
onWorkspaceChromeChange={setWorkspaceChrome}
|
||||||
onStartCreate={() => undefined}
|
onStartCreate={() => undefined}
|
||||||
onOpenProject={() => undefined}
|
onOpenProject={() => undefined}
|
||||||
onDeleteProject={() => undefined}
|
onDeleteProject={() => undefined}
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
import type { WebUserSession } from "../types";
|
||||||
|
|
||||||
|
interface LocalAvatarProps {
|
||||||
|
session: WebUserSession;
|
||||||
|
size?: "sm" | "md" | "lg";
|
||||||
|
}
|
||||||
|
|
||||||
|
export function LocalAvatar({ session, size = "md" }: LocalAvatarProps) {
|
||||||
|
const displayName = session.user.displayName || session.user.username || "用户";
|
||||||
|
const label = displayName.trim().slice(0, 1).toUpperCase() || "用";
|
||||||
|
const avatarUrl = session.user.avatarUrl;
|
||||||
|
return (
|
||||||
|
<span className={`local-user-avatar local-user-avatar--${size}`}>
|
||||||
|
{avatarUrl ? <img src={avatarUrl} alt={displayName} /> : <span>{label}</span>}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
import { useEffect, useMemo, useState } from "react";
|
||||||
|
import {
|
||||||
|
BugOutlined,
|
||||||
|
IdcardOutlined,
|
||||||
|
LoginOutlined,
|
||||||
|
LogoutOutlined,
|
||||||
|
PictureOutlined,
|
||||||
|
UserOutlined,
|
||||||
|
VideoCameraOutlined,
|
||||||
|
WalletOutlined,
|
||||||
|
} from "@ant-design/icons";
|
||||||
|
import { LocalAvatar } from "./LocalAvatar";
|
||||||
|
import type { WebUserSession } from "../types";
|
||||||
|
|
||||||
|
interface TopbarProps {
|
||||||
|
session: WebUserSession | null;
|
||||||
|
usage: { balanceCents: number; imageUsed: number; videoUsed: number };
|
||||||
|
profileMenuOpen: boolean;
|
||||||
|
onProfileMenuOpenChange: (open: boolean) => void;
|
||||||
|
onOpenWorkspace: () => void;
|
||||||
|
onOpenProfile: () => void;
|
||||||
|
onOpenAuth: (mode: "login" | "register") => void;
|
||||||
|
onLogout: () => void;
|
||||||
|
onBugFeedback: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Topbar({
|
||||||
|
session,
|
||||||
|
usage,
|
||||||
|
profileMenuOpen,
|
||||||
|
onProfileMenuOpenChange,
|
||||||
|
onOpenWorkspace,
|
||||||
|
onOpenProfile,
|
||||||
|
onOpenAuth,
|
||||||
|
onLogout,
|
||||||
|
onBugFeedback,
|
||||||
|
}: TopbarProps) {
|
||||||
|
const [isTopbarHidden, setIsTopbarHidden] = useState(false);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
let restoreTimer: number | undefined;
|
||||||
|
|
||||||
|
const handleScroll = (event: Event) => {
|
||||||
|
if (profileMenuOpen) return;
|
||||||
|
const target = event.target;
|
||||||
|
const activeWorkspace = document.querySelector<HTMLElement>(".ecommerce-standalone__page--workspace:not([hidden])");
|
||||||
|
if (!activeWorkspace) return;
|
||||||
|
const isWorkspacePreviewScroll =
|
||||||
|
target instanceof HTMLElement && target.classList.contains("clone-ai-preview") && activeWorkspace.contains(target);
|
||||||
|
const isPageScroll =
|
||||||
|
target === document ||
|
||||||
|
target === document.scrollingElement ||
|
||||||
|
target === document.documentElement ||
|
||||||
|
target === document.body;
|
||||||
|
if (!isWorkspacePreviewScroll && !isPageScroll) return;
|
||||||
|
|
||||||
|
setIsTopbarHidden(true);
|
||||||
|
if (restoreTimer) window.clearTimeout(restoreTimer);
|
||||||
|
restoreTimer = window.setTimeout(() => {
|
||||||
|
setIsTopbarHidden(false);
|
||||||
|
}, 240);
|
||||||
|
};
|
||||||
|
|
||||||
|
window.addEventListener("scroll", handleScroll, { capture: true, passive: true });
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("scroll", handleScroll, { capture: true });
|
||||||
|
if (restoreTimer) window.clearTimeout(restoreTimer);
|
||||||
|
};
|
||||||
|
}, [profileMenuOpen]);
|
||||||
|
|
||||||
|
const balance = Math.max(usage.balanceCents, 0) / 100;
|
||||||
|
const displayName = session?.user.displayName || session?.user.username || "用户";
|
||||||
|
const actualWorkCount = Math.max(usage.imageUsed + usage.videoUsed, 0);
|
||||||
|
const shownWorkCount = actualWorkCount;
|
||||||
|
|
||||||
|
const avatarMenuStats = useMemo(
|
||||||
|
() => [
|
||||||
|
{ icon: <IdcardOutlined />, label: "UID", value: session?.user.id ?? "-" },
|
||||||
|
{ icon: <WalletOutlined />, label: "积分", value: `${balance.toFixed(2)} 积分` },
|
||||||
|
{ icon: <PictureOutlined />, label: "图片", value: usage.imageUsed },
|
||||||
|
{ icon: <VideoCameraOutlined />, label: "视频", value: usage.videoUsed },
|
||||||
|
{ icon: <PictureOutlined />, label: "作品", value: shownWorkCount },
|
||||||
|
],
|
||||||
|
[balance, session?.user.id, shownWorkCount, usage.imageUsed, usage.videoUsed],
|
||||||
|
);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<header
|
||||||
|
className="ecommerce-standalone__topbar"
|
||||||
|
data-scroll-hidden={isTopbarHidden ? "true" : "false"}
|
||||||
|
style={{
|
||||||
|
position: "fixed",
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
zIndex: 1000,
|
||||||
|
pointerEvents: "none",
|
||||||
|
background: "transparent",
|
||||||
|
border: 0,
|
||||||
|
boxShadow: "none",
|
||||||
|
backdropFilter: "none",
|
||||||
|
WebkitBackdropFilter: "none",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="ecommerce-standalone__brand"
|
||||||
|
style={{ pointerEvents: "auto" }}
|
||||||
|
onClick={onOpenWorkspace}
|
||||||
|
>
|
||||||
|
<span className="ecommerce-standalone__logo" aria-hidden="true">
|
||||||
|
<img src="https://stringtest.oss-cn-hangzhou.aliyuncs.com/logo.png" alt="" />
|
||||||
|
</span>
|
||||||
|
<strong>OmniAI 电商智能体</strong>
|
||||||
|
</button>
|
||||||
|
<div className="ecommerce-standalone__account">
|
||||||
|
{session ? (
|
||||||
|
<div className="ecommerce-profile-menu">
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="ecommerce-profile-menu__trigger"
|
||||||
|
style={{ pointerEvents: "auto" }}
|
||||||
|
onClick={() => onProfileMenuOpenChange(!profileMenuOpen)}
|
||||||
|
aria-haspopup="dialog"
|
||||||
|
aria-expanded={profileMenuOpen}
|
||||||
|
>
|
||||||
|
<span className="ecommerce-standalone__credits">
|
||||||
|
{(Math.max(usage.balanceCents, 0) / 100).toFixed(2)} 积分
|
||||||
|
</span>
|
||||||
|
<LocalAvatar session={session} size="sm" />
|
||||||
|
<span className="ecommerce-profile-menu__name">{displayName}</span>
|
||||||
|
</button>
|
||||||
|
{profileMenuOpen ? (
|
||||||
|
<>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="ecommerce-profile-popover__backdrop"
|
||||||
|
aria-label="关闭账户信息"
|
||||||
|
onClick={() => onProfileMenuOpenChange(false)}
|
||||||
|
/>
|
||||||
|
<section className="ecommerce-profile-popover" role="dialog" aria-label="账户信息">
|
||||||
|
<div className="ecommerce-profile-popover__head">
|
||||||
|
<LocalAvatar session={session} size="md" />
|
||||||
|
<div>
|
||||||
|
<strong>{displayName}</strong>
|
||||||
|
<span>{session.user.username}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<dl className="ecommerce-profile-popover__stats">
|
||||||
|
{avatarMenuStats.map((item) => (
|
||||||
|
<div key={item.label}>
|
||||||
|
<dt>
|
||||||
|
{item.icon}
|
||||||
|
{item.label}
|
||||||
|
</dt>
|
||||||
|
<dd>{item.value}</dd>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</dl>
|
||||||
|
|
||||||
|
<div className="ecommerce-profile-popover__actions">
|
||||||
|
<button type="button" className="is-primary" onClick={onOpenProfile}>
|
||||||
|
<UserOutlined />
|
||||||
|
个人中心
|
||||||
|
</button>
|
||||||
|
<button type="button" onClick={onBugFeedback}>
|
||||||
|
<BugOutlined />
|
||||||
|
Bug 反馈
|
||||||
|
</button>
|
||||||
|
<button type="button" className="is-danger" onClick={onLogout}>
|
||||||
|
<LogoutOutlined />
|
||||||
|
退出
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="ecommerce-standalone__login-button"
|
||||||
|
style={{ pointerEvents: "auto" }}
|
||||||
|
onClick={() => onOpenAuth("login")}
|
||||||
|
>
|
||||||
|
<LoginOutlined />
|
||||||
|
<span>登录 / 注册</span>
|
||||||
|
</button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -41,6 +41,7 @@ import EcommerceTryOnPanel from "./panels/EcommerceTryOnPanel";
|
|||||||
import EcommerceClonePanel from "./panels/EcommerceClonePanel";
|
import EcommerceClonePanel from "./panels/EcommerceClonePanel";
|
||||||
import { ecommerceOssScopes, saveUnifiedEcommerceGenerationRecord, deleteEcommerceGenerationRecord } from "./ecommerceGenerationPersistence";
|
import { ecommerceOssScopes, saveUnifiedEcommerceGenerationRecord, deleteEcommerceGenerationRecord } from "./ecommerceGenerationPersistence";
|
||||||
import { downloadResultAsset } from "../workbench/workbenchDownload";
|
import { downloadResultAsset } from "../workbench/workbenchDownload";
|
||||||
|
import type { CloneOutputKey, ProductSetOutputKey } from "./utils/platformRules";
|
||||||
|
|
||||||
const smartCutoutColorPresets = [
|
const smartCutoutColorPresets = [
|
||||||
"#ffffff",
|
"#ffffff",
|
||||||
@@ -270,8 +271,6 @@ interface ProductClonePageProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ProductCloneStatus = "idle" | "ready" | "generating" | "done" | "failed";
|
type ProductCloneStatus = "idle" | "ready" | "generating" | "done" | "failed";
|
||||||
type ProductSetOutputKey = "set" | "detail" | "model" | "video";
|
|
||||||
type CloneOutputKey = ProductSetOutputKey | "hot";
|
|
||||||
type CommerceScenarioKey = "popular" | "poster" | "mainImage" | "scene" | "festival" | "model" | "background" | "retouch" | "salesVideo";
|
type CommerceScenarioKey = "popular" | "poster" | "mainImage" | "scene" | "festival" | "model" | "background" | "retouch" | "salesVideo";
|
||||||
type CloneSetCountKey = "selling" | "white" | "scene";
|
type CloneSetCountKey = "selling" | "white" | "scene";
|
||||||
type CloneModelPanelTab = "scene" | "model";
|
type CloneModelPanelTab = "scene" | "model";
|
||||||
|
|||||||
@@ -17437,19 +17437,27 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
/* Ecommerce home scenario templates */
|
/* Ecommerce home scenario templates */
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs {
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
align-items: stretch !important;
|
align-items: center !important;
|
||||||
justify-content: center !important;
|
justify-content: flex-start !important;
|
||||||
gap: 9px !important;
|
gap: 8px !important;
|
||||||
width: min(100%, 1180px) !important;
|
width: fit-content !important;
|
||||||
margin: 0 auto 10px !important;
|
max-width: min(100%, 1120px) !important;
|
||||||
padding: 5px 0 !important;
|
margin: 0 auto 12px !important;
|
||||||
|
padding: 6px !important;
|
||||||
|
box-sizing: border-box !important;
|
||||||
overflow-x: auto !important;
|
overflow-x: auto !important;
|
||||||
|
overflow-y: hidden !important;
|
||||||
|
overscroll-behavior-x: contain !important;
|
||||||
scrollbar-width: none !important;
|
scrollbar-width: none !important;
|
||||||
scroll-snap-type: x proximity !important;
|
scroll-snap-type: x proximity !important;
|
||||||
border: 0 !important;
|
border: 1px solid rgba(30, 189, 219, 0.12) !important;
|
||||||
border-radius: 0 !important;
|
border-radius: 24px !important;
|
||||||
background: transparent !important;
|
background: rgba(255, 255, 255, 0.42) !important;
|
||||||
box-shadow: none !important;
|
box-shadow:
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.68),
|
||||||
|
0 10px 28px rgba(16, 115, 204, 0.05) !important;
|
||||||
|
backdrop-filter: blur(16px) saturate(1.05) !important;
|
||||||
|
-webkit-backdrop-filter: blur(16px) saturate(1.05) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs::-webkit-scrollbar {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs::-webkit-scrollbar {
|
||||||
@@ -17460,20 +17468,20 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
--mode-accent: #1073cc;
|
--mode-accent: #1073cc;
|
||||||
position: relative !important;
|
position: relative !important;
|
||||||
display: grid !important;
|
display: grid !important;
|
||||||
grid-template-columns: 24px minmax(0, 1fr) !important;
|
grid-template-columns: 22px max-content !important;
|
||||||
grid-template-rows: auto !important;
|
grid-template-rows: auto !important;
|
||||||
align-items: center !important;
|
align-items: center !important;
|
||||||
justify-items: start !important;
|
justify-items: start !important;
|
||||||
gap: 8px !important;
|
gap: 7px !important;
|
||||||
flex: 0 0 auto !important;
|
flex: 0 0 auto !important;
|
||||||
width: auto !important;
|
width: max-content !important;
|
||||||
min-width: 104px !important;
|
min-width: max-content !important;
|
||||||
min-height: 40px !important;
|
min-height: 40px !important;
|
||||||
padding: 7px 12px !important;
|
padding: 7px 14px 7px 10px !important;
|
||||||
scroll-snap-align: start !important;
|
scroll-snap-align: start !important;
|
||||||
border: 1px solid rgba(16, 32, 44, 0.07) !important;
|
border: 1px solid rgba(16, 32, 44, 0.07) !important;
|
||||||
border-radius: 20px !important;
|
border-radius: 18px !important;
|
||||||
background: rgba(255, 255, 255, 0.6) !important;
|
background: rgba(255, 255, 255, 0.68) !important;
|
||||||
color: rgba(16, 32, 44, 0.68) !important;
|
color: rgba(16, 32, 44, 0.68) !important;
|
||||||
box-shadow:
|
box-shadow:
|
||||||
0 2px 6px rgba(16, 32, 44, 0.03),
|
0 2px 6px rgba(16, 32, 44, 0.03),
|
||||||
@@ -17488,6 +17496,10 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
transform 180ms ease !important;
|
transform 180ms ease !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs button.is-open {
|
||||||
|
padding-right: 28px !important;
|
||||||
|
}
|
||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs button:hover {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs button:hover {
|
||||||
background: rgba(255, 255, 255, 0.86) !important;
|
background: rgba(255, 255, 255, 0.86) !important;
|
||||||
border-color: color-mix(in srgb, var(--mode-accent) 22%, transparent) !important;
|
border-color: color-mix(in srgb, var(--mode-accent) 22%, transparent) !important;
|
||||||
@@ -17528,12 +17540,12 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-mode-icon {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-mode-icon {
|
||||||
grid-row: auto !important;
|
grid-row: auto !important;
|
||||||
display: inline-grid !important;
|
display: inline-grid !important;
|
||||||
width: 24px !important;
|
width: 22px !important;
|
||||||
min-width: 24px !important;
|
min-width: 22px !important;
|
||||||
height: 24px !important;
|
height: 22px !important;
|
||||||
place-items: center !important;
|
place-items: center !important;
|
||||||
border: 0 !important;
|
border: 0 !important;
|
||||||
border-radius: 8px !important;
|
border-radius: 7px !important;
|
||||||
background: color-mix(in srgb, var(--mode-accent) 10%, rgba(255, 255, 255, 0.9)) !important;
|
background: color-mix(in srgb, var(--mode-accent) 10%, rgba(255, 255, 255, 0.9)) !important;
|
||||||
color: var(--mode-accent) !important;
|
color: var(--mode-accent) !important;
|
||||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8) !important;
|
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8) !important;
|
||||||
@@ -17550,14 +17562,14 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs strong {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs strong {
|
||||||
min-width: 0 !important;
|
min-width: 0 !important;
|
||||||
max-width: 88px !important;
|
max-width: none !important;
|
||||||
overflow: hidden !important;
|
overflow: visible !important;
|
||||||
color: rgba(16, 32, 44, 0.82) !important;
|
color: rgba(16, 32, 44, 0.82) !important;
|
||||||
font-size: 12.5px !important;
|
font-size: 12.5px !important;
|
||||||
font-weight: 760 !important;
|
font-weight: 760 !important;
|
||||||
letter-spacing: -0.01em !important;
|
letter-spacing: 0 !important;
|
||||||
line-height: 1 !important;
|
line-height: 1.1 !important;
|
||||||
text-overflow: ellipsis !important;
|
text-overflow: clip !important;
|
||||||
white-space: nowrap !important;
|
white-space: nowrap !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -17568,8 +17580,8 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-scenario-close {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-scenario-close {
|
||||||
position: absolute !important;
|
position: absolute !important;
|
||||||
top: 4px !important;
|
top: 50% !important;
|
||||||
right: 4px !important;
|
right: 7px !important;
|
||||||
display: inline-flex !important;
|
display: inline-flex !important;
|
||||||
align-items: center !important;
|
align-items: center !important;
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
@@ -17579,6 +17591,7 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
background: rgba(16, 32, 44, 0.05) !important;
|
background: rgba(16, 32, 44, 0.05) !important;
|
||||||
color: rgba(16, 32, 44, 0.42) !important;
|
color: rgba(16, 32, 44, 0.42) !important;
|
||||||
font-size: 9px !important;
|
font-size: 9px !important;
|
||||||
|
transform: translateY(-50%) !important;
|
||||||
transition:
|
transition:
|
||||||
background 160ms ease,
|
background 160ms ease,
|
||||||
color 160ms ease,
|
color 160ms ease,
|
||||||
@@ -17588,7 +17601,7 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-scenario-close:hover {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-scenario-close:hover {
|
||||||
background: rgba(16, 32, 44, 0.1) !important;
|
background: rgba(16, 32, 44, 0.1) !important;
|
||||||
color: rgba(16, 32, 44, 0.7) !important;
|
color: rgba(16, 32, 44, 0.7) !important;
|
||||||
transform: scale(1.08) !important;
|
transform: translateY(-50%) scale(1.08) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-scroll-hint {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-scroll-hint {
|
||||||
@@ -17741,13 +17754,14 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
@media (max-width: 640px) {
|
@media (max-width: 640px) {
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
|
padding: 5px !important;
|
||||||
margin-bottom: 8px !important;
|
margin-bottom: 8px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs button {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs.ecom-command-mode-tabs button {
|
||||||
min-width: 112px !important;
|
min-width: max-content !important;
|
||||||
min-height: 44px !important;
|
min-height: 44px !important;
|
||||||
padding: 7px 10px !important;
|
padding: 7px 12px 7px 9px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-mode-icon {
|
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-detail) .ecom-command-scenario-tabs .ecom-command-mode-icon {
|
||||||
@@ -17788,3 +17802,521 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
|
|||||||
height: 98px !important;
|
height: 98px !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Hide the topbar banner background while keeping brand and account in place. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar {
|
||||||
|
border-bottom: none !important;
|
||||||
|
background: transparent !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
backdrop-filter: none !important;
|
||||||
|
-webkit-backdrop-filter: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar::before,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar::after {
|
||||||
|
content: none !important;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Keep topbar transparent and remove any background/border from inner controls. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand strong,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__credits,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__account button:not(.ecommerce-standalone__login-button):not(.ecommerce-profile-menu__trigger) {
|
||||||
|
color: #10202c !important;
|
||||||
|
background: transparent !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: none !important;
|
||||||
|
border: none !important;
|
||||||
|
border-color: transparent !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
backdrop-filter: none !important;
|
||||||
|
-webkit-backdrop-filter: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand:hover,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__account button:not(.ecommerce-standalone__login-button):not(.ecommerce-profile-menu__trigger):hover {
|
||||||
|
background: transparent !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: none !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__credits {
|
||||||
|
color: #3a5a6a !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Topbar composition: quiet brand chip + single account capsule. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar {
|
||||||
|
padding: 14px clamp(18px, 2.5vw, 30px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] {
|
||||||
|
--ecommerce-workspace-top-offset: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand {
|
||||||
|
gap: 10px !important;
|
||||||
|
min-height: 42px !important;
|
||||||
|
padding: 5px 12px 5px 6px !important;
|
||||||
|
border: 1px solid rgba(30, 189, 219, 0.16) !important;
|
||||||
|
border-radius: 999px !important;
|
||||||
|
background: rgba(255, 255, 255, 0.62) !important;
|
||||||
|
box-shadow: 0 12px 34px rgba(16, 115, 204, 0.07) !important;
|
||||||
|
backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
-webkit-backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease, background 180ms ease !important;
|
||||||
|
will-change: opacity, transform, filter !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand:hover {
|
||||||
|
border-color: rgba(30, 189, 219, 0.28) !important;
|
||||||
|
background: rgba(255, 255, 255, 0.78) !important;
|
||||||
|
box-shadow: 0 16px 42px rgba(16, 115, 204, 0.1) !important;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__logo {
|
||||||
|
width: 34px !important;
|
||||||
|
height: 34px !important;
|
||||||
|
border-radius: 12px !important;
|
||||||
|
box-shadow: 0 8px 18px rgba(16, 115, 204, 0.16) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand strong {
|
||||||
|
max-width: 168px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
color: #10202c !important;
|
||||||
|
font-size: 13px !important;
|
||||||
|
font-weight: 800 !important;
|
||||||
|
line-height: 1 !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu {
|
||||||
|
position: relative !important;
|
||||||
|
gap: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger {
|
||||||
|
gap: 10px !important;
|
||||||
|
min-height: 46px !important;
|
||||||
|
padding: 4px 6px 4px 14px !important;
|
||||||
|
border: 1px solid rgba(30, 189, 219, 0.16) !important;
|
||||||
|
border-radius: 999px !important;
|
||||||
|
background: rgba(255, 255, 255, 0.66) !important;
|
||||||
|
box-shadow: 0 12px 34px rgba(16, 115, 204, 0.08) !important;
|
||||||
|
backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
-webkit-backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease, background 180ms ease !important;
|
||||||
|
will-change: opacity, transform, filter !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="true"] .ecommerce-standalone__brand,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="true"] .ecommerce-profile-menu__trigger,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="true"] .ecommerce-standalone__login-button {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
filter: blur(4px) saturate(0.96) !important;
|
||||||
|
transform: translateY(-14px) scale(0.96) !important;
|
||||||
|
transition:
|
||||||
|
opacity 160ms ease,
|
||||||
|
transform 190ms cubic-bezier(0.4, 0, 1, 1),
|
||||||
|
filter 160ms ease !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="false"] .ecommerce-standalone__brand,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="false"] .ecommerce-profile-menu__trigger,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__topbar[data-scroll-hidden="false"] .ecommerce-standalone__login-button {
|
||||||
|
opacity: 1 !important;
|
||||||
|
filter: blur(0) saturate(1) !important;
|
||||||
|
transform: translateY(0) scale(1) !important;
|
||||||
|
transition:
|
||||||
|
opacity 260ms ease 40ms,
|
||||||
|
transform 360ms cubic-bezier(0.16, 1, 0.3, 1) 40ms,
|
||||||
|
filter 260ms ease 40ms,
|
||||||
|
border-color 180ms ease,
|
||||||
|
box-shadow 180ms ease,
|
||||||
|
background 180ms ease !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger:hover,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger[aria-expanded="true"] {
|
||||||
|
border-color: rgba(30, 189, 219, 0.3) !important;
|
||||||
|
background: rgba(255, 255, 255, 0.82) !important;
|
||||||
|
box-shadow: 0 16px 42px rgba(16, 115, 204, 0.12) !important;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger .ecommerce-standalone__credits {
|
||||||
|
min-height: auto !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
border: 0 !important;
|
||||||
|
border-radius: 0 !important;
|
||||||
|
color: #3a5a6a !important;
|
||||||
|
background: transparent !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
font-size: 12px !important;
|
||||||
|
font-weight: 800 !important;
|
||||||
|
letter-spacing: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__name {
|
||||||
|
max-width: 82px !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
color: #10202c !important;
|
||||||
|
font-size: 13px !important;
|
||||||
|
font-weight: 800 !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger .local-user-avatar--sm {
|
||||||
|
width: 34px !important;
|
||||||
|
height: 34px !important;
|
||||||
|
border: 2px solid rgba(255, 255, 255, 0.86) !important;
|
||||||
|
border-radius: 999px !important;
|
||||||
|
box-shadow:
|
||||||
|
0 0 0 1px rgba(30, 189, 219, 0.22),
|
||||||
|
0 8px 18px rgba(16, 115, 204, 0.16) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 720px) {
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__brand strong,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__name {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-profile-menu__trigger {
|
||||||
|
padding-left: 12px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__account button.ecommerce-standalone__login-button {
|
||||||
|
pointer-events: auto !important;
|
||||||
|
min-height: 40px !important;
|
||||||
|
padding: 0 16px !important;
|
||||||
|
border: 1px solid rgba(30, 189, 219, 0.22) !important;
|
||||||
|
border-radius: 999px !important;
|
||||||
|
color: #10202c !important;
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(241, 250, 252, 0.82)) !important;
|
||||||
|
box-shadow:
|
||||||
|
0 10px 26px rgba(16, 115, 204, 0.08),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.92) !important;
|
||||||
|
font-weight: 700 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__account button.ecommerce-standalone__login-button:hover {
|
||||||
|
border-color: rgba(30, 189, 219, 0.38) !important;
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(232, 250, 253, 0.9)) !important;
|
||||||
|
box-shadow:
|
||||||
|
0 14px 32px rgba(30, 189, 219, 0.14),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.96) !important;
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Let the workspace surface paint behind the transparent fixed topbar. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__content {
|
||||||
|
box-sizing: border-box !important;
|
||||||
|
height: 100dvh !important;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--profile {
|
||||||
|
box-sizing: border-box !important;
|
||||||
|
height: 100dvh !important;
|
||||||
|
padding-top: var(--ecommerce-topbar-height) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-shell,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-preview.clone-ai-preview {
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-preview.clone-ai-preview:has(.ecom-inspiration-lab) {
|
||||||
|
padding-top: calc(var(--ecommerce-topbar-height) + var(--ecommerce-workspace-top-offset, 50px) + clamp(18px, 2.5vh, 30px)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__toggle.ecom-command-history__toggle {
|
||||||
|
top: calc(var(--ecommerce-topbar-height) + 12px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__toggle.ecom-command-history__toggle:hover {
|
||||||
|
transform: translateY(-2px) scale(1.035) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history.ecom-command-history {
|
||||||
|
top: calc(var(--ecommerce-topbar-height) + 18px) !important;
|
||||||
|
right: 18px !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
height: calc(100dvh - var(--ecommerce-topbar-height) - 42px) !important;
|
||||||
|
width: min(316px, calc(100vw - 72px)) !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
border: 1px solid rgba(30, 189, 219, 0.2) !important;
|
||||||
|
border-radius: 24px !important;
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.88), rgba(238, 250, 253, 0.82)) !important;
|
||||||
|
box-shadow:
|
||||||
|
0 24px 68px rgba(16, 115, 204, 0.16),
|
||||||
|
inset 0 1px 0 rgba(255, 255, 255, 0.9) !important;
|
||||||
|
backdrop-filter: blur(22px) saturate(1.12) !important;
|
||||||
|
-webkit-backdrop-filter: blur(22px) saturate(1.12) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history.ecom-command-history {
|
||||||
|
top: calc(var(--ecommerce-topbar-height) + 12px) !important;
|
||||||
|
right: 18px !important;
|
||||||
|
bottom: auto !important;
|
||||||
|
width: 42px !important;
|
||||||
|
height: 42px !important;
|
||||||
|
overflow: visible !important;
|
||||||
|
border: 0 !important;
|
||||||
|
border-radius: 15px !important;
|
||||||
|
background: transparent !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
transform: none !important;
|
||||||
|
backdrop-filter: none !important;
|
||||||
|
-webkit-backdrop-filter: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__tools {
|
||||||
|
padding: 14px 14px 10px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__heading {
|
||||||
|
padding-inline: 16px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__list {
|
||||||
|
padding: 10px 12px 16px !important;
|
||||||
|
overflow: hidden auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__toggle.ecom-command-history__toggle {
|
||||||
|
position: relative !important;
|
||||||
|
top: auto !important;
|
||||||
|
right: auto !important;
|
||||||
|
left: auto !important;
|
||||||
|
z-index: 130 !important;
|
||||||
|
width: 42px !important;
|
||||||
|
height: 42px !important;
|
||||||
|
min-height: 42px !important;
|
||||||
|
transform: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__tools {
|
||||||
|
display: block !important;
|
||||||
|
width: 42px !important;
|
||||||
|
height: 42px !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* History overlay final behavior: panel floats above the workspace and never reserves layout space. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] {
|
||||||
|
--ecom-history-offset: 0px !important;
|
||||||
|
--ecom-history-panel-width: 0px !important;
|
||||||
|
--history-detail-workspace-width: 100vw !important;
|
||||||
|
padding-right: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] > .product-clone-shell.product-clone-shell {
|
||||||
|
width: 100% !important;
|
||||||
|
max-width: none !important;
|
||||||
|
padding-right: 0 !important;
|
||||||
|
filter: none !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
transform: none !important;
|
||||||
|
pointer-events: auto !important;
|
||||||
|
user-select: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .product-clone-preview.clone-ai-preview {
|
||||||
|
width: 100% !important;
|
||||||
|
max-width: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-detail .ecom-command-composer-wrap.has-generated.is-compact {
|
||||||
|
left: 50vw !important;
|
||||||
|
width: min(760px, calc(100vw - clamp(48px, 8vw, 96px))) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-detail .clone-ai-canvas-node:not(.is-generating) {
|
||||||
|
max-width: min(860px, calc(100vw - 80px)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__backdrop {
|
||||||
|
background: rgba(16, 38, 56, 0.08) !important;
|
||||||
|
backdrop-filter: none !important;
|
||||||
|
-webkit-backdrop-filter: none !important;
|
||||||
|
animation: ecommerce-soft-scrim-in 180ms ease-out both !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history.ecom-command-history {
|
||||||
|
position: fixed !important;
|
||||||
|
z-index: 130 !important;
|
||||||
|
opacity: 1 !important;
|
||||||
|
transform: translateX(0) scale(1) !important;
|
||||||
|
transform-origin: top right !important;
|
||||||
|
transition:
|
||||||
|
opacity 240ms ease,
|
||||||
|
top 360ms cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||||
|
width 360ms cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||||
|
height 360ms cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||||
|
border-radius 360ms cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||||
|
border-color 220ms ease,
|
||||||
|
background 220ms ease,
|
||||||
|
transform 360ms cubic-bezier(0.22, 0.61, 0.36, 1),
|
||||||
|
box-shadow 260ms ease !important;
|
||||||
|
will-change: opacity, transform !important;
|
||||||
|
animation: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history.ecom-command-history {
|
||||||
|
opacity: 1 !important;
|
||||||
|
transform: translateX(0) scale(1) !important;
|
||||||
|
animation: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__tools,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__new,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__refresh,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__heading,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__refresh-note,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-history__list {
|
||||||
|
transition:
|
||||||
|
opacity 220ms ease,
|
||||||
|
transform 360ms cubic-bezier(0.34, 0, 0.22, 1),
|
||||||
|
visibility 0s linear 220ms !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__tools,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__new,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__refresh,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__heading,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__refresh-note,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"]:not(.is-history-collapsed) .ecom-command-history__list {
|
||||||
|
opacity: 1 !important;
|
||||||
|
visibility: visible !important;
|
||||||
|
transform: translateY(0) !important;
|
||||||
|
transition:
|
||||||
|
opacity 180ms ease 90ms,
|
||||||
|
transform 280ms cubic-bezier(0.22, 0.61, 0.36, 1) 70ms,
|
||||||
|
visibility 0s linear 0s !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__new,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__refresh,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__heading,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__refresh-note,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"][data-tool="clone"].is-history-collapsed .ecom-command-history__list {
|
||||||
|
opacity: 0 !important;
|
||||||
|
visibility: hidden !important;
|
||||||
|
transform: translateY(6px) !important;
|
||||||
|
transition:
|
||||||
|
opacity 160ms ease,
|
||||||
|
transform 220ms ease,
|
||||||
|
visibility 0s linear 160ms !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ecom-history-panel-enter {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(26px) scale(0.975);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateX(0) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Focused tool page sample: the inner tool header owns navigation, so the global brand steps away. */
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__brand {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
filter: blur(4px) saturate(0.96) !important;
|
||||||
|
transform: translateY(-10px) scale(0.96) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__topbar[data-scroll-hidden] .ecommerce-standalone__brand {
|
||||||
|
opacity: 0 !important;
|
||||||
|
pointer-events: none !important;
|
||||||
|
filter: blur(4px) saturate(0.96) !important;
|
||||||
|
transform: translateY(-10px) scale(0.96) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__topbar {
|
||||||
|
padding-inline: clamp(16px, 2vw, 24px) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"].is-quick-set-page .ecom-quick-set-page,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"].is-hot-clone-page .ecom-quick-set-page,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"].is-image-workbench-page .ecom-image-workbench-page,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"].is-watermark-page .ecom-watermark-page,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .product-clone-page[data-tool="clone"].is-translate-page .ecom-translate-page {
|
||||||
|
padding-top: 14px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-quick-set-panel,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-image-workbench-side,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-watermark-side,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-translate-side {
|
||||||
|
border-radius: 18px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-quick-set-panel-head,
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-image-workbench-panel-head {
|
||||||
|
display: grid !important;
|
||||||
|
grid-template-columns: minmax(0, 1fr) auto auto !important;
|
||||||
|
align-items: center !important;
|
||||||
|
gap: 8px !important;
|
||||||
|
min-height: 48px !important;
|
||||||
|
margin: -18px -16px 10px !important;
|
||||||
|
padding: 12px 12px 10px 16px !important;
|
||||||
|
border-bottom: 1px solid rgba(16, 115, 204, 0.08) !important;
|
||||||
|
background:
|
||||||
|
linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(248, 252, 254, 0.9)) !important;
|
||||||
|
box-shadow: 0 10px 28px rgba(16, 115, 204, 0.05) !important;
|
||||||
|
backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
-webkit-backdrop-filter: blur(18px) saturate(1.08) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-quick-set-page-title {
|
||||||
|
min-width: 0 !important;
|
||||||
|
margin: 0 !important;
|
||||||
|
overflow: hidden !important;
|
||||||
|
color: #10202c !important;
|
||||||
|
font-size: 18px !important;
|
||||||
|
font-weight: 950 !important;
|
||||||
|
line-height: 1.1 !important;
|
||||||
|
text-overflow: ellipsis !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-quick-set-back {
|
||||||
|
min-width: 58px !important;
|
||||||
|
min-height: 32px !important;
|
||||||
|
padding: 0 12px !important;
|
||||||
|
border: 1px solid rgba(16, 115, 204, 0.12) !important;
|
||||||
|
border-radius: 999px !important;
|
||||||
|
color: #526474 !important;
|
||||||
|
background: rgba(255, 255, 255, 0.78) !important;
|
||||||
|
box-shadow: none !important;
|
||||||
|
font-size: 13px !important;
|
||||||
|
font-weight: 850 !important;
|
||||||
|
letter-spacing: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html body #root div.ecommerce-standalone.web-shell[data-view="ecommerce"][data-workspace-tool-page="true"] .ecommerce-standalone__page--workspace .ecom-quick-set-back:hover {
|
||||||
|
border-color: rgba(30, 189, 219, 0.34) !important;
|
||||||
|
color: #1073cc !important;
|
||||||
|
background: rgba(232, 249, 253, 0.92) !important;
|
||||||
|
transform: translateY(-1px) !important;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user