DESIGN.md 11 KB


name: AI零售柜 description: AI智能零售柜小程序 — 扫码开门、即拿即走、自动扣款 colors: primary-yellow: "#FFC107" primary-yellow-light: "#FFE082" primary-yellow-dark: "#FFA000" primary-yellow-bg: "#FFF8E1" neutral-ink: "#2C2C2C" neutral-ash: "#8C8C8C" neutral-cloud: "#BDBDBD" neutral-white: "#FFFFFF" neutral-cream: "#FAFAFA" neutral-mist: "#F5F5F5" neutral-border: "#EEEEEE" success-green: "#4CAF50" warning-orange: "#FF9800" error-red: "#F44336" info-blue: "#2196F3" typography: body:

fontFamily: "-apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', system-ui, sans-serif"
fontSize: "28rpx"
fontWeight: 400
lineHeight: 1.6

rounded: sm: "8rpx" md: "16rpx" lg: "24rpx" xl: "32rpx" full: "50%" spacing: xs: "8rpx" sm: "16rpx" md: "24rpx" lg: "32rpx" xl: "48rpx" xxl: "64rpx" components: button-primary:

backgroundColor: "{colors.primary-yellow}"
textColor: "#1A1A1A"
rounded: "54rpx"
padding: "24rpx 0"
height: "108rpx"

button-primary-hover:

backgroundColor: "{colors.primary-yellow-dark}"

button-ghost:

backgroundColor: "{colors.neutral-white}"
textColor: "{colors.neutral-ash}"
rounded: "{rounded.xl}"
padding: "16rpx 32rpx"

card-default:

backgroundColor: "{colors.neutral-white}"
rounded: "{rounded.lg}"

input-field:

backgroundColor: "{colors.neutral-white}"
textColor: "{colors.neutral-ink}"
rounded: "{rounded.sm}"

chip-tag:

backgroundColor: "rgba(255,255,255,0.9)"
textColor: "#555555"
rounded: "40rpx"

Design System: AI零售柜

1. Overview

Creative North Star: "The Yellow Mark"

AI零售柜 is a consumer mini-program where the yellow accent works like a brand marker — instantly recognizable, like 美团's yellow or 闲鱼's yellow. The surface is clean and white, the yellow appears with purpose: a scan button, a selected state, a price. Its presence signals action; its absence signals rest.

The system is built on restraint, not because less is more, but because every element must justify itself against the physical context: a user standing in front of a cabinet under bright office lights, phone in one hand, products in the other. Speed reads as intelligence. Friction reads as cheapness.

The aesthetic rejects the busy, promo-heavy energy of discount retail mini-programs. No banner carousels, no red flash-sale tags, no cluttered grids of identically-sized product cards. Instead: generous negative space, deliberate typography, one shade of yellow doing one job at a time.

Key Characteristics:

  • Yellow as brand marker, not surface decoration
  • White-dominant backgrounds with warm tint
  • Precision over abundance — every pixel is intentional
  • Fast transitions that feel mechanical, not theatrical
  • Physical-digital coherence: the phone UI mirrors the cabinet interaction

2. Colors

The palette is built around a single committed yellow, supported by warm-tinted neutrals and four functional signal colors. This is a Committed strategy: yellow carries 30-40% of the visual weight (primary buttons, brand marks, active states), while the rest of the surface stays in neutral territory.

Primary

  • Brand Yellow (#FFC107): The only accent. Used on the scan button, primary action buttons, active states, selected indicators, and the brand mark. Never used as a background fill on text-heavy surfaces; its job is to signal, not to decorate.
  • Yellow Light (#FFE082): Transitions and subtle fills only. The gradient midpoint on the scan button.
  • Yellow Dark (#FFA000): Hover/press states on yellow buttons, link text.
  • Yellow Background (#FFF8E1): Lightest tint, used for highlight overlays and the top of page gradients.

Neutral

  • Ink (#2C2C2C): Primary text. Not pure black; slightly warm.
  • Ash (#8C8C8C): Secondary text, descriptions, meta information.
  • Cloud (#BDBDBD): Tertiary text, placeholder content, disabled states.
  • White (#FFFFFF): Card and surface backgrounds.
  • Cream (#FAFAFA): Page backgrounds, section dividers.
  • Mist (#F5F5F5): Depressed surfaces, skeleton loading states.
  • Border (#EEEEEE): Dividers, card borders, input strokes at rest.

Functional

  • Green (#4CAF50): Success, completed orders, payment confirmed.
  • Orange (#FF9800): Warnings, pending status, attention-needed states.
  • Red (#F44336): Errors, failed payments, expired states.
  • Blue (#2196F3): Informational highlights, expand-tip text, links.

Named Rules

The One Yellow Rule. Brand Yellow appears on at most 30-40% of any given screen. It is the brand marker, not the brand blanket. When everything is yellow, nothing is.

The White Canvas Rule. White (#FFFFFF) is the default card surface; Cream (#FAFAFA) is the default page background. The difference is subtle but structural — cards float on cream; content that belongs to the page sits directly on cream.

3. Typography

Primary Font: PingFang SC (with system fallback: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', system-ui, sans-serif)

Character: A single sans-serif stack optimized for Chinese text on small screens. PingFang SC's generous x-height and clean geometry work at the small sizes required by mini-program interfaces. No display face needed — this is a utility, not a magazine.

Hierarchy

  • Page Title (700, 48rpx, 1.2): Page-level headers like "AI零售柜" brand mark or modal titles. Used sparingly, 1-2 per screen.
  • Section Title (600, 32-36rpx, 1.3): Card headers, section labels, status messages. The workhorse heading.
  • Body (400-500, 28rpx, 1.6): Product names, prices, menu labels, form content. The default size for most text.
  • Caption (400, 22-24rpx, 1.5): Secondary metadata, timestamps, helper text, version info.
  • Button (600, 28-36rpx, 1.0): Action labels in buttons. Letter-spacing of 2-8rpx on primary CTAs for presence.

Named Rules

The Scale Jump Rule. Adjacent text sizes differ by at least 1.25x. No 28rpx next to 30rpx; the scale skips intentionally: 22 → 24 → 28 → 32 → 36 → 48 → 56.

4. Elevation

This system uses intentional, restrained shadows. Surfaces are flat at rest; elevation is a response to state — a button lifts on hover, a card lifts when interactive. The shadow vocabulary is minimal: four levels from ambient to prominent.

Shadows are never decorative. They exist to communicate: "this is tappable," "this is above," "this is important right now."

Shadow Vocabulary

  • Ambient (0 2rpx 8rpx rgba(0,0,0,0.04)): Subtle grounding for cards at rest. Barely visible; more felt than seen.
  • Low (0 4rpx 16rpx rgba(0,0,0,0.06)): Default card elevation. Separates a card from the cream background.
  • Mid (0 8rpx 32rpx rgba(0,0,0,0.08)): Elevated surfaces like the login card or active modal.
  • Brand Glow (0 8rpx 24rpx rgba(255,193,7,0.25)): The scan button's halo. The only colored shadow; reserved for the primary CTA.

Named Rules

The Shadow Has a Job Rule. Never use a shadow without answering: what does this elevation communicate? If the answer is "looks nice," remove it.

The Flat-By-Default Rule. Menu items, list rows, and non-interactive surfaces carry no shadow. Shadow = affordance, not decoration.

5. Components

Buttons

  • Shape: Fully rounded pill (54rpx radius) for primary actions; 32rpx for secondary.
  • Primary: Brand Yellow fill (#FFC107), near-black text (#1A1A1A), Brand Glow shadow. Used for the scan button, "开门购物," and the payment confirmation button. Height: 108rpx for the scan/home buttons, 88rpx for inline actions.
  • Hover: Darkens to Yellow Dark (#FFA000), lifts 4rpx with expanded shadow. 300ms ease-out.
  • Ghost: White fill, 2rpx Border (#EEEEEE) stroke, Ash text. Used for "返回" and secondary actions alongside primary buttons. Active state: background shifts to Cream.

Cards

  • Corner Style: 24rpx radius ($radius-lg). Consistent across all card types.
  • Background: White (#FFFFFF) with Ambient or Low shadow depending on context.
  • Internal Padding: 32rpx ($spacing-lg) as default; varies to 24rpx for compact info cards.
  • Border: Cards use shadow for separation, not borders. The only bordered surface is the login card (1rpx solid rgba yellow tint).

Inputs & Fields

  • Style: White fill, 2rpx Border stroke at rest, 2rpx Brand Yellow or Blue on focus.
  • Focus: Border-color shift to #1890FF or Brand Yellow. No glow; the border transition is enough.
  • Error: Border shifts to Error Red. Error text in Red below the field.

Navigation

  • Tab bar: Text labels with icon above. Active tab in Brand Yellow, inactive in Cloud (#BDBDBD).
  • Door tabs (left/right): Horizonally split, active tab underlined with 4rpx Brand Yellow bar.
  • Page header: Centered title in Body weight, optional back arrow on left.

Chips & Tags

  • Style: White background (90% opacity), 1rpx border with yellow tint, 40rpx rounded pill.
  • Usage: Feature tags on login page (秒级开门, 安全支付, AI识别).
  • Badge: Error Red fill, white text, 32rpx height, 16rpx radius. Used for coupon counts and notification dots.

Status Indicators

  • Success: Green circle with white checkmark, 56rpx diameter.
  • Pending: Orange circle with clock or spinner.
  • Error: Red circle with cross mark.
  • Each has a 4rpx 12rpx colored shadow matching its fill.

6. Do's and Don'ts

Do:

  • Do use Brand Yellow (#FFC107) exclusively for interactive elements: buttons, selected states, brand marks, and active indicators.
  • Do use White (#FFFFFF) for cards and Cream (#FAFAFA) for page backgrounds. The distinction creates structure without borders.
  • Do maintain at least 32rpx of breathing room around primary CTAs. The scan button needs space to own the center of the screen.
  • Do use the Shadow vocabulary intentionally: Ambient for at-rest cards, Brand Glow only for the primary CTA.
  • Do cap body text at 65-75 characters per line on the widest screen.

Don't:

  • Don't use Brand Yellow as a background fill on text-heavy surfaces. Yellow's job is signaling action, not hosting reading.
  • Don't introduce a second accent color. Green, orange, red, and blue are functional signals; they are not decorative accents.
  • Don't use nested cards. A card inside a card is always wrong.
  • Don't use side-stripe borders (border-left/border-right > 1px) as colored accents. Use full borders, background tints, or nothing.
  • Don't use gradient text (background-clip: text). Solid colors only.
  • Don't use glassmorphism, decorative blurs, or translucent overlays as a default aesthetic.
  • Don't use em dashes in copy. Commas, colons, and periods only.
  • Don't use the hero-metric template (big number + small label + supporting stats + gradient accent).
  • Don't let the interface feel like a discount retail mini-program: no red flash-sale badges, no banner carousels, no cluttered grids of same-sized product cards.