mirror of
https://github.com/getAsterisk/claudia.git
synced 2025-08-04 15:28:16 +00:00
feat(ui): enhance card hover effects with trailing border animation and fix symbol alignment
- Add trailing border effect to agent and project cards with animated conic gradient - Fix rotating symbol vertical alignment from text-bottom to middle with position offset - Implement CSS custom properties for smooth border animation on hover - Maintain consistent styling across shimmer.css and styles.css files
This commit is contained in:
parent
9b4777978e
commit
9eeb336a8b
3 changed files with 64 additions and 4 deletions
|
@ -185,7 +185,7 @@ function App() {
|
|||
transition={{ duration: 0.5, delay: 0.1 }}
|
||||
>
|
||||
<Card
|
||||
className="h-64 cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-lg border border-border/50 shimmer-hover"
|
||||
className="h-64 cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-lg border border-border/50 shimmer-hover trailing-border"
|
||||
onClick={() => handleViewChange("agents")}
|
||||
>
|
||||
<div className="h-full flex flex-col items-center justify-center p-8">
|
||||
|
@ -202,7 +202,7 @@ function App() {
|
|||
transition={{ duration: 0.5, delay: 0.2 }}
|
||||
>
|
||||
<Card
|
||||
className="h-64 cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-lg border border-border/50 shimmer-hover"
|
||||
className="h-64 cursor-pointer transition-all duration-200 hover:scale-105 hover:shadow-lg border border-border/50 shimmer-hover trailing-border"
|
||||
onClick={() => handleViewChange("projects")}
|
||||
>
|
||||
<div className="h-full flex flex-col items-center justify-center p-8">
|
||||
|
|
|
@ -105,9 +105,10 @@
|
|||
font-size: 1.5rem; /* Make it bigger! */
|
||||
margin-right: 0.5rem;
|
||||
font-weight: bold;
|
||||
vertical-align: text-bottom;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
line-height: 1;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.rotating-symbol::before {
|
||||
|
|
|
@ -442,11 +442,13 @@ button:focus-visible,
|
|||
|
||||
.rotating-symbol {
|
||||
display: inline-block;
|
||||
vertical-align: text-bottom;
|
||||
vertical-align: middle;
|
||||
line-height: 1;
|
||||
animation: fade-in 0.2s ease-out;
|
||||
font-weight: normal;
|
||||
font-size: 1.5rem; /* Make it bigger! */
|
||||
position: relative;
|
||||
top: -2px;
|
||||
}
|
||||
|
||||
.rotating-symbol::before {
|
||||
|
@ -497,6 +499,63 @@ button:focus-visible,
|
|||
animation: shimmer 0.5s;
|
||||
}
|
||||
|
||||
/* Trailing border effect */
|
||||
@property --angle {
|
||||
syntax: "<angle>";
|
||||
initial-value: 0deg;
|
||||
inherits: false;
|
||||
}
|
||||
|
||||
@keyframes trail-rotate {
|
||||
to {
|
||||
--angle: 360deg;
|
||||
}
|
||||
}
|
||||
|
||||
.trailing-border {
|
||||
position: relative;
|
||||
background: var(--color-card);
|
||||
z-index: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/* The correctly traveling border line */
|
||||
.trailing-border::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: -2px;
|
||||
padding: 2px;
|
||||
border-radius: inherit;
|
||||
background: conic-gradient(
|
||||
from var(--angle),
|
||||
transparent 0%,
|
||||
transparent 85%,
|
||||
#d97757 90%,
|
||||
#ff9a7a 92.5%,
|
||||
#d97757 95%,
|
||||
transparent 100%
|
||||
);
|
||||
-webkit-mask:
|
||||
linear-gradient(#fff 0 0) content-box,
|
||||
linear-gradient(#fff 0 0);
|
||||
-webkit-mask-composite: xor;
|
||||
mask-composite: exclude;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s ease;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.trailing-border:hover::after {
|
||||
opacity: 1;
|
||||
animation: trail-rotate 2s linear infinite;
|
||||
}
|
||||
|
||||
/* Ensure the card content stays above the border effect */
|
||||
.trailing-border > * {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* --- THEME-MATCHING SCROLLBARS --- */
|
||||
|
||||
/* For Firefox */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue