asafefe.dev

Upload Icon

New

The tray pushes off, the arrow shoots out the top, and the next one rises from the tray.

motion@soultel/use-icon-trigger
hover me

Installation

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

No namespace set up? npx shadcn@latest add https://asafefe.dev/r/icon-upload.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-upload.tsx.

Usage

example.tsx11 lines
import { UploadIcon } from "@/components/icon-upload"

export function UploadButton() {
  return (
    <label className="cursor-pointer">
      <UploadIcon size={16} />
      Upload file
      <input type="file" className="sr-only" />
    </label>
  )
}

Props

PropTypeDefaultDescription
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.