Skip to content

feat: add hover effect to skill and plugin cards#1356

Open
kevinw-openai wants to merge 1 commit intoopenclaw:mainfrom
kevinw-openai:codex/card-hover-effects
Open

feat: add hover effect to skill and plugin cards#1356
kevinw-openai wants to merge 1 commit intoopenclaw:mainfrom
kevinw-openai:codex/card-hover-effects

Conversation

@kevinw-openai
Copy link
Copy Markdown

Summary

This PR adds button-style hover feedback to all cards that use the shared .skill-card styling, including skill and plugin cards across the site.

chrome-capture-2026-03-28

Why

Interactive buttons on ClawHub already provide clear hover feedback, but skill/plugin cards remained visually static. That made the UI feel a bit inconsistent and reduced the sense that these cards are interactive.

This change makes card interactions feel more intentional and aligned with the rest of the product.

What Changed

Before

  • Skill and plugin cards did not visibly change on hover
  • Buttons had stronger interactive feedback than cards
  • Card interactions felt less consistent across pages

After

  • Skill and plugin cards now respond on hover/focus with:
    • border highlight
    • slight upward movement
    • stronger shadow
  • Card interactions now feel more consistent with existing button hover behavior

Verification

  • bun run lint
  • bun run build
  • Verified in browser that card hover now shows visible feedback consistent with existing button interactions

@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Mar 28, 2026

@kevinw-openai is attempting to deploy a commit to the 0xBuns Team on Vercel.

A member of the Team first needs to authorize it.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Mar 28, 2026

Greptile Summary

This PR adds button-consistent hover and keyboard-focus feedback to .skill-card elements (skills, plugins, and soul cards) across the site, aligning their interactive feel with the rest of the product's UI.

  • Adds smooth transition for transform, box-shadow, border-color, and background on .skill-card
  • Introduces :hover / :focus-within state with a border highlight, translateY(-1px) lift, and a deeper shadow
  • Adds a :focus-visible orange outline for keyboard accessibility
  • Overrides box-shadow intensity for [data-theme="dark"] to account for the darker background
  • Two minor style nits found: the background property in the transition list has no corresponding hover rule (dead property), and the dark-mode block redundantly repeats border-color: var(--border-ui-hover) which the base hover rule already covers via CSS variable resolution

Confidence Score: 5/5

Safe to merge — change is purely additive CSS with no functional regressions.

All findings are P2 style/cleanup suggestions (an unused transition property and a redundant CSS declaration). No logic errors, no accessibility regressions, and no cross-browser concerns. The hover behavior works correctly for both link-style cards and div-container cards.

No files require special attention.

Important Files Changed

Filename Overview
src/styles.css Adds hover/focus-within/focus-visible transitions to .skill-card, plus a dark-theme box-shadow override. Two minor style nits: an unused background transition property and a redundant border-color in the dark-mode block.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: src/styles.css
Line: 1648-1650

Comment:
**Unused `background` transition property**

`background 0.2s ease` is listed in the transition shorthand, but none of the hover or focus-within rules actually change the background color. This means the property is transitioning nothing and can be removed to keep the declaration clean.

```suggestion
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    border-color 0.2s ease;
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: src/styles.css
Line: 1664-1668

Comment:
**Redundant `border-color` declaration in dark-theme override**

`border-color: var(--border-ui-hover)` is already set by the base `.skill-card:hover, .skill-card:focus-within` rule above. Because CSS custom properties are resolved at computed time, the variable will automatically pick up whatever value `[data-theme="dark"]` defines for `--border-ui-hover`. Repeating the same declaration here is a no-op — only the `box-shadow` override is needed.

```suggestion
[data-theme="dark"] .skill-card:hover,
[data-theme="dark"] .skill-card:focus-within {
  box-shadow: 0 14px 28px rgba(7, 15, 20, 0.36);
}
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "feat: add hover feedback to skill cards" | Re-trigger Greptile

Comment on lines +1648 to +1650
border-color 0.2s ease,
background 0.2s ease;
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Unused background transition property

background 0.2s ease is listed in the transition shorthand, but none of the hover or focus-within rules actually change the background color. This means the property is transitioning nothing and can be removed to keep the declaration clean.

Suggested change
border-color 0.2s ease,
background 0.2s ease;
}
transition:
transform 0.2s ease,
box-shadow 0.2s ease,
border-color 0.2s ease;
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/styles.css
Line: 1648-1650

Comment:
**Unused `background` transition property**

`background 0.2s ease` is listed in the transition shorthand, but none of the hover or focus-within rules actually change the background color. This means the property is transitioning nothing and can be removed to keep the declaration clean.

```suggestion
  transition:
    transform 0.2s ease,
    box-shadow 0.2s ease,
    border-color 0.2s ease;
```

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines +1664 to 1668
[data-theme="dark"] .skill-card:hover,
[data-theme="dark"] .skill-card:focus-within {
border-color: var(--border-ui-hover);
box-shadow: 0 14px 28px rgba(7, 15, 20, 0.36);
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Redundant border-color declaration in dark-theme override

border-color: var(--border-ui-hover) is already set by the base .skill-card:hover, .skill-card:focus-within rule above. Because CSS custom properties are resolved at computed time, the variable will automatically pick up whatever value [data-theme="dark"] defines for --border-ui-hover. Repeating the same declaration here is a no-op — only the box-shadow override is needed.

Suggested change
[data-theme="dark"] .skill-card:hover,
[data-theme="dark"] .skill-card:focus-within {
border-color: var(--border-ui-hover);
box-shadow: 0 14px 28px rgba(7, 15, 20, 0.36);
}
[data-theme="dark"] .skill-card:hover,
[data-theme="dark"] .skill-card:focus-within {
box-shadow: 0 14px 28px rgba(7, 15, 20, 0.36);
}
Prompt To Fix With AI
This is a comment left during a code review.
Path: src/styles.css
Line: 1664-1668

Comment:
**Redundant `border-color` declaration in dark-theme override**

`border-color: var(--border-ui-hover)` is already set by the base `.skill-card:hover, .skill-card:focus-within` rule above. Because CSS custom properties are resolved at computed time, the variable will automatically pick up whatever value `[data-theme="dark"]` defines for `--border-ui-hover`. Repeating the same declaration here is a no-op — only the `box-shadow` override is needed.

```suggestion
[data-theme="dark"] .skill-card:hover,
[data-theme="dark"] .skill-card:focus-within {
  box-shadow: 0 14px 28px rgba(7, 15, 20, 0.36);
}
```

How can I resolve this? If you propose a fix, please make it concise.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant