asafefe.dev

Lock Icon

New

A padlock. Hover lifts the shackle a touch, unlocking frees it, and locking snaps it home.

motion@soultel/use-reduced-motion-safe@soultel/use-icon-trigger
hover me

Installation

$ pnpm dlx shadcn@latest add @soultel/icon-lock

No namespace set up? npx shadcn@latest add https://asafefe.dev/r/icon-lock.json works too.

Manual installation
  1. 1. Install the dependencies.
    terminal1 lines
    npm install motion
  2. 2. Copy the source from the Code tab into components/icon-lock.tsx.

Usage

example.tsx10 lines
import { LockIcon } from "@/components/icon-lock"

export function VisibilityBadge({ isPublic }: { isPublic: boolean }) {
  return (
    <span className="inline-flex items-center gap-1.5 text-sm">
      <LockIcon size={14} open={isPublic} animate={false} />
      {isPublic ? "Public" : "Private"}
    </span>
  )
}

Props

PropTypeDefaultDescription
openbooleanfalseShows the lock unlocked.
sizenumber24Width and height in px.
strokeWidthnumber2Stroke width on the 24 by 24 grid.
animate"hover" | "always" | boolean"hover""hover" plays when the nearest button or link (or the icon) is hovered, focused or tapped. "always" loops. A boolean plays each time it turns true, so a parent can drive it.
labelstring-Accessible name. Without one the icon is aria-hidden.
classNamestring-Classes for the svg. Color comes from currentColor.