Agent-JAE/packages/web-ui/example/src/app.css
JAE ef135b6d94
Some checks are pending
CI / build-check-test (push) Waiting to run
feat: Phase 1 mega-update - glassmorphism UI, 7 new components
New components:
- crypto-ticker: VVV/DIEM live prices via DexScreener (30s refresh)
- persona-selector: 7 AI personas with unique system prompts
- slash-commands: / autocomplete overlay for tools/skills
- marketplace: toggleable skills panel with localStorage
- mood-indicator: emotional states (neutral/focused/excited/warning/frustrated/angry)
- typing-indicator: waveform animation matching response complexity
- context-peek: hover tooltip summaries for messages

UI overhaul:
- Full glassmorphism design system (glass, glass-sm, glass-strong)
- 10+ CSS animations (fade, scale, slide, wave, float, shake, shimmer)
- Broken glass crack overlay for angry mood (5min fade)
- Dark mode fixes for keyboard shortcuts
- View toggles (tools/thinking/system/timestamps) now apply CSS classes
- Session sidebar: 6-chat max with hover scrollbar
- Auto-open browser/terminal panels on tool use
- Venice as default provider
- Smooth hover/click transitions on all buttons
- Loading screen with floating mascot + shimmer
2026-03-27 06:21:38 +00:00

263 lines
6.9 KiB
CSS

@import "tailwindcss";
@theme {
--color-primary: #6d5acd;
--color-primary-foreground: #ffffff;
--color-secondary: #2a2a3e;
--color-secondary-foreground: #e0e0e0;
--color-background: #0f0f1a;
--color-foreground: #e8e8f0;
--color-muted: #1a1a2e;
--color-muted-foreground: #8888aa;
--color-border: #2a2a40;
--color-card: #161625;
--color-accent: #7c6fe0;
}
/* ===== BASE ===== */
html, body {
background: var(--color-background);
color: var(--color-foreground);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
overflow: hidden;
height: 100vh;
}
::selection {
background: rgba(109, 90, 205, 0.3);
color: var(--color-foreground);
}
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(136,136,170,0.2); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(136,136,170,0.4); }
/* ===== GLASSMORPHISM ===== */
.jae-glass {
background: rgba(22, 22, 37, 0.75);
backdrop-filter: blur(20px) saturate(1.3);
-webkit-backdrop-filter: blur(20px) saturate(1.3);
border: 1px solid rgba(255, 255, 255, 0.06);
}
.jae-glass-sm {
background: rgba(30, 30, 50, 0.5);
backdrop-filter: blur(12px) saturate(1.2);
-webkit-backdrop-filter: blur(12px) saturate(1.2);
border: 1px solid rgba(255, 255, 255, 0.04);
}
.jae-glass-strong {
background: rgba(15, 15, 26, 0.9);
backdrop-filter: blur(30px) saturate(1.5);
-webkit-backdrop-filter: blur(30px) saturate(1.5);
border: 1px solid rgba(255, 255, 255, 0.08);
}
/* ===== ANIMATIONS ===== */
@keyframes jae-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes jae-scale-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
@keyframes jae-slide-in {
from { opacity: 0; transform: translateX(-20px); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes jae-slide-up {
from { opacity: 0; transform: translateY(16px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes jae-wave {
0% { height: 3px; }
100% { height: 16px; }
}
@keyframes jae-float {
0%, 100% { transform: translateY(0px); }
50% { transform: translateY(-6px); }
}
@keyframes jae-pulse-angry {
0%, 100% { transform: scale(1); filter: brightness(1); }
50% { transform: scale(1.1); filter: brightness(1.3) hue-rotate(-10deg); }
}
@keyframes jae-shake {
0%, 100% { transform: translateX(0); }
10%, 30%, 50%, 70%, 90% { transform: translateX(-3px); }
20%, 40%, 60%, 80% { transform: translateX(3px); }
}
@keyframes jae-glow-pulse {
0%, 100% { box-shadow: 0 0 5px rgba(109, 90, 205, 0.2); }
50% { box-shadow: 0 0 20px rgba(109, 90, 205, 0.4); }
}
@keyframes jae-shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }
}
@keyframes jae-crack-pulse {
0%, 100% { opacity: var(--crack-opacity, 1); }
50% { opacity: calc(var(--crack-opacity, 1) * 0.7); }
}
.jae-fade-in { animation: jae-fade-in 0.3s ease-out; }
.jae-scale-in { animation: jae-scale-in 0.2s ease-out; }
.jae-slide-in { animation: jae-slide-in 0.3s ease-out; }
.jae-slide-up { animation: jae-slide-up 0.25s ease-out; }
.jae-float { animation: jae-float 3s ease-in-out infinite; }
.jae-shake { animation: jae-shake 0.5s ease-in-out; }
/* ===== HOVER & CLICK TRANSITIONS ===== */
button, [role="button"] {
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
button:active, [role="button"]:active {
transform: scale(0.97);
}
/* ===== BROKEN GLASS OVERLAY ===== */
.jae-cracked-overlay {
position: fixed;
inset: 0;
pointer-events: none;
z-index: 200;
background:
radial-gradient(ellipse at 30% 40%, rgba(220,38,38,0.08) 0%, transparent 50%),
radial-gradient(ellipse at 70% 60%, rgba(220,38,38,0.05) 0%, transparent 50%);
transition: opacity 1s ease;
}
.jae-cracked-overlay::before {
content: "";
position: absolute;
inset: 0;
background-image:
linear-gradient(135deg, transparent 40%, rgba(255,255,255,0.03) 40.5%, transparent 41%),
linear-gradient(225deg, transparent 35%, rgba(255,255,255,0.02) 35.5%, transparent 36%),
linear-gradient(45deg, transparent 55%, rgba(255,255,255,0.025) 55.5%, transparent 56%),
linear-gradient(315deg, transparent 25%, rgba(255,255,255,0.015) 25.5%, transparent 26%),
linear-gradient(160deg, transparent 45%, rgba(255,255,255,0.02) 45.5%, transparent 46%),
linear-gradient(200deg, transparent 60%, rgba(255,255,255,0.018) 60.5%, transparent 61%),
linear-gradient(80deg, transparent 30%, rgba(255,255,255,0.022) 30.5%, transparent 31%);
animation: jae-crack-pulse 2s ease-in-out infinite;
}
/* ===== CHAT MESSAGE ANIMATIONS ===== */
.message-enter {
animation: jae-slide-up 0.3s ease-out;
}
/* Hide tool outputs when toggled off */
.hide-tools [data-tool-call],
.hide-tools .tool-output {
display: none !important;
}
.hide-thinking [data-thinking],
.hide-thinking .thinking-block {
display: none !important;
}
.hide-system [data-system-message],
.hide-system .system-message {
display: none !important;
}
.hide-timestamps [data-timestamp],
.hide-timestamps .message-timestamp {
display: none !important;
}
/* ===== SHIMMER LOADING ===== */
.jae-shimmer {
background: linear-gradient(90deg, transparent 0%, rgba(109,90,205,0.08) 50%, transparent 100%);
background-size: 200% 100%;
animation: jae-shimmer 2s infinite;
}
/* ===== SIDEBAR ===== */
.jae-sidebar {
scrollbar-width: none;
}
.jae-sidebar:hover {
scrollbar-width: thin;
}
.jae-sidebar::-webkit-scrollbar {
width: 0;
}
.jae-sidebar:hover::-webkit-scrollbar {
width: 4px;
}
/* ===== INPUT GLOW ===== */
.jae-input-glow:focus-within {
box-shadow: 0 0 0 1px rgba(109, 90, 205, 0.3), 0 0 20px rgba(109, 90, 205, 0.1);
border-color: rgba(109, 90, 205, 0.4);
transition: all 0.3s ease;
}
/* ===== DARK MODE OVERRIDES ===== */
.dark input, .dark textarea, .dark select {
color: var(--color-foreground);
background: rgba(30, 30, 50, 0.5);
}
/* Fix keyboard shortcuts text */
.dark .kbd-text, .dark [class*="keyboard"] {
color: var(--color-foreground) !important;
}
.dark kbd {
background: rgba(42, 42, 62, 0.8);
color: var(--color-foreground);
border: 1px solid rgba(255,255,255,0.1);
}
/* ===== PROVIDER TABS ===== */
.provider-tab {
transition: all 0.2s ease;
border-bottom: 2px solid transparent;
}
.provider-tab:hover {
background: rgba(109, 90, 205, 0.1);
}
.provider-tab.active {
border-bottom-color: var(--color-primary);
color: var(--color-foreground);
}
/* ===== RESIZE HANDLE ===== */
.jae-resize-handle {
width: 4px;
cursor: col-resize;
background: transparent;
transition: background 0.2s;
flex-shrink: 0;
}
.jae-resize-handle:hover,
.jae-resize-handle:active {
background: rgba(109, 90, 205, 0.4);
}
/* ===== TOOL RESULTS IN CHAT ===== */
.inline-browser-result {
display: none;
}
/* ===== AGENT INTERFACE OVERRIDES ===== */
[class*="AgentInterface"] {
background: transparent !important;
}