15 Commits

Author SHA1 Message Date
ludan ec31a37b9c Merge remote-tracking branch 'origin/main' into feat/ecommerce-scenario-tabs 2026-06-17 19:01:09 +08:00
ludan 3d72e166ed perf: 优化电商全场景素材上传体验,先本地预览再后台上传 OSS
- 新增 createLocalImageItems 同步创建本地 blob 预览项

- 新增 uploadImageItem 后台异步上传 OSS 并读取图片尺寸

- 改造商品主图、套图、参考图、服饰图、详情图 5 个上传入口

- 选择文件后立即渲染缩略图,OSS 上传在后台并行进行

- 上传完成后按 id 替换为 OSS URL,释放本地 blob URL
2026-06-17 18:47:10 +08:00
stringadmin 6e45f05e69 Merge pull request 'feat: 电商创作场景支持带货视频时长、移动端隐藏设置按钮、优化平台选择器样式' (#26) from feat/ecommerce-scenario-tabs into main
Reviewed-on: #26
2026-06-17 09:44:00 +00:00
ludan 6dd2a107fd feat: 电商创作场景支持带货视频时长、移动端隐藏设置按钮、优化平台选择器样式
- 新增带货视频时长选项(5/10/15秒)及时长选择 popover

- 创作标签在移动端(<=640px)隐藏平台/语种/比例/设置/时长按钮行,仅保留文本输入框

- 重构平台选择器为单列滚动列表,移除平台 logo,统一比例/语种/平台 active 高亮样式

- 优化 composer 整体布局节奏(素材紧凑、工具栏底部固定、响应式高度)

- 调整 AI 帮写提交按钮为青色系渐变样式
2026-06-17 17:02:55 +08:00
stringadmin 9729f60ea7 Merge pull request 'feat: add composer toolbelt with asset library, work mode selector, AI-powered prompt writing, and scenario settings' (#25) from feat/ecommerce-scenario-tabs into main
Reviewed-on: #25
2026-06-17 06:54:12 +00:00
ludan 2cd76ec3a5 feat: add composer toolbelt with asset library, work mode selector, AI-powered prompt writing, and scenario settings
- EcommercePage.tsx (+260):
  - Add ComposerAssetTabKey and ComposerWorkModeKey types; extend ComposerMenuKey with assetLibrary/workMode/aiWrite
  - Add composerTooltip/composerAssetTab/composerWorkMode/aiWriteDraft state
  - Add composerAssetTabs (最近保存/套图配方/模特库), composerWorkModeOptions (快捷/思考), and composerRatioOptions (7 presets with display dimensions)
  - Add scenarioSettingsKeys and scenarioAdvancedSettingsKeys for conditional settings panel display
  - Add PaperPlaneRight icon import for AI writing send button
  - Reorder salesVideo tag position in commerceScenarioOptions; emoji icons replace Ant Design icons
  - handleCommerceScenarioClick: second click on active scenario now deselects (sets null) instead of toggling visibility
  - shouldShowScenarioSettings: settings panel visible for poster/mainImage/model/scene/festival/salesVideo but not popular
  - renderComposerAssetPanel: asset library popover with tab selector (recent/recipe/model) and grid display
  - renderComposerWorkModePanel: work mode radio popover with description cards
  - renderComposerAiWritePanel: AI prompt auto-complete panel with text input and send button; applyAiWriteSuggestion merges keyword + mode hint + platform context into composer prompt
  - Toolbar restructured with .ecom-command-tool pill buttons (upload/assets/mode/AI write) in .ecom-command-composer-actions

- ecommerce-standalone.css (+937):
  - Composer toolbar: horizontal flex row with space-between, overflow-x scroll with hidden scrollbar
  - .ecom-command-tool: 40px pill-shaped buttons with gradient backgrounds, hover/active/dragging states with glow transition and lift
  - .ecom-command-tool--upload: icon+label layout for upload button
  - .ecom-command-tool--icon: 40px square icon-only button variant
  - Asset panel: tab selector row, 3-column recipe grid with aspect-ratio cards, hover scale effect
  - Work mode panel: radio-style card selector with description text
  - AI write panel: text input area with send button, responsive sizing
  - Tooltip: positioned above toolbar buttons with arrow pointer

- pages/ecommerce.css (+490):
  - Composer input focus-within: green glow border + deepened shadow + lift transition
  - Asset library, work mode, AI write panel styles with consistent tokenized spacing and transitions

- standalone/overrides.css (+7):
  - ≤420px settings option row: switch from grid to flex with flex:1 on buttons for tight viewport fit
2026-06-17 14:52:42 +08:00
stringadmin 7fa51ff90a Merge pull request 'Codex/main latest 20260615 030000' (#24) from codex/main-latest-20260615-030000 into main
Reviewed-on: #24
2026-06-17 03:20:02 +00:00
Codex 2c3c6eb2c9 Merge remote-tracking branch 'origin/main' into codex/main-latest-20260615-030000
# Conflicts:
#	src/styles/ecommerce-standalone.css
2026-06-17 11:04:26 +08:00
stringadmin d83ad25be3 Merge pull request 'feat: enhance scenario tabs with more/expand toggle, template carousel navigation, and 16 new templates' (#23) from feat/ecommerce-scenario-tabs into main
Reviewed-on: #23
2026-06-17 02:16:55 +00:00
ludan e86cd18f1d feat: enhance scenario tabs with more/expand toggle, template carousel navigation, and 16 new templates
- package.json: Add @phosphor-icons/react ^2.1.10 dependency for additional icon set
- package-lock.json: Sync lockfile with new dependency and clean peer:true markers

- EcommercePage.tsx:
  - Reorder scenario tabs: model (模特图) moved to position 3 after mainImage
  - Add primaryCommerceScenarioKeys to define first 4 visible scenarios (popular/poster/mainImage/model)
  - Change activeCommerceScenario initial state from "popular" to null — no scenario auto-selected on mount
  - Add isCommerceScenarioMoreOpen state to toggle expanded scenario list
  - Add templateStripRef for programmatic scroll control
  - visibleCommerceScenarioOptions: filter to primary keys by default, show all when expanded
  - "更多/收起" toggle button with dashed border, dynamic icon (··· or CloseOutlined)
  - isCloneTemplateStripVisible defaults to false — template strip hidden until scenario clicked
  - activeCommerceScenarioTemplates: returns empty array when no scenario selected
  - Template strip wrapped in ecom-command-template-carousel with prev/next navigation arrows (‹ ›)
  - scrollCommerceTemplateStrip(direction): smooth scroll by card width or viewport step
  - handleCommerceScenarioMoreToggle: expand/collapse scenario list
  - handleCloneTemplateCardClick: now also sets activeCommerceScenario to card.scenario
  - Scroll hint text: "点击更多查看全部场景" when collapsed, "左右滑动查看全部场景" when expanded
  - Auto-scroll template strip to left on scenario/visibility change via useEffect

  - Add 16 new CommerceScenarioTemplate cards:
    - poster: 节日礼赠海报, 奢品香水海报
    - mainImage: 模特展示主图, 细节质感主图
    - model: 男装夹克模特, 帽子配饰模特
    - scene: 户外露营场景, 美妆喷雾场景
    - festival: 父亲节礼盒图, 香薰蜡烛礼盒
    - background: 高级灰背景, 居家背景
    - retouch: 色彩统一精修, 细节锐化精修
    - salesVideo: 痛点种草视频, 温馨开箱视频

- ecommerce-standalone.css (+559 lines):
  - Scenario shell (.ecom-command-scenario-shell): centered flex wrapper with padding
  - Scenario tabs: pill-shaped buttons (border-radius 999px), gradient backgrounds, scroll-snap
  - "更多" button: dashed border in collapsed state, solid when expanded
  - Template carousel (.ecom-command-template-carousel): horizontal scroll with snap, smooth scroll-behavior, hidden scrollbar
  - Carousel fade edges: ::before/::after gradient masks (54px width)
  - Navigation arrows (.ecom-command-template-nav): circular buttons positioned absolute at edges, hover/focus reveal with scale transition, opacity 0→1 on carousel hover
  - Template cards: flexible sizing (clamp 260px-312px), 96px media thumbnail, scroll-snap-align start
  - Per-scenario color mapping via --mode-accent: popular pink, poster/festival orange, mainImage/scene/background green, model/retouch/salesVideo blue, more blue
  - Active state: radial gradient glow + color-mix border/shadow from --mode-accent
  - Scroll hint: animated ← → arrows (ecom-scroll-hint-left/right keyframes at 1.6s infinite)
  - Responsive: ≤900px left-aligned tabs + persistent nav arrows, ≤640px compact sizing, full-width carousel with overflow hidden
2026-06-17 10:16:40 +08:00
Codex eb7b769155 Merge remote-tracking branch 'origin/main' into codex/main-latest-20260615-030000
# Conflicts:
#	src/styles/ecommerce-standalone.css
2026-06-16 23:28:07 +08:00
stringadmin 0e24ccf7b1 Merge pull request 'Main merge work' (#22) from main-merge-work into main
Reviewed-on: #22
2026-06-16 14:51:01 +00:00
stringadmin f8ccad52f9 Merge branch 'main' into main-merge-work 2026-06-16 14:50:51 +00:00
Codex ad38a4a0e3 feat(ecommerce): add one-click copywriting tool with quick-board entry
- Add EcommerceCopywritingPanel component

- Wire copywriting tool into EcommercePage routing and state

- Add quick action entry; place before '更多功能'

- Add copywriting styles aligned with quick-set/hot-clone pages

- Merge latest main
2026-06-16 21:47:07 +08:00
stringadmin 30222cd830 Merge pull request 'Main merge work' (#21) from main-merge-work into main
Reviewed-on: #21
2026-06-16 13:13:50 +00:00
7 changed files with 4287 additions and 316 deletions
+14 -8
View File
@@ -9,6 +9,7 @@
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@ant-design/icons": "5.3.0", "@ant-design/icons": "5.3.0",
"@phosphor-icons/react": "^2.1.10",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"scheduler": "0.23.0", "scheduler": "0.23.0",
@@ -119,7 +120,6 @@
"integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.29.7", "@babel/code-frame": "^7.29.7",
"@babel/generator": "^7.29.7", "@babel/generator": "^7.29.7",
@@ -851,6 +851,19 @@
"@jridgewell/sourcemap-codec": "^1.4.14" "@jridgewell/sourcemap-codec": "^1.4.14"
} }
}, },
"node_modules/@phosphor-icons/react": {
"version": "2.1.10",
"resolved": "https://registry.npmjs.org/@phosphor-icons/react/-/react-2.1.10.tgz",
"integrity": "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"peerDependencies": {
"react": ">= 16.8",
"react-dom": ">= 16.8"
}
},
"node_modules/@rollup/pluginutils": { "node_modules/@rollup/pluginutils": {
"version": "5.4.0", "version": "5.4.0",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.4.0.tgz",
@@ -1296,7 +1309,6 @@
"integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==", "integrity": "sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==",
"devOptional": true, "devOptional": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/prop-types": "*", "@types/prop-types": "*",
"@types/scheduler": "*", "@types/scheduler": "*",
@@ -1581,7 +1593,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.10.12", "baseline-browser-mapping": "^2.10.12",
"caniuse-lite": "^1.0.30001782", "caniuse-lite": "^1.0.30001782",
@@ -2710,7 +2721,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
"integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"loose-envify": "^1.1.0" "loose-envify": "^1.1.0"
}, },
@@ -2723,7 +2733,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
"integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"loose-envify": "^1.1.0", "loose-envify": "^1.1.0",
"scheduler": "^0.23.0" "scheduler": "^0.23.0"
@@ -2794,7 +2803,6 @@
"integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==", "integrity": "sha512-nc72Wgq62I7rtDV4izT5/aaS0zxy3kttkinf9586ApknY3jZO9NYsmtc24fUckA0X7Q2v+ML4a15pdUlV5V/jA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@types/estree": "1.0.9" "@types/estree": "1.0.9"
}, },
@@ -3166,7 +3174,6 @@
"integrity": "sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==", "integrity": "sha512-STmSFzhY4ljuhz14bg9LkMTk3d98IO6DIArnTY6MeBwiD1Za2StcQtz7fzOUnRCqrHSD5+OS2reg4HOz1eoLnw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.19.3", "esbuild": "^0.19.3",
"postcss": "^8.4.35", "postcss": "^8.4.35",
@@ -3257,7 +3264,6 @@
"integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@vitest/expect": "1.6.1", "@vitest/expect": "1.6.1",
"@vitest/runner": "1.6.1", "@vitest/runner": "1.6.1",
+1
View File
@@ -16,6 +16,7 @@
}, },
"dependencies": { "dependencies": {
"@ant-design/icons": "5.3.0", "@ant-design/icons": "5.3.0",
"@phosphor-icons/react": "^2.1.10",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"scheduler": "0.23.0", "scheduler": "0.23.0",
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,289 @@
import { useState } from "react";
import {
AppstoreOutlined,
CopyOutlined,
EditOutlined,
FileTextOutlined,
FireOutlined,
GlobalOutlined,
MessageOutlined,
SmileOutlined,
ThunderboltOutlined,
} from "@ant-design/icons";
export type CopywritingType =
| "self-media"
| "universal"
| "original"
| "imitate"
| "wechat"
| "crossborder"
| "emoji"
| "more";
interface CopywritingTypeOption {
key: CopywritingType;
label: string;
icon: React.ReactNode;
description: string;
}
const copywritingTypes: CopywritingTypeOption[] = [
{ key: "self-media", label: "自媒体文案", icon: <MessageOutlined />, description: "小红书/抖音/公众号风格" },
{ key: "universal", label: "万能写作", icon: <EditOutlined />, description: "通用场景长文短句" },
{ key: "original", label: "一键原创", icon: <ThunderboltOutlined />, description: "快速改写去重" },
{ key: "imitate", label: "文案仿写", icon: <CopyOutlined />, description: "参照爆款风格重写" },
{ key: "wechat", label: "微信营销文案", icon: <FileTextOutlined />, description: "朋友圈/社群转化文案" },
{ key: "crossborder", label: "跨境商品文案", icon: <GlobalOutlined />, description: "Amazon/Temu 卖点描述" },
{ key: "emoji", label: "文案加Emoji", icon: <SmileOutlined />, description: "自动插入表情符号" },
{ key: "more", label: "更多场景", icon: <AppstoreOutlined />, description: "持续更新中" },
];
const wordCountOptions = ["不限", "100字", "300字", "500字", "800字"];
const exampleResults: Record<CopywritingType, Array<{ title: string; body: string; points: string[] }>> = {
"self-media": [
{
title: "超值干发神器,吸水力 MAX",
body: "家人们,我发现了一款干发帽,双层加厚吸水力超强!而且只要个位数就能到手啊!",
points: [
"超强吸水力:这款干发帽采用微纤维材质,轻轻一裹,水分立马被吸走,头发快速告别湿漉漉。",
"柔软亲肤:触感超级柔软,对皮肤和头发都是温柔的抚摸,不会有摩擦伤害哦。",
"加厚设计:比普通干发帽更厚实,吸水效果自然更胜一筹,长发妹子的福音!",
"方便携带:轻巧不占空间,不论是去健身房还是旅行,携带都毫无负担。",
],
},
],
universal: [
{
title: "直接抄作业!科学的减重方法必试!",
body: "姐妹们冲鸭!有很多科学有效的方式可以帮助我们实现理想体重,今天就来分享一下必试的方法!",
points: [
"快乐有氧运动:科学的减重方式,通过有氧运动如慢跑、游泳等,能够促进脂肪燃烧,让身体更健康!",
"均衡饮食规划:摄入足够的蛋白质、蔬果以及谷物,避免过多的高糖和高脂食物,帮助达到减重目标!",
"科学计算热量:了解自己每日所需的卡路里摄入量,合理安排每餐的热量搭配,控制总摄入量。",
"坚持低强度运动:逐渐增加日常活动量,如步行、瑜伽等,通过持续的轻度运动,加速代谢!",
"合理休息调节:不要忽视睡眠的重要性,保证每晚充足的睡眠时间,帮助恢复体力和新陈代谢。",
],
},
],
original: [
{
title: "原创种草|这款干发帽真的值得入!",
body: "洗完头最烦的就是湿哒哒滴水?试试这条双层加厚干发帽,吸水速度真的惊艳到我。",
points: [
"加厚材质,吸水更快更彻底",
"柔软不勒头,长发短发都能用",
"轻便好收纳,差旅党必备",
"性价比超高,入手不亏",
],
},
],
imitate: [
{
title: "仿写爆款|让头发速干的小心机",
body: "姐妹们有没有发现,最近超火的干发帽真的太好用了!轻轻一裹,几分钟头发就半干了。",
points: [
"双层加厚,吸水力翻倍",
"柔软亲肤,不伤发质",
"小巧便携,出门也能带",
"颜值在线,多色可选",
],
},
],
wechat: [
{
title: "朋友圈文案|个位数到手的干发神器",
body: "今天必须给大家安利这个干发帽!双层加厚,吸水超强,个位数就能到手,真的不冲吗?",
points: [
"微纤维材质,轻柔速干",
"加厚设计,吸水更彻底",
"小巧便携,旅行出差都能带",
"限时好价,手慢无",
],
},
],
crossborder: [
{
title: "Amazon ListingSuper Absorbent Hair Turban",
body: "Made with ultra-soft microfiber, this double-layer hair turban dries hair quickly while protecting delicate strands.",
points: [
"Double-layer microfiber for maximum absorbency",
"Gentle on hair and skin, no frizz or breakage",
"Lightweight and travel-friendly design",
"Secure button closure stays in place",
],
},
],
emoji: [
{
title: "✨个位数到手的干发神器,吸水力 MAX!",
body: "家人们👋,我发现了一款超棒的干发帽💧,双层加厚吸水力超强!而且只要个位数就能到手啊🛒!",
points: [
"💦 超强吸水力:微纤维材质,轻轻一裹水分吸走",
"☁️ 柔软亲肤:触感温柔,不伤头发和皮肤",
"🎒 方便携带:轻巧不占空间,旅行健身都能带",
"💰 超值价格:个位数到手,性价比拉满",
],
},
],
more: [
{
title: "更多场景示例",
body: "选择左侧具体文案类型即可生成对应场景内容,更多场景持续更新中。",
points: ["选择合适的文案类型", "填写内容需求", "选择生成字数", "点击开始生成"],
},
],
};
export interface EcommerceCopywritingPanelProps {
onClose: () => void;
}
export default function EcommerceCopywritingPanel({ onClose }: EcommerceCopywritingPanelProps) {
const [selectedType, setSelectedType] = useState<CopywritingType>("self-media");
const [requirement, setRequirement] = useState("");
const [wordCount, setWordCount] = useState("不限");
const [loading, setLoading] = useState(false);
const [results, setResults] = useState<typeof exampleResults["self-media"]>([]);
const handleGenerate = () => {
setLoading(true);
setResults([]);
// 模拟生成延迟
window.setTimeout(() => {
setResults(exampleResults[selectedType]);
setLoading(false);
}, 1200);
};
const selectedTypeLabel = copywritingTypes.find((item) => item.key === selectedType)?.label ?? "文案";
return (
<main className="ecom-copywriting-page ecom-tool-page-enter" aria-label="一键文案">
<div className="ecom-copywriting-body">
<aside className="ecom-copywriting-panel" aria-label="文案设置">
<header className="ecom-copywriting-panel-head">
<strong className="ecom-copywriting-page-title"></strong>
<button type="button" className="ecom-copywriting-back" onClick={onClose}>
</button>
<button type="button" className="ecom-copywriting-back" onClick={onClose}>
</button>
</header>
<section className="ecom-copywriting-section">
<strong className="ecom-copywriting-section-title"></strong>
<div className="ecom-copywriting-type-grid">
{copywritingTypes.map((item) => (
<button
key={item.key}
type="button"
className={`ecom-copywriting-type-card${selectedType === item.key ? " is-active" : ""}`}
onClick={() => setSelectedType(item.key)}
>
<span className="ecom-copywriting-type-icon" aria-hidden="true">
{item.icon}
</span>
<span className="ecom-copywriting-type-label">{item.label}</span>
<span className="ecom-copywriting-type-desc">{item.description}</span>
</button>
))}
</div>
</section>
<section className="ecom-copywriting-section">
<strong className="ecom-copywriting-section-title"></strong>
<textarea
className="ecom-copywriting-textarea"
value={requirement}
onChange={(event) => setRequirement(event.target.value)}
placeholder="例如:主题、核心卖点、适用人群、期望场景等"
rows={5}
/>
</section>
<section className="ecom-copywriting-section">
<strong className="ecom-copywriting-section-title"></strong>
<div className="ecom-copywriting-wordcount">
{wordCountOptions.map((item) => (
<button
key={item}
type="button"
className={wordCount === item ? "is-active" : ""}
onClick={() => setWordCount(item)}
>
{item}
</button>
))}
</div>
</section>
<button
type="button"
className="ecom-copywriting-generate"
onClick={handleGenerate}
disabled={loading}
>
{loading ? (
<>
<span className="ecom-copywriting-spinner" />
</>
) : (
<>
<ThunderboltOutlined />
</>
)}
</button>
</aside>
<section className="ecom-copywriting-stage" aria-label="生成文案预览">
<header className="ecom-copywriting-preview-head">
<h1></h1>
<p>
<span>{selectedTypeLabel}</span> AI
</p>
</header>
<div className="ecom-copywriting-results">
{results.length === 0 && !loading ? (
<div className="ecom-copywriting-empty">
<FileTextOutlined />
<strong></strong>
<em></em>
</div>
) : null}
{loading ? (
<div className="ecom-copywriting-loading">
<span className="ecom-copywriting-spinner" />
<span>AI </span>
</div>
) : null}
{results.map((item, index) => (
<article key={index} className="ecom-copywriting-result-card">
<header>
<span> {index + 1}</span>
<strong>{item.title}</strong>
</header>
<p className="ecom-copywriting-result-body">{item.body}</p>
<ul className="ecom-copywriting-result-points">
{item.points.map((point, pointIndex) => (
<li key={pointIndex}>
<span>{pointIndex + 1}</span>
{point}
</li>
))}
</ul>
</article>
))}
</div>
</section>
</div>
</main>
);
}
File diff suppressed because it is too large Load Diff
+643 -30
View File
@@ -3047,33 +3047,47 @@
border-radius: 18px; border-radius: 18px;
background: #1b1d23; background: #1b1d23;
padding: 12px; padding: 12px;
transition:
border-color 180ms ease,
box-shadow 180ms ease,
transform 180ms ease;
}
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper:focus-within {
border-color: rgba(0, 255, 136, 0.45);
box-shadow:
0 0 0 1px rgba(0, 255, 136, 0.08),
0 18px 46px rgba(0, 0, 0, 0.32);
transform: translateY(-1px);
} }
.product-clone-page[data-tool="clone"] .clone-ai-send-button { .product-clone-page[data-tool="clone"] .clone-ai-send-button {
display: grid; display: inline-flex;
align-items: center;
justify-content: center;
width: 38px; width: 38px;
height: 38px; height: 38px;
place-items: center;
border: 1px solid #303540; border: 1px solid #303540;
border-radius: 999px; border-radius: 12px;
background: #22252d; background: #00ff88;
color: #eef2f6; color: #06130d;
font-size: 20px;
font-weight: 900;
cursor: pointer; cursor: pointer;
transition: transition:
background-color 160ms ease, background-color 160ms ease,
border-color 160ms ease, border-color 160ms ease,
transform 160ms ease; transform 160ms ease,
box-shadow 160ms ease;
} }
.product-clone-page[data-tool="clone"] .clone-ai-send-button:hover:not(:disabled) { .product-clone-page[data-tool="clone"] .clone-ai-send-button:hover:not(:disabled) {
border-color: #00ff88; border-color: #00ff88;
background: #202c28; background: #00ff88;
box-shadow: 0 10px 24px rgba(0, 255, 136, 0.24);
transform: translateY(-1px);
} }
.product-clone-page[data-tool="clone"] .clone-ai-send-button:active:not(:disabled) { .product-clone-page[data-tool="clone"] .clone-ai-send-button:active:not(:disabled) {
transform: scale(0.94); transform: translateY(0) scale(0.96);
} }
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea { .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea {
@@ -3082,7 +3096,7 @@
max-height: 183px; max-height: 183px;
border: 0; border: 0;
outline: none; outline: none;
resize: vertical; resize: none;
background: transparent; background: transparent;
color: #eef2f6; color: #eef2f6;
padding: 10px 0 8px; padding: 10px 0 8px;
@@ -3093,17 +3107,15 @@
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea::placeholder { .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea::placeholder {
color: #687184; color: #687184;
} font-size: 13px;
font-weight: 400;
.product-clone-page[data-tool="clone"] .clone-ai-send-button {
background: #00ff88;
color: #06130d;
} }
.product-clone-page[data-tool="clone"] .clone-ai-send-button:disabled { .product-clone-page[data-tool="clone"] .clone-ai-send-button:disabled {
background: #26342f; background: #26342f;
color: #677569; color: #677569;
cursor: not-allowed; cursor: not-allowed;
opacity: 0.7;
} }
.product-clone-page[data-tool="clone"] .clone-ai-char-count { .product-clone-page[data-tool="clone"] .clone-ai-char-count {
@@ -8945,17 +8957,28 @@
rgba(20, 24, 23, 0.92); rgba(20, 24, 23, 0.92);
box-shadow: var(--ecm-shadow-panel); box-shadow: var(--ecm-shadow-panel);
backdrop-filter: blur(18px); backdrop-filter: blur(18px);
transition:
border-color 180ms ease,
box-shadow 180ms ease,
transform 180ms ease;
} }
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper:focus-within { .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper:focus-within {
border-color: rgba(var(--ecm-accent-rgb), 0.42); border-color: rgba(var(--ecm-accent-rgb), 0.5);
box-shadow: box-shadow:
0 20px 58px rgba(0, 0, 0, 0.34), 0 22px 62px rgba(0, 0, 0, 0.36),
0 0 0 1px rgba(var(--ecm-accent-rgb), 0.08); 0 0 0 1px rgba(var(--ecm-accent-rgb), 0.1);
transform: translateY(-1px);
} }
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea { .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea {
color: var(--ecm-text); color: var(--ecm-text);
resize: none;
}
.product-clone-page[data-tool="clone"] .clone-ai-input-wrapper textarea::placeholder {
font-size: 13px;
font-weight: 400;
} }
.product-clone-page[data-tool="clone"] .clone-ai-char-count { .product-clone-page[data-tool="clone"] .clone-ai-char-count {
@@ -9845,10 +9868,14 @@
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send {
position: static; position: static;
display: inline-flex;
align-items: center;
justify-content: center;
width: 46px; width: 46px;
height: 46px; height: 46px;
min-height: 46px; min-height: 46px;
border: 1px solid rgba(var(--ecm-accent-rgb), 0.55); border: 1px solid rgba(var(--ecm-accent-rgb), 0.55);
border-radius: 12px;
color: #021b2e; color: #021b2e;
background: linear-gradient(135deg, #16c8df, #18a7ff); background: linear-gradient(135deg, #16c8df, #18a7ff);
box-shadow: 0 12px 28px rgba(var(--ecm-accent-rgb), 0.32); box-shadow: 0 12px 28px rgba(var(--ecm-accent-rgb), 0.32);
@@ -9856,8 +9883,12 @@
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send:hover:not(:disabled) { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send:hover:not(:disabled) {
transform: translateY(-1px); transform: translateY(-2px) scale(1.02);
box-shadow: 0 16px 34px rgba(var(--ecm-accent-rgb), 0.36); box-shadow: 0 18px 38px rgba(var(--ecm-accent-rgb), 0.38);
}
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send:active:not(:disabled) {
transform: translateY(0) scale(0.98);
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send:disabled { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-send:disabled {
@@ -9865,6 +9896,7 @@
color: rgba(255, 255, 255, 0.26); color: rgba(255, 255, 255, 0.26);
background: rgba(126, 235, 255, 0.08); background: rgba(126, 235, 255, 0.08);
box-shadow: none; box-shadow: none;
opacity: 0.7;
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-char-count { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-char-count {
@@ -11053,16 +11085,17 @@
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:focus-within { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:focus-within {
border-color: var(--ecom-entry-line-strong) !important; border-color: rgba(30, 189, 219, 0.5) !important;
box-shadow: box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.92), inset 0 1px 0 rgba(255, 255, 255, 0.96),
0 0 0 1px rgba(30, 189, 219, 0.08),
var(--ecom-entry-focus), var(--ecom-entry-focus),
var(--ecom-entry-shadow-strong) !important; var(--ecom-entry-shadow-strong) !important;
transform: translateY(-1px); transform: translateY(-1px);
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:hover { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:hover {
border-color: rgba(30, 189, 219, 0.3) !important; border-color: rgba(30, 189, 219, 0.32) !important;
box-shadow: box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.92), inset 0 1px 0 rgba(255, 255, 255, 0.92),
0 26px 72px rgba(16, 115, 204, 0.13) !important; 0 26px 72px rgba(16, 115, 204, 0.13) !important;
@@ -11070,10 +11103,10 @@
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer.is-dragging, .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer.is-dragging,
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer.has-files { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer.has-files {
border-color: rgba(30, 189, 219, 0.42) !important; border-color: rgba(30, 189, 219, 0.5) !important;
background: background:
linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(244, 253, 255, 0.96) 100%), linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(244, 253, 255, 0.96) 100%),
linear-gradient(135deg, rgba(30, 189, 219, 0.1), rgba(16, 115, 204, 0.06)) !important; linear-gradient(135deg, rgba(30, 189, 219, 0.12), rgba(16, 115, 204, 0.08)) !important;
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-reference { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-reference {
@@ -11114,8 +11147,11 @@
caret-color: var(--ecom-entry-accent) !important; caret-color: var(--ecom-entry-accent) !important;
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-input::placeholder { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-input::placeholder,
color: rgba(16, 32, 44, 0.38) !important; .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-composer textarea::placeholder {
color: rgba(16, 32, 44, 0.42) !important;
font-size: 13px !important;
font-weight: 400 !important;
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-toolbar { .ecommerce-standalone .product-clone-page[data-tool="clone"] .ecom-command-toolbar {
@@ -11200,11 +11236,16 @@
box-shadow: box-shadow:
0 20px 38px rgba(30, 189, 219, 0.34), 0 20px 38px rgba(30, 189, 219, 0.34),
inset 0 1px 0 rgba(255, 255, 255, 0.42) !important; inset 0 1px 0 rgba(255, 255, 255, 0.42) !important;
transform: translateY(-1px); transform: translateY(-2px) scale(1.03);
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-send-button.ecom-command-send:active:not(:disabled) { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-send-button.ecom-command-send:active:not(:disabled) {
transform: translateY(1px) scale(0.98); transform: translateY(0) scale(0.97);
}
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-send-button.ecom-command-send:disabled {
opacity: 0.5 !important;
filter: grayscale(0.35) !important;
} }
.ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-char-count { .ecommerce-standalone .product-clone-page[data-tool="clone"] .clone-ai-char-count {
@@ -12209,3 +12250,575 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
margin: 0 !important; margin: 0 !important;
font-size: 24px !important; font-size: 24px !important;
} }
/* Final composer toolbelt overrides: keep upload/assets/mode/AI writing responsive and single-line. */
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
flex-direction: row !important;
align-items: center !important;
justify-content: space-between !important;
gap: 12px !important;
min-width: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-actions {
display: flex !important;
flex: 1 1 auto !important;
flex-wrap: nowrap !important;
align-items: center !important;
gap: 8px !important;
min-width: 0 !important;
overflow-x: auto !important;
overflow-y: visible !important;
padding: 2px !important;
scrollbar-width: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-actions::-webkit-scrollbar {
display: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool {
position: relative !important;
flex: 0 0 auto !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
height: 40px !important;
min-height: 40px !important;
border: 1px solid rgba(16, 32, 44, 0.08) !important;
border-radius: 999px !important;
color: rgba(16, 32, 44, 0.72) !important;
background: rgba(255, 255, 255, 0.82) !important;
box-shadow: 0 6px 18px rgba(16, 115, 204, 0.045), inset 0 1px 0 rgba(255, 255, 255, 0.96) !important;
cursor: pointer !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool:hover,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool.is-active,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool.has-images,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool.is-dragging {
border-color: rgba(30, 189, 219, 0.32) !important;
color: #0f829b !important;
background: rgba(232, 249, 253, 0.95) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--upload {
gap: 7px !important;
width: auto !important;
min-width: max-content !important;
padding: 0 13px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon {
width: 40px !important;
min-width: 40px !important;
padding: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon::after {
position: absolute !important;
left: 50% !important;
bottom: calc(100% + 10px) !important;
z-index: 260 !important;
padding: 6px 9px !important;
border-radius: 8px !important;
color: #ffffff !important;
background: rgba(16, 32, 44, 0.72) !important;
content: attr(data-tooltip) !important;
font-size: 12px !important;
font-weight: 760 !important;
line-height: 1 !important;
opacity: 0 !important;
pointer-events: none !important;
transform: translate(-50%, 4px) !important;
white-space: nowrap !important;
transition: opacity 150ms ease, transform 150ms ease !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon:hover::after,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon:focus-visible::after {
opacity: 1 !important;
transform: translate(-50%, 0) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--library,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--ai-write {
gap: 14px !important;
border-color: rgba(16, 32, 44, 0.08) !important;
border-radius: 24px !important;
background: rgba(255, 255, 255, 0.98) !important;
box-shadow: 0 30px 76px rgba(16, 115, 204, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.92) !important;
color: #10202c !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--library {
width: min(540px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(540px, calc(100% - var(--composer-popover-left, 0px))) !important;
min-height: 300px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--work-mode {
width: min(340px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(340px, calc(100% - var(--composer-popover-left, 0px))) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--ai-write {
width: min(430px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(430px, calc(100% - var(--composer-popover-left, 0px))) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-head,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode header,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--ai-write header {
display: flex !important;
align-items: center !important;
justify-content: space-between !important;
gap: 12px !important;
color: #10202c !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-head strong,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode header strong,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--ai-write header strong {
color: #10202c !important;
font-size: 22px !important;
font-weight: 880 !important;
white-space: nowrap !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-help {
display: inline-flex !important;
align-items: center !important;
gap: 5px !important;
min-height: 28px !important;
padding: 0 8px !important;
border: 0 !important;
color: #1073cc !important;
background: transparent !important;
box-shadow: none !important;
font-size: 13px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-tabs {
display: flex !important;
flex-wrap: nowrap !important;
gap: 8px !important;
overflow-x: auto !important;
scrollbar-width: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-tabs::-webkit-scrollbar {
display: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-tabs button {
flex: 0 0 auto !important;
min-height: 40px !important;
padding: 0 14px !important;
border: 0 !important;
border-radius: 10px !important;
color: #687885 !important;
background: #f2f5f8 !important;
box-shadow: none !important;
font-size: 14px !important;
text-align: center !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-tabs button.is-active {
color: #10202c !important;
background: #e8edf3 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-empty {
display: grid !important;
min-height: 170px !important;
place-items: center !important;
align-content: center !important;
gap: 8px !important;
color: #8b99a4 !important;
text-align: center !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-empty .anticon {
color: rgba(30, 189, 219, 0.58) !important;
font-size: 42px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-empty strong {
color: #7d8a94 !important;
font-size: 15px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-empty span {
color: #a1adb6 !important;
font-size: 12px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list {
display: grid !important;
grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
gap: 10px !important;
min-width: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list button,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode > button {
display: grid !important;
align-content: center !important;
gap: 5px !important;
min-height: 72px !important;
border-color: rgba(16, 32, 44, 0.08) !important;
border-radius: 16px !important;
color: #10202c !important;
background: linear-gradient(180deg, #ffffff, #f7fbfc) !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.86) !important;
white-space: normal !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list button:hover,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list button.is-active,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode > button:hover,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode > button.is-active {
border-color: rgba(30, 189, 219, 0.34) !important;
background: linear-gradient(180deg, #fafdff, #eefbfe) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list button strong,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode > button strong {
min-width: 0 !important;
overflow: hidden !important;
color: #10202c !important;
font-size: 14px !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list button span,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode > button span,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--work-mode header span,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--ai-write header span {
color: #7a8c98 !important;
font-size: 12px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover--ai-write textarea {
min-height: 136px !important;
width: 100% !important;
padding: 14px !important;
border: 1px solid rgba(16, 32, 44, 0.08) !important;
border-radius: 16px !important;
color: #10202c !important;
background: #fbfdfe !important;
box-shadow: none !important;
font-size: 14px !important;
line-height: 1.6 !important;
resize: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-ai-submit {
min-height: 44px !important;
justify-content: center !important;
border: 0 !important;
border-radius: 14px !important;
color: #ffffff !important;
background: linear-gradient(135deg, #1ebddb 0%, #0f829b 100%) !important;
box-shadow: 0 12px 28px rgba(15, 130, 155, 0.22) !important;
text-align: center !important;
transition: transform 160ms ease, box-shadow 160ms ease !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-ai-submit:hover {
background: linear-gradient(135deg, #21c8e3 0%, #1194ad 100%) !important;
box-shadow: 0 14px 32px rgba(15, 130, 155, 0.28) !important;
transform: translateY(-1px) !important;
}
@media (max-width: 640px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
flex-direction: row !important;
align-items: center !important;
min-height: 56px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-actions {
flex: 1 1 auto !important;
max-width: calc(100% - 54px) !important;
gap: 7px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool {
height: 38px !important;
min-height: 38px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon {
width: 38px !important;
min-width: 38px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--upload {
max-width: 112px !important;
padding: 0 11px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--upload strong {
max-width: 56px !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--icon::after {
display: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--library,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--work-mode,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover--ai-write {
inset: calc(100% + 12px) auto auto 0 !important;
left: 0 !important;
right: auto !important;
width: 100% !important;
min-width: 0 !important;
max-width: 100% !important;
max-height: min(420px, calc(100dvh - 380px)) !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-library-list {
grid-template-columns: minmax(0, 1fr) !important;
}
}
@media (max-width: 390px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--upload {
min-width: 40px !important;
width: 40px !important;
padding: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-tool--upload strong {
position: absolute !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
clip: rect(0 0 0 0) !important;
clip-path: inset(50%) !important;
}
}
@media (min-width: 641px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--library {
width: min(540px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(540px, calc(100% - var(--composer-popover-left, 0px))) !important;
min-height: 300px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--work-mode {
width: min(340px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(340px, calc(100% - var(--composer-popover-left, 0px))) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--ai-write {
width: min(430px, calc(100% - var(--composer-popover-left, 0px))) !important;
max-width: min(430px, calc(100% - var(--composer-popover-left, 0px))) !important;
}
}
@media (max-width: 640px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--library,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--work-mode,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--ai-write {
inset: calc(100% + 12px) auto auto 0 !important;
left: 0 !important;
right: auto !important;
width: 100% !important;
min-width: 0 !important;
max-width: 100% !important;
}
}
@media (max-height: 700px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover.ecom-command-popover--library {
min-height: 0 !important;
max-height: min(300px, calc(100dvh - 330px)) !important;
overflow-y: auto !important;
}
}
/* Final composer rhythm: keep attachments compact and pin the toolbelt to the card bottom. */
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer {
display: flex !important;
flex-direction: column !important;
justify-content: flex-start !important;
align-items: stretch !important;
gap: clamp(12px, 1.6vw, 18px) !important;
min-height: clamp(250px, 31vh, 316px) !important;
padding: clamp(18px, 2.05vw, 24px) clamp(18px, 2.3vw, 26px) clamp(16px, 1.9vw, 22px) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) {
min-height: clamp(286px, 35vh, 340px) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-asset-popover,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-popover {
display: flex !important;
flex-wrap: nowrap !important;
align-items: center !important;
align-self: start !important;
gap: 12px !important;
width: 100% !important;
max-width: 100% !important;
min-height: 64px !important;
margin: 0 !important;
padding: 0 2px 2px !important;
border: 0 !important;
background: transparent !important;
box-shadow: none !important;
overflow-x: auto !important;
overflow-y: hidden !important;
scrollbar-width: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-popover::-webkit-scrollbar {
display: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-add {
flex: 0 0 64px !important;
width: 64px !important;
height: 64px !important;
min-height: 64px !important;
padding: 0 !important;
border: 0 !important;
border-radius: 15px !important;
background: rgba(30, 189, 219, 0.1) !important;
color: #0b8fb2 !important;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add span {
font-size: 24px !important;
line-height: 1 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add small {
margin-top: 4px !important;
color: #0f7f9e !important;
font-size: 14px !important;
font-weight: 600 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-thumb,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-thumb {
flex: 0 0 64px !important;
width: 64px !important;
height: 64px !important;
min-height: 64px !important;
border-radius: 15px !important;
box-shadow: 0 12px 28px rgba(16, 115, 204, 0.12) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-option-row--settings {
align-self: start !important;
margin: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > textarea {
flex: 1 1 auto !important;
align-self: stretch !important;
width: 100% !important;
min-height: 86px !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
line-height: 1.58 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) > textarea {
min-height: 78px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
flex: 0 0 auto !important;
align-self: end !important;
width: 100% !important;
margin: auto 0 0 !important;
padding-top: clamp(12px, 1.45vw, 16px) !important;
border-top: 1px solid rgba(30, 189, 219, 0.12) !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-actions {
min-width: 0 !important;
}
@media (max-width: 640px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer {
gap: 12px !important;
min-height: 318px !important;
padding: 18px 16px 16px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) {
min-height: 336px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-asset-popover,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-popover {
gap: 10px !important;
min-height: 58px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-thumb,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-add,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-thumb {
flex-basis: 58px !important;
width: 58px !important;
height: 58px !important;
min-height: 58px !important;
border-radius: 14px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add span {
font-size: 22px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add small {
font-size: 13px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > textarea,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) > textarea {
min-height: 96px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
min-height: 58px !important;
padding-top: 12px !important;
}
}
@media (max-width: 390px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer {
min-height: 306px !important;
padding-inline: 14px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) {
min-height: 326px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-add,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-asset-thumb,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-add,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-composer-wrap:not(.has-generated.is-compact) .clone-ai-input-wrapper.ecom-command-composer:has(.ecom-command-asset-popover) .ecom-command-asset-thumb {
flex-basis: 54px !important;
width: 54px !important;
height: 54px !important;
min-height: 54px !important;
}
}
+12 -43
View File
@@ -1,4 +1,4 @@
@media (max-width: 640px) { @media (max-width: 640px) {
html body .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover.ecom-command-popover { html body .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-popover.ecom-command-popover {
position: absolute !important; position: absolute !important;
@@ -3461,9 +3461,8 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
row-gap: 10px !important; row-gap: 10px !important;
} }
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings button { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings {
flex: 1 1 calc(50% - 5px) !important; display: none !important;
justify-content: flex-start !important;
} }
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
@@ -3472,39 +3471,6 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
} }
@media (max-width: 420px) { @media (max-width: 420px) {
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings {
display: grid !important;
grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
gap: 7px !important;
justify-content: stretch !important;
overflow: visible !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings button {
display: inline-flex !important;
width: auto !important;
min-width: 0 !important;
max-width: none !important;
height: 42px !important;
min-height: 42px !important;
padding: 0 !important;
justify-content: center !important;
font-size: 0 !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings button > span:not(.ecom-command-option-icon) {
display: none !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-option-row.ecom-command-option-row--settings .ecom-command-option-icon {
display: inline-grid !important;
width: 22px !important;
height: 22px !important;
min-width: 22px !important;
margin: 0 !important;
font-size: 14px !important;
}
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .ecom-command-toolbar {
flex-direction: row !important; flex-direction: row !important;
align-items: center !important; align-items: center !important;
@@ -3559,15 +3525,18 @@ html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[d
z-index: 160 !important; z-index: 160 !important;
} }
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--platform { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--platforms {
width: min(360px, calc(100% - var(--composer-popover-left, 0px))) !important; width: fit-content !important;
max-width: min(360px, calc(100% - var(--composer-popover-left, 0px))) !important; min-width: 0 !important;
max-width: min(320px, calc(100% - var(--composer-popover-left, 0px))) !important;
} }
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--languages, html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--languages,
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--ratio-picker { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--ratio-picker,
width: min(420px, calc(100% - var(--composer-popover-left, 0px))) !important; html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--duration {
max-width: min(420px, calc(100% - var(--composer-popover-left, 0px))) !important; width: fit-content !important;
min-width: 0 !important;
max-width: min(320px, calc(100% - var(--composer-popover-left, 0px))) !important;
} }
html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--settings { html body #root .ecommerce-standalone.ecommerce-standalone .product-clone-page[data-tool="clone"][data-tool="clone"] .clone-ai-input-wrapper.ecom-command-composer > .ecom-command-popover.ecom-command-popover--settings {