Files

17 KiB
Raw Permalink Blame History

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:  600700
- Time digits:         900
- Placeholder:         400
- letter-spacing:      0.010.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 (custom footer): 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  (dark #2b2118, border #3d3028)
Checkbox box:              border-radius: 8px   (22px square, middle size)
Minimum anywhere:          12px — NO sharp right-angle interactive elements

=== MODAL SVG BLOB CLIP-PATH (exact path) ===
<svg style="position:absolute;width:0;height:0" aria-hidden>
  <defs>
    <clipPath id="animal-modal-clip" clipPathUnits="objectBoundingBox">
      <path d="M0.501,0.005 L0.501,0.005 L0.523,0.005 L0.549,0.006
        C0.704,0.01,0.796,0.017,0.825,0.027 L0.827,0.028
        C0.872,0.045,0.939,0.044,0.978,0.17
        C1,0.254,1,0.365,0.99,0.505 L0.988,0.513
        C0.979,0.558,0.971,0.598,0.965,0.633
        C0.956,0.689,0.979,0.77,0.964,0.865
        C0.953,0.928,0.921,0.966,0.869,0.979
        C0.821,0.986,0.773,0.992,0.726,0.995
        L0.712,0.996 L0.694,0.997
        C0.648,1,0.586,1,0.507,1 L0.501,1 L0.464,1
        C0.385,1,0.325,0.998,0.283,0.995
        C0.234,0.992,0.184,0.987,0.133,0.979
        C0.081,0.966,0.05,0.928,0.039,0.865
        C0.023,0.77,0.047,0.689,0.037,0.633
        C0.031,0.595,0.023,0.552,0.013,0.505
        C-0.006,0.365,-0.002,0.254,0.024,0.17
        C0.064,0.045,0.13,0.045,0.174,0.028 L0.175,0.028
        C0.204,0.017,0.303,0.009,0.474,0.005 L0.501,0.005"/>
    </clipPath>
  </defs>
</svg>
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, incl. default) ===
default rgb(247,243,223) (#725d42 text) /
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 (050% opacity 1, 51100% 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 ===
<Footer type="sea" />   width 100%, height 80px, background url(footer-sea.svg) center/contain no-repeat
                        (SVG viewBox 0 0 1440 186, coral #EC7175 / ocean #327A93 / #98D2E3 / #008077)
<Footer type="tree" />  (default) width 100%, height 60px, background url(footer-tree.webp) bottom center/cover

=== DIVIDER DECORATION ===
5 types — all width 100%, height 12px, background center/contain no-repeat:
  line-brown  (default, SVG viewBox 0 0 297 14, fill #D8D0C3)
  line-teal   (SVG)
  line-white  (PNG)
  line-yellow (SVG)
  wave-yellow (SVG)

=== CURSOR WRAPPER ===
<Cursor>{children}</Cursor> — applies ".animal-cursor, .animal-cursor * { cursor: url(cursor-icon.png) 4 0, auto !important; }"
Hotspot coordinates: (4, 0). Uses !important to override all child cursors.

=== TYPEWRITER (no markup wrapper) ===
Props: children (ReactNode), speed=90ms, trigger (any unknown; change to restart),
       autoPlay=true, onDone?: () => void
Behavior: recursively truncates ReactNode tree by character count while preserving
          element structure, className, and inline styles. Returns a plain fragment
          (NO extra wrapping div/span) so it has ZERO layout impact.

=== COMPONENT INVENTORY (17 exports from src/index.ts) ===
Interactive: Button, Input, Switch, Modal, Collapse, Select, Tabs, Checkbox
Containers:  Card (13 NookPhone colors)
Decorative:  Time, Phone, Footer, Divider, Cursor, Typewriter, Icon, CodeBlock

=== CHECKBOX (sizes small 18 / middle 22 / large 28 px) ===
Unchecked box:  background rgb(247,243,223); border 2.5px solid #c4b89e; border-radius 8px
Hover box:      border-color #19c8b9; transform translateY(-1px)
Checked box:    background #19c8b9; border-color #11a89b
Checkmark ✓:    color #fff, font-weight 700, pop animation 0.15s
Label:          color #725d42 (hover #794f27), font-weight 500, letter-spacing 0.01em
Focus ring:     outline 2px solid #ffcc00; outline-offset 2px
Disabled:       opacity 0.55, box bg #f0ece2, border #d4c9b4, label #c4b89e, cursor not-allowed
Group layout:   horizontal flex gap 12px / vertical flex-direction column gap 8px
Per-option label font-size by size: small 12px / middle 14px / large 16px

=== CODE BLOCK (dark theme, JSX/TS only) ===
Container: padding 20px 24px; background #2b2118; border 1px solid #3d3028;
           border-radius 20px; font-size 14px; line-height 1.7; tab-size 4;
           font-family 'SF Mono','Fira Code','Cascadia Code',Consolas,monospace; font-weight 600;
           white-space pre; overflow auto; color (default) #e8d5bc
Token colors:
  comment   #6b5e50 (/* */, //)
  string    #a8d4a0 (quoted strings, numeric literals)
  keyword   #d4a0e0 (import/export/const/return/true/false/null/async/await/type/interface...)
  react     #e06c75 (React, useState, useEffect, FC, ReactNode, CSSProperties...)
  component #80c0e0 (PascalCase identifiers — JSX tags / type names)
  func      #61afef (lowercase identifier followed by `(`)
  prop      #e8c87a (identifier followed by `=`)
  jsx       #f0a870 (`<Tag`, `</Tag`, `/>`)
  operator  #d4b896 (`{}[]();,` and arithmetic / comparison / logical operators)

=== FORBIDDEN PATTERNS ===
✗ Sharp right-angle (0px radius) on any interactive element
✗ Pure black #000 or #111 text — always use warm brown tones
✗ Cold blue focus rings (#0066ff etc.) — use #ffcc00 or #19c8b9
✗ Cold gray backgrounds — always warm parchment
✗ Flat design without bottom box-shadow on interactive elements
✗ font-weight below 400 anywhere in the UI
✗ System monospace fonts for UI text (code blocks excluded)

图片生成提示词(适用于 Midjourney / DALL-E / Stable Diffusion

Pixel-perfect UI screenshot of "animal-island-ui" React component library website,
Animal Crossing Nintendo Switch life-sim game aesthetic,

Interface details:
- Warm parchment background rgb(247,243,223), NEVER pure white
- Pill-shaped buttons (border-radius 50px) with 3D bottom shadow in warm taupe #bdaea0,
  buttons press down on click like Nintendo game buttons
- Organic blob-shaped modal dialog with irregular soft SVG silhouette
- Pastel NookPhone app icon color cards: pink #f8a6b2, lavender #b77dee, sky blue #889df0,
  sunshine yellow #f7cd67, coral #e59266, seafoam #82d5bb, sage green #8ac68a
- Mint teal accent #19c8b9, warm brown text #725d42
- Sidebar 220px wide with leaf texture background, menu items highlight in light blue #B7C6E5
- Nunito rounded font family (Google Fonts), weight 600-700, friendly chubby letterforms
- Yellow focus highlight #ffcc00 on focused inputs (NOT blue)
- Switch toggle with floating 3D handle, green #86d67a when ON
- Collapse accordion with teal circle icon, leaf SVG decoration
- Time widget showing weekday in green #6fba2c, large 48px clock digits
- Nature decorations: leaf SVG icons, illustrated ocean wave footer, forest tree silhouette
- Diagonal stripe loading animation on active buttons
- Custom game-style finger cursor icon
- Soft warm diffuse lighting, cozy pastoral atmosphere, flat illustration style
- 4K resolution, UI design mockup

关键数值速查表

Token 精确值 用途
内容区背景 rgb(247, 243, 223) Modal、Card 内容区
主背景 #f8f8f0 按钮、通用背景
正文文字 #725d42 组件内正文
Header 文字 #794f27 侧边栏、标题
主色调 #19c8b9 焦点环、Collapse 图标
Switch ON 绿 #86d67a Switch 开启背景
成功绿 #6fba2c 星期文字、成功状态
按钮 3D 阴影 #bdaea0 0 5px 0 0 #bdaea0
输入框 3D 阴影 #d4c9b4 0 3px 0 0 #d4c9b4
焦点黄 #ffcc00 输入框 focus
Modal 确认按钮 bg #ffcc00, color #725d42 游戏黄主操作
侧边栏选中 #B7C6E5 菜单 active
侧边栏 hover #d6dff0 菜单 hover
按钮高度(中) 45px middle size
pill 圆角 50px 按钮、输入框
有机圆角 40px 35px 45px 38px / 38px 45px 35px 40px title Card
字体 Nunito, 'Noto Sans SC', 'Zen Maru Gothic' Google Fonts 加载
按钮字重 600 按钮文字
时间数字字重 900 Time 组件
过渡 0.25s cubic-bezier(0.4,0,0.2,1) 通用动画
Loading stripe 28.28px step, -45deg, #0ec4b6/#01b0a7 按钮 loading
侧边栏宽度 220px Desktop sidebar
Phone 外壳 527 × 788pxborder-radius: 136px NookPhone 容器
Phone app tile 123 × 123pxborder-radius: 45px 3×3 网格
Phone 新消息点 28px 红圆 #FF544A + 5px 奶油描边 #F8F4E8 badge
Footer sea height: 80pxSVG contain 海浪底部
Footer tree height: 60pxwebp cover bottom 森林底部
Divider height: 12px5 种背景图 装饰分割线
Cursor cursor: url(...) 4 0, auto !important 游戏手指光标
Typewriter 默认速度 90ms/字 按字符打印,无包裹元素
Google Fonts URL fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800;900&family=Zen+Maru+Gothic:wght@400;500;700&display=swap 在线加载