223bb530dd
CI/CD Pipeline / Check if frontend-only change (push) Has been skipped
CI/CD Pipeline / Frontend Lint (push) Has been skipped
CI/CD Pipeline / PR Build API Image (push) Has been skipped
CI/CD Pipeline / PR Build Web Image (push) Has been skipped
CI/CD Pipeline / PR Build Worker Image (push) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (push) Successful in 2m20s
CI/CD Pipeline / Validate - Type Check (mypy) (push) Successful in 2m28s
CI/CD Pipeline / Build Staging Worker Image (push) Successful in 3m21s
CI/CD Pipeline / Frontend Unit Tests (push) Successful in 3m49s
CI/CD Pipeline / Build Staging Web Image (push) Successful in 5m18s
CI/CD Pipeline / Validate - Code Quality (push) Successful in 5m41s
CI/CD Pipeline / Integration Tests (push) Successful in 2m25s
CI/CD Pipeline / Unit Tests (push) Failing after 10m1s
CI/CD Pipeline / Build Production API Image (push) Has been skipped
CI/CD Pipeline / Build Production Web Image (push) Has been skipped
CI/CD Pipeline / Build Production Worker Image (push) Has been skipped
CI/CD Pipeline / CI Gate (push) Has been skipped
CI/CD Pipeline / Deploy Production (push) Has been skipped
CI/CD Pipeline / Production Browser E2E (push) Has been skipped
CI/CD Pipeline / Build Staging API Image (push) Successful in 12m34s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (push) Successful in 30s
CI/CD Pipeline / ACR Image Cleanup (push) Successful in 33s
CI/CD Pipeline / Staging API Integration Tests (push) Successful in 4m37s
CI/CD Pipeline / Canary Release to Production (push) Has been skipped
CI/CD Pipeline / Staging E2E Tests (push) Failing after 5m1s
Co-authored-by: xiaoxia <dev@xiaoxiajianji.com> Co-committed-by: xiaoxia <dev@xiaoxiajianji.com>
55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
import type { CSSProperties } from "react"
|
|
import type { TextStickerPreset } from "../../types"
|
|
|
|
/** 常用 emoji 素材 */
|
|
export const EMOJI_LIST = [
|
|
"😀",
|
|
"😂",
|
|
"🥰",
|
|
"😎",
|
|
"🤩",
|
|
"😱",
|
|
"🤔",
|
|
"😴",
|
|
"🥳",
|
|
"😍",
|
|
"❤️",
|
|
"🔥",
|
|
"⭐",
|
|
"✨",
|
|
"💯",
|
|
"👍",
|
|
"👏",
|
|
"🎉",
|
|
"🎵",
|
|
"💪",
|
|
"📌",
|
|
"💡",
|
|
"🎯",
|
|
"✅",
|
|
"❌",
|
|
"⬆️",
|
|
"⬇️",
|
|
"➡️",
|
|
"⭕",
|
|
"🔔",
|
|
]
|
|
|
|
/** 文字花字预设对应的 CSS 样式预览 */
|
|
export const TEXT_PRESET_STYLES: Record<TextStickerPreset, CSSProperties> = {
|
|
normal: { color: "#fff", textShadow: "none" },
|
|
highlight: { color: "#FFD700", textShadow: "0 0 8px rgba(255,215,0,0.6)" },
|
|
bubble: { color: "#fff", background: "rgba(0,0,0,0.5)", borderRadius: 8 },
|
|
neon: { color: "#0ff", textShadow: "0 0 6px #0ff, 0 0 12px #0ff" },
|
|
shadow: { color: "#fff", textShadow: "2px 2px 4px rgba(0,0,0,0.8)" },
|
|
outline: { color: "#fff", WebkitTextStroke: "1px #000" },
|
|
gradient: {
|
|
color: "transparent",
|
|
background: "linear-gradient(90deg,#f093fb,#f5576c)",
|
|
WebkitBackgroundClip: "text",
|
|
},
|
|
handwrite: { color: "#333", fontStyle: "italic", fontFamily: "cursive" },
|
|
}
|
|
|
|
export const genStickerId = () => `sticker_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`
|