feat: Introduce Nucleo as the main AI agent identity
- Add Nucleo atom logo with animated orbiting electrons - Redesign FAB with glassmorphism effect and purple gradient - Add connection indicator (green dot) when terminal is open - Update FloatingTerminal header with Nucleo branding - Add PermissionRequest hook support with red alert animation - Document Nucleo in README with visual states table - Create official Nucleo logo SVG in docs/
This commit is contained in:
@@ -498,10 +498,40 @@ defineExpose({
|
||||
<!-- Titlebar -->
|
||||
<div class="titlebar" @mousedown="startDrag">
|
||||
<div class="left">
|
||||
<svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5">
|
||||
<polyline points="4 17 10 11 4 5"/><line x1="12" y1="19" x2="20" y2="19"/>
|
||||
</svg>
|
||||
<span>Terminal</span>
|
||||
<!-- Nucleo Logo -->
|
||||
<div class="nucleo-logo">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none">
|
||||
<!-- Core nucleus -->
|
||||
<circle cx="12" cy="12" r="4" fill="url(#nucleoGradient)"/>
|
||||
<!-- Orbital rings -->
|
||||
<ellipse cx="12" cy="12" rx="9" ry="4" stroke="url(#orbitGradient)" stroke-width="1.2" fill="none" transform="rotate(-30 12 12)"/>
|
||||
<ellipse cx="12" cy="12" rx="9" ry="4" stroke="url(#orbitGradient)" stroke-width="1.2" fill="none" transform="rotate(30 12 12)"/>
|
||||
<ellipse cx="12" cy="12" rx="9" ry="4" stroke="url(#orbitGradient)" stroke-width="1.2" fill="none" transform="rotate(90 12 12)"/>
|
||||
<!-- Electrons -->
|
||||
<circle cx="12" cy="3" r="1.5" fill="#a78bfa">
|
||||
<animateTransform attributeName="transform" type="rotate" from="0 12 12" to="360 12 12" dur="3s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
<circle cx="20" cy="14" r="1.5" fill="#818cf8">
|
||||
<animateTransform attributeName="transform" type="rotate" from="120 12 12" to="480 12 12" dur="4s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
<circle cx="4" cy="14" r="1.5" fill="#c4b5fd">
|
||||
<animateTransform attributeName="transform" type="rotate" from="240 12 12" to="600 12 12" dur="3.5s" repeatCount="indefinite"/>
|
||||
</circle>
|
||||
<!-- Gradients -->
|
||||
<defs>
|
||||
<radialGradient id="nucleoGradient" cx="50%" cy="30%" r="60%">
|
||||
<stop offset="0%" stop-color="#a78bfa"/>
|
||||
<stop offset="100%" stop-color="#6366f1"/>
|
||||
</radialGradient>
|
||||
<linearGradient id="orbitGradient" x1="0%" y1="0%" x2="100%" y2="100%">
|
||||
<stop offset="0%" stop-color="#818cf8" stop-opacity="0.8"/>
|
||||
<stop offset="50%" stop-color="#a78bfa" stop-opacity="0.4"/>
|
||||
<stop offset="100%" stop-color="#818cf8" stop-opacity="0.8"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
</div>
|
||||
<span class="nucleo-name">Nucleo</span>
|
||||
<i class="dot" :class="{ on: connected, wait: connecting }"></i>
|
||||
<a v-if="!connected && !connecting" class="link" @click.stop="connect">connect</a>
|
||||
</div>
|
||||
@@ -565,11 +595,28 @@ defineExpose({
|
||||
.left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 5px;
|
||||
gap: 6px;
|
||||
color: #222;
|
||||
font: 500 10px/1 system-ui, sans-serif;
|
||||
}
|
||||
|
||||
.nucleo-logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
filter: drop-shadow(0 1px 2px rgba(99, 102, 241, 0.3));
|
||||
}
|
||||
|
||||
.nucleo-name {
|
||||
font-weight: 600;
|
||||
font-size: 11px;
|
||||
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.dot {
|
||||
width: 5px; height: 5px;
|
||||
border-radius: 50%;
|
||||
|
||||
Reference in New Issue
Block a user