/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 @microkit/layered-gradient-buttonCode
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, light-dark(#14181e,#f0f0f0), light-dark(#7c8695,#464646) 48%, light-dark(#14181e,#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 light-dark(#14181e33,#f0f0f033);27border-radius: inherit;28background: radial-gradient(circle at 50% 100%, light-dark(#ffffff,#111), light-dark(#e9ecf1,#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: light-dark(#14181e80,#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}