# animal-island-ui 设计提示词 ## UI 工具提示词(适用于 v0 / Figma AI / Framer AI / Locofy) ``` Design a UI in the style of "animal-island-ui" — an Animal Crossing-inspired React component library. Reproduce every detail below as precisely as possible. === FONTS (REQUIRED — load from Google Fonts if not installed) === @import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;900&family=Noto+Sans+SC:wght@400;500;700&family=Zen+Maru+Gothic:wght@400;500;700&display=swap'); font-family: Nunito, 'Noto Sans SC', 'Zen Maru Gothic', -apple-system, 'PingFang SC', sans-serif; Font weights: - Body text: 500 - Buttons / headings: 600–700 - Time digits: 900 - Placeholder: 400 - letter-spacing: 0.01–0.02em (wider on buttons/weekday labels) === COLOR PALETTE === Primary background: #f8f8f0 (warm parchment) Content area background: rgb(247, 243, 223) (slightly warmer — use for cards, modals) Page background (homepage): #7DC395 + url(home_bg.svg) Page background (component page): url(content_bg_pc.jpg) center fixed Text colors: Primary (header/sidebar): #794f27 Body (inside components): #725d42 Secondary: #9f927d Muted: #8a7b66 Disabled: #c4b89e Placeholder: #c4b89e Primary accent (mint teal): Default: #19c8b9 | Hover: #3dd4c6 | Active: #11a89b | Light bg: #e6f9f6 Status: Success: #6fba2c (active: #5a9e1e) Warning: #f5c31c (active: #dba90e) Error: #e05a5a (active: #c94444) Switch ON green: #86d67a (border: #6fba2c) Switch OFF gray: #d4c9b4 (border: #c4b89e) Game-special: Focus yellow: #ffcc00 (darker: #e0b800) — input focus highlight, NOT blue Sidebar selected bg: #B7C6E5 Sidebar hover bg: #d6dff0 Modal confirm btn: background #ffcc00, color #725d42 Borders: Standard: 2px solid #9f927d Input (normal): 2.5px solid #c4b89e | hover: #a89878 | large: 3px Time component: 3px solid #d4cfc3 3D shadow colors (bottom box-shadow only — NO elevation shadow): Button: 0 5px 0 0 #bdaea0 | hover: 0 6px | active: 0 1px Input: 0 3px 0 0 #d4c9b4 | small: 0 2px | large: 0 4px Switch OFF: 0 3px 0 0 #bdaea0 Switch ON: 0 3px 0 0 #5a9e1e Card: 0 4px 10px rgba(107, 92, 67, 0.42) Feature card hover: 0 8px 24px rgba(114, 93, 66, 0.15) === SHAPE & RADIUS === Buttons and inputs: border-radius: 50px (full pill/capsule — most important) Default cards: border-radius: 20px Title cards (organic): border-radius: 40px 35px 45px 38px / 38px 45px 35px 40px Modals: SVG blob clip-path (see path below) Sidebar menu items: border-radius: 12px Collapse panel outer: border-radius: 18px Version badge: border-radius: 10px Code block: border-radius: 20px Minimum anywhere: 12px — NO sharp right-angle interactive elements === MODAL SVG BLOB CLIP-PATH (exact path) === Modal content: clip-path: url(#animal-modal-clip); padding: 48px 48px 32px 48px; === DEPTH & INTERACTION (Nintendo button press — most defining feature) === ALL clickable elements get a bottom box-shadow that simulates a game button: Default: box-shadow: 0 5px 0 0 #bdaea0; transform: none; Hover: box-shadow: 0 6px 0 0 #bdaea0; transform: translateY(-1px); Active: box-shadow: 0 1px 0 0 #bdaea0; transform: translateY(2px); Cards hover: transform: translateY(-4px) — gentle float, no button press Switch handle: always has transform: translateY(-2px) — floats above track transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1) === FOCUS STATES === Input focus: border-color: #ffcc00; box-shadow: 0 3px 0 0 #e0b800, 0 0 0 3px rgba(255,204,0,0.15) Button focus: outline: 2px solid #19c8b9; outline-offset: 2px Switch focus: outline: 2px solid #ffcc00; outline-offset: 2px === BUTTON SIZES (exact) === small: height 32px, padding 0 16px, font-size 12px, border-radius 12px middle: height 45px, padding 0 20px, font-size 14px, border-radius 50px large: height 48px, padding 0 32px, font-size 16px, border-radius 24px font-weight: 600, letter-spacing: 0.02em, line-height: 1 === INPUT SIZES (exact) === small: height 32px, padding 0 14px, font-size 12px, radius 40px, border 2.5px, shadow: 0 2px 0 0 #d4c9b4 middle: height 40px, padding 0 18px, font-size 14px, radius 50px, border 2.5px, shadow: 0 3px 0 0 #d4c9b4 large: height 48px, padding 0 22px, font-size 16px, radius 50px, border 3px, shadow: 0 4px 0 0 #d4c9b4 Input text: color #725d42, font-weight 500, letter-spacing 0.01em === SWITCH SIZES (exact) === default: min-width 52px, height 28px, border 2.5px handle: 21×21px, top 2px, left 2px; ON position: left calc(100%-24px) box-shadow handle: 0 3px 0 0 #bdaea0 (OFF) / 0 3px 0 0 #5a9e1e (ON) small: min-width 38px, height 20px, border 2px handle: 14×14px, top 1px, left 1px; ON position: left calc(100%-16px) Inner text: font-size 11px, font-weight 700, color #fff, letter-spacing 0.02em OFF padding: 0 8px 0 28px | ON padding: 0 28px 0 8px === LOADING ANIMATION (Button) === background-image: repeating-linear-gradient(-45deg, #0ec4b6, #0ec4b6 10px, #01b0a7 10px, #01b0a7 20px); background-size: 28.28px 28.28px; animation: animal-btn-loading 1s linear infinite; @keyframes animal-btn-loading { 0% { background-position: 0 0; } 100% { background-position: -28.28px 0; } } === ACCORDION (Collapse) — no JS === display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.3s cubic-bezier(0.4, 0, 0.2, 1); expanded: grid-template-rows: 1fr; inner wrapper: overflow: hidden; === TIME DISPLAY === Container: padding 16px 36px, gap 24px, background linear-gradient(180deg, #fff 0%, #f8f8f0 100%), border 3px solid #d4cfc3, border-radius 18px Date section right border: 3px solid rgba(159, 146, 125, 0.35), padding-right 24px Weekday: color #6fba2c, font-weight 900, font-size 14px, letter-spacing 1.5px, UPPERCASE Month/day: color #8b7355, font-weight 800, font-size 22px Time digits: color #8b7355, font-weight 900, font-size 48px, letter-spacing 2px Colon blink: animation blink 1s step-end infinite; @keyframes blink { 50% { opacity: 0; } } === SIDEBAR LAYOUT === Width: 220px, background: url(menu_bg.svg) center/cover no-repeat Header: padding 20px 16px 12px, font-size 15px, font-weight 700, color #725d42 Category labels: font-size 11px, color #a0936e, font-weight 600, letter-spacing 0.5px, uppercase Menu items: height 40px, padding-left 26px, font-size 14px, font-weight 600 inactive: color #8a7b66 | hover: background #d6dff0 | active: background #B7C6E5, color #fff border-radius: 12px, margin: 1px 5px, transition: all 0.15s === NOOKPHONE CARD PALETTE (13 colors) === app-pink #f8a6b2 / purple #b77dee / app-blue #889df0 / app-yellow #f7cd67 (#725d42 text) / app-orange #e59266 / app-teal #82d5bb / app-green #8ac68a / app-red #fc736d / lime-green #d1da49 (#3d5a1a text) / yellow-green #ecdf52 (#725d42 text) / brown #9a835a / warm-peach-pink #e18c6f === DECORATIVE ELEMENTS === - Collapse: teal circle icon (28px, #19c8b9 bg) with +/− that rotates 180° on expand - Collapse: leaf SVG decoration, opacity 0.5→1, rotates 45° on expand - Footer sea: SVG ocean wave illustration, height 80px, object-fit: contain - Footer tree: webp forest image, height 60px, background-position: bottom center - Dividers: illustrated lines (brown/teal/white/yellow/wave) — 12px height PNG/SVG - Cursor: custom game-style finger pointer PNG - Backgrounds: nature illustrations (leaf texture sidebar, island scene homepage) === NOOKPHONE DEVICE (decorative widget) === Phone shell: width 527px, height 788px, background #F8F4E8, border-radius 136px (almost capsule), overflow hidden Home screen: padding-top 40px, background #F8F4E8, background-size 100% 200%, animation grasswave 8s ease-in-out infinite (@keyframes grasswave { 0%,100% { background-position: 0% 0%; } 50% { background-position: 0% 100%; } }) Top bar: wifi icon (79×29) ← time 32px/800/letter-spacing 2px color #DDDBCC → location icon (36×36) Colon blink: animation blink 1s steps(1) infinite (0–50% opacity 1, 51–100% opacity 0) Welcome text: 48px / 800 / color #725C4E / letter-spacing 2px / margin-top 20px Apps grid: grid-template-columns: repeat(3, 1fr); gap 32px; padding 8px App tile: 123×123px, border-radius 45px, flex center App icon: background-size 70% auto (iconApp only: 100% auto) Hover bounce: @keyframes iconBounce (0% scale 1 rotate 0, 50% scale 1.2 rotate -5deg, 100% scale 1.1 rotate -4deg), 0.3s ease-in-out forwards Badge dot: 28×28 circle, top 0 left 0, background #FF544A, border 5px solid #F8F4E8 Page indicator: page svg 65×32, margin-top 74px App palette: camera #B77DEE, app #889DF0 (with offset), critterpedia #F7CD67, diy #E59266, shopping #F8A6B2, variant #82D5BB, design #8AC68A, map #FC736D, chat #D1DA49 === FOOTER DECORATION ===