/Click feedback
Click feedback • CSS
Layered Gradient Button
A dimensional pill with gradient text and subtly shifting layered surfaces.
Installation
Terminal
npx shadcn@latest add https://microkit.co/r/layered-gradient-button.jsonCode
TypeScript component
1export function LayeredGradientButton() {2return <button type="button" className="layered-gradient-button"><span>View all projects</span><span className="layered-gradient-button-surface" aria-hidden="true" /><span className="layered-gradient-button-haze" aria-hidden="true" /></button>;3}
CSS
1.layered-gradient-button {2position: relative;3display: inline-flex;4align-items: center;5justify-content: center;6border: 0;7border-radius: 999px;8background: transparent;9padding: 16px 24px;10cursor: pointer;11}12.layered-gradient-button > span:first-child {13position: relative;14z-index: 2;15background: linear-gradient(to right, #f0f0f0, #464646 48%, #f0f0f0);16background-clip: text;17color: transparent;18font-size: 18px;19font-weight: 500;20transition: transform .3s ease;21}22.layered-gradient-button-surface {23position: absolute;24z-index: 1;25inset: 0;26border: 1px solid #f0f0f033;27border-radius: inherit;28background: radial-gradient(circle at 50% 100%, #111, #252525);29transition: transform .3s ease;30}31.layered-gradient-button-haze {32position: absolute;33z-index: 0;34top: 4px;35width: 104%;36height: 98%;37border-radius: inherit;38background: #f0f0f080;39opacity: 0;40transform: scale(.8);41transition: opacity .6s ease, transform .3s ease;42}43.layered-gradient-button:hover > span:first-child, .layered-gradient-button:focus-visible > span:first-child {44transform: scale(1.05);45}46.layered-gradient-button:hover .layered-gradient-button-surface, .layered-gradient-button:focus-visible .layered-gradient-button-surface {47transform: scale(1.05);48}49.layered-gradient-button:hover .layered-gradient-button-haze, .layered-gradient-button:focus-visible .layered-gradient-button-haze {50opacity: 1;51transform: translateY(1px) scale(.98);52}53.layered-gradient-button:focus-visible {54outline: 2px solid #f97316;55outline-offset: 4px;56}