Merge pull request #2287 from deepseek-harness/agent/black-whale-logo

style(web): use black hero whale with hover motion
This commit is contained in:
Ziya
2026-08-12 11:06:42 +08:00
committed by GitHub
3 changed files with 41 additions and 4 deletions

View File

@@ -68,6 +68,13 @@ describe('web e2e: startup auto-selection', () => {
it('keeps the resident Hero and composer nodes when the first Workspace session appears', async () => {
onTestFailed(() => saveFailureShot(page, 'web-e2e-first-workspace-stable-tree'))
await page.locator(`${ROOT_PHASE}[data-phase="hero"]`).waitFor({ timeout: 15_000 })
const headline = page.getByText('Into the Unknown', { exact: true })
const fish = headline.locator('xpath=preceding-sibling::span[1]/*[name()="svg"]')
const fishHitbox = fish.locator('..')
expect(await fish.evaluate(node => getComputedStyle(node).color))
.toBe(await headline.evaluate(node => getComputedStyle(node).color))
await fishHitbox.hover()
expect(await fish.evaluate(node => getComputedStyle(node).animationName)).not.toBe('none')
await page.evaluate(() => {
const refs = {
root: document.querySelector('div[data-phase="hero"]'),

View File

@@ -118,7 +118,9 @@ export function HeroShell({ t, children }: HeroShellProps) {
<div className={css.stack}>
<div className={css.headline}>
{/* figma 34:10412: fish 34×25 leading the headline, gap 10. */}
<FishLogo size={34} className={css.fish} />
<span className={css.fishHitbox}>
<FishLogo size={34} className={css.fish} />
</span>
<span className={css.headlineText}>{t('hero.headline')}</span>
<span className={css.previewBadge}>{t('hero.preview')}</span>
</div>

View File

@@ -61,11 +61,39 @@
white-space: nowrap;
}
/* figma fish fill rides business blue. */
.fish {
/* Keep hover detection on a stationary box while the mark moves within it. */
.fishHitbox {
grid-row: 1;
grid-column: 1;
color: var(--dsw-alias-state-business-primary);
display: inline-flex;
align-items: center;
justify-content: center;
}
/* Keep the hero mark in the same primary ink as its headline. */
.fish {
color: var(--dsw-alias-label-primary);
transform-origin: 50% 60%;
}
@keyframes hero-fish-swim {
0%, 100% {
transform: translate(0, 0) rotate(0deg);
}
35% {
transform: translate(-1px, -1px) rotate(-5deg);
}
70% {
transform: translate(1px, 0) rotate(3deg);
}
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
.fishHitbox:hover .fish {
animation: hero-fish-swim var(--ds-transition-duration-slow) var(--ds-ease-in-out);
}
}
/* Workspace row sits 12px above the input card (figma y80 → y112). The blue