/Click feedback
Click feedback • CSS
Inset Circle Button
A circular project CTA that reveals its dark base as the inset surface collapses.
Installation
Terminal
npx shadcn@latest add https://microkit.co/r/inset-circle-button.jsonCode
TypeScript component
1export function InsetCircleButton() {2return <button type="button" className="inset-circle-button"><span>View Project</span><span aria-hidden="true" /></button>;3}
CSS
1.inset-circle-button {2position: relative;3display: grid;4width: 128px;5height: 128px;6place-items: center;7overflow: hidden;8border: 1px solid #f0f0f0;9border-radius: 50%;10background: #1f1f1f;11color: #111;12cursor: pointer;13}14.inset-circle-button > span:first-child {15position: relative;16z-index: 1;17font-size: 13px;18font-weight: 700;19transition: color .42s ease;20}21.inset-circle-button > span:last-child {22position: absolute;23inset: 4px;24border-radius: 50%;25background: #f0f0f0;26clip-path: circle(75% at 50% 50%);27will-change: clip-path;28transition: clip-path .52s cubic-bezier(.16, 1, .3, 1);29}30.inset-circle-button:hover > span:first-child, .inset-circle-button:focus-visible > span:first-child {31color: #f0f0f0;32}33.inset-circle-button:hover > span:last-child, .inset-circle-button:focus-visible > span:last-child {34clip-path: circle(0% at 50% 50%);35}36.inset-circle-button:focus-visible {37outline: 2px solid #f97316;38outline-offset: 4px;39}