Teste / DESIGN.md
GuXSs's picture
Deploy Nyra Chat (immersive Gradio chat + ZeroGPU engine)
ccaa1d0 verified
|
Raw
History Blame Contribute Delete
6.16 kB
# Design System: Nyra Chat
**Product:** Nyra Chat
**Theme name:** Void Observatory
**Platform:** Hugging Face Spaces (Gradio + ZeroGPU)
## 1. Visual Theme & Atmosphere
Cinematic void with an intelligent glow. The interface feels dense but breathable: deep black canvas, graphite panels, and a single solar-amber spark that marks brand and primary actions. Premium chat product energy — never default Gradio chrome, never generic purple AI gradients.
Mood words: *nocturnal, sharp, warm-witty, observatory, glass-over-void*.
Signature memory: a floating glass input bar over a slowly drifting amber mesh, with Lucide sparkles as the monogram.
## 2. Color Palette & Roles
| Role | Descriptive name | Hex / value | Functional role |
|---|---|---|---|
| Canvas | Void Black | `#07070A` | Full-app background |
| Surface | Graphite Night | `#121218` | Sidebar, elevated chrome |
| Surface raised | Smoke Glass | `#1A1A22` / `rgba(255,255,255,0.04)` | Assistant bubbles, cards |
| User bubble | Ember Glass | `rgba(245, 166, 35, 0.12)` | User message fill |
| Primary accent | Solar Amber | `#F5A623` | Send, active states, brand |
| Accent glow | Amber Bloom | `#FFB84D` | Focus rings, soft outer glows |
| Text primary | Starlight | `#F4F4F5` | Message body and titles |
| Text muted | Quiet Silver | `#8B8B96` | Hints, timestamps, secondary labels |
| Border | Hairline Mist | `rgba(255,255,255,0.08)` | Dividers, input stroke |
| Danger | Soft Crimson | `#F07178` | Stop / errors |
| Success | Mint Pulse | `#7FD99A` | Online / ready indicator |
## 3. Typography Rules
| Role | Family | Character |
|---|---|---|
| Display / brand | **Syne** | Slightly geometric display; used sparingly for “Nyra” and empty-state headline |
| Body / chat | **IBM Plex Sans** | Technical warmth, excellent readability at 15–16px |
| Code / mono | **IBM Plex Mono** | Fenced code and inline ticks |
Scale:
- Chrome / labels: 12–13px, medium weight, Quiet Silver
- Message body: 15–16px, regular, line-height ~1.55
- Empty-state headline: 24–28px Syne, Starlight
- Tagline: 14px, Quiet Silver
Letter-spacing: slightly open on brand wordmark (+0.02em); normal on body.
## 4. Component Stylings
### Buttons
- **Primary:** solid Solar Amber, text near-black (`#0A0A0B`), generously rounded (~12–999px pill for send), soft amber outer glow on hover, press scale ~0.96
- **Ghost / secondary:** transparent fill, Hairline Mist border, Starlight text
- **Danger:** Soft Crimson outline or fill for stop
### Cards / containers
- Graphite Night surfaces with 1px Hairline Mist edge
- Whisper-soft multi-layer shadow: `0 8px 32px rgba(0,0,0,0.45)`
- Corner roundness: ~16–20px (bubbles), ~14px (panels), ~20px (input shell)
### Inputs / forms
- Glass shell: `rgba(18,18,24,0.72)` + backdrop blur ~16px
- Stroke: Hairline Mist → Amber Bloom on focus
- Placeholder: Quiet Silver
### Chat bubbles
- Assistant: left-aligned Smoke Glass, optional avatar ring with amber hairline
- User: right-aligned Ember Glass
- Enter animation: 8–12px rise + fade, ~200ms ease-out
### Sidebar
- Width 260px, Graphite Night
- Collapses to drawer on mobile
- “New chat” as ghost button with Lucide `message-square-plus`
## 5. Layout Principles
- Full-viewport shell; chat column max-width ~820px centered in main pane
- Top bar ~56px: brand left, utilities right
- Message stream fills remaining height; input sticky at bottom with safe padding
- Vertical rhythm 16–24px between messages
- Suggestion chips in a responsive wrap under empty state
- Whitespace is intentional: avoid cramming chrome; let the void breathe
### Wireframe
```
┌──────────────────────────────────────────────────────────┐
│ [≡] ✨ Nyra · Chat [lang][gear] │
├────────────┬─────────────────────────────────────────────┤
│ New chat │ │
│ History… │ empty hero + chips OR message stream │
│ │ │
│ │ ┌─────────────────────────────────────┐ │
│ │ │ input · arrow-up send │ │
│ │ └─────────────────────────────────────┘ │
└────────────┴─────────────────────────────────────────────┘
```
## 6. Motion Language
| Moment | Behavior |
|---|---|
| Page load | Fade-up brand + main column, 400ms ease-out |
| Message enter | TranslateY(10px) → 0 + opacity, 200ms |
| Send press | Scale 0.96 + amber bloom expand |
| Typing | Three soft pulses (staggered dots) |
| Ambient mesh | 60s slow gradient drift on canvas |
| Sidebar | Width/opacity 250ms |
**Reduced motion:** disable ambient drift and non-essential transitions when `prefers-reduced-motion: reduce`.
## 7. Iconography (Lucide)
| Action | Icon |
|---|---|
| Brand | `sparkles` |
| New chat | `message-square-plus` |
| Send | `arrow-up` |
| Stop | `square` |
| Copy | `copy` |
| Settings | `settings-2` |
| Menu | `panel-left` |
| Clear | `trash-2` |
| Language | `languages` |
| Chips | `zap`, `code-2`, `globe`, `lightbulb` |
Stroke: 1.75–2px, currentColor, size 18–20px chrome / 16px inline.
## 8. Brand voice in UI copy
- Product name **Nyra** only — never Grok / xAI
- Bilingual PT + EN labels
- Empty state is a greeting, not a sales pitch
- Errors explain what happened and what to try next
## 9. Implementation notes (Gradio)
- Tokens live in `static/app.css` as CSS variables
- Lucide via CDN + `static/app.js` hydration
- Skin Gradio with `elem_id` / `elem_classes` and aggressive chrome overrides
- Dark `color-scheme` forced for the app shell