@inf-monkeys-tech/monkeys-design 0.4.50 → 0.4.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +335 -335
  3. package/dist/components/base/index.js +1 -1
  4. package/dist/components/base/index.js.map +1 -1
  5. package/dist/components/base/index.mjs +1 -1
  6. package/dist/components/base/index.mjs.map +1 -1
  7. package/dist/components/data-explorer/index.js.map +1 -1
  8. package/dist/components/data-explorer/index.mjs.map +1 -1
  9. package/dist/components/layout/index.js +5 -5
  10. package/dist/components/layout/index.js.map +1 -1
  11. package/dist/components/layout/index.mjs +5 -5
  12. package/dist/components/layout/index.mjs.map +1 -1
  13. package/dist/components/login/index.js.map +1 -1
  14. package/dist/components/login/index.mjs.map +1 -1
  15. package/dist/components/toast/index.js.map +1 -1
  16. package/dist/components/toast/index.mjs.map +1 -1
  17. package/dist/components/toolbar/index.js.map +1 -1
  18. package/dist/components/toolbar/index.mjs.map +1 -1
  19. package/dist/components/workbench/index.js +1 -1
  20. package/dist/components/workbench/index.js.map +1 -1
  21. package/dist/components/workbench/index.mjs +1 -1
  22. package/dist/components/workbench/index.mjs.map +1 -1
  23. package/dist/icons/oauth/index.js.map +1 -1
  24. package/dist/icons/oauth/index.mjs.map +1 -1
  25. package/dist/index.js +5 -5
  26. package/dist/index.js.map +1 -1
  27. package/dist/index.mjs +5 -5
  28. package/dist/index.mjs.map +1 -1
  29. package/dist/palette/index.js.map +1 -1
  30. package/dist/palette/index.mjs.map +1 -1
  31. package/dist/registry/index.js.map +1 -1
  32. package/dist/registry/index.mjs.map +1 -1
  33. package/dist/styles/global.scss +21 -21
  34. package/dist/styles/login-page.scss +518 -518
  35. package/dist/styles/workflow-board.scss +440 -440
  36. package/dist/styles/workflow-nodes.css +340 -340
  37. package/dist/theme-system/index.js +1 -1
  38. package/dist/theme-system/index.js.map +1 -1
  39. package/dist/theme-system/index.mjs +1 -1
  40. package/dist/theme-system/index.mjs.map +1 -1
  41. package/dist/themes/artist/index.js.map +1 -1
  42. package/dist/themes/artist/index.mjs.map +1 -1
  43. package/dist/themes/bsd/index.js.map +1 -1
  44. package/dist/themes/bsd/index.mjs.map +1 -1
  45. package/dist/themes/concept/index.js.map +1 -1
  46. package/dist/themes/concept/index.mjs.map +1 -1
  47. package/dist/themes/default/index.js.map +1 -1
  48. package/dist/themes/default/index.mjs.map +1 -1
  49. package/package.json +151 -151
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/bsd/components/LandingPage.tsx","../../../src/themes/bsd/components/ToolboxPanel.tsx","../../../src/themes/bsd/index.ts"],"names":["useEffect","useLayoutEffect","useState","jsx","jsxs","React"],"mappings":"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","file":"index.js","sourcesContent":["import type { ComponentType } from 'react';\nimport type { ComponentRegistry, ThemeConfig } from '../types';\n\n// 存储所有主题的组件注册表\nconst registries: Record<string, ComponentRegistry> = {};\n\n// 存储主题配置\nconst themeConfigs: Record<string, ThemeConfig> = {};\n\n/**\n * 注册主题组件\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\n * @param components 组件注册表\n * @param config 主题配置(可选)\n */\nexport function registerTheme(\n themeId: string,\n components: ComponentRegistry,\n config?: Omit<ThemeConfig, 'id'>\n): void {\n registries[themeId] = { ...registries[themeId], ...components };\n\n if (config) {\n themeConfigs[themeId] = { id: themeId, ...config };\n }\n}\n\n/**\n * 注册单个组件到指定主题\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @param component 组件\n */\nexport function registerComponent(\n themeId: string,\n componentName: string,\n component: ComponentType<any>\n): void {\n if (!registries[themeId]) {\n registries[themeId] = {};\n }\n registries[themeId][componentName] = component;\n}\n\n/**\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\n * @param themeId 主题 ID\n * @param componentName 组件名称\n * @returns 组件或 null\n */\nexport function resolveComponent<P = any>(\n themeId: string,\n componentName: string\n): ComponentType<P> | null {\n // 1. 先尝试获取主题特定组件\n const themeComponent = registries[themeId]?.[componentName];\n if (themeComponent) {\n return themeComponent as ComponentType<P>;\n }\n\n // 2. Fallback 到 default 主题\n const defaultComponent = registries['default']?.[componentName];\n if (defaultComponent) {\n return defaultComponent as ComponentType<P>;\n }\n\n // 3. 未找到\n return null;\n}\n\n/**\n * 检查主题是否有特定组件的定制版本\n * @param themeId 主题 ID\n * @param componentName 组件名称\n */\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\n return !!registries[themeId]?.[componentName];\n}\n\n/**\n * 获取主题的所有已注册组件名称\n * @param themeId 主题 ID\n */\nexport function getRegisteredComponents(themeId: string): string[] {\n return Object.keys(registries[themeId] || {});\n}\n\n/**\n * 获取所有已注册的主题 ID\n */\nexport function getRegisteredThemes(): string[] {\n return Object.keys(registries);\n}\n\n/**\n * 获取主题配置\n * @param themeId 主题 ID\n */\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\n return themeConfigs[themeId] || null;\n}\n\n/**\n * 清除所有注册(主要用于测试)\n */\nexport function clearRegistry(): void {\n Object.keys(registries).forEach((key) => delete registries[key]);\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\n}\n","'use client';\n\nimport React, { useEffect, useLayoutEffect, useState } from 'react';\n\nimport bsdBackgroundImage from '../../../assets/bsd/background-final.png';\nimport bsdCardFreeVariationImage from '../../../assets/bsd/bsd-card-free-variation.png';\nimport bsdCardInspirationImage from '../../../assets/bsd/bsd-card-inspiration.png';\nimport bsdCardLineArtImage from '../../../assets/bsd/bsd-card-line-art.png';\nimport bsdCardLocalEditImage from '../../../assets/bsd/bsd-card-local-edit.png';\nimport bsdCardMoreToolsImage from '../../../assets/bsd/bsd-card-more-tools.png';\nimport bsdCardStyleFusionImage from '../../../assets/bsd/bsd-card-style-fusion.png';\nimport bsdHeroImage from '../../../assets/bsd/bsd-hero.png';\nimport bsdIconDesignImage from '../../../assets/bsd/bsd-icon-design.png';\nimport bsdIconTrendImage from '../../../assets/bsd/bsd-icon-trend.png';\n\nexport interface CarouselItem {\n id: number;\n title: string;\n subtitle: string;\n image: string;\n}\n\nexport interface FeatureCardData {\n title: string;\n subtitle: string;\n imageUrl: string;\n isToolbox?: boolean;\n imageTransform?: string;\n hoverImageTransform?: string;\n}\n\nexport interface UserInfo {\n name?: string;\n photo?: string;\n}\n\nexport interface BsdLandingPageProps {\n /** 是否已认证 */\n isAuthenticated?: boolean;\n /** 用户信息 */\n user?: UserInfo | null;\n /** 功能卡片数据(可覆盖默认值) */\n featureCards?: FeatureCardData[];\n /** 点击进入工作台 */\n onEnterWorkbench?: () => void;\n /** 点击登录 */\n onLogin?: () => void;\n /** 点击卡片 */\n onCardClick?: (title: string) => void;\n /** 自定义类名 */\n className?: string;\n /** 自定义样式 */\n style?: React.CSSProperties;\n /** 国际化文本 */\n i18n?: {\n enterWorkspace?: string;\n designAgent?: string;\n tags?: string[];\n };\n}\n\nexport const BSD_CONFIG = {\n logo: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/bsd/bsd.ai.svg',\n backgroundImage: bsdBackgroundImage,\n sloganImage: bsdHeroImage,\n primaryColor: 'rgba(40, 82, 173, 1)',\n borderRadius: 20,\n icons: {\n news: bsdIconTrendImage,\n agent: bsdIconDesignImage,\n },\n};\n\nexport const BSD_DEFAULT_FEATURE_CARDS: FeatureCardData[] = [\n {\n title: '灵感生成',\n subtitle: '由提示词生成设计稿',\n imageUrl: bsdCardInspirationImage,\n imageTransform: 'translateX(20%) scale(1.045)',\n hoverImageTransform: 'translateX(20%) scale(1.06)',\n },\n {\n title: '自由裂变',\n subtitle: '由参考图片和提示词生成设计稿',\n imageUrl: bsdCardFreeVariationImage,\n },\n {\n title: '风格融合',\n subtitle: '融合多类型参考图片生成设计稿',\n imageUrl: bsdCardStyleFusionImage,\n },\n {\n title: '局部修改',\n subtitle: '划定选区,选区内设计修改',\n imageUrl: bsdCardLocalEditImage,\n },\n {\n title: '线稿成衣',\n subtitle: '参考线稿图生成设计稿',\n imageUrl: bsdCardLineArtImage,\n },\n {\n title: '更多 AI 工具',\n subtitle: '访问你的设计工具箱',\n imageUrl: bsdCardMoreToolsImage,\n isToolbox: true,\n },\n];\n\nconst TREND_LABEL = '找趋势';\nconst DESIGN_LABEL = '做设计';\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\n\nconst resolveViewportHeight = () => {\n if (typeof window === 'undefined') return null;\n\n const height = window.visualViewport?.height ?? window.innerHeight;\n return Number.isFinite(height) && height > 0 ? height : null;\n};\n\nconst useBsdLandingViewportHeight = () => {\n const [viewportHeight, setViewportHeight] = useState<number | null>(null);\n\n useBrowserLayoutEffect(() => {\n if (typeof window === 'undefined') return;\n\n const updateViewportHeight = () => {\n const nextHeight = resolveViewportHeight();\n if (!nextHeight) return;\n setViewportHeight((currentHeight) => (currentHeight === nextHeight ? currentHeight : nextHeight));\n };\n\n // iPad Safari can keep CSS 100vh out of sync with the visible viewport near the home indicator.\n updateViewportHeight();\n window.visualViewport?.addEventListener('resize', updateViewportHeight);\n window.visualViewport?.addEventListener('scroll', updateViewportHeight);\n window.addEventListener('orientationchange', updateViewportHeight);\n window.addEventListener('resize', updateViewportHeight);\n\n return () => {\n window.visualViewport?.removeEventListener('resize', updateViewportHeight);\n window.visualViewport?.removeEventListener('scroll', updateViewportHeight);\n window.removeEventListener('orientationchange', updateViewportHeight);\n window.removeEventListener('resize', updateViewportHeight);\n };\n }, []);\n\n return viewportHeight ? `${viewportHeight}px` : '100vh';\n};\n\nconst actionBaseStyle: React.CSSProperties = {\n position: 'relative',\n isolation: 'isolate',\n display: 'inline-flex',\n height: 'clamp(3.75rem, 6.2dvh, 4.75rem)',\n minWidth: '15.75rem',\n alignItems: 'center',\n justifyContent: 'space-between',\n overflow: 'hidden',\n borderRadius: '1.35rem',\n border: '1px solid rgba(111, 143, 200, 0.16)',\n background: 'rgba(7, 16, 28, 0.9)',\n padding: '0 clamp(1.25rem, 1.45vw, 1.75rem)',\n color: '#fff',\n boxShadow:\n '0 18px 42px rgba(0,0,0,0.42), 0 0 18px rgba(24,62,146,0.08), inset 0 1px 0 rgba(255,255,255,0.08), inset 0 -1px 0 rgba(64,103,180,0.08)',\n backdropFilter: 'blur(24px)',\n cursor: 'pointer',\n font: 'inherit',\n outline: 'none',\n transition: 'border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\n};\n\nconst actionHoverStyle = {\n trend: {\n borderColor: 'rgba(115, 234, 255, 0.62)',\n background: 'rgba(11, 31, 49, 0.96)',\n boxShadow:\n '0 0 0 1px rgba(116,240,255,0.22), 0 0 38px rgba(0,194,255,0.34), 0 0 78px rgba(0,123,255,0.22), 0 18px 44px rgba(0,0,0,0.48), inset 0 1px 0 rgba(255,255,255,0.20), inset 0 -20px 42px rgba(0,106,164,0.26)',\n },\n design: {\n borderColor: 'rgba(159, 186, 255, 0.72)',\n background: 'rgba(17, 27, 70, 0.96)',\n boxShadow:\n '0 0 0 1px rgba(157,190,255,0.28), 0 0 40px rgba(65,98,255,0.46), 0 0 82px rgba(70,88,255,0.30), 0 18px 44px rgba(0,0,0,0.48), inset 0 1px 0 rgba(255,255,255,0.24), inset 0 -20px 42px rgba(36,70,220,0.30)',\n },\n} satisfies Record<'trend' | 'design', React.CSSProperties>;\n\nconst UserIcon: React.FC<{ size?: number }> = ({ size = 24 }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\n </svg>\n);\n\nconst SparklesIcon: React.FC<{ size?: number }> = ({ size = 24 }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z\" />\n <path d=\"M5 3v4\" />\n <path d=\"M19 17v4\" />\n <path d=\"M3 5h4\" />\n <path d=\"M17 19h4\" />\n </svg>\n);\n\nconst ArrowRightIcon: React.FC = () => (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\n <path d=\"m13 6 6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n);\n\ninterface BsdPrimaryActionProps {\n iconSrc: string;\n label: string;\n tone: 'trend' | 'design';\n iconSize: number;\n onClick: () => void;\n}\n\nconst BsdPrimaryAction: React.FC<BsdPrimaryActionProps> = ({ iconSrc, label, tone, iconSize, onClick }) => {\n const [isHovered, setIsHovered] = useState(false);\n const glowColor = tone === 'design' ? 'rgba(74,111,255,0.72)' : 'rgba(0,231,255,0.46)';\n const washColor = tone === 'design' ? 'rgba(190,212,255,0.31)' : 'rgba(108,244,255,0.22)';\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onFocus={() => setIsHovered(true)}\n onBlur={() => setIsHovered(false)}\n style={{\n ...actionBaseStyle,\n ...(isHovered ? actionHoverStyle[tone] : null),\n }}\n aria-label={label}\n >\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n zIndex: -3,\n background:\n 'radial-gradient(circle at 72% 22%, rgba(63,102,190,0.16), transparent 34%), linear-gradient(180deg, rgba(12,24,42,0.34) 0%, rgba(4,11,22,0.20) 100%)',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: '-2rem',\n zIndex: -2,\n borderRadius: '1.6rem',\n opacity: isHovered ? 1 : 0,\n filter: 'blur(24px)',\n transition: 'opacity 300ms ease',\n background:\n tone === 'design'\n ? `radial-gradient(circle at 72% 24%, ${glowColor}, transparent 38%), radial-gradient(circle at 18% 92%, rgba(0,196,255,0.36), transparent 42%)`\n : `radial-gradient(circle at 24% 50%, ${glowColor}, transparent 34%), radial-gradient(circle at 82% 24%, rgba(0,120,255,0.34), transparent 42%)`,\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n zIndex: -1,\n opacity: isHovered || tone === 'design' ? 1 : 0,\n transition: 'opacity 300ms ease',\n background:\n tone === 'design'\n ? `radial-gradient(circle at 68% 18%, ${washColor}, transparent 29%), linear-gradient(135deg, rgba(24,42,108,0.96) 0%, rgba(34,69,178,0.93) 54%, rgba(18,112,180,0.64) 100%)`\n : `radial-gradient(circle at 18% 50%, ${washColor}, transparent 28%), linear-gradient(135deg, rgba(9,24,36,0.96) 0%, rgba(7,42,70,0.92) 58%, rgba(0,106,156,0.54) 100%)`,\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n inset: 0,\n borderRadius: '1.25rem',\n boxShadow: `inset 0 0 0 1px ${isHovered ? 'rgba(255,255,255,0.24)' : 'rgba(255,255,255,0.10)'}`,\n transition: 'box-shadow 300ms ease',\n }}\n />\n\n <span style={{ position: 'relative', zIndex: 1, display: 'flex', minWidth: 0, alignItems: 'center', gap: '1rem' }}>\n <span\n style={{\n position: 'relative',\n display: 'grid',\n width: '2.75rem',\n height: '2.75rem',\n flexShrink: 0,\n placeItems: 'center',\n borderRadius: '0.95rem',\n border: `1px solid ${isHovered ? (tone === 'design' ? 'rgba(201,213,255,0.66)' : 'rgba(159,247,255,0.56)') : 'rgba(141,174,255,0.14)'}`,\n background: isHovered ? (tone === 'design' ? 'rgba(49,95,255,0.72)' : 'rgba(8,125,166,0.70)') : 'rgba(16,34,67,0.54)',\n boxShadow: isHovered\n ? tone === 'design'\n ? '0 0 26px rgba(68,109,255,0.76), inset 0 1px 0 rgba(255,255,255,0.32)'\n : '0 0 24px rgba(0,212,255,0.58), inset 0 1px 0 rgba(255,255,255,0.26)'\n : '0 0 12px rgba(46,85,180,0.10), inset 0 1px 0 rgba(255,255,255,0.10)',\n transition: 'border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\n }}\n >\n <img\n src={iconSrc}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n width: iconSize,\n height: iconSize,\n objectFit: 'contain',\n filter: 'drop-shadow(0 0 8px rgba(255,255,255,0.28))',\n }}\n />\n </span>\n <span\n style={{\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n fontSize: '1.18rem',\n fontWeight: 600,\n letterSpacing: 0,\n color: isHovered ? '#fff' : '#eef4ff',\n transition: 'color 300ms ease',\n }}\n >\n {label}\n </span>\n </span>\n\n <span\n style={{\n position: 'relative',\n zIndex: 1,\n display: 'inline-flex',\n flexShrink: 0,\n color: isHovered ? '#fff' : 'rgba(255,255,255,0.58)',\n transition: 'color 300ms ease',\n }}\n >\n <ArrowRightIcon />\n </span>\n </button>\n );\n};\n\ninterface FeatureCardProps extends FeatureCardData {\n onClick: () => void;\n}\n\nconst FeatureCard: React.FC<FeatureCardProps> = ({\n title,\n subtitle,\n imageUrl,\n imageTransform,\n hoverImageTransform,\n onClick,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const cardTransform = isHovered ? hoverImageTransform ?? 'scale(1.016)' : imageTransform ?? 'scale(1)';\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onFocus={() => setIsHovered(true)}\n onBlur={() => setIsHovered(false)}\n style={{\n position: 'relative',\n height: 'auto',\n maxHeight: isHovered ? 'clamp(17.5rem, 36dvh, 24.25rem)' : 'clamp(16rem, 33dvh, 22rem)',\n minWidth: 0,\n width: '100%',\n aspectRatio: '540 / 800',\n transform: isHovered ? 'translateY(-0.35rem)' : 'translateY(0)',\n alignSelf: 'flex-end',\n overflow: 'hidden',\n borderRadius: '1.35rem',\n border: `1px solid ${isHovered ? 'rgba(130,233,255,0.78)' : 'rgba(79,121,255,0.38)'}`,\n background: isHovered ? '#0a1424' : '#07101d',\n boxShadow: isHovered\n ? '0 22px 62px rgba(0,0,0,0.34), 0 0 0 1px rgba(98,166,255,0.24), 0 0 32px rgba(0,225,255,0.20), 0 0 56px rgba(71,100,255,0.20), inset 0 1px 0 rgba(255,255,255,0.18), inset 0 -18px 42px rgba(31,92,255,0.20)'\n : '0 18px 54px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.06)',\n cursor: 'pointer',\n font: 'inherit',\n outline: 'none',\n padding: 0,\n transition: 'transform 280ms ease, border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\n }}\n aria-label={`进入${title}`}\n >\n <img\n src={imageUrl}\n alt=\"\"\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n transform: cardTransform,\n filter: isHovered ? 'brightness(1.08) contrast(1.04) saturate(1.16)' : 'none',\n transition: 'transform 300ms ease, filter 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n background:\n 'linear-gradient(180deg, rgba(2,8,18,0.04) 0%, rgba(3,10,22,0.18) 42%, rgba(4,12,27,0.58) 72%, rgba(16,54,172,0.38) 100%)',\n opacity: isHovered ? 0.7 : 1,\n transition: 'opacity 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: 0,\n opacity: isHovered ? 1 : 0,\n background:\n 'radial-gradient(circle at 74% 18%, rgba(113,220,255,0.20), transparent 34%), radial-gradient(circle at 30% 96%, rgba(45,99,255,0.32), transparent 40%)',\n transition: 'opacity 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n height: '50%',\n background: 'linear-gradient(180deg, rgba(5,13,27,0) 0%, rgba(7,16,35,0.52) 38%, rgba(22,70,205,0.90) 100%)',\n opacity: isHovered ? 1 : 0.92,\n transition: 'opacity 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: '-12%',\n right: '-12%',\n bottom: '-18%',\n height: '42%',\n borderRadius: '50%',\n background: 'radial-gradient(ellipse at center, rgba(0,224,255,0.38) 0%, rgba(56,100,255,0.28) 42%, transparent 72%)',\n filter: 'blur(28px)',\n opacity: isHovered ? 1 : 0.62,\n transition: 'opacity 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n inset: '1px',\n borderRadius: '1.28rem',\n background: 'linear-gradient(140deg, rgba(255,255,255,0.12) 0%, transparent 24%, transparent 70%, rgba(93,230,255,0.16) 100%)',\n opacity: isHovered ? 1 : 0,\n transition: 'opacity 300ms ease',\n }}\n />\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n left: '5%',\n right: '5%',\n bottom: 0,\n height: 1,\n background: 'linear-gradient(90deg, transparent, rgba(83,229,255,0.70), rgba(96,128,255,0.78), transparent)',\n opacity: isHovered ? 1 : 0.75,\n transition: 'opacity 300ms ease',\n }}\n />\n\n <span\n style={{\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 2,\n display: 'flex',\n alignItems: 'flex-end',\n padding: '2rem 1.25rem 1.25rem',\n textAlign: 'left',\n }}\n >\n <span style={{ display: 'flex', minWidth: 0, maxWidth: '100%', flexDirection: 'column', alignItems: 'flex-start' }}>\n <span\n style={{\n display: 'block',\n maxWidth: '100%',\n background: 'linear-gradient(180deg, #ffffff 0%, #eef4ff 54%, #bfd3ff 100%)',\n WebkitBackgroundClip: 'text',\n backgroundClip: 'text',\n color: 'transparent',\n fontSize: '1.72rem',\n fontWeight: 600,\n lineHeight: 1.06,\n letterSpacing: 0,\n filter: isHovered ? 'drop-shadow(0 0 14px rgba(180,218,255,0.34))' : 'none',\n transition: 'filter 300ms ease',\n }}\n >\n {title}\n </span>\n <span\n style={{\n display: 'block',\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n marginTop: '0.75rem',\n paddingBottom: '0.125rem',\n paddingRight: '0.5rem',\n background: 'linear-gradient(180deg, rgba(255,255,255,0.94) 0%, rgba(214,228,255,0.88) 52%, rgba(163,191,255,0.84) 100%)',\n WebkitBackgroundClip: 'text',\n backgroundClip: 'text',\n color: 'transparent',\n fontSize: '0.8rem',\n lineHeight: 1.45,\n letterSpacing: 0,\n opacity: isHovered ? 1 : 0.86,\n transition: 'opacity 300ms ease',\n }}\n >\n {subtitle}\n </span>\n </span>\n </span>\n </button>\n );\n};\n\nexport function BsdLandingPage({\n isAuthenticated = false,\n user,\n featureCards = BSD_DEFAULT_FEATURE_CARDS,\n onEnterWorkbench,\n onLogin,\n onCardClick,\n className = '',\n style = {},\n i18n = {},\n}: BsdLandingPageProps) {\n const { tags = [] } = i18n;\n const viewportHeight = useBsdLandingViewportHeight();\n\n const handleEnterNews = () => {\n if (!isAuthenticated) {\n onLogin?.();\n return;\n }\n if (onCardClick) {\n onCardClick(TREND_LABEL);\n return;\n }\n onEnterWorkbench?.();\n };\n\n const handleToWorkbench = () => {\n if (isAuthenticated) {\n onEnterWorkbench?.();\n } else {\n onLogin?.();\n }\n };\n\n const handleCardClick = (title: string, isToolbox?: boolean) => {\n if (!isAuthenticated) {\n onLogin?.();\n return;\n }\n if (isToolbox) {\n if (onCardClick) {\n onCardClick('AI工具箱');\n return;\n }\n onEnterWorkbench?.();\n } else {\n onCardClick?.(title);\n }\n };\n\n return (\n <div\n className={className}\n style={{\n position: 'relative',\n display: 'flex',\n height: viewportHeight,\n width: '100%',\n minWidth: 0,\n flexDirection: 'column',\n overflow: 'hidden',\n background: '#000',\n color: '#fff',\n ...style,\n }}\n >\n <div aria-hidden=\"true\" style={{ pointerEvents: 'none', position: 'absolute', inset: 0, zIndex: 0, background: '#020409' }} />\n <div aria-hidden=\"true\" style={{ pointerEvents: 'none', position: 'absolute', inset: 0, zIndex: 0, overflow: 'hidden' }}>\n <img\n src={BSD_CONFIG.backgroundImage}\n alt=\"\"\n style={{\n position: 'absolute',\n left: '50%',\n top: '50%',\n width: '108%',\n height: '108%',\n maxWidth: 'none',\n transform: 'translate(-50%, -50%)',\n objectFit: 'cover',\n objectPosition: 'center',\n opacity: 0.9,\n }}\n />\n </div>\n <div\n aria-hidden=\"true\"\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n inset: 0,\n zIndex: 0,\n background:\n 'radial-gradient(circle at top, rgba(98,144,255,0.18), transparent 32%), radial-gradient(circle at 50% 42%, rgba(80,177,255,0.14), transparent 28%)',\n }}\n />\n <div\n aria-hidden=\"true\"\n style={{\n pointerEvents: 'none',\n position: 'absolute',\n inset: 0,\n zIndex: 0,\n background: 'linear-gradient(180deg, rgba(0,0,0,0.32) 0%, rgba(0,0,0,0.16) 18%, rgba(0,0,0,0.48) 52%, rgba(0,0,0,0.88) 100%)',\n }}\n />\n\n <header\n style={{\n position: 'relative',\n zIndex: 30,\n display: 'flex',\n height: 'clamp(4.5rem, 7dvh, 5.75rem)',\n flexShrink: 0,\n alignItems: 'center',\n justifyContent: 'space-between',\n borderBottom: '1px solid rgba(255,255,255,0.1)',\n background: 'rgba(0,0,0,0.01)',\n padding: '0 clamp(1.25rem, 3.2vw, 4rem)',\n backdropFilter: 'blur(8px)',\n }}\n >\n <img src={BSD_CONFIG.logo} alt=\"BSD AI\" style={{ display: 'block', width: 'auto', height: 'clamp(5.8rem, 10dvh, 8.7rem)' }} />\n\n {isAuthenticated && user ? (\n <div\n style={{\n width: '2.75rem',\n height: '2.75rem',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, #60a5fa, #a855f7)',\n display: 'grid',\n placeItems: 'center',\n overflow: 'hidden',\n color: '#fff',\n }}\n title={user.name}\n >\n {user.photo ? (\n <img src={user.photo} alt={user.name || ''} style={{ width: '100%', height: '100%', objectFit: 'cover', borderRadius: '50%' }} />\n ) : (\n <UserIcon size={20} />\n )}\n </div>\n ) : (\n <div\n style={{\n width: '2.75rem',\n height: '2.75rem',\n borderRadius: '50%',\n background: 'linear-gradient(135deg, #4ade80, #3b82f6)',\n display: 'grid',\n placeItems: 'center',\n color: '#fff',\n }}\n >\n <SparklesIcon size={20} />\n </div>\n )}\n </header>\n\n <main\n style={{\n position: 'relative',\n zIndex: 10,\n minHeight: 0,\n flex: '1 1 auto',\n overflow: 'hidden',\n padding: 'clamp(1.25rem, 3.2dvh, 4rem) clamp(1.25rem, 2vw, 2.5rem)',\n }}\n >\n <div\n style={{\n position: 'relative',\n display: 'flex',\n height: '100%',\n width: '100%',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n >\n <div\n style={{\n display: 'grid',\n width: '100%',\n height: 'min(100%, clamp(34rem, 72dvh, 58rem))',\n minHeight: 0,\n transform: 'translateY(clamp(0rem, 1.1dvh, 1rem))',\n gridTemplateRows: 'auto minmax(0, 1fr)',\n alignContent: 'center',\n gap: 'clamp(0.5rem, 1.35dvh, 1.25rem)',\n }}\n >\n <div style={{ display: 'flex', width: '100%', flexDirection: 'column', alignItems: 'center', textAlign: 'center' }}>\n <img\n src={BSD_CONFIG.sloganImage}\n alt=\"从山川到极地的风格指南\"\n style={{\n width: 'min(72vw, 66rem)',\n maxWidth: '100%',\n maxHeight: 'clamp(5.25rem, 12dvh, 7.5rem)',\n objectFit: 'contain',\n }}\n />\n\n {tags.length > 0 ? (\n <div\n style={{\n marginTop: '0.75rem',\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.65rem',\n color: 'rgba(255,255,255,0.78)',\n fontSize: '0.95rem',\n lineHeight: 1.4,\n }}\n >\n {tags.map((tag, index) => (\n <React.Fragment key={tag}>\n <span>{tag}</span>\n {index < tags.length - 1 ? <span style={{ color: 'rgba(255,255,255,0.42)' }}>|</span> : null}\n </React.Fragment>\n ))}\n </div>\n ) : null}\n\n <div\n style={{\n marginTop: 'clamp(0.9rem, 2.2dvh, 1.75rem)',\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '1rem',\n }}\n >\n <BsdPrimaryAction iconSrc={BSD_CONFIG.icons.news} iconSize={24} label={TREND_LABEL} tone=\"trend\" onClick={handleEnterNews} />\n <BsdPrimaryAction iconSrc={BSD_CONFIG.icons.agent} iconSize={32} label={DESIGN_LABEL} tone=\"design\" onClick={handleToWorkbench} />\n </div>\n </div>\n\n <div style={{ display: 'flex', minHeight: 0, alignItems: 'flex-end', justifyContent: 'center', paddingTop: 0 }}>\n <div\n style={{\n display: 'grid',\n width: '92vw',\n maxWidth: '1620px',\n minWidth: 0,\n gridTemplateColumns: 'repeat(6, minmax(0, 1fr))',\n alignItems: 'flex-end',\n justifyContent: 'center',\n gap: 'clamp(0.5rem, 1vw, 1.35rem)',\n }}\n >\n {featureCards.map((card) => (\n <FeatureCard\n key={card.title}\n {...card}\n onClick={() => handleCardClick(card.title, card.isToolbox)}\n />\n ))}\n </div>\n </div>\n </div>\n </div>\n </main>\n </div>\n );\n}\n\nexport default BsdLandingPage;\n","import React from 'react';\n\n// 工具定义类型\nexport interface ToolDefinition {\n id: string;\n title: string;\n description?: string;\n icon?: string;\n category?: string;\n}\n\n// 工具箱面板 Props\nexport interface ToolboxPanelProps {\n className?: string;\n style?: React.CSSProperties;\n tools?: ToolDefinition[];\n onToolSelect?: (toolId: string) => void;\n}\n\n// BSD 工具箱封面 URL 前缀\nconst BSD_TOOLBOX_COVER_PREFIX =\n 'https://bsd-ai-oss-prd.oss-cn-wulanchabu.aliyuncs.com/new-ai/%E5%B7%A5%E5%85%B7%E7%AE%B1/';\n\n// BSD 默认工具定义\nconst BSD_DEFAULT_TOOLS: ToolDefinition[] = [\n { id: 'inspiration', title: '灵感生成', category: 'text', description: '根据文字描述生成设计灵感' },\n { id: 'free-fission', title: '自由裂变', category: 'image', description: '图片多样化裂变生成' },\n { id: 'style-fusion', title: '风格融合', category: 'image', description: '多风格智能融合' },\n { id: 'local-edit', title: '局部修改', category: 'image', description: '局部区域精准修改' },\n { id: 'line-to-garment', title: '线稿成衣', category: 'image', description: '线稿快速转化成衣' },\n { id: 'garment-on-model', title: '成衣上身', category: 'image', description: '服装虚拟试穿' },\n { id: 'light-effect', title: '光影大片', category: 'image', description: '专业光影效果' },\n { id: 'atmosphere', title: '氛围图生成', category: 'image', description: '氛围场景生成' },\n { id: 'smart-outfit', title: '智能穿搭', category: 'image', description: '智能搭配推荐' },\n { id: 'runway', title: '秀场款生成', category: 'image', description: '秀场风格生成' },\n];\n\n/**\n * BSD Toolbox Panel - 波司登品牌定制工具箱面板\n */\nexport function BsdToolboxPanel({\n className,\n style,\n tools = BSD_DEFAULT_TOOLS,\n onToolSelect,\n}: ToolboxPanelProps) {\n return (\n <div\n className={className}\n style={{\n padding: 24,\n background: 'linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 100%)',\n borderRadius: 20,\n ...style,\n }}\n >\n <h2 style={{ color: '#fff', marginBottom: 24 }}>AI 工具箱</h2>\n\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fill, minmax(160px, 1fr))',\n gap: 16,\n }}\n >\n {tools.map((tool) => (\n <div\n key={tool.id}\n onClick={() => onToolSelect?.(tool.id)}\n style={{\n padding: 16,\n borderRadius: 12,\n background: 'rgba(255,255,255,0.05)',\n cursor: 'pointer',\n transition: 'all 0.2s',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = 'rgba(40, 82, 173, 0.3)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = 'rgba(255,255,255,0.05)';\n }}\n >\n {/* Tool Cover Image */}\n <div\n style={{\n width: '100%',\n aspectRatio: '1',\n borderRadius: 8,\n marginBottom: 12,\n background: `url(${BSD_TOOLBOX_COVER_PREFIX}${tool.id}.png) center/cover`,\n backgroundColor: 'rgba(40, 82, 173, 0.2)',\n }}\n />\n <h4 style={{ color: '#fff', margin: 0 }}>{tool.title}</h4>\n {tool.description && (\n <p style={{ color: 'rgba(255,255,255,0.6)', margin: '4px 0 0', fontSize: 12 }}>\n {tool.description}\n </p>\n )}\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nexport default BsdToolboxPanel;\n","import { registerTheme } from '../../registry';\nimport { BsdLandingPage, BSD_CONFIG, BSD_DEFAULT_FEATURE_CARDS } from './components/LandingPage';\nimport { BsdToolboxPanel } from './components/ToolboxPanel';\n\n// 注册 BSD 主题\nregisterTheme(\n 'bsd',\n {\n 'landing-page': BsdLandingPage,\n 'toolbox-panel': BsdToolboxPanel,\n },\n {\n name: 'BSD Theme',\n description: 'BSD Theme Components for Monkeys UI',\n version: '1.0.0',\n }\n);\n\n// 导出组件供直接使用\nexport { BsdLandingPage, BsdToolboxPanel };\n\n// 导出类型\nexport type { BsdLandingPageProps, FeatureCardData, UserInfo } from './components/LandingPage';\n\n// 导出配置常量\nexport { BSD_CONFIG, BSD_DEFAULT_FEATURE_CARDS };\n"]}
1
+ {"version":3,"sources":["../../../src/registry/index.ts","../../../src/themes/bsd/components/LandingPage.tsx","../../../src/themes/bsd/components/ToolboxPanel.tsx","../../../src/themes/bsd/index.ts"],"names":["useEffect","useLayoutEffect","useState","jsx","jsxs","React"],"mappings":"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","file":"index.js","sourcesContent":["import type { ComponentType } from 'react';\r\nimport type { ComponentRegistry, ThemeConfig } from '../types';\r\n\r\n// 存储所有主题的组件注册表\r\nconst registries: Record<string, ComponentRegistry> = {};\r\n\r\n// 存储主题配置\r\nconst themeConfigs: Record<string, ThemeConfig> = {};\r\n\r\n/**\r\n * 注册主题组件\r\n * @param themeId 主题 ID (如 'bsd', 'artist', 'concept')\r\n * @param components 组件注册表\r\n * @param config 主题配置(可选)\r\n */\r\nexport function registerTheme(\r\n themeId: string,\r\n components: ComponentRegistry,\r\n config?: Omit<ThemeConfig, 'id'>\r\n): void {\r\n registries[themeId] = { ...registries[themeId], ...components };\r\n\r\n if (config) {\r\n themeConfigs[themeId] = { id: themeId, ...config };\r\n }\r\n}\r\n\r\n/**\r\n * 注册单个组件到指定主题\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @param component 组件\r\n */\r\nexport function registerComponent(\r\n themeId: string,\r\n componentName: string,\r\n component: ComponentType<any>\r\n): void {\r\n if (!registries[themeId]) {\r\n registries[themeId] = {};\r\n }\r\n registries[themeId][componentName] = component;\r\n}\r\n\r\n/**\r\n * 解析组件 - 优先使用主题特定组件,fallback 到 default\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n * @returns 组件或 null\r\n */\r\nexport function resolveComponent<P = any>(\r\n themeId: string,\r\n componentName: string\r\n): ComponentType<P> | null {\r\n // 1. 先尝试获取主题特定组件\r\n const themeComponent = registries[themeId]?.[componentName];\r\n if (themeComponent) {\r\n return themeComponent as ComponentType<P>;\r\n }\r\n\r\n // 2. Fallback 到 default 主题\r\n const defaultComponent = registries['default']?.[componentName];\r\n if (defaultComponent) {\r\n return defaultComponent as ComponentType<P>;\r\n }\r\n\r\n // 3. 未找到\r\n return null;\r\n}\r\n\r\n/**\r\n * 检查主题是否有特定组件的定制版本\r\n * @param themeId 主题 ID\r\n * @param componentName 组件名称\r\n */\r\nexport function hasCustomComponent(themeId: string, componentName: string): boolean {\r\n return !!registries[themeId]?.[componentName];\r\n}\r\n\r\n/**\r\n * 获取主题的所有已注册组件名称\r\n * @param themeId 主题 ID\r\n */\r\nexport function getRegisteredComponents(themeId: string): string[] {\r\n return Object.keys(registries[themeId] || {});\r\n}\r\n\r\n/**\r\n * 获取所有已注册的主题 ID\r\n */\r\nexport function getRegisteredThemes(): string[] {\r\n return Object.keys(registries);\r\n}\r\n\r\n/**\r\n * 获取主题配置\r\n * @param themeId 主题 ID\r\n */\r\nexport function getThemeConfig(themeId: string): ThemeConfig | null {\r\n return themeConfigs[themeId] || null;\r\n}\r\n\r\n/**\r\n * 清除所有注册(主要用于测试)\r\n */\r\nexport function clearRegistry(): void {\r\n Object.keys(registries).forEach((key) => delete registries[key]);\r\n Object.keys(themeConfigs).forEach((key) => delete themeConfigs[key]);\r\n}\r\n","'use client';\r\n\r\nimport React, { useEffect, useLayoutEffect, useState } from 'react';\r\n\r\nimport bsdBackgroundImage from '../../../assets/bsd/background-final.png';\r\nimport bsdCardFreeVariationImage from '../../../assets/bsd/bsd-card-free-variation.png';\r\nimport bsdCardInspirationImage from '../../../assets/bsd/bsd-card-inspiration.png';\r\nimport bsdCardLineArtImage from '../../../assets/bsd/bsd-card-line-art.png';\r\nimport bsdCardLocalEditImage from '../../../assets/bsd/bsd-card-local-edit.png';\r\nimport bsdCardMoreToolsImage from '../../../assets/bsd/bsd-card-more-tools.png';\r\nimport bsdCardStyleFusionImage from '../../../assets/bsd/bsd-card-style-fusion.png';\r\nimport bsdHeroImage from '../../../assets/bsd/bsd-hero.png';\r\nimport bsdIconDesignImage from '../../../assets/bsd/bsd-icon-design.png';\r\nimport bsdIconTrendImage from '../../../assets/bsd/bsd-icon-trend.png';\r\n\r\nexport interface CarouselItem {\r\n id: number;\r\n title: string;\r\n subtitle: string;\r\n image: string;\r\n}\r\n\r\nexport interface FeatureCardData {\r\n title: string;\r\n subtitle: string;\r\n imageUrl: string;\r\n isToolbox?: boolean;\r\n imageTransform?: string;\r\n hoverImageTransform?: string;\r\n}\r\n\r\nexport interface UserInfo {\r\n name?: string;\r\n photo?: string;\r\n}\r\n\r\nexport interface BsdLandingPageProps {\r\n /** 是否已认证 */\r\n isAuthenticated?: boolean;\r\n /** 用户信息 */\r\n user?: UserInfo | null;\r\n /** 功能卡片数据(可覆盖默认值) */\r\n featureCards?: FeatureCardData[];\r\n /** 点击进入工作台 */\r\n onEnterWorkbench?: () => void;\r\n /** 点击登录 */\r\n onLogin?: () => void;\r\n /** 点击卡片 */\r\n onCardClick?: (title: string) => void;\r\n /** 自定义类名 */\r\n className?: string;\r\n /** 自定义样式 */\r\n style?: React.CSSProperties;\r\n /** 国际化文本 */\r\n i18n?: {\r\n enterWorkspace?: string;\r\n designAgent?: string;\r\n tags?: string[];\r\n };\r\n}\r\n\r\nexport const BSD_CONFIG = {\r\n logo: 'https://inf-monkeys.oss-cn-beijing.aliyuncs.com/monkeys-assets/bsd/bsd.ai.svg',\r\n backgroundImage: bsdBackgroundImage,\r\n sloganImage: bsdHeroImage,\r\n primaryColor: 'rgba(40, 82, 173, 1)',\r\n borderRadius: 20,\r\n icons: {\r\n news: bsdIconTrendImage,\r\n agent: bsdIconDesignImage,\r\n },\r\n};\r\n\r\nexport const BSD_DEFAULT_FEATURE_CARDS: FeatureCardData[] = [\r\n {\r\n title: '灵感生成',\r\n subtitle: '由提示词生成设计稿',\r\n imageUrl: bsdCardInspirationImage,\r\n imageTransform: 'translateX(20%) scale(1.045)',\r\n hoverImageTransform: 'translateX(20%) scale(1.06)',\r\n },\r\n {\r\n title: '自由裂变',\r\n subtitle: '由参考图片和提示词生成设计稿',\r\n imageUrl: bsdCardFreeVariationImage,\r\n },\r\n {\r\n title: '风格融合',\r\n subtitle: '融合多类型参考图片生成设计稿',\r\n imageUrl: bsdCardStyleFusionImage,\r\n },\r\n {\r\n title: '局部修改',\r\n subtitle: '划定选区,选区内设计修改',\r\n imageUrl: bsdCardLocalEditImage,\r\n },\r\n {\r\n title: '线稿成衣',\r\n subtitle: '参考线稿图生成设计稿',\r\n imageUrl: bsdCardLineArtImage,\r\n },\r\n {\r\n title: '更多 AI 工具',\r\n subtitle: '访问你的设计工具箱',\r\n imageUrl: bsdCardMoreToolsImage,\r\n isToolbox: true,\r\n },\r\n];\r\n\r\nconst TREND_LABEL = '找趋势';\r\nconst DESIGN_LABEL = '做设计';\r\nconst useBrowserLayoutEffect = typeof window === 'undefined' ? useEffect : useLayoutEffect;\r\n\r\nconst resolveViewportHeight = () => {\r\n if (typeof window === 'undefined') return null;\r\n\r\n const height = window.visualViewport?.height ?? window.innerHeight;\r\n return Number.isFinite(height) && height > 0 ? height : null;\r\n};\r\n\r\nconst useBsdLandingViewportHeight = () => {\r\n const [viewportHeight, setViewportHeight] = useState<number | null>(null);\r\n\r\n useBrowserLayoutEffect(() => {\r\n if (typeof window === 'undefined') return;\r\n\r\n const updateViewportHeight = () => {\r\n const nextHeight = resolveViewportHeight();\r\n if (!nextHeight) return;\r\n setViewportHeight((currentHeight) => (currentHeight === nextHeight ? currentHeight : nextHeight));\r\n };\r\n\r\n // iPad Safari can keep CSS 100vh out of sync with the visible viewport near the home indicator.\r\n updateViewportHeight();\r\n window.visualViewport?.addEventListener('resize', updateViewportHeight);\r\n window.visualViewport?.addEventListener('scroll', updateViewportHeight);\r\n window.addEventListener('orientationchange', updateViewportHeight);\r\n window.addEventListener('resize', updateViewportHeight);\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', updateViewportHeight);\r\n window.visualViewport?.removeEventListener('scroll', updateViewportHeight);\r\n window.removeEventListener('orientationchange', updateViewportHeight);\r\n window.removeEventListener('resize', updateViewportHeight);\r\n };\r\n }, []);\r\n\r\n return viewportHeight ? `${viewportHeight}px` : '100vh';\r\n};\r\n\r\nconst actionBaseStyle: React.CSSProperties = {\r\n position: 'relative',\r\n isolation: 'isolate',\r\n display: 'inline-flex',\r\n height: 'clamp(3.75rem, 6.2dvh, 4.75rem)',\r\n minWidth: '15.75rem',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n overflow: 'hidden',\r\n borderRadius: '1.35rem',\r\n border: '1px solid rgba(111, 143, 200, 0.16)',\r\n background: 'rgba(7, 16, 28, 0.9)',\r\n padding: '0 clamp(1.25rem, 1.45vw, 1.75rem)',\r\n color: '#fff',\r\n boxShadow:\r\n '0 18px 42px rgba(0,0,0,0.42), 0 0 18px rgba(24,62,146,0.08), inset 0 1px 0 rgba(255,255,255,0.08), inset 0 -1px 0 rgba(64,103,180,0.08)',\r\n backdropFilter: 'blur(24px)',\r\n cursor: 'pointer',\r\n font: 'inherit',\r\n outline: 'none',\r\n transition: 'border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\r\n};\r\n\r\nconst actionHoverStyle = {\r\n trend: {\r\n borderColor: 'rgba(115, 234, 255, 0.62)',\r\n background: 'rgba(11, 31, 49, 0.96)',\r\n boxShadow:\r\n '0 0 0 1px rgba(116,240,255,0.22), 0 0 38px rgba(0,194,255,0.34), 0 0 78px rgba(0,123,255,0.22), 0 18px 44px rgba(0,0,0,0.48), inset 0 1px 0 rgba(255,255,255,0.20), inset 0 -20px 42px rgba(0,106,164,0.26)',\r\n },\r\n design: {\r\n borderColor: 'rgba(159, 186, 255, 0.72)',\r\n background: 'rgba(17, 27, 70, 0.96)',\r\n boxShadow:\r\n '0 0 0 1px rgba(157,190,255,0.28), 0 0 40px rgba(65,98,255,0.46), 0 0 82px rgba(70,88,255,0.30), 0 18px 44px rgba(0,0,0,0.48), inset 0 1px 0 rgba(255,255,255,0.24), inset 0 -20px 42px rgba(36,70,220,0.30)',\r\n },\r\n} satisfies Record<'trend' | 'design', React.CSSProperties>;\r\n\r\nconst UserIcon: React.FC<{ size?: number }> = ({ size = 24 }) => (\r\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\r\n <path d=\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\" />\r\n <circle cx=\"12\" cy=\"7\" r=\"4\" />\r\n </svg>\r\n);\r\n\r\nconst SparklesIcon: React.FC<{ size?: number }> = ({ size = 24 }) => (\r\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\r\n <path d=\"m12 3-1.912 5.813a2 2 0 0 1-1.275 1.275L3 12l5.813 1.912a2 2 0 0 1 1.275 1.275L12 21l1.912-5.813a2 2 0 0 1 1.275-1.275L21 12l-5.813-1.912a2 2 0 0 1-1.275-1.275L12 3Z\" />\r\n <path d=\"M5 3v4\" />\r\n <path d=\"M19 17v4\" />\r\n <path d=\"M3 5h4\" />\r\n <path d=\"M17 19h4\" />\r\n </svg>\r\n);\r\n\r\nconst ArrowRightIcon: React.FC = () => (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n <path d=\"M5 12h14\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\r\n <path d=\"m13 6 6 6-6 6\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n);\r\n\r\ninterface BsdPrimaryActionProps {\r\n iconSrc: string;\r\n label: string;\r\n tone: 'trend' | 'design';\r\n iconSize: number;\r\n onClick: () => void;\r\n}\r\n\r\nconst BsdPrimaryAction: React.FC<BsdPrimaryActionProps> = ({ iconSrc, label, tone, iconSize, onClick }) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const glowColor = tone === 'design' ? 'rgba(74,111,255,0.72)' : 'rgba(0,231,255,0.46)';\r\n const washColor = tone === 'design' ? 'rgba(190,212,255,0.31)' : 'rgba(108,244,255,0.22)';\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onFocus={() => setIsHovered(true)}\r\n onBlur={() => setIsHovered(false)}\r\n style={{\r\n ...actionBaseStyle,\r\n ...(isHovered ? actionHoverStyle[tone] : null),\r\n }}\r\n aria-label={label}\r\n >\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n zIndex: -3,\r\n background:\r\n 'radial-gradient(circle at 72% 22%, rgba(63,102,190,0.16), transparent 34%), linear-gradient(180deg, rgba(12,24,42,0.34) 0%, rgba(4,11,22,0.20) 100%)',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: '-2rem',\r\n zIndex: -2,\r\n borderRadius: '1.6rem',\r\n opacity: isHovered ? 1 : 0,\r\n filter: 'blur(24px)',\r\n transition: 'opacity 300ms ease',\r\n background:\r\n tone === 'design'\r\n ? `radial-gradient(circle at 72% 24%, ${glowColor}, transparent 38%), radial-gradient(circle at 18% 92%, rgba(0,196,255,0.36), transparent 42%)`\r\n : `radial-gradient(circle at 24% 50%, ${glowColor}, transparent 34%), radial-gradient(circle at 82% 24%, rgba(0,120,255,0.34), transparent 42%)`,\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n zIndex: -1,\r\n opacity: isHovered || tone === 'design' ? 1 : 0,\r\n transition: 'opacity 300ms ease',\r\n background:\r\n tone === 'design'\r\n ? `radial-gradient(circle at 68% 18%, ${washColor}, transparent 29%), linear-gradient(135deg, rgba(24,42,108,0.96) 0%, rgba(34,69,178,0.93) 54%, rgba(18,112,180,0.64) 100%)`\r\n : `radial-gradient(circle at 18% 50%, ${washColor}, transparent 28%), linear-gradient(135deg, rgba(9,24,36,0.96) 0%, rgba(7,42,70,0.92) 58%, rgba(0,106,156,0.54) 100%)`,\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n pointerEvents: 'none',\r\n position: 'absolute',\r\n inset: 0,\r\n borderRadius: '1.25rem',\r\n boxShadow: `inset 0 0 0 1px ${isHovered ? 'rgba(255,255,255,0.24)' : 'rgba(255,255,255,0.10)'}`,\r\n transition: 'box-shadow 300ms ease',\r\n }}\r\n />\r\n\r\n <span style={{ position: 'relative', zIndex: 1, display: 'flex', minWidth: 0, alignItems: 'center', gap: '1rem' }}>\r\n <span\r\n style={{\r\n position: 'relative',\r\n display: 'grid',\r\n width: '2.75rem',\r\n height: '2.75rem',\r\n flexShrink: 0,\r\n placeItems: 'center',\r\n borderRadius: '0.95rem',\r\n border: `1px solid ${isHovered ? (tone === 'design' ? 'rgba(201,213,255,0.66)' : 'rgba(159,247,255,0.56)') : 'rgba(141,174,255,0.14)'}`,\r\n background: isHovered ? (tone === 'design' ? 'rgba(49,95,255,0.72)' : 'rgba(8,125,166,0.70)') : 'rgba(16,34,67,0.54)',\r\n boxShadow: isHovered\r\n ? tone === 'design'\r\n ? '0 0 26px rgba(68,109,255,0.76), inset 0 1px 0 rgba(255,255,255,0.32)'\r\n : '0 0 24px rgba(0,212,255,0.58), inset 0 1px 0 rgba(255,255,255,0.26)'\r\n : '0 0 12px rgba(46,85,180,0.10), inset 0 1px 0 rgba(255,255,255,0.10)',\r\n transition: 'border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\r\n }}\r\n >\r\n <img\r\n src={iconSrc}\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n style={{\r\n width: iconSize,\r\n height: iconSize,\r\n objectFit: 'contain',\r\n filter: 'drop-shadow(0 0 8px rgba(255,255,255,0.28))',\r\n }}\r\n />\r\n </span>\r\n <span\r\n style={{\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n fontSize: '1.18rem',\r\n fontWeight: 600,\r\n letterSpacing: 0,\r\n color: isHovered ? '#fff' : '#eef4ff',\r\n transition: 'color 300ms ease',\r\n }}\r\n >\r\n {label}\r\n </span>\r\n </span>\r\n\r\n <span\r\n style={{\r\n position: 'relative',\r\n zIndex: 1,\r\n display: 'inline-flex',\r\n flexShrink: 0,\r\n color: isHovered ? '#fff' : 'rgba(255,255,255,0.58)',\r\n transition: 'color 300ms ease',\r\n }}\r\n >\r\n <ArrowRightIcon />\r\n </span>\r\n </button>\r\n );\r\n};\r\n\r\ninterface FeatureCardProps extends FeatureCardData {\r\n onClick: () => void;\r\n}\r\n\r\nconst FeatureCard: React.FC<FeatureCardProps> = ({\r\n title,\r\n subtitle,\r\n imageUrl,\r\n imageTransform,\r\n hoverImageTransform,\r\n onClick,\r\n}) => {\r\n const [isHovered, setIsHovered] = useState(false);\r\n const cardTransform = isHovered ? hoverImageTransform ?? 'scale(1.016)' : imageTransform ?? 'scale(1)';\r\n\r\n return (\r\n <button\r\n type=\"button\"\r\n onClick={onClick}\r\n onMouseEnter={() => setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n onFocus={() => setIsHovered(true)}\r\n onBlur={() => setIsHovered(false)}\r\n style={{\r\n position: 'relative',\r\n height: 'auto',\r\n maxHeight: isHovered ? 'clamp(17.5rem, 36dvh, 24.25rem)' : 'clamp(16rem, 33dvh, 22rem)',\r\n minWidth: 0,\r\n width: '100%',\r\n aspectRatio: '540 / 800',\r\n transform: isHovered ? 'translateY(-0.35rem)' : 'translateY(0)',\r\n alignSelf: 'flex-end',\r\n overflow: 'hidden',\r\n borderRadius: '1.35rem',\r\n border: `1px solid ${isHovered ? 'rgba(130,233,255,0.78)' : 'rgba(79,121,255,0.38)'}`,\r\n background: isHovered ? '#0a1424' : '#07101d',\r\n boxShadow: isHovered\r\n ? '0 22px 62px rgba(0,0,0,0.34), 0 0 0 1px rgba(98,166,255,0.24), 0 0 32px rgba(0,225,255,0.20), 0 0 56px rgba(71,100,255,0.20), inset 0 1px 0 rgba(255,255,255,0.18), inset 0 -18px 42px rgba(31,92,255,0.20)'\r\n : '0 18px 54px rgba(0,0,0,0.28), inset 0 1px 0 rgba(255,255,255,0.06)',\r\n cursor: 'pointer',\r\n font: 'inherit',\r\n outline: 'none',\r\n padding: 0,\r\n transition: 'transform 280ms ease, border-color 300ms ease, background-color 300ms ease, box-shadow 300ms ease',\r\n }}\r\n aria-label={`进入${title}`}\r\n >\r\n <img\r\n src={imageUrl}\r\n alt=\"\"\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n transform: cardTransform,\r\n filter: isHovered ? 'brightness(1.08) contrast(1.04) saturate(1.16)' : 'none',\r\n transition: 'transform 300ms ease, filter 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n background:\r\n 'linear-gradient(180deg, rgba(2,8,18,0.04) 0%, rgba(3,10,22,0.18) 42%, rgba(4,12,27,0.58) 72%, rgba(16,54,172,0.38) 100%)',\r\n opacity: isHovered ? 0.7 : 1,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: 0,\r\n opacity: isHovered ? 1 : 0,\r\n background:\r\n 'radial-gradient(circle at 74% 18%, rgba(113,220,255,0.20), transparent 34%), radial-gradient(circle at 30% 96%, rgba(45,99,255,0.32), transparent 40%)',\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n height: '50%',\r\n background: 'linear-gradient(180deg, rgba(5,13,27,0) 0%, rgba(7,16,35,0.52) 38%, rgba(22,70,205,0.90) 100%)',\r\n opacity: isHovered ? 1 : 0.92,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n left: '-12%',\r\n right: '-12%',\r\n bottom: '-18%',\r\n height: '42%',\r\n borderRadius: '50%',\r\n background: 'radial-gradient(ellipse at center, rgba(0,224,255,0.38) 0%, rgba(56,100,255,0.28) 42%, transparent 72%)',\r\n filter: 'blur(28px)',\r\n opacity: isHovered ? 1 : 0.62,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n inset: '1px',\r\n borderRadius: '1.28rem',\r\n background: 'linear-gradient(140deg, rgba(255,255,255,0.12) 0%, transparent 24%, transparent 70%, rgba(93,230,255,0.16) 100%)',\r\n opacity: isHovered ? 1 : 0,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: 'absolute',\r\n left: '5%',\r\n right: '5%',\r\n bottom: 0,\r\n height: 1,\r\n background: 'linear-gradient(90deg, transparent, rgba(83,229,255,0.70), rgba(96,128,255,0.78), transparent)',\r\n opacity: isHovered ? 1 : 0.75,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n />\r\n\r\n <span\r\n style={{\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n zIndex: 2,\r\n display: 'flex',\r\n alignItems: 'flex-end',\r\n padding: '2rem 1.25rem 1.25rem',\r\n textAlign: 'left',\r\n }}\r\n >\r\n <span style={{ display: 'flex', minWidth: 0, maxWidth: '100%', flexDirection: 'column', alignItems: 'flex-start' }}>\r\n <span\r\n style={{\r\n display: 'block',\r\n maxWidth: '100%',\r\n background: 'linear-gradient(180deg, #ffffff 0%, #eef4ff 54%, #bfd3ff 100%)',\r\n WebkitBackgroundClip: 'text',\r\n backgroundClip: 'text',\r\n color: 'transparent',\r\n fontSize: '1.72rem',\r\n fontWeight: 600,\r\n lineHeight: 1.06,\r\n letterSpacing: 0,\r\n filter: isHovered ? 'drop-shadow(0 0 14px rgba(180,218,255,0.34))' : 'none',\r\n transition: 'filter 300ms ease',\r\n }}\r\n >\r\n {title}\r\n </span>\r\n <span\r\n style={{\r\n display: 'block',\r\n maxWidth: '100%',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n marginTop: '0.75rem',\r\n paddingBottom: '0.125rem',\r\n paddingRight: '0.5rem',\r\n background: 'linear-gradient(180deg, rgba(255,255,255,0.94) 0%, rgba(214,228,255,0.88) 52%, rgba(163,191,255,0.84) 100%)',\r\n WebkitBackgroundClip: 'text',\r\n backgroundClip: 'text',\r\n color: 'transparent',\r\n fontSize: '0.8rem',\r\n lineHeight: 1.45,\r\n letterSpacing: 0,\r\n opacity: isHovered ? 1 : 0.86,\r\n transition: 'opacity 300ms ease',\r\n }}\r\n >\r\n {subtitle}\r\n </span>\r\n </span>\r\n </span>\r\n </button>\r\n );\r\n};\r\n\r\nexport function BsdLandingPage({\r\n isAuthenticated = false,\r\n user,\r\n featureCards = BSD_DEFAULT_FEATURE_CARDS,\r\n onEnterWorkbench,\r\n onLogin,\r\n onCardClick,\r\n className = '',\r\n style = {},\r\n i18n = {},\r\n}: BsdLandingPageProps) {\r\n const { tags = [] } = i18n;\r\n const viewportHeight = useBsdLandingViewportHeight();\r\n\r\n const handleEnterNews = () => {\r\n if (!isAuthenticated) {\r\n onLogin?.();\r\n return;\r\n }\r\n if (onCardClick) {\r\n onCardClick(TREND_LABEL);\r\n return;\r\n }\r\n onEnterWorkbench?.();\r\n };\r\n\r\n const handleToWorkbench = () => {\r\n if (isAuthenticated) {\r\n onEnterWorkbench?.();\r\n } else {\r\n onLogin?.();\r\n }\r\n };\r\n\r\n const handleCardClick = (title: string, isToolbox?: boolean) => {\r\n if (!isAuthenticated) {\r\n onLogin?.();\r\n return;\r\n }\r\n if (isToolbox) {\r\n if (onCardClick) {\r\n onCardClick('AI工具箱');\r\n return;\r\n }\r\n onEnterWorkbench?.();\r\n } else {\r\n onCardClick?.(title);\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n position: 'relative',\r\n display: 'flex',\r\n height: viewportHeight,\r\n width: '100%',\r\n minWidth: 0,\r\n flexDirection: 'column',\r\n overflow: 'hidden',\r\n background: '#000',\r\n color: '#fff',\r\n ...style,\r\n }}\r\n >\r\n <div aria-hidden=\"true\" style={{ pointerEvents: 'none', position: 'absolute', inset: 0, zIndex: 0, background: '#020409' }} />\r\n <div aria-hidden=\"true\" style={{ pointerEvents: 'none', position: 'absolute', inset: 0, zIndex: 0, overflow: 'hidden' }}>\r\n <img\r\n src={BSD_CONFIG.backgroundImage}\r\n alt=\"\"\r\n style={{\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n width: '108%',\r\n height: '108%',\r\n maxWidth: 'none',\r\n transform: 'translate(-50%, -50%)',\r\n objectFit: 'cover',\r\n objectPosition: 'center',\r\n opacity: 0.9,\r\n }}\r\n />\r\n </div>\r\n <div\r\n aria-hidden=\"true\"\r\n style={{\r\n pointerEvents: 'none',\r\n position: 'absolute',\r\n inset: 0,\r\n zIndex: 0,\r\n background:\r\n 'radial-gradient(circle at top, rgba(98,144,255,0.18), transparent 32%), radial-gradient(circle at 50% 42%, rgba(80,177,255,0.14), transparent 28%)',\r\n }}\r\n />\r\n <div\r\n aria-hidden=\"true\"\r\n style={{\r\n pointerEvents: 'none',\r\n position: 'absolute',\r\n inset: 0,\r\n zIndex: 0,\r\n background: 'linear-gradient(180deg, rgba(0,0,0,0.32) 0%, rgba(0,0,0,0.16) 18%, rgba(0,0,0,0.48) 52%, rgba(0,0,0,0.88) 100%)',\r\n }}\r\n />\r\n\r\n <header\r\n style={{\r\n position: 'relative',\r\n zIndex: 30,\r\n display: 'flex',\r\n height: 'clamp(4.5rem, 7dvh, 5.75rem)',\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n borderBottom: '1px solid rgba(255,255,255,0.1)',\r\n background: 'rgba(0,0,0,0.01)',\r\n padding: '0 clamp(1.25rem, 3.2vw, 4rem)',\r\n backdropFilter: 'blur(8px)',\r\n }}\r\n >\r\n <img src={BSD_CONFIG.logo} alt=\"BSD AI\" style={{ display: 'block', width: 'auto', height: 'clamp(5.8rem, 10dvh, 8.7rem)' }} />\r\n\r\n {isAuthenticated && user ? (\r\n <div\r\n style={{\r\n width: '2.75rem',\r\n height: '2.75rem',\r\n borderRadius: '50%',\r\n background: 'linear-gradient(135deg, #60a5fa, #a855f7)',\r\n display: 'grid',\r\n placeItems: 'center',\r\n overflow: 'hidden',\r\n color: '#fff',\r\n }}\r\n title={user.name}\r\n >\r\n {user.photo ? (\r\n <img src={user.photo} alt={user.name || ''} style={{ width: '100%', height: '100%', objectFit: 'cover', borderRadius: '50%' }} />\r\n ) : (\r\n <UserIcon size={20} />\r\n )}\r\n </div>\r\n ) : (\r\n <div\r\n style={{\r\n width: '2.75rem',\r\n height: '2.75rem',\r\n borderRadius: '50%',\r\n background: 'linear-gradient(135deg, #4ade80, #3b82f6)',\r\n display: 'grid',\r\n placeItems: 'center',\r\n color: '#fff',\r\n }}\r\n >\r\n <SparklesIcon size={20} />\r\n </div>\r\n )}\r\n </header>\r\n\r\n <main\r\n style={{\r\n position: 'relative',\r\n zIndex: 10,\r\n minHeight: 0,\r\n flex: '1 1 auto',\r\n overflow: 'hidden',\r\n padding: 'clamp(1.25rem, 3.2dvh, 4rem) clamp(1.25rem, 2vw, 2.5rem)',\r\n }}\r\n >\r\n <div\r\n style={{\r\n position: 'relative',\r\n display: 'flex',\r\n height: '100%',\r\n width: '100%',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <div\r\n style={{\r\n display: 'grid',\r\n width: '100%',\r\n height: 'min(100%, clamp(34rem, 72dvh, 58rem))',\r\n minHeight: 0,\r\n transform: 'translateY(clamp(0rem, 1.1dvh, 1rem))',\r\n gridTemplateRows: 'auto minmax(0, 1fr)',\r\n alignContent: 'center',\r\n gap: 'clamp(0.5rem, 1.35dvh, 1.25rem)',\r\n }}\r\n >\r\n <div style={{ display: 'flex', width: '100%', flexDirection: 'column', alignItems: 'center', textAlign: 'center' }}>\r\n <img\r\n src={BSD_CONFIG.sloganImage}\r\n alt=\"从山川到极地的风格指南\"\r\n style={{\r\n width: 'min(72vw, 66rem)',\r\n maxWidth: '100%',\r\n maxHeight: 'clamp(5.25rem, 12dvh, 7.5rem)',\r\n objectFit: 'contain',\r\n }}\r\n />\r\n\r\n {tags.length > 0 ? (\r\n <div\r\n style={{\r\n marginTop: '0.75rem',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '0.65rem',\r\n color: 'rgba(255,255,255,0.78)',\r\n fontSize: '0.95rem',\r\n lineHeight: 1.4,\r\n }}\r\n >\r\n {tags.map((tag, index) => (\r\n <React.Fragment key={tag}>\r\n <span>{tag}</span>\r\n {index < tags.length - 1 ? <span style={{ color: 'rgba(255,255,255,0.42)' }}>|</span> : null}\r\n </React.Fragment>\r\n ))}\r\n </div>\r\n ) : null}\r\n\r\n <div\r\n style={{\r\n marginTop: 'clamp(0.9rem, 2.2dvh, 1.75rem)',\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '1rem',\r\n }}\r\n >\r\n <BsdPrimaryAction iconSrc={BSD_CONFIG.icons.news} iconSize={24} label={TREND_LABEL} tone=\"trend\" onClick={handleEnterNews} />\r\n <BsdPrimaryAction iconSrc={BSD_CONFIG.icons.agent} iconSize={32} label={DESIGN_LABEL} tone=\"design\" onClick={handleToWorkbench} />\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: 'flex', minHeight: 0, alignItems: 'flex-end', justifyContent: 'center', paddingTop: 0 }}>\r\n <div\r\n style={{\r\n display: 'grid',\r\n width: '92vw',\r\n maxWidth: '1620px',\r\n minWidth: 0,\r\n gridTemplateColumns: 'repeat(6, minmax(0, 1fr))',\r\n alignItems: 'flex-end',\r\n justifyContent: 'center',\r\n gap: 'clamp(0.5rem, 1vw, 1.35rem)',\r\n }}\r\n >\r\n {featureCards.map((card) => (\r\n <FeatureCard\r\n key={card.title}\r\n {...card}\r\n onClick={() => handleCardClick(card.title, card.isToolbox)}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </main>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BsdLandingPage;\r\n","import React from 'react';\r\n\r\n// 工具定义类型\r\nexport interface ToolDefinition {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n icon?: string;\r\n category?: string;\r\n}\r\n\r\n// 工具箱面板 Props\r\nexport interface ToolboxPanelProps {\r\n className?: string;\r\n style?: React.CSSProperties;\r\n tools?: ToolDefinition[];\r\n onToolSelect?: (toolId: string) => void;\r\n}\r\n\r\n// BSD 工具箱封面 URL 前缀\r\nconst BSD_TOOLBOX_COVER_PREFIX =\r\n 'https://bsd-ai-oss-prd.oss-cn-wulanchabu.aliyuncs.com/new-ai/%E5%B7%A5%E5%85%B7%E7%AE%B1/';\r\n\r\n// BSD 默认工具定义\r\nconst BSD_DEFAULT_TOOLS: ToolDefinition[] = [\r\n { id: 'inspiration', title: '灵感生成', category: 'text', description: '根据文字描述生成设计灵感' },\r\n { id: 'free-fission', title: '自由裂变', category: 'image', description: '图片多样化裂变生成' },\r\n { id: 'style-fusion', title: '风格融合', category: 'image', description: '多风格智能融合' },\r\n { id: 'local-edit', title: '局部修改', category: 'image', description: '局部区域精准修改' },\r\n { id: 'line-to-garment', title: '线稿成衣', category: 'image', description: '线稿快速转化成衣' },\r\n { id: 'garment-on-model', title: '成衣上身', category: 'image', description: '服装虚拟试穿' },\r\n { id: 'light-effect', title: '光影大片', category: 'image', description: '专业光影效果' },\r\n { id: 'atmosphere', title: '氛围图生成', category: 'image', description: '氛围场景生成' },\r\n { id: 'smart-outfit', title: '智能穿搭', category: 'image', description: '智能搭配推荐' },\r\n { id: 'runway', title: '秀场款生成', category: 'image', description: '秀场风格生成' },\r\n];\r\n\r\n/**\r\n * BSD Toolbox Panel - 波司登品牌定制工具箱面板\r\n */\r\nexport function BsdToolboxPanel({\r\n className,\r\n style,\r\n tools = BSD_DEFAULT_TOOLS,\r\n onToolSelect,\r\n}: ToolboxPanelProps) {\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n padding: 24,\r\n background: 'linear-gradient(180deg, #1a1a2e 0%, #0f0f1a 100%)',\r\n borderRadius: 20,\r\n ...style,\r\n }}\r\n >\r\n <h2 style={{ color: '#fff', marginBottom: 24 }}>AI 工具箱</h2>\r\n\r\n <div\r\n style={{\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(auto-fill, minmax(160px, 1fr))',\r\n gap: 16,\r\n }}\r\n >\r\n {tools.map((tool) => (\r\n <div\r\n key={tool.id}\r\n onClick={() => onToolSelect?.(tool.id)}\r\n style={{\r\n padding: 16,\r\n borderRadius: 12,\r\n background: 'rgba(255,255,255,0.05)',\r\n cursor: 'pointer',\r\n transition: 'all 0.2s',\r\n }}\r\n onMouseEnter={(e) => {\r\n e.currentTarget.style.background = 'rgba(40, 82, 173, 0.3)';\r\n }}\r\n onMouseLeave={(e) => {\r\n e.currentTarget.style.background = 'rgba(255,255,255,0.05)';\r\n }}\r\n >\r\n {/* Tool Cover Image */}\r\n <div\r\n style={{\r\n width: '100%',\r\n aspectRatio: '1',\r\n borderRadius: 8,\r\n marginBottom: 12,\r\n background: `url(${BSD_TOOLBOX_COVER_PREFIX}${tool.id}.png) center/cover`,\r\n backgroundColor: 'rgba(40, 82, 173, 0.2)',\r\n }}\r\n />\r\n <h4 style={{ color: '#fff', margin: 0 }}>{tool.title}</h4>\r\n {tool.description && (\r\n <p style={{ color: 'rgba(255,255,255,0.6)', margin: '4px 0 0', fontSize: 12 }}>\r\n {tool.description}\r\n </p>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nexport default BsdToolboxPanel;\r\n","import { registerTheme } from '../../registry';\r\nimport { BsdLandingPage, BSD_CONFIG, BSD_DEFAULT_FEATURE_CARDS } from './components/LandingPage';\r\nimport { BsdToolboxPanel } from './components/ToolboxPanel';\r\n\r\n// 注册 BSD 主题\r\nregisterTheme(\r\n 'bsd',\r\n {\r\n 'landing-page': BsdLandingPage,\r\n 'toolbox-panel': BsdToolboxPanel,\r\n },\r\n {\r\n name: 'BSD Theme',\r\n description: 'BSD Theme Components for Monkeys UI',\r\n version: '1.0.0',\r\n }\r\n);\r\n\r\n// 导出组件供直接使用\r\nexport { BsdLandingPage, BsdToolboxPanel };\r\n\r\n// 导出类型\r\nexport type { BsdLandingPageProps, FeatureCardData, UserInfo } from './components/LandingPage';\r\n\r\n// 导出配置常量\r\nexport { BSD_CONFIG, BSD_DEFAULT_FEATURE_CARDS };\r\n"]}