diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetCard.tsx b/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetCard.tsx
index 0798968b3..a617cbc1b 100644
--- a/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetCard.tsx
+++ b/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetCard.tsx
@@ -21,11 +21,13 @@ export function TargetCard({
className="group flex aspect-square w-full flex-col items-center justify-center gap-4 rounded-3xl border border-[#e2cbb8] bg-[#fffaf5] p-6 text-center shadow-[0_18px_40px_rgba(112,57,30,0.08)] transition hover:-translate-y-0.5 hover:border-[#c7653d] hover:shadow-[0_22px_48px_rgba(112,57,30,0.14)]"
onClick={() => onOpen(target)}
>
-
+
+
+
{meta.label}
);
diff --git a/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetIcon.tsx b/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetIcon.tsx
index 5d24648a6..9076ac655 100644
--- a/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetIcon.tsx
+++ b/apps/ai-game-creator-shell/src/view/project-development/export/components/TargetIcon.tsx
@@ -1,12 +1,23 @@
-import placeholderIcon from '../../../../../../../packages/shared/src/icons/taonier-product-ip.png';
-import type { Target } from '../model';
+import rednoteIcon from '../../../../../../../packages/shared/src/icons/rednote.png';
+import taonierIcon from '../../../../../../../packages/shared/src/icons/taonier-product-ip.png';
+import taptapIcon from '../../../../../../../packages/shared/src/icons/taptap.png';
+import { Target } from '../model';
/**
- * 目标图标占位。
+ * 目标图标。
*
- * 三个目标的正式图标还没到,先统一用陶泥儿 IP 图占位;补齐后在这里按 `target` 分支,
- * 卡片与 tab 都不必改。`className` 交给调用方定尺寸(卡片里是主视觉,tab 里只是小标)。
+ * 陶泥儿用 IP 图;小红书(RedNote)与 TapTap 用各自的真实图标。三个目标的图源在这里
+ * 一处收口,卡片与 tab 都只认 `Target`,换图不用改调用方。
+ *
+ * TapTap 那张是横向 logo(宽高比约 3.6:1),所以调用方给的是矩形盒 + `object-contain`:
+ * 它按宽度贴满,方形图标则按高度贴满,互不拉伸。
*/
+const TARGET_ICON: Record = {
+ [Target.Taonier]: taonierIcon,
+ [Target.Xiaohongshu]: rednoteIcon,
+ [Target.TapTap]: taptapIcon,
+};
+
export function TargetIcon({
target,
size = 32,
@@ -18,7 +29,7 @@ export function TargetIcon({
}) {
return (
{TARGET_META[target].label}
diff --git a/packages/shared/src/icons/rednote.png b/packages/shared/src/icons/rednote.png
new file mode 100644
index 000000000..9b899776f
Binary files /dev/null and b/packages/shared/src/icons/rednote.png differ
diff --git a/packages/shared/src/icons/taptap.png b/packages/shared/src/icons/taptap.png
new file mode 100644
index 000000000..dc4be3926
Binary files /dev/null and b/packages/shared/src/icons/taptap.png differ