{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "icons",
  "type": "registry:block",
  "title": "Icons",
  "description": "Icons",
  "files": [
    {
      "path": "components/usages/iconsusage.tsx",
      "content": "\"use client\";\n\nimport path from \"path\";\nimport { useMemo, useRef } from \"react\";\n\nimport { Input } from \"@/components/ui/input\";\nimport { ICON_LIST } from \"@/registry/open-source/icons/index\";\nimport Fuse from \"fuse.js\";\nimport { parseAsString, useQueryState } from \"nuqs\";\n\nimport { Card, CardTitle } from \"../../components/ui/card\";\n\nconst useSearch = (items: Icon[]) => {\n\tconst [query] = useQueryState(\"q\");\n\n\tconst fuse = useMemo(\n\t\t() =>\n\t\t\tnew Fuse(items, {\n\t\t\t\tkeys: [\n\t\t\t\t\t{ name: \"name\", weight: 3 },\n\t\t\t\t\t{ name: \"keywords\", weight: 2 },\n\t\t\t\t],\n\t\t\t\tthreshold: 0.3,\n\t\t\t\tignoreLocation: true,\n\t\t\t\tfindAllMatches: true,\n\t\t\t\tisCaseSensitive: false,\n\t\t\t\tminMatchCharLength: 2,\n\t\t\t}),\n\t\t[items]\n\t);\n\n\tconst results = useMemo(() => {\n\t\tif (!query) return items;\n\t\treturn fuse.search(query).map((result) => result.item);\n\t}, [fuse, query, items]);\n\n\treturn { results };\n};\n\ntype Icon = {\n\tname: string;\n\tcontent: string;\n\tkeywords: string[];\n};\n\nexport type { Icon };\n\ntype CountProps = {\n\tcount: number;\n};\n\nconst ListSearch = ({ count }: CountProps) => {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst [search, setSearch] = useQueryState(\n\t\t\"q\",\n\t\tparseAsString.withDefault(\"\")\n\t);\n\n\tconst debouncedSetSearch = (value: string) => setSearch(value);\n\n\treturn (\n\t\t<div className=\"relative\">\n\t\t\t<Input\n\t\t\t\tref={inputRef}\n\t\t\t\tplaceholder={`Search ${count} icons...`}\n\t\t\t\tdefaultValue={search ?? \"\"}\n\t\t\t\tonChange={(e) => debouncedSetSearch(e.target.value)}\n\t\t\t/>\n\t\t\t<kbd className=\"pointer-events-none absolute right-2 top-1/2 inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 -translate-y-1/2\">\n\t\t\t\t<span className=\"text-xs\">⌘</span>K\n\t\t\t</kbd>\n\t\t</div>\n\t);\n};\n\nexport { ListSearch };\n\ntype Props = {\n\ticons: Icon[];\n};\n\nconst IconsList = () => {\n\tconst icons = ICON_LIST.map((icon) => ({ ...icon, content: icon.icon }));\n\tconst { results } = useSearch(icons);\n\n\treturn (\n\t\t<div className=\"flex flex-col sm:mb-20 mb-10 mt-8 gap-6\">\n\t\t\t<ListSearch count={icons?.length} />\n\t\t\t{results.length === 0 && <div>nothing here</div>}\n\t\t\t<div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-[repeat(auto-fill,minmax(165px,1fr))] gap-3\">\n\t\t\t\t{results.map((icon) => {\n\t\t\t\t\tconst IconComponent = ICON_LIST.find(\n\t\t\t\t\t\t({ name }) => name === icon.name\n\t\t\t\t\t)!.icon;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Card key={icon.name}>\n\t\t\t\t\t\t\t<IconComponent />\n\t\t\t\t\t\t\t<CardTitle>{icon.name}</CardTitle>\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default IconsList;\n",
      "type": "registry:block",
      "target": "~/example.tsx"
    },
    {
      "path": "components/usages/iconsusage.tsx",
      "content": "\"use client\";\n\nimport path from \"path\";\nimport { useMemo, useRef } from \"react\";\n\nimport { Input } from \"@/components/ui/input\";\nimport { ICON_LIST } from \"@/registry/open-source/icons/index\";\nimport Fuse from \"fuse.js\";\nimport { parseAsString, useQueryState } from \"nuqs\";\n\nimport { Card, CardTitle } from \"../../components/ui/card\";\n\nconst useSearch = (items: Icon[]) => {\n\tconst [query] = useQueryState(\"q\");\n\n\tconst fuse = useMemo(\n\t\t() =>\n\t\t\tnew Fuse(items, {\n\t\t\t\tkeys: [\n\t\t\t\t\t{ name: \"name\", weight: 3 },\n\t\t\t\t\t{ name: \"keywords\", weight: 2 },\n\t\t\t\t],\n\t\t\t\tthreshold: 0.3,\n\t\t\t\tignoreLocation: true,\n\t\t\t\tfindAllMatches: true,\n\t\t\t\tisCaseSensitive: false,\n\t\t\t\tminMatchCharLength: 2,\n\t\t\t}),\n\t\t[items]\n\t);\n\n\tconst results = useMemo(() => {\n\t\tif (!query) return items;\n\t\treturn fuse.search(query).map((result) => result.item);\n\t}, [fuse, query, items]);\n\n\treturn { results };\n};\n\ntype Icon = {\n\tname: string;\n\tcontent: string;\n\tkeywords: string[];\n};\n\nexport type { Icon };\n\ntype CountProps = {\n\tcount: number;\n};\n\nconst ListSearch = ({ count }: CountProps) => {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst [search, setSearch] = useQueryState(\n\t\t\"q\",\n\t\tparseAsString.withDefault(\"\")\n\t);\n\n\tconst debouncedSetSearch = (value: string) => setSearch(value);\n\n\treturn (\n\t\t<div className=\"relative\">\n\t\t\t<Input\n\t\t\t\tref={inputRef}\n\t\t\t\tplaceholder={`Search ${count} icons...`}\n\t\t\t\tdefaultValue={search ?? \"\"}\n\t\t\t\tonChange={(e) => debouncedSetSearch(e.target.value)}\n\t\t\t/>\n\t\t\t<kbd className=\"pointer-events-none absolute right-2 top-1/2 inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100 -translate-y-1/2\">\n\t\t\t\t<span className=\"text-xs\">⌘</span>K\n\t\t\t</kbd>\n\t\t</div>\n\t);\n};\n\nexport { ListSearch };\n\ntype Props = {\n\ticons: Icon[];\n};\n\nconst IconsList = () => {\n\tconst icons = ICON_LIST.map((icon) => ({ ...icon, content: icon.icon }));\n\tconst { results } = useSearch(icons);\n\n\treturn (\n\t\t<div className=\"flex flex-col sm:mb-20 mb-10 mt-8 gap-6\">\n\t\t\t<ListSearch count={icons?.length} />\n\t\t\t{results.length === 0 && <div>nothing here</div>}\n\t\t\t<div className=\"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-[repeat(auto-fill,minmax(165px,1fr))] gap-3\">\n\t\t\t\t{results.map((icon) => {\n\t\t\t\t\tconst IconComponent = ICON_LIST.find(\n\t\t\t\t\t\t({ name }) => name === icon.name\n\t\t\t\t\t)!.icon;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Card key={icon.name}>\n\t\t\t\t\t\t\t<IconComponent />\n\t\t\t\t\t\t\t<CardTitle>{icon.name}</CardTitle>\n\t\t\t\t\t\t</Card>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default IconsList;\n",
      "type": "registry:ui"
    },
    {
      "path": "components/ui/input.tsx",
      "content": "// SHADCN UI GENERATED CODE\n\nimport React from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\n\nexport interface InputProps\n\textends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n\t({ className, type, ...props }, ref) => {\n\t\treturn (\n\t\t\t<input\n\t\t\t\ttype={type}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/utilities/cn.ts",
      "content": "import { ClassValue, clsx } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n\treturn twMerge(clsx(inputs));\r\n}\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/index.ts",
      "content": "import { AlarmClockIcon } from './alarm-clock';\nimport { AlignCenterIcon } from './align-center';\nimport { AlignHorizontalIcon } from './align-horizontal';\nimport { AlignVerticalIcon } from './align-vertical';\nimport { AngryIcon } from './angry';\nimport { ArchiveIcon } from './archive';\nimport { ArrowLeftIcon } from './arrow-left';\nimport { ArrowRightIcon } from './arrow-right';\nimport { AtSignIcon } from './at-sign';\nimport { AttachFileIcon } from './attach-file';\nimport { BadgePercentIcon } from './badge-percent';\nimport { BellIcon } from './bell';\nimport { BoldIcon } from './bold';\nimport { BoneIcon } from './bone';\nimport { CalendarCogIcon } from './calendar-cog';\nimport { ChartPieIcon } from './chart-pie';\nimport { ChartScatterIcon } from './chart-scatter';\nimport { CircleCheckIcon } from './circle-check';\nimport { CircleDollarSignIcon } from './circle-dollar-sign';\nimport { ClockIcon } from './clock';\nimport { CopyIcon } from './copy';\nimport { CursorClickIcon } from './cursor-click';\nimport { DeleteIcon } from './delete';\nimport { DownloadIcon } from './download';\nimport { DownvoteIcon } from './downvote';\nimport { SquarePenIcon } from './square-pen';\nimport { ExpandIcon } from './expand';\nimport { FilePenLineIcon } from './file-pen-line';\nimport { FileStackIcon } from './file-stack';\nimport { FingerprintIcon } from './fingerprint';\nimport { FrameIcon } from './frame';\nimport { GaugeIcon } from './gauge';\nimport { GitPullRequestIcon } from './git-pull-request';\nimport { GithubIcon } from './github';\nimport { GripIcon } from './grip';\nimport { HandCoinsIcon } from './hand-coins';\nimport { HomeIcon } from './home';\nimport { HeartIcon } from './heart';\nimport { ItalicIcon } from './italic';\nimport { LanguagesIcon } from './languages';\nimport { LayersIcon } from './layers';\nimport { LinkIcon } from './link';\nimport { MenuIcon } from './menu';\nimport { PartyPopperIcon } from './party-popper';\nimport { PenToolIcon } from './pen-tool';\nimport { RefreshCCWIcon } from './refresh-ccw';\nimport { RouteIcon } from './route';\nimport { ScanTextIcon } from './scan-text';\nimport { SettingsIcon } from './settings';\nimport { SettingsGearIcon } from './settings-gear';\nimport { SunIcon } from './sun';\nimport { UnderlineIcon } from './underline';\nimport { UndoIcon } from './undo';\nimport { ConnectIcon } from './connect';\nimport { UpvoteIcon } from './upvote';\nimport { UsersIcon } from './users';\nimport { VolumeIcon } from './volume';\nimport { CartIcon } from './cart';\nimport { StethoscopeIcon } from './stethoscope';\nimport { EarthIcon } from './earth';\nimport { WorkflowIcon } from './workflow';\nimport { LogoutIcon } from './logout';\nimport { CircleHelpIcon } from './circle-help';\nimport { UserIcon } from './user';\nimport { AudioLinesIcon } from './audio-lines';\nimport { FlameIcon } from './flame';\nimport { EyeOffIcon } from './eye-off';\nimport { SquareStackIcon } from './square-stack';\nimport { BadgeAlertIcon } from './badge-alert';\nimport { MessageCircleIcon } from './message-circle';\nimport { MessageCircleMoreIcon } from './message-circle-more';\nimport { SearchIcon } from './search';\nimport { ShieldCheckIcon } from './shield-check';\nimport { TimerIcon } from './timer';\nimport { BluetoothSearchingIcon } from './bluetooth-searching';\nimport { BluetoothConnectedIcon } from './bluetooth-connected';\nimport { BluetoothOffIcon } from './bluetooth-off';\nimport { FlaskIcon } from './flask';\nimport { SyringeIcon } from './syringe';\nimport { AArrowDownIcon } from './a-arrow-down';\nimport { CompassIcon } from './compass';\nimport { TrendingDownIcon } from './trending-down';\nimport { TrendingUpIcon } from './trending-up';\nimport { TrendingUpDownIcon } from './trending-up-down';\nimport { PlayIcon } from './play';\nimport { PauseIcon } from './pause';\nimport { ChevronsUpDownIcon } from './chevrons-up-down';\nimport { ChevronsDownUpIcon } from './chevrons-down-up';\nimport { ChevronsLeftRightIcon } from './chevrons-left-right';\nimport { ChevronsRightLeftIcon } from './chevrons-right-left';\nimport { CircleChevronDownIcon } from './circle-chevron-down';\nimport { CircleChevronLeftIcon } from './circle-chevron-left';\nimport { CircleChevronRightIcon } from './circle-chevron-right';\nimport { CircleChevronUpIcon } from './circle-chevron-up';\nimport { CircleDashedIcon } from './circle-dashed';\nimport { CheckIcon } from './check';\nimport { CheckCheckIcon } from './check-check';\nimport { IdCardIcon } from './id-card';\nimport { LoaderPinwheelIcon } from './loader-pinwheel';\nimport { RockingChairIcon } from './rocking-chair';\nimport { ChartColumnDecreasingIcon } from './chart-column-decreasing';\nimport { ChartColumnIncreasingIcon } from './chart-column-increasing';\nimport { ChartBarDecreasingIcon } from './chart-bar-decreasing';\nimport { ChartBarIncreasingIcon } from './chart-bar-increasing';\nimport { BananaIcon } from './banana';\nimport { BanIcon } from './ban';\nimport { WifiIcon } from './wifi';\nimport { ChromeIcon } from './chrome';\nimport { FigmaIcon } from './figma';\nimport { FishSymbolIcon } from './fish-symbol';\nimport { GitCommitVerticalIcon } from './git-commit-vertical';\nimport { GitCommitHorizontalIcon } from './git-commit-horizontal';\nimport { WaypointsIcon } from './waypoints';\nimport { ShipIcon } from './ship';\nimport { RollerCoasterIcon } from './roller-coaster';\nimport { AirplaneIcon } from './airplane';\nimport { DrumIcon } from './drum';\nimport { TrainTrackIcon } from './train-track';\nimport { SparklesIcon } from './sparkles';\nimport { WebhookIcon } from './webhook';\nimport { RabbitIcon } from './rabbit';\nimport { CogIcon } from './cog';\nimport { CpuIcon } from './cpu';\nimport { RocketIcon } from './rocket';\nimport { ActivityIcon } from './activity';\nimport { MapPinIcon } from './map-pin';\nimport { MapPinCheckInsideIcon } from './map-pin-check-inside';\nimport { MapPinMinusInsideIcon } from './map-pin-minus-inside';\nimport { MapPinPlusInsideIcon } from './map-pin-plus-inside';\nimport { MapPinOffIcon } from './map-pin-off';\nimport { MapPinCheckIcon } from './map-pin-check';\nimport { MapPinHouseIcon } from './map-pin-house';\nimport { MapPinMinusIcon } from './map-pin-minus';\nimport { MapPinPlusIcon } from './map-pin-plus';\nimport { MapPinXInsideIcon } from './map-pin-x-inside';\nimport { BatteryFullIcon } from './battery-full';\nimport { TerminalIcon } from './terminal';\nimport { KeyboardIcon } from './keyboard';\nimport { ClapIcon } from './clap';\nimport { LayoutPanelTopIcon } from './layout-panel-top';\nimport { BookTextIcon } from './book-text';\nimport { ShowerHeadIcon } from './shower-head';\nimport { TelescopeIcon } from './telescope';\nimport { WindIcon } from './wind';\nimport { CctvIcon } from './cctv';\nimport { CoffeeIcon } from './coffee';\nimport { ArrowDownZAIcon } from './arrow-down-z-a';\nimport { ArrowDownAZIcon } from './arrow-down-a-z';\nimport { ArrowDown01con } from './arrow-down-0-1';\nimport { ArrowDown10Icon } from './arrow-down-1-0';\nimport { ClipboardCheckIcon } from './clipboard-check';\nimport { FacebookIcon } from './facebook';\nimport { LinkedinIcon } from './linkedin';\nimport { TwitterIcon } from './twitter';\nimport { YoutubeIcon } from './youtube';\nimport { InstagramIcon } from './instagram';\nimport { TwitchIcon } from './twitch';\nimport { DribbbleIcon } from './dribbble';\nimport { DiscordIcon } from './discord';\nimport { XIcon } from './x';\nimport { MoonIcon } from './moon';\nimport { VibrateIcon } from './vibrate';\nimport { SmartphoneChargingIcon } from './smartphone-charging';\nimport { CastIcon } from './cast';\nimport { UploadIcon } from './upload';\nimport { CloudSunIcon } from './cloud-sun';\nimport { SunsetIcon } from './sunset';\nimport { SunDimIcon } from './sun-dim';\nimport { SunMediumIcon } from './sun-medium';\nimport { SunMoonIcon } from './sun-moon';\nimport { MessageSquareIcon } from './message-square';\nimport { MessageSquareMoreIcon } from './message-square-more';\nimport { MessageCircleDashedIcon } from './message-circle-dashed';\nimport { MessageSquareDashedIcon } from './message-square-dashed';\nimport { AArrowUpIcon } from './a-arrow-up';\nimport { FileCogIcon } from './file-cog';\nimport { CalendarDaysIcon } from './calendar-days';\nimport { ArrowBigDownDashIcon } from './arrow-big-down-dash';\nimport { ArrowBigLeftDashIcon } from './arrow-big-left-dash';\nimport { ArrowBigRightDashIcon } from './arrow-big-right-dash';\nimport { ArrowBigUpDashIcon } from './arrow-big-up-dash';\nimport { ArrowDownIcon } from './arrow-down';\nimport { ArrowUpIcon } from './arrow-up';\nimport { ArrowBigDownIcon } from './arrow-big-down';\nimport { ArrowBigLeftIcon } from './arrow-big-left';\nimport { ArrowBigRightIcon } from './arrow-big-right';\nimport { ArrowBigUpIcon } from './arrow-big-up';\nimport { KeyIcon } from './key';\nimport { KeyCircleIcon } from './key-circle';\nimport { KeySquareIcon } from './key-square';\nimport { ChartLineIcon } from './chart-line';\nimport { ChartSplineIcon } from './chart-spline';\nimport { FileChartLineIcon } from './file-chart-line';\nimport { ChartNoAxesColumnIncreasingIcon } from './chart-no-axes-column-increasing';\nimport { ChartNoAxesColumnDecreasingIcon } from './chart-no-axes-column-decreasing';\nimport { RadioIcon } from './radio';\nimport { RadioTowerIcon } from './radio-tower';\nimport { AirVentIcon } from './air-vent';\nimport { TornadoIcon } from './tornado';\nimport { WindArrowDownIcon } from './wind-arrow-down';\nimport { CloudRainIcon } from './cloud-rain';\nimport { CloudRainWindIcon } from './cloud-rain-wind';\nimport { WavesIcon } from './waves';\nimport { WavesLadderIcon } from './waves-ladder';\nimport { SquareArrowDownIcon } from './square-arrow-down';\nimport { SquareArrowLeftIcon } from './square-arrow-left';\nimport { SquareArrowUpIcon } from './square-arrow-up';\nimport { SquareArrowRightIcon } from './square-arrow-right';\nimport { BlocksIcon } from './blocks';\nimport { CalendarCheckIcon } from './calendar-check';\nimport { CalendarCheck2Icon } from './calendar-check-2';\nimport { FileCheckIcon } from './file-check';\nimport { FileCheck2Icon } from './file-check-2';\nimport { MailCheckIcon } from './mail-check';\nimport { MonitorCheckIcon } from './monitor-check';\nimport { LaptopMinimalCheckIcon } from './laptop-minimal-check';\nimport { ChevronDownIcon } from './chevron-down';\nimport { ChevronUpIcon } from './chevron-up';\nimport { ChevronLeftIcon } from './chevron-left';\nimport { ChevronRightIcon } from './chevron-right';\nimport { SquareChevronDownIcon } from './square-chevron-down';\nimport { SquareChevronUpIcon } from './square-chevron-up';\nimport { SquareChevronRightIcon } from './square-chevron-right';\nimport { SquareChevronLeftIcon } from './square-chevron-left';\nimport { GalleryHorizontalEndIcon } from './gallery-horizontal-end';\nimport { GalleryVerticalEndIcon } from './gallery-vertical-end';\nimport { HandHeartIcon } from './hand-heart';\nimport { SquareActivityIcon } from './square-activity';\nimport { RotateCWIcon } from './rotate-cw';\nimport { RotateCCWIcon } from './rotate-ccw';\nimport { GalleryThumbnailsIcon } from './gallery-thumbnails';\nimport { UserCheckIcon } from './user-check';\nimport { UserRoundCheckIcon } from './user-round-check';\nimport { BoxesIcon } from './boxes';\nimport { RefreshCWIcon } from './refresh-cw';\nimport { RefreshCCWDotIcon } from './refresh-ccw-dot';\nimport { RefreshCWOffIcon } from './refresh-cw-off';\nimport { RedoIcon } from './redo';\nimport { UndoDotIcon } from './undo-dot';\nimport { RedoDotIcon } from './redo-dot';\nimport { ScanFaceIcon } from './scan-face';\nimport { FrownIcon } from './frown';\nimport { SmilePlusIcon } from './smile-plus';\nimport { SmileIcon } from './smile';\nimport { LaughIcon } from './laugh';\nimport { AnnoyedIcon } from './annoyed';\nimport { MehIcon } from './meh';\nimport { HistoryIcon } from './history';\nimport { FileTextIcon } from './file-text';\nimport { UserRoundPlusIcon } from './user-round-plus';\nimport { PanelLeftOpenIcon } from './panel-left-open';\nimport { PanelLeftCloseIcon } from './panel-left-close';\nimport { PanelRightOpenIcon } from './panel-right-open';\n\n// Credit:\n// https://github.com/pqoqubbw/icons\n\ntype IconListItem = {\n  name: string;\n  icon: React.ElementType;\n  keywords: string[];\n};\n\nconst ICON_LIST: IconListItem[] = [\n  {\n    name: 'smartphone-charging',\n    icon: SmartphoneChargingIcon,\n    keywords: ['phone', 'cellphone', 'device', 'power', 'screen'],\n  },\n  {\n    name: 'history',\n    icon: HistoryIcon,\n    keywords: ['history', 'back', 'previous', 'arrow'],\n  },\n  { name: 'square-activity', icon: SquareActivityIcon, keywords: ['activity'] },\n  {\n    name: 'square-arrow-down',\n    icon: SquareArrowDownIcon,\n    keywords: ['arrow', 'down', 'a'],\n  },\n  {\n    name: 'square-arrow-left',\n    icon: SquareArrowLeftIcon,\n    keywords: ['arrow', 'left', 'a'],\n  },\n  {\n    name: 'square-arrow-right',\n    icon: SquareArrowRightIcon,\n    keywords: ['arrow', 'right', 'a'],\n  },\n  {\n    name: 'square-arrow-up',\n    icon: SquareArrowUpIcon,\n    keywords: ['arrow', 'up', 'a'],\n  },\n  {\n    name: 'scan-face',\n    icon: ScanFaceIcon,\n    keywords: ['scan', 'face', 'emotion'],\n  },\n  {\n    name: 'frown',\n    icon: FrownIcon,\n    keywords: ['frown', 'emotion', 'face', 'sad'],\n  },\n  {\n    name: 'smile-plus',\n    icon: SmilePlusIcon,\n    keywords: ['smile', 'plus', 'emotion', 'face'],\n  },\n  { name: 'smile', icon: SmileIcon, keywords: ['smile', 'emotion', 'face'] },\n  { name: 'laugh', icon: LaughIcon, keywords: ['laugh', 'emotion', 'face'] },\n  {\n    name: 'annoyed',\n    icon: AnnoyedIcon,\n    keywords: ['annoyed', 'emotion', 'face'],\n  },\n  { name: 'meh', icon: MehIcon, keywords: ['meh', 'emotion', 'face'] },\n  {\n    name: 'key',\n    icon: KeyIcon,\n    keywords: ['key', 'authentication', 'security', 'access', 'password'],\n  },\n  {\n    name: 'key-square',\n    icon: KeySquareIcon,\n    keywords: ['key', 'authentication', 'security', 'access', 'password'],\n  },\n  {\n    name: 'key-circle',\n    icon: KeyCircleIcon,\n    keywords: ['key', 'authentication', 'security', 'access', 'password'],\n  },\n  {\n    name: 'rotate-cw',\n    icon: RotateCWIcon,\n    keywords: [\n      'rotate',\n      'clockwise',\n      'turn',\n      'degrees',\n      'degrees',\n      'clockwise',\n      'counterclockwise',\n    ],\n  },\n  {\n    name: 'rotate-ccw',\n    icon: RotateCCWIcon,\n    keywords: [\n      'rotate',\n      'counterclockwise',\n      'turn',\n      'degrees',\n      'degrees',\n      'clockwise',\n      'counterclockwise',\n    ],\n  },\n  {\n    name: 'refresh-cw-off',\n    icon: RefreshCWOffIcon,\n    keywords: ['refresh', 'rotate', 'reload', 'rerun', 'circular', 'cycle'],\n  },\n  {\n    name: 'refresh-cw',\n    icon: RefreshCWIcon,\n    keywords: ['refresh', 'rotate', 'reload', 'rerun', 'circular', 'cycle'],\n  },\n  {\n    name: 'refresh-ccw-dot',\n    icon: RefreshCCWDotIcon,\n    keywords: ['refresh', 'rotate', 'reload', 'rerun', 'circular', 'cycle'],\n  },\n  {\n    name: 'redo',\n    icon: RedoIcon,\n    keywords: ['redo', 'repeat', 'undo', 'back', 'previous', 'arrow'],\n  },\n  {\n    name: 'undo-dot',\n    icon: UndoDotIcon,\n    keywords: ['undo', 'repeat', 'back', 'previous', 'arrow'],\n  },\n  {\n    name: 'redo-dot',\n    icon: RedoDotIcon,\n    keywords: ['redo', 'repeat', 'undo', 'back', 'previous', 'arrow'],\n  },\n  {\n    name: 'arrow-big-down',\n    icon: ArrowBigDownIcon,\n    keywords: ['arrow', 'down', 'big', 'below', 'south', 'bottom'],\n  },\n  {\n    name: 'arrow-big-left',\n    icon: ArrowBigLeftIcon,\n    keywords: ['arrow', 'left', 'big', 'west', 'previous', '<-'],\n  },\n  {\n    name: 'arrow-big-right',\n    icon: ArrowBigRightIcon,\n    keywords: ['arrow', 'right', 'big', 'east', 'next', '->'],\n  },\n  {\n    name: 'arrow-big-up',\n    icon: ArrowBigUpIcon,\n    keywords: ['arrow', 'up', 'big', 'north', 'top'],\n  },\n  {\n    name: 'a-arrow-up',\n    icon: AArrowUpIcon,\n    keywords: ['arrow', 'up', 'a'],\n  },\n  {\n    name: 'chart-spline',\n    icon: ChartSplineIcon,\n    keywords: [\n      'chart',\n      'spline',\n      'graph',\n      'statistics',\n      'analytics',\n      'diagram',\n      'presentation',\n      'analytics',\n    ],\n  },\n  {\n    name: 'arrow-up',\n    icon: ArrowUpIcon,\n    keywords: ['up', 'above', 'direction', 'north', 'top'],\n  },\n  {\n    name: 'arrow-down',\n    icon: ArrowDownIcon,\n    keywords: ['down', 'below', 'direction', 'south', 'bottom'],\n  },\n  {\n    name: 'vibrate',\n    icon: VibrateIcon,\n    keywords: [\n      'smartphone',\n      'notification',\n      'rumble',\n      'haptic feedback',\n      'screen',\n    ],\n  },\n  {\n    name: 'waves-ladder',\n    icon: WavesLadderIcon,\n    keywords: ['waves', 'ladder', 'water', 'ocean', 'sea'],\n  },\n  {\n    name: 'waves',\n    icon: WavesIcon,\n    keywords: ['waves', 'water', 'ocean', 'sea', 'wave', 'sea wave'],\n  },\n  {\n    name: 'wind-arrow-down',\n    icon: WindArrowDownIcon,\n    keywords: ['wind', 'arrow', 'down', 'wind arrow down'],\n  },\n  {\n    name: 'air-vent',\n    icon: AirVentIcon,\n    keywords: ['air', 'vent', 'fan', 'air conditioning', 'wind', 'cooling'],\n  },\n  {\n    name: 'tornado',\n    icon: TornadoIcon,\n    keywords: ['tornado', 'wind', 'weather', 'spin', 'twister', 'whirlwind'],\n  },\n  {\n    name: 'cloud-rain',\n    icon: CloudRainIcon,\n    keywords: ['cloud', 'rain', 'weather', 'cloud rain'],\n  },\n  {\n    name: 'cloud-rain-wind',\n    icon: CloudRainWindIcon,\n    keywords: ['cloud', 'rain', 'wind', 'weather', 'cloud rain wind'],\n  },\n  {\n    name: 'arrow-big-down-dash',\n    icon: ArrowBigDownDashIcon,\n    keywords: ['arrow', 'down', 'big', 'below', 'south', 'bottom', 'dash'],\n  },\n  {\n    name: 'arrow-big-left-dash',\n    icon: ArrowBigLeftDashIcon,\n    keywords: ['arrow', 'left', 'big', 'below', 'west', 'dash'],\n  },\n  {\n    name: 'arrow-big-right-dash',\n    icon: ArrowBigRightDashIcon,\n    keywords: ['arrow', 'right', 'big', 'below', 'east', 'dash'],\n  },\n  {\n    name: 'arrow-big-up-dash',\n    icon: ArrowBigUpDashIcon,\n    keywords: ['arrow', 'up', 'big', 'above', 'north', 'dash'],\n  },\n  {\n    name: 'moon',\n    icon: MoonIcon,\n    keywords: ['night', 'dark', 'moon'],\n  },\n  {\n    name: 'facebook',\n    icon: FacebookIcon,\n    keywords: ['social', 'network', 'facebook'],\n  },\n  {\n    name: 'twitter',\n    icon: TwitterIcon,\n    keywords: ['social', 'network', 'twitter', 'X'],\n  },\n  {\n    name: 'linkedin',\n    icon: LinkedinIcon,\n    keywords: ['social', 'network', 'linkedin'],\n  },\n  {\n    name: 'youtube',\n    icon: YoutubeIcon,\n    keywords: ['social', 'network', 'youtube'],\n  },\n  {\n    name: 'instagram',\n    icon: InstagramIcon,\n    keywords: ['social', 'network', 'instagram'],\n  },\n  {\n    name: 'twitch',\n    icon: TwitchIcon,\n    keywords: ['social', 'network', 'twitch'],\n  },\n  {\n    name: 'dribbble',\n    icon: DribbbleIcon,\n    keywords: ['social', 'network', 'dribbble'],\n  },\n  {\n    name: 'discord',\n    icon: DiscordIcon,\n    keywords: ['social', 'network', 'discord'],\n  },\n  {\n    name: 'search',\n    icon: SearchIcon,\n    keywords: ['find', 'scan', 'magnifier', 'magnifying glass'],\n  },\n  {\n    name: 'cloud-sun',\n    icon: CloudSunIcon,\n    keywords: ['weather', 'sun', 'cloud', 'light', 'bright'],\n  },\n  {\n    name: 'sunset',\n    icon: SunsetIcon,\n    keywords: ['sun', 'sunset', 'weather', 'bright', 'dawn', 'evening'],\n  },\n  {\n    name: 'sun-dim',\n    icon: SunDimIcon,\n    keywords: ['sun', 'dim', 'weather', 'light', 'day'],\n  },\n  {\n    name: 'sun-medium',\n    icon: SunMediumIcon,\n    keywords: ['sun', 'medium', 'weather', 'light', 'day'],\n  },\n  {\n    name: 'sun-moon',\n    icon: SunMoonIcon,\n    keywords: ['sun', 'moon', 'day', 'night', 'evening'],\n  },\n  {\n    name: 'cart',\n    icon: CartIcon,\n    keywords: [\n      'trolley',\n      'cart',\n      'basket',\n      'e-commerce',\n      'store',\n      'purchase',\n      'products',\n      'items',\n      'ingredients',\n    ],\n  },\n  {\n    name: 'stethoscope',\n    icon: StethoscopeIcon,\n    keywords: ['phonendoscope', 'medical', 'heart', 'lungs', 'sound'],\n  },\n  {\n    name: 'circle-check',\n    icon: CircleCheckIcon,\n    keywords: ['done', 'todo', 'tick', 'complete', 'task'],\n  },\n  {\n    name: 'earth',\n    icon: EarthIcon,\n    keywords: ['world', 'browser', 'language', 'translate', 'globe'],\n  },\n  {\n    name: 'workflow',\n    icon: WorkflowIcon,\n    keywords: [\n      'action',\n      'continuous integration',\n      'ci',\n      'automation',\n      'devops',\n      'network',\n      'node',\n      'connection',\n    ],\n  },\n  {\n    name: 'logout',\n    icon: LogoutIcon,\n    keywords: ['sign out', 'arrow', 'exit', 'auth'],\n  },\n  {\n    name: 'circle-help',\n    icon: CircleHelpIcon,\n    keywords: ['question mark'],\n  },\n  {\n    name: 'user',\n    icon: UserIcon,\n    keywords: ['person', 'account', 'contact'],\n  },\n  {\n    name: 'flame',\n    icon: FlameIcon,\n    keywords: ['fire', 'flame', 'hot'],\n  },\n  {\n    name: 'audio-lines',\n    icon: AudioLinesIcon,\n    keywords: [\n      'graphic equaliser',\n      'sound',\n      'noise',\n      'listen',\n      'hearing',\n      'hertz',\n      'frequency',\n      'wavelength',\n      'vibrate',\n      'sine',\n      'synthesizer',\n      'synthesiser',\n      'levels',\n      'track',\n      'music',\n      'playback',\n      'radio',\n      'broadcast',\n      'airwaves',\n      'voice',\n      'vocals',\n      'singer',\n      'song',\n    ],\n  },\n  {\n    name: 'eye-off',\n    icon: EyeOffIcon,\n    keywords: [\n      'view',\n      'watch',\n      'see',\n      'hide',\n      'conceal',\n      'mask',\n      'hidden',\n      'visibility',\n      'vision',\n    ],\n  },\n  {\n    name: 'square-stack',\n    icon: SquareStackIcon,\n    keywords: [\n      'versions',\n      'clone',\n      'copy',\n      'duplicate',\n      'multiple',\n      'revisions',\n      'version control',\n      'backup',\n      'history',\n    ],\n  },\n  {\n    name: 'badge-alert',\n    icon: BadgeAlertIcon,\n    keywords: [\n      'check',\n      'verified',\n      'unverified',\n      'security',\n      'safety',\n      'issue',\n    ],\n  },\n  {\n    name: 'message-circle',\n    icon: MessageCircleIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n    ],\n  },\n  {\n    name: 'message-circle-more',\n    icon: MessageCircleMoreIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n      'typing',\n      'writing',\n      'responding',\n      'ellipsis',\n      'etc',\n    ],\n  },\n  {\n    name: 'message-square',\n    icon: MessageSquareIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n      'message',\n    ],\n  },\n  {\n    name: 'message-square-more',\n    icon: MessageSquareMoreIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n      'typing',\n      'writing',\n      'message',\n      'responding',\n      'ellipsis',\n      'etc',\n    ],\n  },\n  {\n    name: 'message-circle-dashed',\n    icon: MessageCircleDashedIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n      'typing',\n      'writing',\n      'message',\n      'responding',\n      'ellipsis',\n      'etc',\n    ],\n  },\n  {\n    name: 'message-square-dashed',\n    icon: MessageSquareDashedIcon,\n    keywords: [\n      'comment',\n      'chat',\n      'conversation',\n      'dialog',\n      'feedback',\n      'speech bubble',\n      'typing',\n      'writing',\n      'message',\n      'responding',\n      'ellipsis',\n      'etc',\n    ],\n  },\n  {\n    name: 'clipboard-check',\n    icon: ClipboardCheckIcon,\n    keywords: ['clipboard', 'check', 'clipboard-check', 'clipboard-checkmark'],\n  },\n  {\n    name: 'home',\n    icon: HomeIcon,\n    keywords: ['home', 'living', 'building', 'residence', 'architecture'],\n  },\n  {\n    name: 'arrow-left',\n    icon: ArrowLeftIcon,\n    keywords: ['previous', 'back', 'direction', 'west', '<-'],\n  },\n  {\n    name: 'arrow-right',\n    icon: ArrowRightIcon,\n    keywords: ['forward', 'next', 'direction', 'east', '->'],\n  },\n  {\n    name: 'expand',\n    icon: ExpandIcon,\n    keywords: ['scale', 'fullscreen'],\n  },\n  {\n    name: 'route',\n    icon: RouteIcon,\n    keywords: ['path', 'journey', 'planner', 'points', 'stops', 'stations'],\n  },\n  {\n    name: 'airplane',\n    icon: AirplaneIcon,\n    keywords: [\n      'flight',\n      'path',\n      'journey',\n      'planner',\n      'points',\n      'stops',\n      'stations',\n    ],\n  },\n  {\n    name: 'refresh-ccw',\n    icon: RefreshCCWIcon,\n    keywords: [\n      'arrows',\n      'rotate',\n      'reload',\n      'rerun',\n      'synchronise',\n      'synchronize',\n      'circular',\n      'cycle',\n    ],\n  },\n  { name: 'undo', icon: UndoIcon, keywords: ['redo', 'rerun', 'history'] },\n  {\n    name: 'download',\n    icon: DownloadIcon,\n    keywords: ['import', 'export', 'save'],\n  },\n  {\n    name: 'square-pen',\n    icon: SquarePenIcon,\n    keywords: [\n      'pencil',\n      'change',\n      'create',\n      'draw',\n      'sketch',\n      'draft',\n      'writer',\n      'writing',\n      'biro',\n      'ink',\n      'marker',\n      'felt tip',\n      'stationery',\n      'artist',\n    ],\n  },\n  {\n    name: 'delete',\n    icon: DeleteIcon,\n    keywords: ['garbage', 'delete', 'remove', 'bin'],\n  },\n  {\n    name: 'settings',\n    icon: SettingsIcon,\n    keywords: ['settings', 'filters', 'controls'],\n  },\n  {\n    name: 'settings-gear',\n    icon: SettingsGearIcon,\n    keywords: ['cog', 'edit', 'gear', 'preferences'],\n  },\n  {\n    name: 'calendar-cog',\n    icon: CalendarCogIcon,\n    keywords: [\n      'date',\n      'day',\n      'month',\n      'year',\n      'events',\n      'settings',\n      'gear',\n      'cog',\n    ],\n  },\n  {\n    name: 'cursor-click',\n    icon: CursorClickIcon,\n    keywords: ['click', 'select'],\n  },\n  {\n    name: 'menu',\n    icon: MenuIcon,\n    keywords: ['bars', 'navigation', 'hamburger', 'options'],\n  },\n  {\n    name: 'clock',\n    icon: ClockIcon,\n    keywords: ['time', 'watch', 'alarm'],\n  },\n  {\n    name: 'file-stack',\n    icon: FileStackIcon,\n    keywords: [\n      'versions',\n      'multiple',\n      'copy',\n      'documents',\n      'revisions',\n      'version control',\n      'history',\n    ],\n  },\n  {\n    name: 'file-pen-line',\n    icon: FilePenLineIcon,\n    keywords: ['edit'],\n  },\n  {\n    name: 'archive',\n    icon: ArchiveIcon,\n    keywords: ['index', 'backup', 'box', 'storage', 'records'],\n  },\n  {\n    name: 'copy',\n    icon: CopyIcon,\n    keywords: ['clone', 'duplicate', 'multiple'],\n  },\n  {\n    name: 'attach-file',\n    icon: AttachFileIcon,\n    keywords: ['attachment', 'file'],\n  },\n  { name: 'alarm-clock', icon: AlarmClockIcon, keywords: ['morning'] },\n  { name: 'bold', icon: BoldIcon, keywords: ['text', 'strong', 'format'] },\n  {\n    name: 'italic',\n    icon: ItalicIcon,\n    keywords: ['oblique', 'text', 'format'],\n  },\n  {\n    name: 'underline',\n    icon: UnderlineIcon,\n    keywords: ['text', 'format'],\n  },\n  {\n    name: 'scan-text',\n    icon: ScanTextIcon,\n    keywords: ['recognition', 'read', 'translate', 'copy', 'lines'],\n  },\n  {\n    name: 'languages',\n    icon: LanguagesIcon,\n    keywords: ['translate'],\n  },\n  {\n    name: 'at-sign',\n    icon: AtSignIcon,\n    keywords: ['mention', 'at', 'email', 'message', '@'],\n  },\n  {\n    name: 'bell',\n    icon: BellIcon,\n    keywords: ['alarm', 'notification', 'sound', 'reminder'],\n  },\n  {\n    name: 'users',\n    icon: UsersIcon,\n    keywords: ['group', 'people'],\n  },\n  {\n    name: 'upvote',\n    icon: UpvoteIcon,\n    keywords: ['like', 'good', 'emotion'],\n  },\n  {\n    name: 'downvote',\n    icon: DownvoteIcon,\n    keywords: ['dislike', 'bad', 'emotion'],\n  },\n  {\n    name: 'circle-dollar-sign',\n    icon: CircleDollarSignIcon,\n    keywords: ['monetization', 'marketing', 'currency', 'money', 'payment'],\n  },\n  {\n    name: 'hand-coins',\n    icon: HandCoinsIcon,\n    keywords: [\n      'savings',\n      'banking',\n      'money',\n      'finance',\n      'offers',\n      'mortgage',\n      'payment',\n      'received',\n      'wage',\n      'payroll',\n      'allowance',\n      'pocket money',\n      'handout',\n      'pennies',\n    ],\n  },\n  {\n    name: 'badge-percent',\n    icon: BadgePercentIcon,\n    keywords: [\n      'verified',\n      'unverified',\n      'sale',\n      'discount',\n      'offer',\n      'marketing',\n      'sticker',\n      'price tag',\n    ],\n  },\n  {\n    name: 'chart-pie',\n    icon: ChartPieIcon,\n    keywords: ['statistics', 'analytics', 'diagram', 'presentation'],\n  },\n  {\n    name: 'chart-scatter',\n    icon: ChartScatterIcon,\n    keywords: ['chart', 'analytics', 'scatter'],\n  },\n  {\n    name: 'gauge',\n    icon: GaugeIcon,\n    keywords: [\n      'dashboard',\n      'dial',\n      'meter',\n      'speed',\n      'pressure',\n      'measure',\n      'level',\n    ],\n  },\n  {\n    name: 'pen-tool',\n    icon: PenToolIcon,\n    keywords: ['vector', 'drawing', 'path'],\n  },\n  {\n    name: 'fingerprint',\n    icon: FingerprintIcon,\n    keywords: ['2fa', 'authentication', 'biometric', 'identity', 'security'],\n  },\n  {\n    name: 'link',\n    icon: LinkIcon,\n    keywords: ['chain', 'url'],\n  },\n  {\n    name: 'layers',\n    icon: LayersIcon,\n    keywords: [\n      'stack',\n      'pile',\n      'pages',\n      'sheets',\n      'paperwork',\n      'copies',\n      'copy',\n    ],\n  },\n  {\n    name: 'grip',\n    icon: GripIcon,\n    keywords: ['grab', 'dots', 'handle', 'move', 'drag'],\n  },\n  {\n    name: 'git-pull-request',\n    icon: GitPullRequestIcon,\n    keywords: ['code', 'version control', 'open'],\n  },\n  {\n    name: 'github',\n    icon: GithubIcon,\n    keywords: ['logo', 'version control', 'repository', 'source code', 'git'],\n  },\n  {\n    name: 'connect',\n    icon: ConnectIcon,\n    keywords: [\n      'electricity',\n      'energy',\n      'electronics',\n      'socket',\n      'outlet',\n      'disconnect',\n    ],\n  },\n  {\n    name: 'volume',\n    icon: VolumeIcon,\n    keywords: ['music', 'sound', 'mute', 'speaker'],\n  },\n  {\n    name: 'sun',\n    icon: SunIcon,\n    keywords: ['brightness', 'weather', 'light', 'summer'],\n  },\n  {\n    name: 'party-popper',\n    icon: PartyPopperIcon,\n    keywords: [\n      'emoji',\n      'congratulations',\n      'celebration',\n      'party',\n      'tada',\n      '🎉',\n      '🎊',\n      'excitement',\n      'exciting',\n      'excites',\n      'confetti',\n    ],\n  },\n  {\n    name: 'frame',\n    icon: FrameIcon,\n    keywords: ['logo', 'design', 'tool'],\n  },\n  {\n    name: 'bone',\n    icon: BoneIcon,\n    keywords: ['health', 'skeleton', 'skull', 'death', 'pets', 'dog'],\n  },\n  {\n    name: 'align-center',\n    icon: AlignCenterIcon,\n    keywords: ['text', 'alignment', 'center'],\n  },\n  {\n    name: 'align-vertical',\n    icon: AlignVerticalIcon,\n    keywords: ['center', 'items', 'flex', 'justify', 'distribute', 'between'],\n  },\n  {\n    name: 'align-horizontal',\n    icon: AlignHorizontalIcon,\n    keywords: ['center', 'items', 'flex', 'justify', 'distribute', 'between'],\n  },\n  {\n    name: 'compass',\n    icon: CompassIcon,\n    keywords: [\n      'direction',\n      'navigation',\n      'north',\n      'south',\n      'east',\n      'west',\n      'compass',\n    ],\n  },\n  {\n    name: 'shield-check',\n    icon: ShieldCheckIcon,\n    keywords: ['security', 'verified', 'safe', 'protection', 'secure'],\n  },\n  {\n    name: 'trending-down',\n    icon: TrendingDownIcon,\n    keywords: ['down', 'trend', 'graph', 'downward', 'decrease', 'statistics'],\n  },\n  {\n    name: 'trending-up',\n    icon: TrendingUpIcon,\n    keywords: ['up', 'trend', 'graph', 'upward', 'increase', 'statistics'],\n  },\n  {\n    name: 'trending-up-down',\n    icon: TrendingUpDownIcon,\n    keywords: [\n      'up',\n      'trend',\n      'graph',\n      'upward',\n      'increase',\n      'statistics',\n      'down',\n      'trend',\n      'graph',\n      'downward',\n      'decrease',\n    ],\n  },\n  {\n    name: 'timer',\n    icon: TimerIcon,\n    keywords: ['time', 'watch', 'alarm', 'stopwatch', 'stopwatch'],\n  },\n  {\n    name: 'bluetooth-searching',\n    icon: BluetoothSearchingIcon,\n    keywords: ['tool', 'connection', 'network'],\n  },\n  {\n    name: 'bluetooth-connected',\n    icon: BluetoothConnectedIcon,\n    keywords: ['tool', 'connection', 'network'],\n  },\n  {\n    name: 'bluetooth-off',\n    icon: BluetoothOffIcon,\n    keywords: ['tool', 'connection', 'network'],\n  },\n  {\n    name: 'flask',\n    icon: FlaskIcon,\n    keywords: [\n      'beaker',\n      'erlenmeyer',\n      'lab',\n      'chemistry',\n      'experiment',\n      'test',\n    ],\n  },\n  {\n    name: 'syringe',\n    icon: SyringeIcon,\n    keywords: [\n      'medicine',\n      'medical',\n      'needle',\n      'pump',\n      'plunger',\n      'nozzle',\n      'blood',\n    ],\n  },\n  {\n    name: 'play',\n    icon: PlayIcon,\n    keywords: ['video', 'play', 'start'],\n  },\n  {\n    name: 'pause',\n    icon: PauseIcon,\n    keywords: ['video', 'pause', 'stop'],\n  },\n  {\n    name: 'chart-column-decreasing',\n    icon: ChartColumnDecreasingIcon,\n    keywords: ['chart', 'column', 'decreasing'],\n  },\n  {\n    name: 'chart-column-increasing',\n    icon: ChartColumnIncreasingIcon,\n    keywords: ['chart', 'column', 'increasing'],\n  },\n  {\n    name: 'chart-bar-decreasing',\n    icon: ChartBarDecreasingIcon,\n    keywords: ['chart', 'bar', 'decreasing'],\n  },\n  {\n    name: 'chart-bar-increasing',\n    icon: ChartBarIncreasingIcon,\n    keywords: ['chart', 'bar', 'increasing'],\n  },\n  {\n    name: 'chevron-down',\n    icon: ChevronDownIcon,\n    keywords: ['chevron', 'down', 'expand', 'unfold', 'vertical'],\n  },\n  {\n    name: 'chevron-up',\n    icon: ChevronUpIcon,\n    keywords: ['chevron', 'up', 'collapse', 'fold', 'vertical'],\n  },\n  {\n    name: 'chevron-left',\n    icon: ChevronLeftIcon,\n    keywords: ['chevron', 'left', 'previous', 'back', 'direction'],\n  },\n  {\n    name: 'chevron-right',\n    icon: ChevronRightIcon,\n    keywords: ['chevron', 'right', 'next', 'forward', 'direction'],\n  },\n  {\n    name: 'chevrons-up-down',\n    icon: ChevronsUpDownIcon,\n    keywords: ['expand', 'unfold', 'vertical', 'chevron'],\n  },\n  {\n    name: 'chevrons-down-up',\n    icon: ChevronsDownUpIcon,\n    keywords: ['collapse', 'fold', 'vertical', 'chevron'],\n  },\n  {\n    name: 'chevrons-left-right',\n    icon: ChevronsLeftRightIcon,\n    keywords: ['expand', 'unfold', 'horizontal', 'chevron'],\n  },\n  {\n    name: 'chevrons-right-left',\n    icon: ChevronsRightLeftIcon,\n    keywords: ['collapse', 'fold', 'horizontal', 'chevron'],\n  },\n  {\n    name: 'circle-chevron-down',\n    icon: CircleChevronDownIcon,\n    keywords: ['back', 'menu', 'chevron'],\n  },\n  {\n    name: 'circle-chevron-left',\n    icon: CircleChevronLeftIcon,\n    keywords: [\n      'back',\n      'previous',\n      'less than',\n      'fewer',\n      'menu',\n      '<',\n      'chevron',\n    ],\n  },\n  {\n    name: 'circle-chevron-right',\n    icon: CircleChevronRightIcon,\n    keywords: [\n      'next',\n      'forward',\n      'more than',\n      'greater',\n      'menu',\n      '>',\n      'chevron',\n    ],\n  },\n  {\n    name: 'square-chevron-down',\n    icon: SquareChevronDownIcon,\n    keywords: ['chevron', 'down', 'expand'],\n  },\n  {\n    name: 'square-chevron-up',\n    icon: SquareChevronUpIcon,\n    keywords: ['chevron', 'up', 'collapse'],\n  },\n  {\n    name: 'square-chevron-right',\n    icon: SquareChevronRightIcon,\n    keywords: ['chevron', 'right', 'next'],\n  },\n  {\n    name: 'square-chevron-left',\n    icon: SquareChevronLeftIcon,\n    keywords: ['chevron', 'left', 'previous'],\n  },\n  {\n    name: 'a-arrow-down',\n    icon: AArrowDownIcon,\n    keywords: ['arrow', 'down', 'a'],\n  },\n  {\n    name: 'circle-dashed',\n    icon: CircleDashedIcon,\n    keywords: ['dashed', 'circle', 'dashed circle'],\n  },\n  {\n    name: 'circle-chevron-up',\n    icon: CircleChevronUpIcon,\n    keywords: ['caret', 'ahead', 'forward', 'menu', 'chevron'],\n  },\n  {\n    name: 'check',\n    icon: CheckIcon,\n    keywords: ['done', 'todo', 'tick', 'complete', 'task'],\n  },\n  {\n    name: 'check-check',\n    icon: CheckCheckIcon,\n    keywords: [\n      'done',\n      'received',\n      'double',\n      'todo',\n      'tick',\n      'complete',\n      'task',\n    ],\n  },\n  {\n    name: 'id-card',\n    icon: IdCardIcon,\n    keywords: [\n      'identification',\n      'personal',\n      'details',\n      'profile',\n      'card',\n      'badge',\n      'identity',\n      'authentication',\n      'secure',\n    ],\n  },\n  {\n    name: 'loader-pinwheel',\n    icon: LoaderPinwheelIcon,\n    keywords: [\n      'loading',\n      'wait',\n      'busy',\n      'progress',\n      'throbber',\n      'spinner',\n      'spinning',\n      'beach ball',\n      'frozen',\n      'freeze',\n    ],\n  },\n  {\n    name: 'rocking-chair',\n    icon: RockingChairIcon,\n    keywords: ['furniture', 'seat', 'rock', 'relax', 'sit', 'chair'],\n  },\n  {\n    name: 'banana',\n    icon: BananaIcon,\n    keywords: ['fruit', 'food', 'yellow', 'tropical'],\n  },\n  {\n    name: 'wifi',\n    icon: WifiIcon,\n    keywords: ['internet', 'electronic', 'connection', 'data'],\n  },\n  {\n    name: 'chrome',\n    icon: ChromeIcon,\n    keywords: ['browser', 'google', 'internet', 'web', 'logo'],\n  },\n  {\n    name: 'figma',\n    icon: FigmaIcon,\n    keywords: ['design', 'tool', 'logo'],\n  },\n  {\n    name: 'fish-symbol',\n    icon: FishSymbolIcon,\n    keywords: [\n      'fish',\n      'seafood',\n      'ocean',\n      'marine',\n      'dish',\n      'restaurant',\n      'course',\n      'meal',\n      'seafood',\n      'pet',\n      'sea',\n      'marine',\n    ],\n  },\n  {\n    name: 'git-commit-vertical',\n    icon: GitCommitVerticalIcon,\n    keywords: [\n      'code',\n      'open',\n      'version control ',\n      'waypoint',\n      'stop',\n      'station',\n    ],\n  },\n  {\n    name: 'git-commit-horizontal',\n    icon: GitCommitHorizontalIcon,\n    keywords: [\n      'code',\n      'open',\n      'version control ',\n      'waypoint',\n      'stop',\n      'station',\n    ],\n  },\n  {\n    name: 'waypoints',\n    icon: WaypointsIcon,\n    keywords: [\n      'indirection',\n      'vpn',\n      'virtual private network',\n      'proxy',\n      'connections',\n      'bounce',\n      'reroute',\n      'path',\n      'journey',\n      'planner',\n      'stops',\n      'stations',\n      'shared',\n      'spread',\n      'vira',\n    ],\n  },\n  {\n    name: 'ship',\n    icon: ShipIcon,\n    keywords: [\n      'boat',\n      'vessel',\n      'sea',\n      'ocean',\n      'water',\n      'transport',\n      'knots',\n      'nautical mile',\n      'maritime',\n      'sailing',\n      'yacht',\n      'cruise',\n      'ocean liner',\n      'tanker',\n      'vessel',\n      'navy',\n      'trip',\n    ],\n  },\n  {\n    name: 'roller-coaster',\n    icon: RollerCoasterIcon,\n    keywords: [\n      'ride',\n      'fun',\n      'amusement',\n      'park',\n      'thrill',\n      'excitement',\n      'attraction',\n      'entertainment',\n      'amusement park',\n      'theme park',\n      'funfair',\n    ],\n  },\n  {\n    name: 'drum',\n    icon: DrumIcon,\n    keywords: ['music', 'instrument', 'percussion', 'beat', 'rhythm', 'sound'],\n  },\n  {\n    name: 'train-track',\n    icon: TrainTrackIcon,\n    keywords: ['railway', 'track', 'train', 'transport', 'travel', 'line'],\n  },\n  {\n    name: 'webhook',\n    icon: WebhookIcon,\n    keywords: [\n      'api',\n      'integration',\n      'web',\n      'hook',\n      'connect',\n      'link',\n      'push api',\n      'callback',\n    ],\n  },\n  {\n    name: 'rabbit',\n    icon: RabbitIcon,\n    keywords: [\n      'bunny',\n      'hare',\n      'animal',\n      'mammal',\n      'ears',\n      'fluffy',\n      'rodent',\n      'pet',\n      'pest',\n      'bunny',\n      'hare',\n      'fast',\n      'speed',\n      'hop',\n    ],\n  },\n  {\n    name: 'cog',\n    icon: CogIcon,\n    keywords: [\n      'gear',\n      'settings',\n      'preferences',\n      'controls',\n      'computing',\n      'settings',\n      'cog',\n      'edit',\n    ],\n  },\n  {\n    name: 'cpu',\n    icon: CpuIcon,\n    keywords: [\n      'processor',\n      'chip',\n      'computer',\n      'hardware',\n      'central processing unit',\n      'computing',\n      'cores',\n      'technology',\n      'circuit',\n      'memory',\n      'ram',\n      'specs',\n      'gigahertz',\n      'ghz',\n    ],\n  },\n  {\n    name: 'sparkles',\n    icon: SparklesIcon,\n    keywords: ['sparkles', 'sparkle', 'star', 'stars', 'shine', 'shining'],\n  },\n  {\n    name: 'rocket',\n    icon: RocketIcon,\n    keywords: ['launch', 'space', 'boost', 'release', 'version'],\n  },\n  {\n    name: 'activity',\n    icon: ActivityIcon,\n    keywords: [\n      'pulse',\n      'action',\n      'motion/react',\n      'movement',\n      'exercise',\n      'fitness',\n      'healthcare',\n      'heart rate monitor',\n      'vital signs',\n      'vitals',\n      'emergency room',\n      'er',\n      'intensive care',\n      'hospital',\n      'defibrillator',\n      'earthquake',\n      'siesmic',\n      'magnitude',\n      'richter scale',\n      'aftershock',\n      'tremor',\n      'shockwave',\n      'audio',\n      'waveform',\n      'synthesizer',\n      'synthesiser',\n      'music',\n    ],\n  },\n  {\n    name: 'ban',\n    icon: BanIcon,\n    keywords: ['ban', 'stop', 'prevent', 'no'],\n  },\n  {\n    name: 'map-pin',\n    icon: MapPinIcon,\n    keywords: ['map', 'pin', 'marker', 'location', 'address'],\n  },\n  {\n    name: 'map-pin-check-inside',\n    icon: MapPinCheckInsideIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'done',\n      'tick',\n      'complete',\n      'task',\n      'added',\n    ],\n  },\n  {\n    name: 'map-pin-minus-inside',\n    icon: MapPinMinusInsideIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'delete',\n      'remove',\n      'erase',\n    ],\n  },\n  {\n    name: 'map-pin-plus-inside',\n    icon: MapPinPlusInsideIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'add',\n      'create',\n      'new',\n    ],\n  },\n  {\n    name: 'map-pin-off',\n    icon: MapPinOffIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'off',\n      'remove',\n      'non available',\n      'invalid',\n    ],\n  },\n  {\n    name: 'map-pin-check',\n    icon: MapPinCheckIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'done',\n      'tick',\n      'complete',\n      'task',\n      'added',\n    ],\n  },\n  {\n    name: 'map-pin-house',\n    icon: MapPinHouseIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'home',\n      'living',\n      'place',\n      'landmark',\n    ],\n  },\n  {\n    name: 'map-pin-minus',\n    icon: MapPinMinusIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'delete',\n      'remove',\n      'erase',\n    ],\n  },\n  {\n    name: 'map-pin-plus',\n    icon: MapPinPlusIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'add',\n      'create',\n      'new',\n    ],\n  },\n  {\n    name: 'map-pin-x-inside',\n    icon: MapPinXInsideIcon,\n    keywords: [\n      'map',\n      'pin',\n      'marker',\n      'location',\n      'address',\n      'waypoint',\n      'delete',\n      'remove',\n      'erase',\n    ],\n  },\n  {\n    name: 'battery-full',\n    icon: BatteryFullIcon,\n    keywords: ['battery', 'power', 'energy', 'full', 'charge'],\n  },\n  {\n    name: 'terminal',\n    icon: TerminalIcon,\n    keywords: ['terminal', 'console', 'command line', 'shell', 'prompt'],\n  },\n  {\n    name: 'keyboard',\n    icon: KeyboardIcon,\n    keywords: ['keyboard', 'input', 'text', 'type', 'input method'],\n  },\n  {\n    name: 'clap',\n    icon: ClapIcon,\n    keywords: [\n      'clap',\n      'movie',\n      'film',\n      'video',\n      'camera',\n      'cinema',\n      'cut',\n      'action',\n      'television',\n      'tv',\n      'show',\n      'entertainment',\n    ],\n  },\n  {\n    name: 'layout-panel-top',\n    icon: LayoutPanelTopIcon,\n    keywords: [\n      'window',\n      'webpage',\n      'block',\n      'section',\n      'grid',\n      'template',\n      'structure',\n    ],\n  },\n  {\n    name: 'book-text',\n    icon: BookTextIcon,\n    keywords: [\n      'reading',\n      'booklet',\n      'magazine',\n      'leaflet',\n      'pamphlet',\n      'tome',\n      'library',\n    ],\n  },\n  {\n    name: 'shower-head',\n    icon: ShowerHeadIcon,\n    keywords: ['shower', 'bath', 'bathroom', 'amenities', 'services'],\n  },\n  {\n    name: 'telescope',\n    icon: TelescopeIcon,\n    keywords: [\n      'telescope',\n      'astronomy',\n      'space',\n      'discovery',\n      'exploration',\n      'explore',\n      'vision',\n      'perspective',\n      'focus',\n      'stargazing',\n      'observe',\n      'view',\n    ],\n  },\n  {\n    name: 'wind',\n    icon: WindIcon,\n    keywords: ['wind', 'weather', 'air', 'blow'],\n  },\n  {\n    name: 'angry',\n    icon: AngryIcon,\n    keywords: ['mad', 'upset', 'angry', 'furious', 'emotion', 'face'],\n  },\n  {\n    name: 'cctv',\n    icon: CctvIcon,\n    keywords: [\n      'cctv',\n      'camera',\n      'surveillance',\n      'recording',\n      'film',\n      'videotape',\n      'crime',\n      'watching',\n    ],\n  },\n  {\n    name: 'coffee',\n    icon: CoffeeIcon,\n    keywords: [\n      'coffee',\n      'drink',\n      'cup',\n      'mug',\n      'tea',\n      'cafe',\n      'hot',\n      'beverage',\n    ],\n  },\n  {\n    name: 'arrow-down-a-z',\n    icon: ArrowDownAZIcon,\n    keywords: [\n      'filter',\n      'sort',\n      'ascending',\n      'descending',\n      'increasing',\n      'decreasing',\n      'rising',\n      'falling',\n      'alphabetical',\n    ],\n  },\n  {\n    name: 'arrow-down-z-a',\n    icon: ArrowDownZAIcon,\n    keywords: [\n      'filter',\n      'sort',\n      'ascending',\n      'descending',\n      'increasing',\n      'decreasing',\n      'rising',\n      'falling',\n      'alphabetical',\n    ],\n  },\n  {\n    name: 'arrow-down-0-1',\n    icon: ArrowDown01con,\n    keywords: [\n      'filter',\n      'sort',\n      'ascending',\n      'descending',\n      'increasing',\n      'decreasing',\n      'rising',\n      'falling',\n      'numerical',\n    ],\n  },\n  {\n    name: 'arrow-down-1-0',\n    icon: ArrowDown10Icon,\n    keywords: [\n      'filter',\n      'sort',\n      'ascending',\n      'descending',\n      'increasing',\n      'decreasing',\n      'rising',\n      'falling',\n      'numerical',\n    ],\n  },\n  {\n    name: 'x',\n    icon: XIcon,\n    keywords: ['x', 'close', 'delete', 'remove', 'cancel', 'exit', 'stop'],\n  },\n  {\n    name: 'cast',\n    icon: CastIcon,\n    keywords: ['cast', 'screen', 'chromecast', 'airplay'],\n  },\n  {\n    name: 'upload',\n    icon: UploadIcon,\n    keywords: ['upload', 'send', 'share'],\n  },\n  {\n    name: 'file-cog',\n    icon: FileCogIcon,\n    keywords: ['file', 'cog', 'settings', 'preferences', 'controls'],\n  },\n  {\n    name: 'calendar-days',\n    icon: CalendarDaysIcon,\n    keywords: ['calendar', 'days', 'days of the week', 'week', 'month'],\n  },\n  {\n    name: 'chart-line',\n    icon: ChartLineIcon,\n    keywords: ['chart', 'line', 'increasing', 'linechart', 'chartline'],\n  },\n  {\n    name: 'file-chart-line',\n    icon: FileChartLineIcon,\n    keywords: [\n      'file',\n      'chart',\n      'line',\n      'increasing',\n      'filechartline',\n      'filechartline',\n    ],\n  },\n  {\n    name: 'chart-no-axes-column-increasing',\n    icon: ChartNoAxesColumnIncreasingIcon,\n    keywords: ['chart', 'column', 'increasing', 'chartnoaxes'],\n  },\n  {\n    name: 'chart-no-axes-column-decreasing',\n    icon: ChartNoAxesColumnDecreasingIcon,\n    keywords: ['chart', 'column', 'decreasing', 'chartnoaxes'],\n  },\n  {\n    name: 'radio',\n    icon: RadioIcon,\n    keywords: [\n      'radio',\n      'signal',\n      'broadcast',\n      'wireless',\n      'frequency',\n      'connectivity',\n      'live',\n    ],\n  },\n  {\n    name: 'radio-tower',\n    icon: RadioTowerIcon,\n    keywords: [\n      'radio',\n      'tower',\n      'radio tower',\n      'signal',\n      'broadcast',\n      'wireless',\n      'frequency',\n      'connectivity',\n      'live',\n    ],\n  },\n  {\n    name: 'blocks',\n    icon: BlocksIcon,\n    keywords: [\n      'block',\n      'blocks',\n      'addon',\n      'plugin',\n      'integration',\n      'extension',\n      'package',\n      'build',\n      'stack',\n      'toys',\n      'kids',\n      'children',\n      'learning',\n    ],\n  },\n  {\n    name: 'calendar-check',\n    icon: CalendarCheckIcon,\n    keywords: [\n      'calendar',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'calendar-check-2',\n    icon: CalendarCheck2Icon,\n    keywords: [\n      'calendar',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'file-check',\n    icon: FileCheckIcon,\n    keywords: [\n      'file',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'document',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'file-check-2',\n    icon: FileCheck2Icon,\n    keywords: [\n      'file',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'document',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'mail-check',\n    icon: MailCheckIcon,\n    keywords: [\n      'mail',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'email',\n      'confirm',\n      'complete',\n      'delivered',\n      'message',\n      'sent',\n    ],\n  },\n  {\n    name: 'monitor-check',\n    icon: MonitorCheckIcon,\n    keywords: [\n      'monitor',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n      'tv',\n      'screen',\n      'display',\n      'desktop',\n      'running',\n      'active',\n      'virtual machine',\n      'vm',\n    ],\n  },\n  {\n    name: 'laptop-minimal-check',\n    icon: LaptopMinimalCheckIcon,\n    keywords: [\n      'laptop',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n      'computer',\n      'laptop',\n      'running',\n      'active',\n      'virtual machine',\n      'vm',\n    ],\n  },\n  {\n    name: 'gallery-horizontal-end',\n    icon: GalleryHorizontalEndIcon,\n    keywords: [\n      'gallery',\n      'horizontal',\n      'end',\n      'last',\n      'carousel',\n      'pictures',\n      'images',\n      'scroll',\n      'swipe',\n      'album',\n      'portfolio',\n      'history',\n      'versions',\n      'backup',\n      'time machine',\n    ],\n  },\n  {\n    name: 'gallery-vertical-end',\n    icon: GalleryVerticalEndIcon,\n    keywords: [\n      'carousel',\n      'pictures',\n      'images',\n      'scroll',\n      'swipe',\n      'album',\n      'portfolio',\n      'history',\n      'versions',\n      'backup',\n      'time machine',\n    ],\n  },\n  {\n    name: 'hand-heart',\n    icon: HandHeartIcon,\n    keywords: [\n      'hand',\n      'heart',\n      'love',\n      'affection',\n      'hug',\n      'cuddle',\n      'emotion',\n    ],\n  },\n  {\n    name: 'gallery-thumbnails',\n    icon: GalleryThumbnailsIcon,\n    keywords: [\n      'gallery',\n      'thumbnails',\n      'images',\n      'carousel',\n      'pictures',\n      'album',\n      'portfolio',\n      'preview',\n    ],\n  },\n  {\n    name: 'user-check',\n    icon: UserCheckIcon,\n    keywords: [\n      'user',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'user-round-check',\n    icon: UserRoundCheckIcon,\n    keywords: [\n      'user',\n      'check',\n      'checkmark',\n      'tick',\n      'done',\n      'confirm',\n      'complete',\n    ],\n  },\n  {\n    name: 'boxes',\n    icon: BoxesIcon,\n    keywords: ['boxes', 'box', 'container', 'package', 'shipping'],\n  },\n  {\n    name: 'file-text',\n    icon: FileTextIcon,\n    keywords: ['file', 'text', 'document', 'document', 'document'],\n  },\n  {\n    name: 'user-round-plus',\n    icon: UserRoundPlusIcon,\n    keywords: [\n      'user',\n      'plus',\n      'add',\n      'create',\n      'new'\n    ],\n  },\n  {\n    name: 'panel-left-open',\n    icon: PanelLeftOpenIcon,\n    keywords: [\n      'panel',\n      'left',\n      'open',\n      'menu',\n      'navigation'\n    ],\n  },\n  {\n    name: 'panel-left-close',\n    icon: PanelLeftCloseIcon,\n    keywords: [\n      'panel',\n      'left',\n      'close',\n      'menu',\n      'navigation'\n    ],\n  },\n  {\n    name: 'panel-right-open',\n    icon: PanelRightOpenIcon,\n    keywords: [\n      'panel',\n      'right',\n      'open',\n      'menu',\n      'navigation'\n    ],\n  },\n];\n\nexport { ICON_LIST };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/alarm-clock.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AlarmClockIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AlarmClockIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t\tx: 0,\n\t\ttransition: {\n\t\t\tduration: 0.2,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n\tanimate: {\n\t\ty: -1.5,\n\t\tx: [-1, 1, -1, 1, -1, 0],\n\t\ttransition: {\n\t\t\ty: {\n\t\t\t\tduration: 0.2,\n\t\t\t\ttype: \"spring\",\n\t\t\t\tstiffness: 200,\n\t\t\t\tdamping: 25,\n\t\t\t},\n\t\t\tx: {\n\t\t\t\tduration: 0.3,\n\t\t\t\trepeat: Infinity,\n\t\t\t\tease: \"linear\",\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst secondaryPathVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t\tx: 0,\n\t\ttransition: {\n\t\t\tduration: 0.2,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n\tanimate: {\n\t\ty: -2.5,\n\t\tx: [-2, 2, -2, 2, -2, 0],\n\t\ttransition: {\n\t\t\ty: {\n\t\t\t\tduration: 0.2,\n\t\t\t\ttype: \"spring\",\n\t\t\t\tstiffness: 200,\n\t\t\t\tdamping: 25,\n\t\t\t},\n\t\t\tx: {\n\t\t\t\tduration: 0.3,\n\t\t\t\trepeat: Infinity,\n\t\t\t\tease: \"linear\",\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst AlarmClockIcon = forwardRef<AlarmClockIconHandle, AlarmClockIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M18 20.5L19.5 22\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M6 20.5L4.5 22\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M21 13C21 17.968 16.968 22 12 22C7.032 22 3 17.968 3 13C3 8.032 7.032 4 12 4C16.968 4 21 8.032 21 13Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M15.339 15.862L12.549 14.197C12.063 13.909 11.667 13.216 11.667 12.649V8.95898\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={secondaryPathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M18 2L21.747 5.31064\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={secondaryPathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M6 2L2.25304 5.31064\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAlarmClockIcon.displayName = \"AlarmClockIcon\";\n\nexport { AlarmClockIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/align-center.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface AlignCenterIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface AlignCenterIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst AlignCenterIcon = forwardRef<AlignCenterIconHandle, AlignCenterIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M17 12H7\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: 0 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\ttranslateX: [0, 3, -3, 2, -2, 0],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tease: \"linear\",\r\n\t\t\t\t\t\t\t\t\ttranslateX: {\r\n\t\t\t\t\t\t\t\t\t\tduration: 1,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"M19 18H5\" />\r\n\t\t\t\t\t<path d=\"M21 6H3\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nAlignCenterIcon.displayName = \"AlignCenterIcon\";\r\n\r\nexport { AlignCenterIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/align-horizontal.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AlignHorizontalIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AlignHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 160,\n\tdamping: 17,\n\tmass: 1,\n};\n\nconst AlignHorizontalIcon = forwardRef<\n\tAlignHorizontalIconHandle,\n\tAlignHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.rect\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { scaleX: 1 },\n\t\t\t\t\t\tanimate: { scaleX: 0.85 },\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\twidth=\"6\"\n\t\t\t\t\theight=\"10\"\n\t\t\t\t\tx=\"9\"\n\t\t\t\t\ty=\"7\"\n\t\t\t\t\trx=\"2\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M4 22V2\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateX: 0, scaleY: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateX: 2,\n\t\t\t\t\t\t\tscaleY: 0.9,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M20 22V2\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateX: 0, scaleY: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateX: -2,\n\t\t\t\t\t\t\tscaleY: 0.9,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nAlignHorizontalIcon.displayName = \"AlignHorizontalIcon\";\n\nexport { AlignHorizontalIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/align-vertical.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AlignVerticalIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AlignVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 160,\n\tdamping: 17,\n\tmass: 1,\n};\n\nconst AlignVerticalIcon = forwardRef<\n\tAlignVerticalIconHandle,\n\tAlignVerticalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.rect\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { scaleY: 1 },\n\t\t\t\t\t\tanimate: { scaleY: 0.8 },\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\twidth=\"10\"\n\t\t\t\t\theight=\"6\"\n\t\t\t\t\tx=\"7\"\n\t\t\t\t\ty=\"9\"\n\t\t\t\t\trx=\"2\"\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateY: 0, scaleX: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateY: -2,\n\t\t\t\t\t\t\tscaleX: 0.9,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\td=\"M22 20H2\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateY: 0, scaleX: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateY: 2,\n\t\t\t\t\t\t\tscaleX: 0.9,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\td=\"M22 4H2\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nAlignVerticalIcon.displayName = \"AlignVerticalIcon\";\n\nexport { AlignVerticalIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/angry.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface AngryIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface AngryIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst EYEBROW_ROTATION = 20;\r\nconst DURATION = 0.6;\r\n\r\nconst pathVariantsFace: Variants = {\r\n\tnormal: { scale: 1, rotate: 0 },\r\n\tanimate: {\r\n\t\tscale: [1, 1.2, 1.2, 1.2, 1],\r\n\t\trotate: [0, -3, 3, -1, 1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: DURATION,\r\n\t\t\ttimes: [0, 0.2, 0.4, 0.6, 1],\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariantsLeftEyebrow: Variants = {\r\n\tnormal: { rotate: 0 },\r\n\tanimate: {\r\n\t\trotate: [0, EYEBROW_ROTATION, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: DURATION + 0.2,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariantsRightEyebrow: Variants = {\r\n\tnormal: { rotate: 0 },\r\n\tanimate: {\r\n\t\trotate: [0, -EYEBROW_ROTATION, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: DURATION + 0.2,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariantsEye: Variants = {\r\n\tnormal: { scale: 1 },\r\n\tanimate: {\r\n\t\tscale: [1, 1.2, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: DURATION,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariantsMouth: Variants = {\r\n\tnormal: { translateY: 0 },\r\n\tanimate: {\r\n\t\ttranslateY: [0, -0.5, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: DURATION,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst AngryIcon = forwardRef<AngryIconHandle, AngryIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tvariants={pathVariantsFace}\r\n\t\t\t\t>\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariantsMouth}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M16 16s-1.5-2-4-2-4 2-4 2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariantsLeftEyebrow}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M7.5 8 10 9\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariantsRightEyebrow}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"m14 9 2.5-1\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariantsEye}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M9 10h.01\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariantsEye}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M15 10h.01\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nAngryIcon.displayName = \"AngryIcon\";\r\n\r\nexport { AngryIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/archive.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArchiveIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArchiveIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst rectVariants: Variants = {\n\tnormal: {\n\t\ttranslateY: 0,\n\t\ttransition: {\n\t\t\tduration: 0.2,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n\tanimate: {\n\t\ttranslateY: -1.5,\n\t\ttransition: {\n\t\t\tduration: 0.2,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n};\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\" },\n\tanimate: { d: \"M4 11v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V11\" },\n};\n\nconst secondaryPathVariants: Variants = {\n\tnormal: { d: \"M10 12h4\" },\n\tanimate: { d: \"M10 15h4\" },\n};\n\nconst ArchiveIcon = forwardRef<ArchiveIconHandle, ArchiveIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\theight=\"5\"\n\t\t\t\t\t\tx=\"2\"\n\t\t\t\t\t\ty=\"3\"\n\t\t\t\t\t\trx=\"1\"\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={rectVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M10 12h4\"\n\t\t\t\t\t\tvariants={secondaryPathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nArchiveIcon.displayName = \"ArchiveIcon\";\n\nexport { ArchiveIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"m12 19-7-7 7-7\", translateX: 0 },\n\tanimate: {\n\t\td: \"m12 19-7-7 7-7\",\n\t\ttranslateX: [0, 3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst secondPathVariants: Variants = {\n\tnormal: { d: \"M19 12H5\" },\n\tanimate: {\n\t\td: [\"M19 12H5\", \"M19 12H10\", \"M19 12H5\"],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowLeftIcon = forwardRef<ArrowLeftIconHandle, ArrowLeftIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m12 19-7-7 7-7\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M19 12H5\"\n\t\t\t\t\t\tvariants={secondPathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nArrowLeftIcon.displayName = \"ArrowLeftIcon\";\n\nexport { ArrowLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-right.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowRightIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M5 12h14\" },\n\tanimate: {\n\t\td: [\"M5 12h14\", \"M5 12h9\", \"M5 12h14\"],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst secondaryPathVariants: Variants = {\n\tnormal: { d: \"m12 5 7 7-7 7\", translateX: 0 },\n\tanimate: {\n\t\td: \"m12 5 7 7-7 7\",\n\t\ttranslateX: [0, -3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowRightIcon = forwardRef<ArrowRightIconHandle, ArrowRightIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5 12h14\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m12 5 7 7-7 7\"\n\t\t\t\t\t\tvariants={secondaryPathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nArrowRightIcon.displayName = \"ArrowRightIcon\";\n\nexport { ArrowRightIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/at-sign.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AtSignIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AtSignIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst AtSignIcon = forwardRef<AtSignIconHandle, AtSignIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\tr=\"4\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAtSignIcon.displayName = \"AtSignIcon\";\n\nexport { AtSignIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/attach-file.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AttachFileIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AttachFileIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.1,\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1, delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst AttachFileIcon = forwardRef<AttachFileIconHandle, AttachFileIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M6 7.90909V16C6 19.3137 8.68629 22 12 22V22C15.3137 22 18 19.3137 18 16V6C18 3.79086 16.2091 2 14 2V2C11.7909 2 10 3.79086 10 6V15.1818C10 16.2864 10.8954 17.1818 12 17.1818V17.1818C13.1046 17.1818 14 16.2864 14 15.1818V8\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAttachFileIcon.displayName = \"AttachFileIcon\";\n\nexport { AttachFileIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/badge-percent.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface BadgePercentIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface BadgePercentIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\ttransition: {\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 60,\r\n\t\t\tdamping: 10,\r\n\t\t\tduration: 0.5,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\trotate: 180,\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.1,\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 80,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst BadgePercentIcon = forwardRef<\r\n\tBadgePercentIconHandle,\r\n\tBadgePercentIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\"\r\n\t\t\t\t/>\r\n\t\t\t\t<path d=\"m15 9-6 6\" />\r\n\t\t\t\t<path d=\"M9 9h.01\" />\r\n\t\t\t\t<path d=\"M15 15h.01\" />\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nBadgePercentIcon.displayName = \"BadgePercentIcon\";\r\n\r\nexport { BadgePercentIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bell.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BellIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BellIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: { rotate: [0, -10, 10, -10, 0] },\n};\n\nconst BellIcon = forwardRef<BellIconHandle, BellIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\" />\n\t\t\t\t\t<path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBellIcon.displayName = \"BellIcon\";\n\nexport { BellIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bold.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BoldIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BoldIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\tpathOffset: [1, 0],\n\t},\n};\n\nconst BoldIcon = forwardRef<BoldIconHandle, BoldIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\ttransition={{ duration: 0.6 }}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBoldIcon.displayName = \"BoldIcon\";\n\nexport { BoldIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bone.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BoneIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BoneIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: {\n\t\trotate: [0, -8, 8, -6, 0],\n\t\ttransition: {\n\t\t\tease: \"circIn\",\n\t\t\trotate: {\n\t\t\t\tduration: 0.5,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst BoneIcon = forwardRef<BoneIconHandle, BoneIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M17 10c.7-.7 1.69 0 2.5 0a2.5 2.5 0 1 0 0-5 .5.5 0 0 1-.5-.5 2.5 2.5 0 1 0-5 0c0 .81.7 1.8 0 2.5l-7 7c-.7.7-1.69 0-2.5 0a2.5 2.5 0 0 0 0 5c.28 0 .5.22.5.5a2.5 2.5 0 1 0 5 0c0-.81-.7-1.8 0-2.5Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBoneIcon.displayName = \"BoneIcon\";\n\nexport { BoneIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/calendar-cog.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CalendarCogIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CalendarCogIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst gVariants: Variants = {\r\n\tnormal: { rotate: 0 },\r\n\tanimate: { rotate: 180 },\r\n};\r\n\r\nconst CalendarCogIcon = forwardRef<CalendarCogIconHandle, CalendarCogIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M21 10.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6\" />\r\n\t\t\t\t\t<path d=\"M16 2v4\" />\r\n\t\t\t\t\t<path d=\"M3 10h18\" />\r\n\t\t\t\t\t<path d=\"M8 2v4\" />\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 50, damping: 10 }}\r\n\t\t\t\t\t\tvariants={gVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"m15.2 16.9-.9-.4\" />\r\n\t\t\t\t\t\t<path d=\"m15.2 19.1-.9.4\" />\r\n\t\t\t\t\t\t<path d=\"m16.9 15.2-.4-.9\" />\r\n\t\t\t\t\t\t<path d=\"m16.9 20.8-.4.9\" />\r\n\t\t\t\t\t\t<path d=\"m19.5 14.3-.4.9\" />\r\n\t\t\t\t\t\t<path d=\"m19.5 21.7-.4-.9\" />\r\n\t\t\t\t\t\t<path d=\"m21.7 16.5-.9.4\" />\r\n\t\t\t\t\t\t<path d=\"m21.7 19.5-.9-.4\" />\r\n\t\t\t\t\t\t<circle cx=\"18\" cy=\"18\" r=\"3\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCalendarCogIcon.displayName = \"CalendarCogIcon\";\r\n\r\nexport { CalendarCogIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-pie.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ChartPieIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChartPieIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { translateX: 0, translateY: 0 },\r\n\tanimate: { translateX: 1.1, translateY: -1.1 },\r\n};\r\n\r\nconst ChartPieIcon = forwardRef<ChartPieIconHandle, ChartPieIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z\"\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\ttype: \"spring\",\r\n\t\t\t\t\t\t\tstiffness: 250,\r\n\t\t\t\t\t\t\tdamping: 15,\r\n\t\t\t\t\t\t\tbounce: 0.6,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"M21.21 15.89A10 10 0 1 1 8 2.83\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nChartPieIcon.displayName = \"ChartPieIcon\";\r\n\r\nexport { ChartPieIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-scatter.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation, type Variants } from \"motion/react\";\r\n\r\nexport interface ChartScatterIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChartScatterIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst dotVariants: Variants = {\r\n\tvisible: (i: number) => ({\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tdelay: i * 0.15,\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t}),\r\n\thidden: {\r\n\t\topacity: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.2,\r\n\t\t},\r\n\t},\r\n\tdefault: { opacity: 1 },\r\n};\r\n\r\nconst ChartScatterIcon = forwardRef<\r\n\tChartScatterIconHandle,\r\n\tChartScatterIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: async () => {\r\n\t\t\t\tawait controls.start(\"hidden\");\r\n\t\t\t\tawait controls.start(\"visible\");\r\n\t\t\t},\r\n\t\t\tstopAnimation: async () => controls.start(\"default\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tawait controls.start(\"hidden\");\r\n\t\t\t\tawait controls.start(\"visible\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tawait controls.start(\"default\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\tinitial=\"default\"\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"7.5\"\r\n\t\t\t\t\tcy=\"7.5\"\r\n\t\t\t\t\tr=\".5\"\r\n\t\t\t\t\tvariants={dotVariants}\r\n\t\t\t\t\tcustom={0}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"18.5\"\r\n\t\t\t\t\tcy=\"5.5\"\r\n\t\t\t\t\tr=\".5\"\r\n\t\t\t\t\tvariants={dotVariants}\r\n\t\t\t\t\tcustom={1}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"11.5\"\r\n\t\t\t\t\tcy=\"11.5\"\r\n\t\t\t\t\tr=\".5\"\r\n\t\t\t\t\tvariants={dotVariants}\r\n\t\t\t\t\tcustom={2}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"7.5\"\r\n\t\t\t\t\tcy=\"16.5\"\r\n\t\t\t\t\tr=\".5\"\r\n\t\t\t\t\tvariants={dotVariants}\r\n\t\t\t\t\tcustom={3}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"17.5\"\r\n\t\t\t\t\tcy=\"14.5\"\r\n\t\t\t\t\tr=\".5\"\r\n\t\t\t\t\tvariants={dotVariants}\r\n\t\t\t\t\tcustom={4}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t/>\r\n\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" strokeWidth=\"2\" />\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nChartScatterIcon.displayName = \"ChartScatterIcon\";\r\n\r\nexport { ChartScatterIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CircleCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CircleCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst CircleCheckIcon = forwardRef<CircleCheckIconHandle, CircleCheckIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"m9 12 2 2 4-4\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCircleCheckIcon.displayName = \"CircleCheckIcon\";\r\n\r\nexport { CircleCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-dollar-sign.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CircleDollarSignIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CircleDollarSignIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dollarMainVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst dollarSecondaryVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tdelay: 0.5,\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1, delay: 0.5 },\n\t\t},\n\t},\n};\n\nconst CircleDollarSignIcon = forwardRef<\n\tCircleDollarSignIconHandle,\n\tCircleDollarSignIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8\"\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={dollarMainVariants}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 18V6\"\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={dollarSecondaryVariants}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCircleDollarSignIcon.displayName = \"CircleDollarSignIcon\";\n\nexport { CircleDollarSignIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/clock.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ClockIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ClockIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst handTransition: Transition = {\n\tduration: 0.6,\n\tease: [0.4, 0, 0.2, 1],\n};\n\nconst handVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\toriginX: \"50%\",\n\t\toriginY: \"50%\",\n\t},\n\tanimate: {\n\t\trotate: 360,\n\t},\n};\n\nconst minuteHandTransition: Transition = {\n\tduration: 0.5,\n\tease: \"easeInOut\",\n};\n\nconst minuteHandVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\toriginX: \"50%\",\n\t\toriginY: \"50%\",\n\t},\n\tanimate: {\n\t\trotate: 45,\n\t},\n};\n\nconst ClockIcon = forwardRef<ClockIconHandle, ClockIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"12\"\n\t\t\t\t\t\ty1=\"12\"\n\t\t\t\t\t\tx2=\"12\"\n\t\t\t\t\t\ty2=\"6\"\n\t\t\t\t\t\tvariants={handVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\ttransition={handTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"12\"\n\t\t\t\t\t\ty1=\"12\"\n\t\t\t\t\t\tx2=\"16\"\n\t\t\t\t\t\ty2=\"12\"\n\t\t\t\t\t\tvariants={minuteHandVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\ttransition={minuteHandTransition}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nClockIcon.displayName = \"ClockIcon\";\n\nexport { ClockIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/copy.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CopyIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CopyIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 160,\n\tdamping: 17,\n\tmass: 1,\n};\n\nconst CopyIcon = forwardRef<CopyIconHandle, CopyIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\twidth=\"14\"\n\t\t\t\t\t\theight=\"14\"\n\t\t\t\t\t\tx=\"8\"\n\t\t\t\t\t\ty=\"8\"\n\t\t\t\t\t\trx=\"2\"\n\t\t\t\t\t\try=\"2\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateY: 0, translateX: 0 },\n\t\t\t\t\t\t\tanimate: { translateY: -3, translateX: -3 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { x: 0, y: 0 },\n\t\t\t\t\t\t\tanimate: { x: 3, y: 3 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCopyIcon.displayName = \"CopyIcon\";\n\nexport { CopyIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cursor-click.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CursorClickIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CursorClickIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst cursorVariants: Variants = {\n\tinitial: { x: 0, y: 0 },\n\thover: {\n\t\tx: [0, 0, -3, 0],\n\t\ty: [0, -4, 0, 0],\n\t\ttransition: {\n\t\t\tduration: 1,\n\t\t\tbounce: 0.3,\n\t\t},\n\t},\n};\n\nconst lineVariants: Variants = {\n\tinitial: { opacity: 1, x: 0, y: 0 },\n\tspread: (custom: { x: number; y: number }) => ({\n\t\topacity: [0, 1, 0, 0, 0, 0, 1],\n\t\tx: [0, custom.x, 0, 0],\n\t\ty: [0, custom.y, 0, 0],\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 70,\n\t\t\tdamping: 10,\n\t\t\tmass: 0.4,\n\t\t},\n\t}),\n};\n\nconst CursorClickIcon = forwardRef<CursorClickIconHandle, CursorClickIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst clickControls = useAnimation();\n\t\tconst cursorControls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tcursorControls.start(\"hover\");\n\t\t\t\t\tclickControls.start(\"spread\", { delay: 1.3 });\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tcursorControls.start(\"initial\");\n\t\t\t\t\tclickControls.start(\"initial\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcursorControls.start(\"hover\");\n\t\t\t\t\tclickControls.start(\"spread\", { delay: 1.3 });\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[clickControls, cursorControls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcursorControls.start(\"initial\");\n\t\t\t\t\tclickControls.start(\"initial\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[cursorControls, clickControls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z\"\n\t\t\t\t\t\tvariants={cursorVariants}\n\t\t\t\t\t\tanimate={cursorControls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M14 4.1 12 6\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={clickControls}\n\t\t\t\t\t\tcustom={{ x: 1, y: -1 }}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m5.1 8-2.9-.8\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={clickControls}\n\t\t\t\t\t\tcustom={{ x: -1, y: 0 }}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m6 12-1.9 2\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={clickControls}\n\t\t\t\t\t\tcustom={{ x: -1, y: 1 }}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7.2 2.2 8 5.1\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={clickControls}\n\t\t\t\t\t\tcustom={{ x: 0, y: -1 }}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCursorClickIcon.displayName = \"CursorClickIcon\";\n\nexport { CursorClickIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/delete.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface DeleteIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface DeleteIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lidVariants: Variants = {\n\tnormal: { y: 0 },\n\tanimate: { y: -1.1 },\n};\n\nconst springTransition = {\n\ttype: \"spring\",\n\tstiffness: 500,\n\tdamping: 30,\n};\n\nconst DeleteIcon = forwardRef<DeleteIconHandle, DeleteIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={lidVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={springTransition}\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M3 6h18\" />\n\t\t\t\t\t\t<path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { d: \"M19 8v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V8\" },\n\t\t\t\t\t\t\tanimate: { d: \"M19 9v12c0 1-1 2-2 2H7c-1 0-2-1-2-2V9\" },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={springTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"10\"\n\t\t\t\t\t\tx2=\"10\"\n\t\t\t\t\t\ty1=\"11\"\n\t\t\t\t\t\ty2=\"17\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { y1: 11, y2: 17 },\n\t\t\t\t\t\t\tanimate: { y1: 11.5, y2: 17.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={springTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"14\"\n\t\t\t\t\t\tx2=\"14\"\n\t\t\t\t\t\ty1=\"11\"\n\t\t\t\t\t\ty2=\"17\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { y1: 11, y2: 17 },\n\t\t\t\t\t\t\tanimate: { y1: 11.5, y2: 17.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={springTransition}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDeleteIcon.displayName = \"DeleteIcon\";\n\nexport { DeleteIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/download.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface DownloadIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface DownloadIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: { y: 0 },\r\n\tanimate: {\r\n\t\ty: 2,\r\n\t\ttransition: {\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 10,\r\n\t\t\tmass: 1,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst DownloadIcon = forwardRef<DownloadIconHandle, DownloadIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n\t\t\t\t\t<motion.g variants={arrowVariants} animate={controls}>\r\n\t\t\t\t\t\t<polyline points=\"7 10 12 15 17 10\" />\r\n\t\t\t\t\t\t<line x1=\"12\" x2=\"12\" y1=\"15\" y2=\"3\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nDownloadIcon.displayName = \"DownloadIcon\";\r\n\r\nexport { DownloadIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/downvote.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface DownvoteIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface DownvoteIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst DownvoteIcon = forwardRef<DownvoteIconHandle, DownvoteIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\ttranslateX: \"0px\",\n\t\t\t\t\t\t\ttranslateY: \"0px\",\n\t\t\t\t\t\t\trotate: \"0deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateX: \"-1px\",\n\t\t\t\t\t\t\ttranslateY: \"2px\",\n\t\t\t\t\t\t\trotate: \"-12deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M17 14V2\" />\n\t\t\t\t\t<path d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDownvoteIcon.displayName = \"DownvoteIcon\";\n\nexport { DownvoteIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-pen.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SquarePenIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SquarePenIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst penVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\tx: 0,\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\trotate: [-0.5, 0.5, -0.5],\n\t\tx: [0, -1, 1.5, 0],\n\t\ty: [0, 1.5, -1, 0],\n\t},\n};\n\nconst SquarePenIcon = forwardRef<SquarePenIconHandle, SquarePenIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z\"\n\t\t\t\t\t\tvariants={penVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSquarePenIcon.displayName = \"SquarePenIcon\";\n\nexport { SquarePenIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/expand.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ExpandIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ExpandIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 250,\r\n\tdamping: 25,\r\n};\r\n\r\nconst ExpandIcon = forwardRef<ExpandIconHandle, ExpandIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m21 21-6-6m6 6v-4.8m0 4.8h-4.8\"\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: \"0%\", translateY: \"0%\" },\r\n\t\t\t\t\t\t\tanimate: { translateX: \"2px\", translateY: \"2px\" },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M3 16.2V21m0 0h4.8M3 21l6-6\"\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: \"0%\", translateY: \"0%\" },\r\n\t\t\t\t\t\t\tanimate: { translateX: \"-2px\", translateY: \"2px\" },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M21 7.8V3m0 0h-4.8M21 3l-6 6\"\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: \"0%\", translateY: \"0%\" },\r\n\t\t\t\t\t\t\tanimate: { translateX: \"2px\", translateY: \"-2px\" },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M3 7.8V3m0 0h4.8M3 3l6 6\"\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: \"0%\", translateY: \"0%\" },\r\n\t\t\t\t\t\t\tanimate: { translateX: \"-2px\", translateY: \"-2px\" },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nExpandIcon.displayName = \"ExpandIcon\";\r\n\r\nexport { ExpandIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-pen-line.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FilePenLineIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FilePenLineIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst penVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\tx: 0,\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\trotate: [-0.3, 0.2, -0.4],\n\t\tx: [0, -0.5, 1, 0],\n\t\ty: [0, 1, -0.5, 0],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\trepeat: 1,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst FilePenLineIcon = forwardRef<FilePenLineIconHandle, FilePenLineIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"m18 5-2.414-2.414A2 2 0 0 0 14.172 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M21.378 12.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={penVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M8 18h1\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { d: \"M8 18h1\" },\n\t\t\t\t\t\t\tanimate: { d: \"M8 18h5\" },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{ duration: 0.5 }}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFilePenLineIcon.displayName = \"FilePenLineIcon\";\n\nexport { FilePenLineIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-stack.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FileStackIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FileStackIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst FileStackIcon = forwardRef<FileStackIconHandle, FileStackIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M21 7h-3a2 2 0 0 1-2-2V2\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: -4, translateY: 4 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M21 6v6.5c0 .8-.7 1.5-1.5 1.5h-7c-.8 0-1.5-.7-1.5-1.5v-9c0-.8.7-1.5 1.5-1.5H17Z\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: -4, translateY: 4 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<path d=\"M7 8v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H15\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M3 12v8.8c0 .3.2.6.4.8.2.2.5.4.8.4H11\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: 4, translateY: -4 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFileStackIcon.displayName = \"FileStackIcon\";\n\nexport { FileStackIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/fingerprint.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FingerprintIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FingerprintIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1 },\n\tanimate: {\n\t\topacity: [0, 0, 1, 1, 1],\n\t\tpathLength: [0.1, 0.3, 0.5, 0.7, 0.9, 1],\n\t\ttransition: {\n\t\t\topacity: { duration: 0.5 },\n\t\t\tpathLength: {\n\t\t\t\tduration: 2,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst FingerprintIcon = forwardRef<FingerprintIconHandle, FingerprintIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 13.12c0 2.38 0 6.38-1 8.88\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M14 13.12c0 2.38 0 6.38-1 8.88\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M2 12a10 10 0 0 1 18-6\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 12a10 10 0 0 1 18-6\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M2 16h.01\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 16h.01\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M21.8 16c.2-2 .131-5.354 0-6\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M21.8 16c.2-2 .131-5.354 0-6\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M8.65 22c.21-.66.45-1.32.57-2\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M8.65 22c.21-.66.45-1.32.57-2\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M9 6.8a6 6 0 0 1 9 5.2v2\"\n\t\t\t\t\t\tstrokeOpacity={0.4}\n\t\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9 6.8a6 6 0 0 1 9 5.2v2\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFingerprintIcon.displayName = \"FingerprintIcon\";\n\nexport { FingerprintIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/frame.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FrameIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FrameIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 160,\n\tdamping: 17,\n\tmass: 1,\n};\n\nconst FrameIcon = forwardRef<FrameIconHandle, FrameIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tanimate: { translateY: -4 },\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tx1={22}\n\t\t\t\t\t\tx2={2}\n\t\t\t\t\t\ty1={6}\n\t\t\t\t\t\ty2={6}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tanimate: { translateY: 4 },\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tx1={22}\n\t\t\t\t\t\tx2={2}\n\t\t\t\t\t\ty1={18}\n\t\t\t\t\t\ty2={18}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tanimate: { translateX: -4 },\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tx1={6}\n\t\t\t\t\t\tx2={6}\n\t\t\t\t\t\ty1={2}\n\t\t\t\t\t\ty2={22}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tanimate: { translateX: 4 },\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tx1={18}\n\t\t\t\t\t\tx2={18}\n\t\t\t\t\t\ty1={2}\n\t\t\t\t\t\ty2={22}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFrameIcon.displayName = \"FrameIcon\";\n\nexport { FrameIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/gauge.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface GaugeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface GaugeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 160,\n\tdamping: 17,\n\tmass: 1,\n};\n\nconst GaugeIcon = forwardRef<GaugeIconHandle, GaugeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m12 14 4-4\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tanimate: { translateX: 0.5, translateY: 3, rotate: 72 },\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<path d=\"M3.34 19a10 10 0 1 1 17.32 0\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nGaugeIcon.displayName = \"GaugeIcon\";\n\nexport { GaugeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/git-pull-request.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GitPullRequestIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GitPullRequestIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst DURATION = 0.3;\r\n\r\nconst calculateDelay = (i: number) => {\r\n\tif (i === 0) return 0.1;\r\n\r\n\treturn i * DURATION + 0.1;\r\n};\r\n\r\nconst GitPullRequestIcon = forwardRef<\r\n\tGitPullRequestIconHandle,\r\n\tGitPullRequestIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"18\"\r\n\t\t\t\t\tcy=\"18\"\r\n\t\t\t\t\tr=\"3\"\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: DURATION,\r\n\t\t\t\t\t\tdelay: calculateDelay(0),\r\n\t\t\t\t\t\topacity: { delay: calculateDelay(0) },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransition: { delay: 0 },\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\topacity: [0, 1],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.circle\r\n\t\t\t\t\tcx=\"6\"\r\n\t\t\t\t\tcy=\"6\"\r\n\t\t\t\t\tr=\"3\"\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: DURATION,\r\n\t\t\t\t\t\tdelay: calculateDelay(2),\r\n\t\t\t\t\t\topacity: { delay: calculateDelay(2) },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransition: { delay: 0 },\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\topacity: [0, 1],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M13 6h3a2 2 0 0 1 2 2v7\"\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: DURATION,\r\n\t\t\t\t\t\tdelay: calculateDelay(1),\r\n\t\t\t\t\t\topacity: { delay: calculateDelay(1) },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\tpathOffset: 0,\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\ttransition: { delay: 0 },\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\topacity: [0, 1],\r\n\t\t\t\t\t\t\tpathOffset: [1, 0],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.line\r\n\t\t\t\t\tx1=\"6\"\r\n\t\t\t\t\tx2=\"6\"\r\n\t\t\t\t\ty1=\"9\"\r\n\t\t\t\t\ty2=\"21\"\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: DURATION,\r\n\t\t\t\t\t\tdelay: calculateDelay(3),\r\n\t\t\t\t\t\topacity: { delay: calculateDelay(3) },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\ttransition: { delay: 0 },\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\topacity: [0, 1],\r\n\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nGitPullRequestIcon.displayName = \"GitPullRequestIcon\";\r\n\r\nexport { GitPullRequestIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/github.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GithubIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GithubIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst bodyVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tscale: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tscale: [0.9, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst tailVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\trotate: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t},\r\n\tdraw: {\r\n\t\tpathLength: [0, 1],\r\n\t\trotate: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t},\r\n\t},\r\n\twag: {\r\n\t\tpathLength: 1,\r\n\t\trotate: [0, -15, 15, -10, 10, -5, 5],\r\n\t\ttransition: {\r\n\t\t\tduration: 2.5,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\trepeat: Infinity,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst GithubIcon = forwardRef<GithubIconHandle, GithubIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst bodyControls = useAnimation();\r\n\t\tconst tailControls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: async () => {\r\n\t\t\t\t\tbodyControls.start(\"animate\");\r\n\t\t\t\t\tawait tailControls.start(\"draw\");\r\n\t\t\t\t\ttailControls.start(\"wag\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => {\r\n\t\t\t\t\tbodyControls.start(\"normal\");\r\n\t\t\t\t\ttailControls.start(\"normal\");\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tbodyControls.start(\"animate\");\r\n\t\t\t\t\tawait tailControls.start(\"draw\");\r\n\t\t\t\t\ttailControls.start(\"wag\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[bodyControls, onMouseEnter, tailControls]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tbodyControls.start(\"normal\");\r\n\t\t\t\t\ttailControls.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[bodyControls, tailControls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={bodyVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={bodyControls}\r\n\t\t\t\t\t\td=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={tailVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={tailControls}\r\n\t\t\t\t\t\td=\"M9 18c-4.51 2-5-2-7-2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nGithubIcon.displayName = \"GithubIcon\";\r\n\r\nexport { GithubIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/grip.tsx",
      "content": "\"use client\";\r\n\r\nimport {\r\n\tforwardRef,\r\n\tuseCallback,\r\n\tuseEffect,\r\n\tuseImperativeHandle,\r\n\tuseRef,\r\n\tuseState,\r\n} from \"react\";\r\nimport type { HTMLAttributes } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { AnimatePresence, motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GripIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GripIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst CIRCLES = [\r\n\t{ cx: 19, cy: 5 }, // Top right\r\n\t{ cx: 12, cy: 5 }, // Top middle\r\n\t{ cx: 19, cy: 12 }, // Middle right\r\n\t{ cx: 5, cy: 5 }, // Top left\r\n\t{ cx: 12, cy: 12 }, // Center\r\n\t{ cx: 19, cy: 19 }, // Bottom right\r\n\t{ cx: 5, cy: 12 }, // Middle left\r\n\t{ cx: 12, cy: 19 }, // Bottom middle\r\n\t{ cx: 5, cy: 19 }, // Bottom left\r\n];\r\n\r\nconst GripIcon = forwardRef<GripIconHandle, GripIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst [isHovered, setIsHovered] = useState(false);\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: async () => setIsHovered(true),\r\n\t\t\t\tstopAnimation: () => setIsHovered(false),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tsetIsHovered(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tsetIsHovered(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[onMouseLeave]\r\n\t\t);\r\n\r\n\t\tuseEffect(() => {\r\n\t\t\tconst animateCircles = async () => {\r\n\t\t\t\tif (isHovered) {\r\n\t\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\t\topacity: 0.3,\r\n\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\tdelay: i * 0.1,\r\n\t\t\t\t\t\t\tduration: 0.2,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}));\r\n\t\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\tdelay: i * 0.1,\r\n\t\t\t\t\t\t\tduration: 0.2,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}));\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tanimateCircles();\r\n\t\t}, [isHovered, controls]);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<AnimatePresence>\r\n\t\t\t\t\t\t{CIRCLES.map((circle, index) => (\r\n\t\t\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\t\t\tkey={`${circle.cx}-${circle.cy}`}\r\n\t\t\t\t\t\t\t\tcx={circle.cx}\r\n\t\t\t\t\t\t\t\tcy={circle.cy}\r\n\t\t\t\t\t\t\t\tr=\"1\"\r\n\t\t\t\t\t\t\t\tinitial=\"initial\"\r\n\t\t\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\t\t\tinitial: {\r\n\t\t\t\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\t\t\texit=\"initial\"\r\n\t\t\t\t\t\t\t\tcustom={index}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</AnimatePresence>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nGripIcon.displayName = \"GripIcon\";\r\n\r\nexport { GripIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/hand-coins.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface HandCoinsIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface HandCoinsIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\ttranslateY: 0,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\topacity: { duration: 0.2 },\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 150,\n\t\t\tdamping: 15,\n\t\t\tbounce: 0.8,\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\ttranslateY: [-20, 0],\n\t\ttransition: {\n\t\t\topacity: { duration: 0.2 },\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 150,\n\t\t\tdamping: 15,\n\t\t\tbounce: 0.8,\n\t\t},\n\t},\n};\n\nconst secondCircleVariants: Variants = {\n\tnormal: {\n\t\ttranslateY: 0,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\topacity: { duration: 0.2 },\n\t\t\tdelay: 0.15,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 150,\n\t\t\tdamping: 15,\n\t\t\tbounce: 0.8,\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\ttranslateY: [-20, 0],\n\t\ttransition: {\n\t\t\topacity: { duration: 0.2 },\n\t\t\tdelay: 0.15,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 150,\n\t\t\tdamping: 15,\n\t\t\tbounce: 0.8,\n\t\t},\n\t},\n};\n\nconst HandCoinsIcon = forwardRef<HandCoinsIconHandle, HandCoinsIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17\" />\n\t\t\t\t\t<path d=\"m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" />\n\t\t\t\t\t<path d=\"m2 16 6 6\" />\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"16\"\n\t\t\t\t\t\tcy=\"9\"\n\t\t\t\t\t\tr=\"2.9\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"6\"\n\t\t\t\t\t\tcy=\"5\"\n\t\t\t\t\t\tr=\"3\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={secondCircleVariants}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nHandCoinsIcon.displayName = \"HandCoinsIcon\";\n\nexport { HandCoinsIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/home.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface HomeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface HomeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\tduration: 0.6,\n\topacity: { duration: 0.2 },\n};\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t},\n};\n\nconst HomeIcon = forwardRef<HomeIconHandle, HomeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nHomeIcon.displayName = \"HomeIcon\";\n\nexport { HomeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/heart.tsx",
      "content": "\"use client\";\n\nimport { motion, useAnimation } from \"motion/react\";\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\n\nexport interface HeartIconHandle {\n    startAnimation: () => void;\n    stopAnimation: () => void;\n}\n\ninterface HeartIconProps extends HTMLAttributes<HTMLDivElement> {\n    size?: number;\n}\n\nconst HeartIcon = forwardRef<HeartIconHandle, HeartIconProps>(\n    ({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n        const controls = useAnimation();\n        const isControlledRef = useRef(false);\n\n        useImperativeHandle(ref, () => {\n            isControlledRef.current = true;\n\n            return {\n                startAnimation: () => controls.start(\"animate\"),\n                stopAnimation: () => controls.start(\"normal\"),\n            };\n        });\n\n        const handleMouseEnter = useCallback(\n            (e: React.MouseEvent<HTMLDivElement>) => {\n                if (isControlledRef.current) {\n                    onMouseEnter?.(e);\n                } else {\n                    controls.start(\"animate\");\n                }\n            },\n            [controls, onMouseEnter]\n        );\n\n        const handleMouseLeave = useCallback(\n            (e: React.MouseEvent<HTMLDivElement>) => {\n                if (isControlledRef.current) {\n                    onMouseLeave?.(e);\n                } else {\n                    controls.start(\"normal\");\n                }\n            },\n            [controls, onMouseLeave]\n        );\n\n        return (\n            <div\n                className={cn(className)}\n                onMouseEnter={handleMouseEnter}\n                onMouseLeave={handleMouseLeave}\n                {...props}\n            >\n                <motion.svg\n                    animate={controls}\n                    fill=\"none\"\n                    height={size}\n                    stroke=\"currentColor\"\n                    strokeLinecap=\"round\"\n                    strokeLinejoin=\"round\"\n                    strokeWidth=\"2\"\n                    transition={{\n                        duration: 0.45,\n                        repeat: 2,\n                    }}\n                    variants={{\n                        normal: { scale: 1 },\n                        animate: { scale: [1, 1.08, 1] },\n                    }}\n                    viewBox=\"0 0 24 24\"\n                    width={size}\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                    <path d=\"M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z\" />\n                </motion.svg>\n            </div>\n        );\n    }\n);\n\nHeartIcon.displayName = \"HeartIcon\";\n\nexport { HeartIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/italic.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ItalicIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ItalicIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\tpathOffset: [1, 0],\n\t},\n};\n\nconst ItalicIcon = forwardRef<ItalicIconHandle, ItalicIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tx1=\"19\"\n\t\t\t\t\t\tx2=\"10\"\n\t\t\t\t\t\ty1=\"4\"\n\t\t\t\t\t\ty2=\"4\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tx1=\"14\"\n\t\t\t\t\t\tx2=\"5\"\n\t\t\t\t\t\ty1=\"20\"\n\t\t\t\t\t\ty2=\"20\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tdelay: 0.1,\n\t\t\t\t\t\t\tduration: 0.4,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { pathLength: 1, pathOffset: 0 },\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tx1=\"15\"\n\t\t\t\t\t\tx2=\"9\"\n\t\t\t\t\t\ty1=\"4\"\n\t\t\t\t\t\ty2=\"20\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nItalicIcon.displayName = \"ItalicIcon\";\n\nexport { ItalicIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/languages.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface LanguagesIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface LanguagesIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { opacity: 1, pathLength: 1, pathOffset: 0 },\r\n\tanimate: (custom: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\topacity: { duration: 0.01, delay: custom * 0.1 },\r\n\t\t\tpathLength: {\r\n\t\t\t\ttype: \"spring\",\r\n\t\t\t\tduration: 0.5,\r\n\t\t\t\tbounce: 0,\r\n\t\t\t\tdelay: custom * 0.1,\r\n\t\t\t},\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst svgVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: {\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tstaggerChildren: 0.1,\r\n\t\t\tdelayChildren: 0.2,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst LanguagesIcon = forwardRef<LanguagesIconHandle, LanguagesIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst svgControls = useAnimation();\r\n\t\tconst pathControls = useAnimation();\r\n\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => {\r\n\t\t\t\t\tsvgControls.start(\"animate\");\r\n\t\t\t\t\tpathControls.start(\"animate\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => {\r\n\t\t\t\t\tsvgControls.start(\"normal\");\r\n\t\t\t\t\tpathControls.start(\"normal\");\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tsvgControls.start(\"animate\");\r\n\t\t\t\t\tpathControls.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[onMouseEnter, pathControls, svgControls]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tsvgControls.start(\"normal\");\r\n\t\t\t\t\tpathControls.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[svgControls, pathControls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tvariants={svgVariants}\r\n\t\t\t\t\tanimate={svgControls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m5 8 6 6\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={3}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m4 14 6-6 3-3\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={2}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M2 5h12\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M7 2h1\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m22 22-5-10-5 10\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={3}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M14 18h6\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={3}\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLanguagesIcon.displayName = \"LanguagesIcon\";\r\n\r\nexport { LanguagesIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/layers.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface LayersIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface LayersIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 100,\n\tdamping: 14,\n\tmass: 1,\n};\n\nconst LayersIcon = forwardRef<LayersIconHandle, LayersIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start(\"firstState\");\n\t\t\t\t\tawait controls.start(\"secondState\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start(\"firstState\");\n\t\t\t\t\tawait controls.start(\"secondState\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { y: 0 },\n\t\t\t\t\t\t\tfirstState: { y: -9 },\n\t\t\t\t\t\t\tsecondState: { y: 0 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { y: 0 },\n\t\t\t\t\t\t\tfirstState: { y: -5 },\n\t\t\t\t\t\t\tsecondState: { y: 0 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nLayersIcon.displayName = \"LayersIcon\";\n\nexport { LayersIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/link.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface LinkIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface LinkIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tinitial: { pathLength: 1, pathOffset: 0, rotate: 0 },\n\tanimate: {\n\t\tpathLength: [1, 0.97, 1, 0.97, 1],\n\t\tpathOffset: [0, 0.05, 0, 0.05, 0],\n\t\trotate: [0, -5, 0],\n\t\ttransition: {\n\t\t\trotate: {\n\t\t\t\tduration: 0.5,\n\t\t\t},\n\t\t\tduration: 1,\n\t\t\ttimes: [0, 0.2, 0.4, 0.6, 1],\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst LinkIcon = forwardRef<LinkIconHandle, LinkIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nLinkIcon.displayName = \"LinkIcon\";\n\nexport { LinkIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/menu.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MenuIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MenuIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst lineVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\ty: 0,\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\trotate: custom === 1 ? 45 : custom === 3 ? -45 : 0,\r\n\t\ty: custom === 1 ? 6 : custom === 3 ? -6 : 0,\r\n\t\topacity: custom === 2 ? 0 : 1,\r\n\t\ttransition: {\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 260,\r\n\t\t\tdamping: 20,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst MenuIcon = forwardRef<MenuIconHandle, MenuIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"4\"\r\n\t\t\t\t\t\ty1=\"6\"\r\n\t\t\t\t\t\tx2=\"20\"\r\n\t\t\t\t\t\ty2=\"6\"\r\n\t\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"4\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\tx2=\"20\"\r\n\t\t\t\t\t\ty2=\"12\"\r\n\t\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={2}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"4\"\r\n\t\t\t\t\t\ty1=\"18\"\r\n\t\t\t\t\t\tx2=\"20\"\r\n\t\t\t\t\t\ty2=\"18\"\r\n\t\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={3}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nMenuIcon.displayName = \"MenuIcon\";\r\n\r\nexport { MenuIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/party-popper.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface PartyPopperIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface PartyPopperIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst linesVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tscale: 1,\n\t\ttranslateX: 0,\n\t\ttranslateY: 0,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tscale: [0.3, 0.8, 1, 1.1, 1],\n\t\tpathLength: [0, 0.5, 1],\n\t\ttranslateX: [-5, 0],\n\t\ttranslateY: [5, 0],\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tdamping: 35,\n\t\t\tduration: 0.7,\n\t\t\tstiffness: 240,\n\t\t\tvelocity: 0.3,\n\t\t},\n\t},\n};\n\nconst dotsVariants: Variants = {\n\tnormal: { opacity: 1, scale: 1, translateX: 0, translateY: 0 },\n\tanimate: {\n\t\topacity: [0, 1],\n\t\ttranslateX: [-5, 0],\n\t\ttranslateY: [5, 0],\n\t\tscale: [0.5, 0.8, 1, 1.1, 1],\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tdamping: 35,\n\t\t\tduration: 0.7,\n\t\t\tstiffness: 240,\n\t\t},\n\t},\n};\n\nconst popperVariants: Variants = {\n\tnormal: { translateX: 0, translateY: 0 },\n\tanimate: {\n\t\ttranslateX: [-1.5, 0],\n\t\ttranslateY: [1.5, 0],\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tdamping: 35,\n\t\t\tstiffness: 200,\n\t\t\tvelocity: 0.3,\n\t\t\tmass: 4,\n\t\t},\n\t},\n};\n\nconst PartyPopperIcon = forwardRef<PartyPopperIconHandle, PartyPopperIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5.8 11.3 2 22l10.7-3.79\"\n\t\t\t\t\t\tvariants={popperVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M11 13c1.93 1.93 2.83 4.17 2 5-.83.83-3.07-.07-5-2-1.93-1.93-2.83-4.17-2-5 .83-.83 3.07.07 5 2Z\"\n\t\t\t\t\t\tvariants={popperVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4 3h.01\"\n\t\t\t\t\t\tvariants={dotsVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M22 8h.01\"\n\t\t\t\t\t\tvariants={dotsVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M15 2h.01\"\n\t\t\t\t\t\tvariants={dotsVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M22 20h.01\"\n\t\t\t\t\t\tvariants={dotsVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m14 10 1.21-1.06c0.16-0.84 0.9-1.44 1.76-1.44h0.38c0.88 0 1.55-0.77 1.45-1.63a2.9 2.9 0 0 1 1.96-3.12L22 2\"\n\t\t\t\t\t\tvariants={linesVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M17 15h0.77c0.71 0 1.32-0.52 1.43-1.22c0.16-0.91 1.12-1.45 1.98-1.11L22 13\"\n\t\t\t\t\t\tvariants={linesVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9 7V6.23c0-0.71 0.52-1.33 1.22-1.43c0.91-0.16 1.45-1.12 1.11-1.98L11 2\"\n\t\t\t\t\t\tvariants={linesVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPartyPopperIcon.displayName = \"PartyPopperIcon\";\n\nexport { PartyPopperIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/pen-tool.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface PenToolIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface PenToolIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tnormal: { rotate: 0, translateX: 0, translateY: 0 },\r\n\tanimate: {\r\n\t\trotate: [0, 0, 8, -3, 8, 0],\r\n\t\ttranslateY: [0, 2, 0, -1, 0],\r\n\t},\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\r\n\tanimate: {\r\n\t\tpathLength: [0, 0, 1],\r\n\t\topacity: [0, 1],\r\n\t\tpathOffset: [0, 1, 0],\r\n\t},\r\n};\r\n\r\nconst PenToolIcon = forwardRef<PenToolIconHandle, PenToolIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tvariants={svgVariants}\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: 1,\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z\" />\r\n\t\t\t\t\t<path d=\"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"m2.3 2.3 7.286 7.286\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"2\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nPenToolIcon.displayName = \"PenToolIcon\";\r\n\r\nexport { PenToolIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/refresh-ccw.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RefreshCCWIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RefreshCCWIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst RefreshCCWIcon = forwardRef<RefreshCCWIconHandle, RefreshCCWIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\telse onMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\telse onMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { rotate: \"0deg\" },\n\t\t\t\t\t\t\tanimate: { rotate: \"-50deg\" },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M3 2v6h6\" />\n\t\t\t\t\t\t<path d=\"M21 12A9 9 0 0 0 6 5.3L3 8\" />\n\t\t\t\t\t\t<path d=\"M21 22v-6h-6\" />\n\t\t\t\t\t\t<path d=\"M3 12a9 9 0 0 0 15 6.7l3-2.7\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRefreshCCWIcon.displayName = \"RefreshCCWIcon\";\n\nexport { RefreshCCWIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/route.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RouteIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RouteIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst circleTransition: Transition = {\r\n\tduration: 0.3,\r\n\tdelay: 0.1,\r\n\topacity: { delay: 0.15 },\r\n};\r\n\r\nconst circleVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t},\r\n};\r\n\r\nconst RouteIcon = forwardRef<RouteIconHandle, RouteIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"6\"\r\n\t\t\t\t\t\tcy=\"19\"\r\n\t\t\t\t\t\tr=\"3\"\r\n\t\t\t\t\t\ttransition={circleTransition}\r\n\t\t\t\t\t\tvariants={circleVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15\"\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tduration: 0.7,\r\n\t\t\t\t\t\t\tdelay: 0.5,\r\n\t\t\t\t\t\t\topacity: { delay: 0.5 },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\t\topacity: 1,\r\n\t\t\t\t\t\t\t\tpathOffset: 0,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\t\topacity: [0, 1],\r\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"18\"\r\n\t\t\t\t\t\tcy=\"5\"\r\n\t\t\t\t\t\tr=\"3\"\r\n\t\t\t\t\t\ttransition={circleTransition}\r\n\t\t\t\t\t\tvariants={circleVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nRouteIcon.displayName = \"RouteIcon\";\r\n\r\nexport { RouteIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/scan-text.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ScanTextIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ScanTextIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst frameVariants: Variants = {\n\tvisible: { opacity: 1 },\n\thidden: { opacity: 1 },\n};\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ScanTextIcon = forwardRef<ScanTextIconHandle, ScanTextIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\t\tpathLength: 0,\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t\t}));\n\t\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t\t}));\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\t\tpathLength: 0,\n\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t\t}));\n\t\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"visible\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={frameVariants}\n\t\t\t\t\t\td=\"M3 7V5a2 2 0 0 1 2-2h2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={frameVariants}\n\t\t\t\t\t\td=\"M17 3h2a2 2 0 0 1 2 2v2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={frameVariants}\n\t\t\t\t\t\td=\"M21 17v2a2 2 0 0 1-2 2h-2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={frameVariants}\n\t\t\t\t\t\td=\"M7 21H5a2 2 0 0 1-2-2v-2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t\td=\"M7 8h8\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t\td=\"M7 12h10\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t\td=\"M7 16h6\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nScanTextIcon.displayName = \"ScanTextIcon\";\n\nexport { ScanTextIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/settings.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SettingsIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SettingsIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 100,\r\n\tdamping: 12,\r\n\tmass: 0.4,\r\n};\r\n\r\nconst SettingsIcon = forwardRef<SettingsIconHandle, SettingsIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"21\"\r\n\t\t\t\t\t\tx2=\"14\"\r\n\t\t\t\t\t\ty1=\"4\"\r\n\t\t\t\t\t\ty2=\"4\"\r\n\t\t\t\t\t\tinitial={false}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx2: 14,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx2: 10,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"10\"\r\n\t\t\t\t\t\tx2=\"3\"\r\n\t\t\t\t\t\ty1=\"4\"\r\n\t\t\t\t\t\ty2=\"4\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 10,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 5,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"21\"\r\n\t\t\t\t\t\tx2=\"12\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\ty2=\"12\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx2: 12,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx2: 18,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"8\"\r\n\t\t\t\t\t\tx2=\"3\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\ty2=\"12\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 13,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"3\"\r\n\t\t\t\t\t\tx2=\"12\"\r\n\t\t\t\t\t\ty1=\"20\"\r\n\t\t\t\t\t\ty2=\"20\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx2: 12,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx2: 4,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"16\"\r\n\t\t\t\t\t\tx2=\"21\"\r\n\t\t\t\t\t\ty1=\"20\"\r\n\t\t\t\t\t\ty2=\"20\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 16,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"14\"\r\n\t\t\t\t\t\tx2=\"14\"\r\n\t\t\t\t\t\ty1=\"2\"\r\n\t\t\t\t\t\ty2=\"6\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 14,\r\n\t\t\t\t\t\t\t\tx2: 14,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 9,\r\n\t\t\t\t\t\t\t\tx2: 9,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"8\"\r\n\t\t\t\t\t\tx2=\"8\"\r\n\t\t\t\t\t\ty1=\"10\"\r\n\t\t\t\t\t\ty2=\"14\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t\tx2: 8,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 14,\r\n\t\t\t\t\t\t\t\tx2: 14,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"16\"\r\n\t\t\t\t\t\tx2=\"16\"\r\n\t\t\t\t\t\ty1=\"18\"\r\n\t\t\t\t\t\ty2=\"22\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tx1: 16,\r\n\t\t\t\t\t\t\t\tx2: 16,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t\tx2: 8,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSettingsIcon.displayName = \"SettingsIcon\";\r\n\r\nexport { SettingsIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/settings-gear.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SettingsGearIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SettingsGearIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst SettingsGearIcon = forwardRef<\r\n\tSettingsGearIconHandle,\r\n\tSettingsGearIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\ttransition={{ type: \"spring\", stiffness: 50, damping: 10 }}\r\n\t\t\t\tvariants={{\r\n\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\trotate: 0,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\trotate: 180,\r\n\t\t\t\t\t},\r\n\t\t\t\t}}\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\" />\r\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"3\" />\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nSettingsGearIcon.displayName = \"SettingsGearIcon\";\r\n\r\nexport { SettingsGearIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sun.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SunIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SunIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: (i: number) => ({\n\t\topacity: [0, 1],\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t}),\n};\n\nconst SunIcon = forwardRef<SunIconHandle, SunIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"4\" />\n\t\t\t\t\t{[\n\t\t\t\t\t\t\"M12 2v2\",\n\t\t\t\t\t\t\"m19.07 4.93-1.41 1.41\",\n\t\t\t\t\t\t\"M20 12h2\",\n\t\t\t\t\t\t\"m17.66 17.66 1.41 1.41\",\n\t\t\t\t\t\t\"M12 20v2\",\n\t\t\t\t\t\t\"m6.34 17.66-1.41 1.41\",\n\t\t\t\t\t\t\"M2 12h2\",\n\t\t\t\t\t\t\"m4.93 4.93 1.41 1.41\",\n\t\t\t\t\t].map((d, index) => (\n\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\tkey={d}\n\t\t\t\t\t\t\td={d}\n\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\t\tcustom={index + 1}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSunIcon.displayName = \"SunIcon\";\n\nexport { SunIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/underline.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface UnderlineIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UnderlineIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t},\r\n};\r\n\r\nconst UnderlineIcon = forwardRef<UnderlineIconHandle, UnderlineIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{ duration: 0.3 }}\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M6 4v6a6 6 0 0 0 12 0V4\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"4\"\r\n\t\t\t\t\t\tx2=\"20\"\r\n\t\t\t\t\t\ty1=\"20\"\r\n\t\t\t\t\t\ty2=\"20\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tdelay: 0.2,\r\n\t\t\t\t\t\t\tduration: 0.4,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nUnderlineIcon.displayName = \"UnderlineIcon\";\r\n\r\nexport { UnderlineIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/undo.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface UndoIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UndoIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst customEasing = cubicBezier(0.25, 0.1, 0.25, 1);\r\n\r\nconst UndoIcon = forwardRef<UndoIconHandle, UndoIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\t\t\tease: customEasing,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0, rotate: 0 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\ttranslateX: [0, 2.1, 0],\r\n\t\t\t\t\t\t\t\ttranslateY: [0, -1.4, 0],\r\n\t\t\t\t\t\t\t\trotate: [0, 12, 0],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M3 7v6h6\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\t\t\tease: customEasing,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\r\n\t\t\t\t\t\t\tanimate: { pathLength: [1, 0.8, 1] },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nUndoIcon.displayName = \"UndoIcon\";\r\n\r\nexport { UndoIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/connect.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ConnectIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ConnectIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst plugVariants: Variants = {\r\n\tnormal: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\tx: -3,\r\n\t\ty: 3,\r\n\t},\r\n};\r\n\r\nconst socketVariants: Variants = {\r\n\tnormal: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\tx: 3,\r\n\t\ty: -3,\r\n\t},\r\n};\r\n\r\nconst pathVariants = {\r\n\tnormal: (custom: { x: number; y: number }) => ({\r\n\t\td: `M${custom.x} ${custom.y} l2.5 -2.5`,\r\n\t}),\r\n\tanimate: (custom: { x: number; y: number }) => ({\r\n\t\td: `M${custom.x + 2.93} ${custom.y - 2.93} l0.10 -0.10`,\r\n\t}),\r\n};\r\n\r\nconst ConnectIcon = forwardRef<ConnectIconHandle, ConnectIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M19 5l3 -3\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\td: \"M19 5l3 -3\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: \"M17 7l5 -5\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m2 22 3-3\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\td: \"m2 22 3-3\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: \"m2 22 6-6\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\"\r\n\t\t\t\t\t\tvariants={socketVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={{ x: 7.5, y: 13.5 }}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={{ x: 10.5, y: 16.5 }}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z\"\r\n\t\t\t\t\t\tvariants={plugVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 30 }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nConnectIcon.displayName = \"ConnectIcon\";\r\n\r\nexport { ConnectIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/upvote.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface UpvoteIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface UpvoteIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst UpvoteIcon = forwardRef<UpvoteIconHandle, UpvoteIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\ttranslateX: \"0px\",\n\t\t\t\t\t\t\ttranslateY: \"0px\",\n\t\t\t\t\t\t\trotate: \"0deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateX: \"-1px\",\n\t\t\t\t\t\t\ttranslateY: \"-2px\",\n\t\t\t\t\t\t\trotate: \"-12deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M7 10v12\" />\n\t\t\t\t\t<path d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nUpvoteIcon.displayName = \"UpvoteIcon\";\n\nexport { UpvoteIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/users.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface UsersIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UsersIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateX: 0,\r\n\t\ttransition: {\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\ttranslateX: [-6, 0],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.1,\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst UsersIcon = forwardRef<UsersIconHandle, UsersIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n\t\t\t\t\t<circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M22 21v-2a4 4 0 0 0-3-3.87\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M16 3.13a4 4 0 0 1 0 7.75\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nUsersIcon.displayName = \"UsersIcon\";\r\n\r\nexport { UsersIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/volume.tsx",
      "content": "\"use client\";\n\nimport {\n\tforwardRef,\n\tFragment,\n\tuseCallback,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nexport interface VolumeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface VolumeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst VolumeIcon = forwardRef<VolumeIconHandle, VolumeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst [isHovered, setIsHovered] = useState(false);\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => setIsHovered(true),\n\t\t\t\tstopAnimation: () => setIsHovered(false),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsetIsHovered(true);\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsetIsHovered(false);\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z\" />\n\t\t\t\t\t<AnimatePresence mode=\"wait\" initial={false}>\n\t\t\t\t\t\t{isHovered ? (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\t\t\td=\"M16 9a5 5 0 0 1 0 6\"\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, transition: { delay: 0.1 } }}\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\t\t\td=\"M19.364 18.364a9 9 0 0 0 0-12.728\"\n\t\t\t\t\t\t\t\t\tanimate={{ opacity: 1, transition: { delay: 0.2 } }}\n\t\t\t\t\t\t\t\t\tinitial={{ opacity: 0 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t<motion.line\n\t\t\t\t\t\t\t\t\tx1=\"22\"\n\t\t\t\t\t\t\t\t\tx2=\"16\"\n\t\t\t\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\t\t\t\ty2=\"15\"\n\t\t\t\t\t\t\t\t\tanimate={{\n\t\t\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t\t\t\ttransition: { delay: 0.1 },\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tinitial={{ pathLength: 1, opacity: 1 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<motion.line\n\t\t\t\t\t\t\t\t\tx1=\"16\"\n\t\t\t\t\t\t\t\t\tx2=\"22\"\n\t\t\t\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\t\t\t\ty2=\"15\"\n\t\t\t\t\t\t\t\t\tanimate={{\n\t\t\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t\t\t\ttransition: { delay: 0.2 },\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tinitial={{ pathLength: 1, opacity: 1 }}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nVolumeIcon.displayName = \"VolumeIcon\";\n\nexport { VolumeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cart.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CartIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CartIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst cartVariants: Variants = {\n\tnormal: { scale: 1 },\n\tanimate: {\n\t\tscale: 1.1,\n\t\ty: [0, -5, 0],\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tease: \"easeInOut\",\n\t\t\ty: { repeat: 1, delay: 0.1, duration: 0.4 },\n\t\t},\n\t},\n};\n\nconst CartIcon = forwardRef<CartIconHandle, CartIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={cartVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{ duration: 0.2 }}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M6.29977 5H21L19 12H7.37671M20 16H8L6 3H3M9 20C9 20.5523 8.55228 21 8 21C7.44772 21 7 20.5523 7 20C7 19.4477 7.44772 19 8 19C8.55228 19 9 19.4477 9 20ZM20 20C20 20.5523 19.5523 21 19 21C18.4477 21 18 20.5523 18 20C18 19.4477 18.4477 19 19 19C19.5523 19 20 19.4477 20 20Z\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCartIcon.displayName = \"CartIcon\";\n\nexport { CartIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/stethoscope.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface StethoscopeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface StethoscopeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst DURATION = 0.25;\n\nconst calculateDelay = (i: number) => {\n\treturn i === 0 ? 0.1 : i * DURATION + 0.1;\n};\n\nconst StethoscopeIcon = forwardRef<StethoscopeIconHandle, StethoscopeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M11 2v2\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: DURATION,\n\t\t\t\t\t\t\tdelay: calculateDelay(2),\n\t\t\t\t\t\t\topacity: { delay: calculateDelay(2) },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\ttransition: { delay: 0 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5 2v2\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: DURATION,\n\t\t\t\t\t\t\tdelay: calculateDelay(2),\n\t\t\t\t\t\t\topacity: { delay: calculateDelay(2) },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\ttransition: { delay: 0 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5 3H4a2 2 0 0 0-2 2v4a6 6 0 0 0 12 0V5a2 2 0 0 0-2-2h-1\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: DURATION,\n\t\t\t\t\t\t\tdelay: calculateDelay(2),\n\t\t\t\t\t\t\topacity: { delay: calculateDelay(2) },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\ttransition: { delay: 0 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M8 15a6 6 0 0 0 12 0v-3\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: DURATION,\n\t\t\t\t\t\t\tdelay: calculateDelay(1),\n\t\t\t\t\t\t\topacity: { delay: calculateDelay(1) },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\ttransition: { delay: 0 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"20\"\n\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\tr=\"2\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: DURATION,\n\t\t\t\t\t\t\tdelay: calculateDelay(0),\n\t\t\t\t\t\t\topacity: { delay: calculateDelay(0) },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\ttransition: { delay: 0 },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nStethoscopeIcon.displayName = \"StethoscopeIcon\";\n\nexport { StethoscopeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/earth.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface EarthIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface EarthIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst circleTransition: Transition = {\n\tduration: 0.3,\n\tdelay: 0.1,\n\topacity: { delay: 0.15 },\n};\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t},\n};\n\nconst EarthIcon = forwardRef<EarthIconHandle, EarthIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M21.54 15H17a2 2 0 0 0-2 2v4.54\"\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: 0.7,\n\t\t\t\t\t\t\tdelay: 0.5,\n\t\t\t\t\t\t\topacity: { delay: 0.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17\"\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: 0.7,\n\t\t\t\t\t\t\tdelay: 0.5,\n\t\t\t\t\t\t\topacity: { delay: 0.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05\"\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: 0.7,\n\t\t\t\t\t\t\tdelay: 0.5,\n\t\t\t\t\t\t\topacity: { delay: 0.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\tpathLength: 1,\n\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\tpathOffset: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\ttransition={circleTransition}\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nEarthIcon.displayName = \"EarthIcon\";\n\nexport { EarthIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/workflow.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface WorkflowIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface WorkflowIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.3,\n\topacity: { delay: 0.15 },\n};\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\t...transition,\n\t\t\tdelay: 0.1 * custom,\n\t\t},\n\t}),\n};\n\nconst WorkflowIcon = forwardRef<WorkflowIconHandle, WorkflowIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\twidth=\"8\"\n\t\t\t\t\t\theight=\"8\"\n\t\t\t\t\t\tx=\"3\"\n\t\t\t\t\t\ty=\"3\"\n\t\t\t\t\t\trx=\"2\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7 11v4a2 2 0 0 0 2 2h4\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\twidth=\"8\"\n\t\t\t\t\t\theight=\"8\"\n\t\t\t\t\t\tx=\"13\"\n\t\t\t\t\t\ty=\"13\"\n\t\t\t\t\t\trx=\"2\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nWorkflowIcon.displayName = \"WorkflowIcon\";\n\nexport { WorkflowIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/logout.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface LogoutIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface LogoutIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tanimate: {\r\n\t\tx: 2,\r\n\t\ttranslateX: [0, -3, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst LogoutIcon = forwardRef<LogoutIconHandle, LogoutIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\r\n\t\t\t\t\t<motion.polyline\r\n\t\t\t\t\t\tpoints=\"16 17 21 12 16 7\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"21\"\r\n\t\t\t\t\t\tx2=\"9\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\ty2=\"12\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLogoutIcon.displayName = \"LogoutIcon\";\r\n\r\nexport { LogoutIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-help.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CircleHelpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CircleHelpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: { rotate: [0, -10, 10, -10, 0] },\n};\n\nconst CircleHelpIcon = forwardRef<CircleHelpIconHandle, CircleHelpIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n\t\t\t\t\t\t<path d=\"M12 17h.01\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCircleHelpIcon.displayName = \"CircleHelpIcon\";\n\nexport { CircleHelpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/user.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface UserIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface UserIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariant: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\tpathOffset: [1, 0],\n\t},\n};\n\nconst circleVariant: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\tscale: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\tscale: [0.5, 1],\n\t},\n};\n\nconst UserIcon = forwardRef<UserIconHandle, UserIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"8\"\n\t\t\t\t\t\tr=\"5\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={circleVariant}\n\t\t\t\t\t/>\n\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M20 21a8 8 0 0 0-16 0\"\n\t\t\t\t\t\tvariants={pathVariant}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tdelay: 0.2,\n\t\t\t\t\t\t\tduration: 0.4,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nUserIcon.displayName = \"UserIcon\";\n\nexport { UserIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/audio-lines.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface AudioLinesIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface AudioLinesIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst AudioLinesIcon = forwardRef<AudioLinesIconHandle, AudioLinesIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M2 10v3\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { d: \"M6 6v11\" },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: [\"M6 6v11\", \"M6 10v3\", \"M6 6v11\"],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 1.5,\r\n\t\t\t\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"M6 6v11\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { d: \"M10 3v18\" },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: [\"M10 3v18\", \"M10 9v5\", \"M10 3v18\"],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 1,\r\n\t\t\t\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"M10 3v18\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { d: \"M14 8v7\" },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: [\"M14 8v7\", \"M14 6v11\", \"M14 8v7\"],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"M14 8v7\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { d: \"M18 5v13\" },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\td: [\"M18 5v13\", \"M18 7v9\", \"M18 5v13\"],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 1.5,\r\n\t\t\t\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"M18 5v13\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"M22 10v3\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nAudioLinesIcon.displayName = \"AudioLinesIcon\";\r\n\r\nexport { AudioLinesIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/flame.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface FlameIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FlameIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\tpathOffset: 0,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.1,\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1, delay: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst FlameIcon = forwardRef<FlameIconHandle, FlameIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\t\td=\"M8.9 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFlameIcon.displayName = \"FlameIcon\";\r\n\r\nexport { FlameIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/eye-off.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface EyeOffIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface EyeOffIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\tpathLength: [0, 2],\n\t\topacity: [0, 1],\n\t\tpathOffset: [0, 2],\n\t\ttransition: { duration: 0.6 },\n\t},\n};\n\nconst EyeOffIcon = forwardRef<EyeOffIconHandle, EyeOffIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n\t\t\t\t\t<path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n\t\t\t\t\t<path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\td=\"m2 2 20 20\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nEyeOffIcon.displayName = \"EyeOffIcon\";\n\nexport { EyeOffIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-stack.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SquareStackIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SquareStackIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst rectVariants: Variants = {\r\n\tnormal: { scale: 1 },\r\n\tanimate: {\r\n\t\tscale: [1, 0.8, 1],\r\n\t\ttransition: { duration: 0.4 },\r\n\t},\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { scale: 1 },\r\n\tanimate: {\r\n\t\tscale: [1, 0.9, 1],\r\n\t},\r\n};\r\n\r\nconst SquareStackIcon = forwardRef<SquareStackIconHandle, SquareStackIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tdelay: 0.3,\r\n\t\t\t\t\t\t\tduration: 0.4,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\td=\"M4 10c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M10 16c-1.1 0-2-.9-2-2v-4c0-1.1.9-2 2-2h4c1.1 0 2 .9 2 2\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\t\tdelay: 0.2,\r\n\t\t\t\t\t\t\tduration: 0.2,\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.rect\r\n\t\t\t\t\t\tvariants={rectVariants}\r\n\t\t\t\t\t\twidth=\"8\"\r\n\t\t\t\t\t\theight=\"8\"\r\n\t\t\t\t\t\tx=\"14\"\r\n\t\t\t\t\t\ty=\"14\"\r\n\t\t\t\t\t\trx=\"2\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSquareStackIcon.displayName = \"SquareStackIcon\";\r\n\r\nexport { SquareStackIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/badge-alert.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BadgeAlertIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BadgeAlertIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst iconVariants: Variants = {\n\tnormal: { scale: 1, rotate: 0 },\n\tanimate: {\n\t\tscale: [1, 1.1, 1.1, 1.1, 1],\n\t\trotate: [0, -3, 3, -2, 2, 0],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.2, 0.4, 0.6, 1],\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\nconst BadgeAlertIcon = forwardRef<BadgeAlertIconHandle, BadgeAlertIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={iconVariants}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z\" />\n\t\t\t\t\t<line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\" />\n\t\t\t\t\t<line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBadgeAlertIcon.displayName = \"BadgeAlertIcon\";\n\nexport { BadgeAlertIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-circle.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MessageCircleIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MessageCircleIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst iconVariants: Variants = {\r\n\tnormal: {\r\n\t\tscale: 1,\r\n\t\trotate: 0,\r\n\t},\r\n\tanimate: {\r\n\t\tscale: 1.05,\r\n\t\trotate: [0, -7, 7, 0],\r\n\t\ttransition: {\r\n\t\t\trotate: {\r\n\t\t\t\tduration: 0.5,\r\n\t\t\t\tease: \"easeInOut\",\r\n\t\t\t},\r\n\t\t\tscale: {\r\n\t\t\t\ttype: \"spring\",\r\n\t\t\t\tstiffness: 400,\r\n\t\t\t\tdamping: 10,\r\n\t\t\t},\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst MessageCircleIcon = forwardRef<\r\n\tMessageCircleIconHandle,\r\n\tMessageCircleIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\tvariants={iconVariants}\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nMessageCircleIcon.displayName = \"MessageCircleIcon\";\r\n\r\nexport { MessageCircleIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-circle-more.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MessageCircleMoreIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MessageCircleMoreIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dotVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\topacity: [1, 0, 0, 1, 1, 0, 0, 1],\n\t\ttransition: {\n\t\t\topacity: {\n\t\t\t\ttimes: [\n\t\t\t\t\t0,\n\t\t\t\t\t0.1,\n\t\t\t\t\t0.1 + custom * 0.1,\n\t\t\t\t\t0.1 + custom * 0.1 + 0.1,\n\t\t\t\t\t0.5,\n\t\t\t\t\t0.6,\n\t\t\t\t\t0.6 + custom * 0.1,\n\t\t\t\t\t0.6 + custom * 0.1 + 0.1,\n\t\t\t\t],\n\t\t\t\tduration: 1.5,\n\t\t\t},\n\t\t},\n\t}),\n};\n\nconst MessageCircleMoreIcon = forwardRef<\n\tMessageCircleMoreIconHandle,\n\tMessageCircleMoreIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M7.9 20A9 9 0 1 0 4 16.1L2 22Z\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M8 12h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 12h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M16 12h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nMessageCircleMoreIcon.displayName = \"MessageCircleMoreIcon\";\n\nexport { MessageCircleMoreIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/search.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SearchIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SearchIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SearchIcon = forwardRef<SearchIconHandle, SearchIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { x: 0, y: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\tx: [0, 0, -3, 0],\n\t\t\t\t\t\t\ty: [0, -4, 0, 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 1,\n\t\t\t\t\t\tbounce: 0.3,\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"11\" cy=\"11\" r=\"8\" />\n\t\t\t\t\t<path d=\"m21 21-4.3-4.3\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSearchIcon.displayName = \"SearchIcon\";\n\nexport { SearchIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/shield-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ShieldCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ShieldCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tscale: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tscale: [0.5, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ShieldCheckIcon = forwardRef<ShieldCheckIconHandle, ShieldCheckIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"m9 12 2 2 4-4\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nShieldCheckIcon.displayName = \"ShieldCheckIcon\";\r\n\r\nexport { ShieldCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/timer.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface TimerIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TimerIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst handVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\toriginX: \"12px\",\n\t\toriginY: \"14px\",\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: [0.4, 0, 0.2, 1],\n\t\t},\n\t},\n\tanimate: {\n\t\trotate: 300,\n\t\ttransition: {\n\t\t\tdelay: 0.1,\n\t\t\tduration: 0.6,\n\t\t\tease: [0.4, 0, 0.2, 1],\n\t\t},\n\t},\n};\n\nconst buttonVariants: Variants = {\n\tnormal: {\n\t\tscale: 1,\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\tscale: [0.9, 1],\n\t\ty: [0, 1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tease: [0.4, 0, 0.2, 1],\n\t\t},\n\t},\n};\n\nconst TimerIcon = forwardRef<TimerIconHandle, TimerIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"10\"\n\t\t\t\t\t\tx2=\"14\"\n\t\t\t\t\t\ty1=\"2\"\n\t\t\t\t\t\ty2=\"2\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={buttonVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"12\"\n\t\t\t\t\t\tx2=\"15\"\n\t\t\t\t\t\ty1=\"14\"\n\t\t\t\t\t\ty2=\"11\"\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={handVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<circle cx=\"12\" cy=\"14\" r=\"8\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTimerIcon.displayName = \"TimerIcon\";\n\nexport { TimerIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bluetooth-searching.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface BluetoothSearchingIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface BluetoothSearchingIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\tscale: 1,\r\n\t\ttransition: {\r\n\t\t\trepeat: 0,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\tscale: [0, 1, 0.8],\r\n\t},\r\n};\r\n\r\nconst secondVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [1, 0.8, 1],\r\n\t\ttransition: { repeat: Infinity },\r\n\t},\r\n};\r\n\r\nconst BluetoothSearchingIcon = forwardRef<\r\n\tBluetoothSearchingIconHandle,\r\n\tBluetoothSearchingIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={secondVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m7 7 10 10-5 5V2l5 5L7 17\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\t\tdelay: 0.2,\r\n\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t}}\r\n\t\t\t\t\td=\"M20.83 14.83a4 4 0 0 0 0-5.66\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\ttransition={{\r\n\t\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\t\trepeat: Infinity,\r\n\t\t\t\t\t}}\r\n\t\t\t\t\td=\"M18 12h.01\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nBluetoothSearchingIcon.displayName = \"BluetoothSearchingIcon\";\r\n\r\nexport { BluetoothSearchingIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bluetooth-connected.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BluetoothConnectedIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BluetoothConnectedIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1, 0.5, 1],\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tdelay: 0.2,\n\t\t},\n\t},\n};\n\nconst BluetoothConnectedIcon = forwardRef<\n\tBluetoothConnectedIconHandle,\n\tBluetoothConnectedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m7 7 10 10-5 5V2l5 5L7 17\"\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\tpathOffset: [1, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\tduration: 0.4,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tx1=\"18\"\n\t\t\t\t\tx2=\"21\"\n\t\t\t\t\ty1=\"12\"\n\t\t\t\t\ty2=\"12\"\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\tpathLength: [0, 1],\n\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\tpathOffset: [-1, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\tduration: 0.2,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tx1=\"3\"\n\t\t\t\t\tx2=\"6\"\n\t\t\t\t\ty1=\"12\"\n\t\t\t\t\ty2=\"12\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nBluetoothConnectedIcon.displayName = \"BluetoothConnectedIcon\";\n\nexport { BluetoothConnectedIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/bluetooth-off.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BluetoothOffIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BluetoothOffIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1, pathOffset: 0 },\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\tpathOffset: [1, 0],\n\t},\n};\n\nconst offlineVariants: Variants = {\n\tnormal: { pathLength: 1, opacity: 1 },\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t},\n};\n\nconst BluetoothOffIcon = forwardRef<\n\tBluetoothOffIconHandle,\n\tBluetoothOffIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.3,\n\t\t\t\t\t}}\n\t\t\t\t\td=\"m17 17-5 5V12l-5 5\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={offlineVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.2,\n\t\t\t\t\t\tdelay: 0.3,\n\t\t\t\t\t}}\n\t\t\t\t\td=\"m2 2 20 20\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.3,\n\t\t\t\t\t}}\n\t\t\t\t\td=\"M14.5 9.5 17 7l-5-5v4.5\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nBluetoothOffIcon.displayName = \"BluetoothOffIcon\";\n\nexport { BluetoothOffIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/flask.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface FlaskIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FlaskIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst FlaskIcon = forwardRef<FlaskIconHandle, FlaskIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\tviewBox=\"0 0 512 512\"\r\n\t\t\t\t\tstrokeWidth=\"5.632\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { rotate: 0, translateY: 0 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\ttranslateY: -12,\r\n\t\t\t\t\t\t\t\trotate: [0, 5, -5, 3, -3, 0],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tease: \"linear\",\r\n\t\t\t\t\t\t\t\t\trotate: { duration: 0.8 },\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<circle cx=\"151.273\" cy=\"407.273\" r=\"11.636\" />\r\n\t\t\t\t\t\t<circle cx=\"244.364\" cy=\"372.364\" r=\"11.636\" />\r\n\t\t\t\t\t\t<circle cx=\"290.909\" cy=\"418.909\" r=\"11.636\" />\r\n\t\t\t\t\t\t<circle cx=\"221.091\" cy=\"453.818\" r=\"11.636\" />\r\n\t\t\t\t\t\t<circle cx=\"372.364\" cy=\"430.545\" r=\"11.636\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M456.145,436.364l-79.127-124.509c0-2.327-2.327-4.655-3.491-5.818l-34.909-55.855c-8.146-13.964-12.8-29.091-12.8-44.218 V67.491c13.964-4.655,23.273-17.455,23.273-32.582C349.091,15.127,333.964,0,314.182,0H197.818 c-19.782,0-34.909,15.127-34.909,34.909c0,19.782,15.127,34.909,34.909,34.909h69.818c6.982,0,11.636-4.655,11.636-11.636 s-4.655-11.636-11.636-11.636h-69.818c-6.982,0-11.636-4.655-11.636-11.636c0-6.982,4.655-11.636,11.636-11.636h116.364 c6.982,0,11.636,4.655,11.636,11.636c0,6.982-4.655,11.636-11.636,11.636s-11.636,4.655-11.636,11.636v147.782 c0,19.782,5.818,39.564,16.291,55.855l19.782,31.418c-30.255-5.818-64-2.327-88.436,10.473 c-23.273,11.636-60.509,13.964-87.273,4.655l30.255-46.545c10.473-16.291,16.291-36.073,16.291-55.855V104.727 c0-6.982-4.655-11.636-11.636-11.636s-11.636,4.655-11.636,11.636v101.236c0,15.127-4.655,30.255-12.8,43.055l-34.909,55.855 c-1.164,1.164-2.327,2.327-3.491,3.491c0,1.164,0,1.164-1.164,2.327L55.855,436.364c-5.818,9.309-9.309,19.782-9.309,31.418v9.309 c0,19.782,15.127,34.909,34.909,34.909h349.091c19.782,0,34.909-15.127,34.909-34.909v-9.309 C465.455,456.145,461.964,445.673,456.145,436.364z M443.345,477.091h-1.164c0,6.982-4.655,11.636-11.636,11.636H81.455 c-6.982,0-11.636-4.655-11.636-11.636v-9.309c0-6.982,2.327-12.8,5.818-18.618l75.636-119.855 c15.127,5.818,32.582,8.145,50.036,8.145c22.109,0,43.055-4.655,60.509-12.8c25.6-12.8,68.655-13.964,96.582-1.164l79.127,125.673 c3.491,5.818,5.818,11.636,5.818,18.618V477.091z\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { rotate: 0, scale: 1 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tscale: 0.9,\r\n\t\t\t\t\t\t\t\trotate: [0, 6, -6, 3, -3, 0],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\t\t\t\t\tscale: {\r\n\t\t\t\t\t\t\t\t\t\tduration: 0.3,\r\n\t\t\t\t\t\t\t\t\t\ttype: \"spring\",\r\n\t\t\t\t\t\t\t\t\t\tbounce: 0.4,\r\n\t\t\t\t\t\t\t\t\t\tstiffness: 150,\r\n\t\t\t\t\t\t\t\t\t\tdamping: 10,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFlaskIcon.displayName = \"FlaskIcon\";\r\n\r\nexport { FlaskIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/syringe.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SyringeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SyringeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SyringeIcon = forwardRef<SyringeIconHandle, SyringeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 512 512\"\n\t\t\t\t\tfill=\"currentColor\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"5.632\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\ttranslateX: 0,\n\t\t\t\t\t\t\ttranslateY: 0,\n\t\t\t\t\t\t\trotate: \"0deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ttranslateX: -3,\n\t\t\t\t\t\t\ttranslateY: 3,\n\t\t\t\t\t\t\trotate: \"1deg\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t\tclassName=\"icon\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M450.327,224.582l-46.545-46.545c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l15.127,15.127L205.964,406.109c-4.655,4.655-11.636,4.655-16.291,0l-18.618-18.618c-4.655-4.655-11.636-4.655-16.291,0l-18.618,18.618c-4.655,4.655-11.636,4.655-16.291,0l-13.964-13.964c-2.327-2.327-3.491-4.655-3.491-8.145s1.164-5.818,3.491-8.145l18.618-18.618c4.655-4.655,4.655-11.636,0-16.291l-18.618-18.618c-2.327-2.327-3.491-4.655-3.491-8.145c0-3.491,1.164-5.818,3.491-8.146l169.891-169.891c4.655-4.655,4.655-11.636,0-16.291s-11.636-4.655-16.291,0L89.6,289.745c-6.982,6.982-10.473,15.127-10.473,24.436S82.618,332.8,89.6,338.618l10.473,10.473L89.6,359.564c-6.982,6.982-10.473,15.127-10.473,24.436c0,8.145,3.491,16.291,9.309,23.273L3.491,492.218c-4.655,4.655-4.655,11.636,0,16.291C5.818,510.836,8.145,512,11.636,512s5.818-1.164,8.145-3.491l84.945-84.945c13.964,11.636,34.909,11.636,47.709-1.164l10.473-10.473l10.473,10.473c6.982,6.982,16.291,10.473,24.436,10.473c9.309,0,17.455-3.491,24.436-10.473l196.655-196.655l15.127,15.127c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C454.982,236.218,454.982,229.236,450.327,224.582z\"></path>\n\t\t\t\t\t<path d=\"M508.509,119.855L392.145,3.491c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l39.564,39.564c2.327,2.327,3.491,6.982,3.491,10.473s-1.164,8.145-4.655,10.473l-53.527,54.691l-73.309-73.309c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l73.309,73.309L244.364,251.345L217.6,224.582c-4.655-4.655-11.636-4.655-16.291,0s-4.655,11.636,0,16.291l69.818,69.818c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491c4.655-4.655,4.655-11.636,0-16.291l-26.764-26.764L431.709,97.745c6.982-5.818,15.127-5.818,22.109,0l38.4,38.4c2.327,2.327,5.818,3.491,8.145,3.491s5.818-1.164,8.145-3.491C513.164,131.491,513.164,124.509,508.509,119.855z\"></path>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSyringeIcon.displayName = \"SyringeIcon\";\n\nexport { SyringeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/a-arrow-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface AArrowDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface AArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst letterVariants: Variants = {\r\n\tnormal: { opacity: 1, scale: 1 },\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tscale: [0.8, 1],\r\n\t\ttransition: { duration: 0.3 },\r\n\t},\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: { opacity: 1, y: 0 },\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\ty: [-10, 0],\r\n\t\ttransition: { duration: 0.3, delay: 0.2 },\r\n\t},\r\n};\r\n\r\nconst AArrowDownIcon = forwardRef<AArrowDownIconHandle, AArrowDownIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t{/* Letra A */}\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M3.5 13h6\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={letterVariants}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m2 16 4.5-9 4.5 9\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={letterVariants}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t{/* Seta */}\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M18 7v9\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m14 12 4 4 4-4\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nAArrowDownIcon.displayName = \"AArrowDownIcon\";\r\n\r\nexport { AArrowDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/compass.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CompassIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CompassIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst CompassIcon = forwardRef<CompassIconHandle, CompassIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.polygon\n\t\t\t\t\t\tpoints=\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\trotate: 360,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\ttype: \"spring\",\n\t\t\t\t\t\t\tstiffness: 120,\n\t\t\t\t\t\t\tdamping: 15,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCompassIcon.displayName = \"CompassIcon\";\n\nexport { CompassIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/trending-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface TrendingDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface TrendingDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tanimate: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\ttranslateX: [0, 2, 0],\r\n\t\ttranslateY: [0, 2, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [0.5, 0],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst TrendingDownIcon = forwardRef<\r\n\tTrendingDownIconHandle,\r\n\tTrendingDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\tvariants={svgVariants}\r\n\t\t\t\tinitial=\"normal\"\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<motion.polyline\r\n\t\t\t\t\tpoints=\"22 17 13.5 8.5 8.5 13.5 2 7\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.polyline\r\n\t\t\t\t\tpoints=\"16 17 22 17 22 11\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nTrendingDownIcon.displayName = \"TrendingDownIcon\";\r\n\r\nexport { TrendingDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/trending-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface TrendingUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TrendingUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tanimate: {\n\t\tx: 0,\n\t\ty: 0,\n\t\ttranslateX: [0, 2, 0],\n\t\ttranslateY: [0, -2, 0],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t},\n\t},\n};\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst arrowVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [0.5, 0],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst TrendingUpIcon = forwardRef<TrendingUpIconHandle, TrendingUpIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<motion.polyline\n\t\t\t\t\t\tpoints=\"22 7 13.5 15.5 8.5 10.5 2 17\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.polyline\n\t\t\t\t\t\tpoints=\"16 7 22 7 22 13\"\n\t\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTrendingUpIcon.displayName = \"TrendingUpIcon\";\n\nexport { TrendingUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/trending-up-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface TrendingUpDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface TrendingUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tanimate: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t\ttranslateX: [0, 2, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [0.5, 0],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst TrendingUpDownIcon = forwardRef<\r\n\tTrendingUpDownIconHandle,\r\n\tTrendingUpDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\tvariants={svgVariants}\r\n\t\t\t\tinitial=\"normal\"\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M21 21 14.828 14.828\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M21 16v5h-5\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"m21 3-9 9-4-4-6 6\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M21 8V3h-5\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nTrendingUpDownIcon.displayName = \"TrendingUpDownIcon\";\r\n\r\nexport { TrendingUpDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/play.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface PlayIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface PlayIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\tx: 0,\n\t\trotate: 0,\n\t},\n\tanimate: {\n\t\tx: [0, -1, 2, 0],\n\t\trotate: [0, -10, 0, 0],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.2, 0.5, 1],\n\t\t\tstiffness: 260,\n\t\t\tdamping: 20,\n\t\t},\n\t},\n};\n\nconst PlayIcon = forwardRef<PlayIconHandle, PlayIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.polygon\n\t\t\t\t\t\tpoints=\"6 3 20 12 6 21 6 3\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPlayIcon.displayName = \"PlayIcon\";\n\nexport { PlayIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/pause.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface PauseIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface PauseIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst baseRectVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n};\n\nconst baseRectTransition = {\n\ttransition: {\n\t\ttimes: [0, 0.2, 0.5, 1],\n\t\tduration: 0.5,\n\t\tstiffness: 260,\n\t\tdamping: 20,\n\t},\n};\n\nconst leftRectVariants: Variants = {\n\t...baseRectVariants,\n\tanimate: {\n\t\ty: [0, 2, 0, 0],\n\t\t...baseRectTransition,\n\t},\n};\n\nconst rightRectVariants: Variants = {\n\t...baseRectVariants,\n\tanimate: {\n\t\ty: [0, 0, 2, 0],\n\t\t...baseRectTransition,\n\t},\n};\n\nconst PauseIcon = forwardRef<PauseIconHandle, PauseIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\tx=\"6\"\n\t\t\t\t\t\ty=\"4\"\n\t\t\t\t\t\twidth=\"4\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\trx=\"1\"\n\t\t\t\t\t\tvariants={leftRectVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\tx=\"14\"\n\t\t\t\t\t\ty=\"4\"\n\t\t\t\t\t\twidth=\"4\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\trx=\"1\"\n\t\t\t\t\t\tvariants={rightRectVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPauseIcon.displayName = \"PauseIcon\";\n\nexport { PauseIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevrons-up-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ChevronsUpDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChevronsUpDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 250,\r\n\tdamping: 25,\r\n};\r\n\r\nconst ChevronsUpDownIcon = forwardRef<\r\n\tChevronsUpDownIconHandle,\r\n\tChevronsUpDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateY: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateY: \"2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m7 15 5 5 5-5\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateY: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateY: \"-2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m7 9 5-5 5 5\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nChevronsUpDownIcon.displayName = \"ChevronsUpDownIcon\";\r\n\r\nexport { ChevronsUpDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevrons-down-up.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ChevronsDownUpIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChevronsDownUpIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 250,\r\n\tdamping: 25,\r\n};\r\n\r\nconst ChevronsDownUpIcon = forwardRef<\r\n\tChevronsDownUpIconHandle,\r\n\tChevronsDownUpIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateY: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateY: \"-2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m7 20 5-5 5 5\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateY: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateY: \"2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m7 4 5 5 5-5\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nChevronsDownUpIcon.displayName = \"ChevronsDownUpIcon\";\r\n\r\nexport { ChevronsDownUpIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevrons-left-right.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChevronsLeftRightIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChevronsLeftRightIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 250,\n\tdamping: 25,\n};\n\nconst ChevronsLeftRightIcon = forwardRef<\n\tChevronsLeftRightIconHandle,\n\tChevronsLeftRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateX: \"0%\" },\n\t\t\t\t\t\tanimate: { translateX: \"-2px\" },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"m9 7-5 5 5 5\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { translateX: \"0%\" },\n\t\t\t\t\t\tanimate: { translateX: \"2px\" },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"m15 7 5 5-5 5\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChevronsLeftRightIcon.displayName = \"ChevronsLeftRightIcon\";\n\nexport { ChevronsLeftRightIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevrons-right-left.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ChevronsRightLeftIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChevronsRightLeftIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 250,\r\n\tdamping: 25,\r\n};\r\n\r\nconst ChevronsRightLeftIcon = forwardRef<\r\n\tChevronsRightLeftIconHandle,\r\n\tChevronsRightLeftIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateX: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateX: \"-2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m20 17-5-5 5-5\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { translateX: \"0%\" },\r\n\t\t\t\t\t\tanimate: { translateX: \"2px\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m4 17 5-5-5-5\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nChevronsRightLeftIcon.displayName = \"ChevronsRightLeftIcon\";\r\n\r\nexport { ChevronsRightLeftIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-chevron-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CircleChevronDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CircleChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst CircleChevronDownIcon = forwardRef<\r\n\tCircleChevronDownIconHandle,\r\n\tCircleChevronDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { y: 0 },\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\ty: [0, 2, 0],\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m16 10-4 4-4-4\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nCircleChevronDownIcon.displayName = \"CircleChevronDownIcon\";\r\n\r\nexport { CircleChevronDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-chevron-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CircleChevronLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CircleChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst CircleChevronLeftIcon = forwardRef<\n\tCircleChevronLeftIconHandle,\n\tCircleChevronLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { x: 0 },\n\t\t\t\t\t\tanimate: { x: [0, -2, 0] },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m14 16-4-4 4-4\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCircleChevronLeftIcon.displayName = \"CircleChevronLeftIcon\";\n\nexport { CircleChevronLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-chevron-right.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CircleChevronRightIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CircleChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst CircleChevronRightIcon = forwardRef<\r\n\tCircleChevronRightIconHandle,\r\n\tCircleChevronRightIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { x: 0 },\r\n\t\t\t\t\t\tanimate: { x: [0, 2, 0] },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m10 8 4 4-4 4\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nCircleChevronRightIcon.displayName = \"CircleChevronRightIcon\";\r\n\r\nexport { CircleChevronRightIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-chevron-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CircleChevronUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CircleChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst CircleChevronUpIcon = forwardRef<\n\tCircleChevronUpIconHandle,\n\tCircleChevronUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { y: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ty: [0, -2, 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m8 14 4-4 4 4\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCircleChevronUpIcon.displayName = \"CircleChevronUpIcon\";\n\nexport { CircleChevronUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/circle-dashed.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CircleDashedIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: (i: number) => ({\n\t\topacity: [0, 1],\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t}),\n};\n\nconst CircleDashedIcon = forwardRef<\n\tCircleDashedIconHandle,\n\tCircleDashedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t{[\n\t\t\t\t\t\"M10.1 2.182a10 10 0 0 1 3.8 0\",\n\t\t\t\t\t\"M13.9 21.818a10 10 0 0 1-3.8 0\",\n\t\t\t\t\t\"M17.609 3.721a10 10 0 0 1 2.69 2.7\",\n\t\t\t\t\t\"M2.182 13.9a10 10 0 0 1 0-3.8\",\n\t\t\t\t\t\"M20.279 17.609a10 10 0 0 1-2.7 2.69\",\n\t\t\t\t\t\"M21.818 10.1a10 10 0 0 1 0 3.8\",\n\t\t\t\t\t\"M3.721 6.391a10 10 0 0 1 2.7-2.69\",\n\t\t\t\t\t\"M6.391 20.279a10 10 0 0 1-2.69-2.7\",\n\t\t\t\t].map((d, index) => (\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tkey={d}\n\t\t\t\t\t\td={d}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tcustom={index + 1}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCircleDashedIcon.displayName = \"CircleDashedIcon\";\n\nexport { CircleDashedIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tscale: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tscale: [0.5, 1],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst CheckIcon = forwardRef<CheckIconHandle, CheckIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M4 12 9 17L20 6\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCheckIcon.displayName = \"CheckIcon\";\n\nexport { CheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/check-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CheckCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CheckCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tscale: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tscale: [0.5, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t\tdelay: 0.1 * custom,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst CheckCheckIcon = forwardRef<CheckCheckIconHandle, CheckCheckIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M2 12 7 17L18 6\"\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M13 16L14.5 17.5L22 10\"\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCheckCheckIcon.displayName = \"CheckCheckIcon\";\r\n\r\nexport { CheckCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/id-card.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface IdCardIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface IdCardIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst Variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tdelay: custom * 0.1,\n\t\t},\n\t}),\n};\n\nconst IdCardIcon = forwardRef<IdCardIconHandle, IdCardIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16 10h2\"\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16 14h2\"\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M6.17 15a3 3 0 0 1 5.66 0\"\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"9\"\n\t\t\t\t\t\tcy=\"11\"\n\t\t\t\t\t\tr=\"2\"\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nIdCardIcon.displayName = \"IdCardIcon\";\n\nexport { IdCardIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/loader-pinwheel.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface LoaderPinwheelIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface LoaderPinwheelIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst gVariants: Variants = {\r\n\tnormal: { rotate: 0 }, // if you want to start from a different angle, change this value or remove it entirely\r\n\tanimate: {\r\n\t\trotate: 360,\r\n\t\ttransition: {\r\n\t\t\trepeat: Infinity,\r\n\t\t\tduration: 1,\r\n\t\t\tease: \"linear\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst defaultTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 50,\r\n\tdamping: 10,\r\n};\r\n\r\nconst LoaderPinwheelIcon = forwardRef<\r\n\tLoaderPinwheelIconHandle,\r\n\tLoaderPinwheelIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.g\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tvariants={gVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0\" />\r\n\t\t\t\t\t<path d=\"M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6\" />\r\n\t\t\t\t\t<path d=\"M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6\" />\r\n\t\t\t\t</motion.g>\r\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nLoaderPinwheelIcon.displayName = \"LoaderPinwheelIcon\";\r\n\r\nexport { LoaderPinwheelIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/rocking-chair.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Transition, Variants } from \"motion/react\";\n\nexport interface RockingChairIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RockingChairIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttype: \"spring\",\n\tstiffness: 100,\n\tdamping: 12,\n\tmass: 0.4,\n};\n\nconst rockingVariants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: {\n\t\trotate: [-5, 5, -5],\n\t\ttransition: {\n\t\t\trepeat: Infinity,\n\t\t\trepeatType: \"mirror\" as const,\n\t\t\tduration: 1.2,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst RockingChairIcon = forwardRef<\n\tRockingChairIconHandle,\n\tRockingChairIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tvariants={rockingVariants}\n\t\t\t\tanimate={controls}\n\t\t\t\tstyle={{ originX: \"10%\", originY: \"90%\" }}\n\t\t\t>\n\t\t\t\t<motion.polyline\n\t\t\t\t\tpoints=\"3.5 2 6.5 12.5 18 12.5\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tx1=\"9.5\"\n\t\t\t\t\tx2=\"5.5\"\n\t\t\t\t\ty1=\"12.5\"\n\t\t\t\t\ty2=\"20\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tx1=\"15\"\n\t\t\t\t\tx2=\"18.5\"\n\t\t\t\t\ty1=\"12.5\"\n\t\t\t\t\ty2=\"20\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M2.75 18a13 13 0 0 0 18.5 0\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t/>\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nRockingChairIcon.displayName = \"RockingChairIcon\";\n\nexport { RockingChairIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-column-decreasing.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation, type Variants } from \"motion/react\";\r\n\r\nexport interface ChartColumnDecreasingIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChartColumnDecreasingIconProps\r\n\textends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst lineVariants: Variants = {\r\n\tvisible: { pathLength: 1, opacity: 1 },\r\n\thidden: { pathLength: 0, opacity: 0 },\r\n};\r\n\r\nconst ChartColumnDecreasingIcon = forwardRef<\r\n\tChartColumnDecreasingIconHandle,\r\n\tChartColumnDecreasingIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: async () => {\r\n\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\tpathLength: 0,\r\n\t\t\t\t\topacity: 0,\r\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t\t\t\t}));\r\n\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\topacity: 1,\r\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t\t\t\t}));\r\n\t\t\t},\r\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\tpathLength: 0,\r\n\t\t\t\t\topacity: 0,\r\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t\t\t\t}));\r\n\t\t\t\tawait controls.start((i) => ({\r\n\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\topacity: 1,\r\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t\t\t\t}));\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"visible\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={1}\r\n\t\t\t\t\td=\"M13 17V9\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={2}\r\n\t\t\t\t\td=\"M18 17v-3\"\r\n\t\t\t\t/>\r\n\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={0}\r\n\t\t\t\t\td=\"M8 17V5\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nChartColumnDecreasingIcon.displayName = \"ChartColumnDecreasingIcon\";\r\n\r\nexport { ChartColumnDecreasingIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-column-increasing.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface ChartColumnIncreasingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartColumnIncreasingIconProps\n\textends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartColumnIncreasingIcon = forwardRef<\n\tChartColumnIncreasingIconHandle,\n\tChartColumnIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: async () => {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t},\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"visible\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t\td=\"M13 17V9\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t\td=\"M18 17V5\"\n\t\t\t\t/>\n\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t\td=\"M8 17v-3\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChartColumnIncreasingIcon.displayName = \"ChartColumnIncreasingIcon\";\n\nexport { ChartColumnIncreasingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-bar-decreasing.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface ChartBarDecreasingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartBarDecreasingIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartBarDecreasingIcon = forwardRef<\n\tChartBarDecreasingIconHandle,\n\tChartBarDecreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: async () => {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t},\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"visible\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t\td=\"M7 11h8\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t\td=\"M7 16h3\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t\td=\"M7 6h12\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChartBarDecreasingIcon.displayName = \"ChartBarDecreasingIcon\";\n\nexport { ChartBarDecreasingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-bar-increasing.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface ChartBarIncreasingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartBarIncreasingIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartBarIncreasingIcon = forwardRef<\n\tChartBarIncreasingIconHandle,\n\tChartBarIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: async () => {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t},\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"visible\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t\td=\"M7 11h8\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t\td=\"M7 16h12\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t\td=\"M7 6h3\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChartBarIncreasingIcon.displayName = \"ChartBarIncreasingIcon\";\n\nexport { ChartBarIncreasingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/banana.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BananaIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BananaIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst Transition: Transition = {\n\tduration: 0.3,\n\tdelay: 0.1,\n\topacity: { delay: 0.15 },\n};\n\nconst Variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: custom * 0.1,\n\t\t},\n\t}),\n};\n\nconst BananaIcon = forwardRef<BananaIconHandle, BananaIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={Transition}\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t\td=\"M4 13c3.5-2 8-2 10 2a5.5 5.5 0 0 1 8 5\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={Transition}\n\t\t\t\t\t\tvariants={Variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t\td=\"M5.15 17.89c5.52-1.52 8.65-6.89 7-12C11.55 4 11.5 2 13 2c3.22 0 5 5.5 5 8 0 6.5-4.2 12-10.49 12C5.11 22 2 22 2 20c0-1.5 1.14-1.55 3.15-2.11Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBananaIcon.displayName = \"BananaIcon\";\n\nexport { BananaIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/ban.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BanIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BanIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst lineVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tslash: () => ({\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t}),\n};\n\nconst BanIcon = forwardRef<BanIconHandle, BanIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t\tcontrols.start(\"slash\", { delay: 0.5 });\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t\tcontrols.start(\"slash\", { delay: 0.5 });\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m4.9 4.9 14.2 14.2\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBanIcon.displayName = \"BanIcon\";\n\nexport { BanIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/wifi.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface WifiIconHandle {\n\tstartAnimation: () => void;\n}\n\ninterface WifiIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst WIFI_LEVELS = [\n\t{ d: \"M12 20h.01\", initialOpacity: 1, delay: 0 },\n\t{ d: \"M8.5 16.429a5 5 0 0 1 7 0\", initialOpacity: 1, delay: 0.1 },\n\t{ d: \"M5 12.859a10 10 0 0 1 14 0\", initialOpacity: 1, delay: 0.2 },\n\t{ d: \"M2 8.82a15 15 0 0 1 20 0\", initialOpacity: 1, delay: 0.3 },\n];\n\nconst WifiIcon = forwardRef<WifiIconHandle, WifiIconProps>(\n\t({ onMouseEnter, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t{WIFI_LEVELS.map((level, index) => (\n\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\tkey={index + \"wifi\"}\n\t\t\t\t\t\t\td={level.d}\n\t\t\t\t\t\t\tinitial={{ opacity: level.initialOpacity }}\n\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\t\tfadeOut: {\n\t\t\t\t\t\t\t\t\topacity: index === 0 ? 1 : 0,\n\t\t\t\t\t\t\t\t\ttransition: { duration: 0.2 },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tfadeIn: {\n\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\t\t\ttype: \"spring\",\n\t\t\t\t\t\t\t\t\t\tstiffness: 300,\n\t\t\t\t\t\t\t\t\t\tdamping: 20,\n\t\t\t\t\t\t\t\t\t\tdelay: level.delay,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nWifiIcon.displayName = \"WifiIcon\";\n\nexport { WifiIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chrome.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChromeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChromeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.3,\n\topacity: { delay: 0.15 },\n};\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\t...transition,\n\t\t\tdelay: 0.1 * custom,\n\t\t},\n\t}),\n};\n\nconst ChromeIcon = forwardRef<ChromeIconHandle, ChromeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\tr=\"4\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"21.17\"\n\t\t\t\t\t\tx2=\"12\"\n\t\t\t\t\t\ty1=\"8\"\n\t\t\t\t\t\ty2=\"8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"3.95\"\n\t\t\t\t\t\tx2=\"8.54\"\n\t\t\t\t\t\ty1=\"6.06\"\n\t\t\t\t\t\ty2=\"14\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"10.88\"\n\t\t\t\t\t\tx2=\"15.46\"\n\t\t\t\t\t\ty1=\"21.94\"\n\t\t\t\t\t\ty2=\"14\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nChromeIcon.displayName = \"ChromeIcon\";\n\nexport { ChromeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/figma.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface FigmaIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FigmaIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.5,\r\n\t\t\topacity: { delay: 0.25 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst FigmaIcon = forwardRef<FigmaIconHandle, FigmaIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tstyle={{ transformOrigin: \"50% 50%\" }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\trotateY: 0,\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.5,\r\n\t\t\t\t\t\t\t\t\tease: \"linear\",\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\trotateY: 360,\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\t\t\t\t\tease: \"linear\",\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\" />\r\n\t\t\t\t\t\t<path d=\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFigmaIcon.displayName = \"FigmaIcon\";\r\n\r\nexport { FigmaIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/fish-symbol.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FishSymbolIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FishSymbolIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15,\n\t\t\topacity: { delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst FishSymbolIcon = forwardRef<FishSymbolIconHandle, FishSymbolIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 16s9-15 20-4C11 23 2 8 2 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFishSymbolIcon.displayName = \"FishSymbolIcon\";\n\nexport { FishSymbolIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/git-commit-vertical.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface GitCommitVerticalIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface GitCommitVerticalIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15 * custom,\n\t\t\topacity: { delay: 0.1 * custom },\n\t\t},\n\t}),\n};\n\nconst GitCommitVerticalIcon = forwardRef<\n\tGitCommitVerticalIconHandle,\n\tGitCommitVerticalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 3v6\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t/>\n\t\t\t\t<motion.circle\n\t\t\t\t\tcx=\"12\"\n\t\t\t\t\tcy=\"12\"\n\t\t\t\t\tr=\"3\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 15v6\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nGitCommitVerticalIcon.displayName = \"GitCommitVerticalIcon\";\n\nexport { GitCommitVerticalIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/git-commit-horizontal.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface GitCommitHorizontalIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface GitCommitHorizontalIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15 * custom,\n\t\t\topacity: { delay: 0.1 * custom },\n\t\t},\n\t}),\n};\n\nconst GitCommitHorizontalIcon = forwardRef<\n\tGitCommitHorizontalIconHandle,\n\tGitCommitHorizontalIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.circle\n\t\t\t\t\tcx=\"12\"\n\t\t\t\t\tcy=\"12\"\n\t\t\t\t\tr=\"3\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tx1=\"3\"\n\t\t\t\t\tx2=\"9\"\n\t\t\t\t\ty1=\"12\"\n\t\t\t\t\ty2=\"12\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t/>\n\t\t\t\t<motion.line\n\t\t\t\t\tx1=\"15\"\n\t\t\t\t\tx2=\"21\"\n\t\t\t\t\ty1=\"12\"\n\t\t\t\t\ty2=\"12\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nGitCommitHorizontalIcon.displayName = \"GitCommitHorizontalIcon\";\n\nexport { GitCommitHorizontalIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/waypoints.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface WaypointsIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface WaypointsIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.15 * custom,\r\n\t\t\topacity: { delay: 0.1 * custom },\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst WaypointsIcon = forwardRef<WaypointsIconHandle, WaypointsIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"12\"\r\n\t\t\t\t\t\tcy=\"4.5\"\r\n\t\t\t\t\t\tr=\"2.5\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m10.2 6.3-3.9 3.9\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"4.5\"\r\n\t\t\t\t\t\tcy=\"12\"\r\n\t\t\t\t\t\tr=\"2.5\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M7 12h10\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={2}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"19.5\"\r\n\t\t\t\t\t\tcy=\"12\"\r\n\t\t\t\t\t\tr=\"2.5\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m13.8 17.7 3.9-3.9\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={3}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\tcx=\"12\"\r\n\t\t\t\t\t\tcy=\"19.5\"\r\n\t\t\t\t\t\tr=\"2.5\"\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nWaypointsIcon.displayName = \"WaypointsIcon\";\r\n\r\nexport { WaypointsIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/ship.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ShipIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ShipIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15,\n\t\t\topacity: { delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst gVariants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: {\n\t\trotate: [-3, 3, -3],\n\t\ttransition: {\n\t\t\trepeat: Infinity,\n\t\t\trepeatType: \"mirror\" as const,\n\t\t\tduration: 1.2,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst ShipIcon = forwardRef<ShipIconHandle, ShipIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1 .6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.g variants={gVariants} animate={controls}>\n\t\t\t\t\t\t<path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-9-4-9 4c0 2.9.94 5.34 2.81 7.76\" />\n\t\t\t\t\t\t<path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\" />\n\t\t\t\t\t\t<path d=\"M12 10v4\" />\n\t\t\t\t\t\t<path d=\"M12 2v3\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nShipIcon.displayName = \"ShipIcon\";\n\nexport { ShipIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/roller-coaster.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RollerCoasterIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RollerCoasterIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.1 * custom,\n\t\t\topacity: { delay: 0.1 * custom },\n\t\t},\n\t}),\n};\n\nconst RollerCoasterIcon = forwardRef<\n\tRollerCoasterIconHandle,\n\tRollerCoasterIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path d=\"M6 19V5\" variants={variants} animate={controls} />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M10 19V6.8\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M14 19v-7.8\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path d=\"M18 5v4\" variants={variants} animate={controls} />\n\t\t\t\t<motion.path d=\"M18 19v-6\" variants={variants} animate={controls} />\n\t\t\t\t<motion.path d=\"M22 19V9\" variants={variants} animate={controls} />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M2 19V9a4 4 0 0 1 4-4c2 0 4 1.33 6 4s4 4 6 4a4 4 0 1 0-3-6.65\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nRollerCoasterIcon.displayName = \"RollerCoasterIcon\";\n\nexport { RollerCoasterIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/airplane.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AirplaneIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AirplaneIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SPEED_LINES = [\n\t{ x1: 5, y1: 15, x2: 1, y2: 19, delay: 0.1 },\n\t{ x1: 7, y1: 17, x2: 3, y2: 21, delay: 0.2 },\n\t{ x1: 9, y1: 19, x2: 5, y2: 23, delay: 0.3 },\n];\n\nconst AirplaneIcon = forwardRef<AirplaneIconHandle, AirplaneIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\ttransition={{\n\t\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\t\ttimes: [0, 0.6, 1],\n\t\t\t\t\t\t\ttype: \"spring\",\n\t\t\t\t\t\t\tstiffness: 200,\n\t\t\t\t\t\t\tdamping: 10,\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { x: 0, y: 0, scale: 1 },\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\tx: [0, 5, 3],\n\t\t\t\t\t\t\t\ty: [0, -5, -3],\n\t\t\t\t\t\t\t\tscale: 0.8,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\td=\"M17.8 19.2L16 11l3.5-3.5C21 6 21.5 4 21 3c-1-.5-3 0-4.5 1.5L13 8 4.8 6.2c-.5-.1-.9.1-1.1.5l-.3.5c-.2.5-.1 1 .3 1.3L9 12l-2 3H4l-1 1 3 2 2 3 1-1v-3l3-2 3.5 5.3c.3.4.8.5 1.3.3l.5-.2c.4-.3.6-.7.5-1.2z\"\n\t\t\t\t\t/>\n\t\t\t\t\t{SPEED_LINES.map((line, index) => (\n\t\t\t\t\t\t<motion.line\n\t\t\t\t\t\t\tkey={index + \"airplane\"}\n\t\t\t\t\t\t\tx1={line.x1}\n\t\t\t\t\t\t\ty1={line.y1}\n\t\t\t\t\t\t\tx2={line.x2}\n\t\t\t\t\t\t\ty2={line.y2}\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstrokeWidth=\"1\"\n\t\t\t\t\t\t\tinitial={{ opacity: 0, pathLength: 1, pathSpacing: 1 }}\n\t\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\t\t\tpathOffset: [0, 1],\n\t\t\t\t\t\t\t\t\ttranslateX: -3,\n\t\t\t\t\t\t\t\t\ttranslateY: 3,\n\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\t\t\tduration: 0.3,\n\t\t\t\t\t\t\t\t\t\ttimes: [0, 0.6, 1],\n\t\t\t\t\t\t\t\t\t\ttype: \"spring\",\n\t\t\t\t\t\t\t\t\t\tstiffness: 200,\n\t\t\t\t\t\t\t\t\t\tdamping: 10,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\t\tpathOffset: [1, 2],\n\t\t\t\t\t\t\t\t\ttranslateX: [0, 0],\n\t\t\t\t\t\t\t\t\ttranslateY: [0, 0],\n\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttransition={{ duration: 0.15, delay: line.delay }}\n\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAirplaneIcon.displayName = \"AirplaneIcon\";\n\nexport { AirplaneIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/drum.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface DrumIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface DrumIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t},\n\tanimate: (custom: number) => ({\n\t\trotate: custom === 1 ? [-10, 10, 0] : [10, -10, 0],\n\t\ttransition: {\n\t\t\tdelay: 0.1 * custom,\n\t\t\trepeat: Infinity,\n\t\t\trepeatType: \"reverse\",\n\t\t\tduration: 0.5,\n\t\t},\n\t}),\n};\n\nconst DrumIcon = forwardRef<DrumIconHandle, DrumIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m2 2 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m22 2-8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<ellipse cx=\"12\" cy=\"9\" rx=\"10\" ry=\"5\" />\n\t\t\t\t\t<path d=\"M7 13.4v7.9\" />\n\t\t\t\t\t<path d=\"M12 14v8\" />\n\t\t\t\t\t<path d=\"M17 13.4v7.9\" />\n\t\t\t\t\t<path d=\"M2 9v8a10 5 0 0 0 20 0V9\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDrumIcon.displayName = \"DrumIcon\";\n\nexport { DrumIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/train-track.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface TrainTrackIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TrainTrackIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.3,\n\topacity: { delay: 0.15 },\n};\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\t...transition,\n\t\t\tdelay: 0.1 * custom,\n\t\t},\n\t}),\n};\n\nconst TrainTrackIcon = forwardRef<TrainTrackIconHandle, TrainTrackIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M2 17 17 2\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m2 14 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={4}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m5 11 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m8 8 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m11 5 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m14 2 8 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<path d=\"M7 22 22 7\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTrainTrackIcon.displayName = \"TrainTrackIcon\";\n\nexport { TrainTrackIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sparkles.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SparklesIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SparklesIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst sparkleVariants: Variants = {\n\tinitial: {\n\t\ty: 0,\n\t\tfill: \"none\",\n\t},\n\thover: {\n\t\ty: [0, -1, 0, 0],\n\t\tfill: \"currentColor\",\n\t\ttransition: {\n\t\t\tduration: 1,\n\t\t\tbounce: 0.3,\n\t\t},\n\t},\n};\n\nconst starVariants: Variants = {\n\tinitial: {\n\t\topacity: 1,\n\t\tx: 0,\n\t\ty: 0,\n\t},\n\tblink: () => ({\n\t\topacity: [0, 1, 0, 0, 0, 0, 1],\n\t\ttransition: {\n\t\t\tduration: 2,\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 70,\n\t\t\tdamping: 10,\n\t\t\tmass: 0.4,\n\t\t},\n\t}),\n};\n\nconst SparklesIcon = forwardRef<SparklesIconHandle, SparklesIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst starControls = useAnimation();\n\t\tconst sparkleControls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tsparkleControls.start(\"hover\");\n\t\t\t\t\tstarControls.start(\"blink\", { delay: 1 });\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tsparkleControls.start(\"initial\");\n\t\t\t\t\tstarControls.start(\"initial\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsparkleControls.start(\"hover\");\n\t\t\t\t\tstarControls.start(\"blink\", { delay: 1 });\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseEnter, sparkleControls, starControls]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsparkleControls.start(\"initial\");\n\t\t\t\t\tstarControls.start(\"initial\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[sparkleControls, starControls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\"\n\t\t\t\t\t\tvariants={sparkleVariants}\n\t\t\t\t\t\tanimate={sparkleControls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M20 3v4\"\n\t\t\t\t\t\tvariants={starVariants}\n\t\t\t\t\t\tanimate={starControls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M22 5h-4\"\n\t\t\t\t\t\tvariants={starVariants}\n\t\t\t\t\t\tanimate={starControls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4 17v2\"\n\t\t\t\t\t\tvariants={starVariants}\n\t\t\t\t\t\tanimate={starControls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M5 18H3\"\n\t\t\t\t\t\tvariants={starVariants}\n\t\t\t\t\t\tanimate={starControls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSparklesIcon.displayName = \"SparklesIcon\";\n\nexport { SparklesIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/webhook.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface WebhookIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface WebhookIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.3,\n\topacity: { delay: 0.15 },\n};\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\t...transition,\n\t\t\tdelay: 0.1,\n\t\t},\n\t},\n};\n\nconst WebhookIcon = forwardRef<WebhookIconHandle, WebhookIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m6 17 3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m12 6 3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nWebhookIcon.displayName = \"WebhookIcon\";\n\nexport { WebhookIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/rabbit.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RabbitIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RabbitIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.6,\n\tease: [0.42, 0, 0.58, 1],\n};\n\nconst speedVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\tx: 0,\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\trotate: [0, 5, -5, 3, -3, 0],\n\t\tx: [0, 3, -3, 2, -2, 0],\n\t\ty: [0, 1.5, -1.5, 1, -1, 0],\n\t\ttransition,\n\t},\n};\n\nconst RabbitIcon = forwardRef<RabbitIconHandle, RabbitIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={speedVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 21h-8a4 4 0 0 1-4-4 7 7 0 0 1 7-7h.2L9.6 6.4a1 1 0 1 1 2.8-2.8L15.8 7h.2c3.3 0 6 2.7 6 6v1a2 2 0 0 1-2 2h-1a3 3 0 0 0-3 3\" />\n\t\t\t\t\t<path d=\"M13 16a3 3 0 0 1 2.24 5\" />\n\t\t\t\t\t<path d=\"M18 12h.01\" />\n\t\t\t\t\t<path d=\"M20 8.54V4a2 2 0 1 0-4 0v3\" />\n\t\t\t\t\t<path d=\"M7.612 12.524a3 3 0 1 0-1.6 4.3\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRabbitIcon.displayName = \"RabbitIcon\";\n\nexport { RabbitIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cog.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CogIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CogIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst CogIcon = forwardRef<CogIconHandle, CogIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 50, damping: 10 }}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\trotate: 0,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\trotate: 180,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z\" />\r\n\t\t\t\t\t<path d=\"M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z\" />\r\n\t\t\t\t\t<path d=\"M12 2v2\" />\r\n\t\t\t\t\t<path d=\"M12 22v-2\" />\r\n\t\t\t\t\t<path d=\"m17 20.66-1-1.73\" />\r\n\t\t\t\t\t<path d=\"M11 10.27 7 3.34\" />\r\n\t\t\t\t\t<path d=\"m20.66 17-1.73-1\" />\r\n\t\t\t\t\t<path d=\"m3.34 7 1.73 1\" />\r\n\t\t\t\t\t<path d=\"M14 12h8\" />\r\n\t\t\t\t\t<path d=\"M2 12h2\" />\r\n\t\t\t\t\t<path d=\"m20.66 7-1.73 1\" />\r\n\t\t\t\t\t<path d=\"m3.34 17 1.73-1\" />\r\n\t\t\t\t\t<path d=\"m17 3.34-1 1.73\" />\r\n\t\t\t\t\t<path d=\"m11 13.73-4 6.93\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCogIcon.displayName = \"CogIcon\";\r\n\r\nexport { CogIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cpu.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CpuIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CpuIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst transition: Transition = {\n\tduration: 0.5,\n\tease: \"easeInOut\",\n\trepeat: 1,\n};\n\nconst yVariants: Variants = {\n\tnormal: {\n\t\tscale: 1,\n\t\trotate: 0,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tscaleY: [1, 1.5, 1],\n\t\topacity: [1, 0.8, 1],\n\t},\n};\nconst xVariants: Variants = {\n\tnormal: {\n\t\tscale: 1,\n\t\trotate: 0,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tscaleX: [1, 1.5, 1],\n\t\topacity: [1, 0.8, 1],\n\t},\n};\n\nconst CpuIcon = forwardRef<CpuIconHandle, CpuIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<rect width=\"16\" height=\"16\" x=\"4\" y=\"4\" rx=\"2\" />\n\t\t\t\t\t<rect width=\"6\" height=\"6\" x=\"9\" rx=\"1\" y=\"9\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M15 2v2\"\n\t\t\t\t\t\tvariants={yVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M15 20v2\"\n\t\t\t\t\t\tvariants={yVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 15h2\"\n\t\t\t\t\t\tvariants={xVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2 9h2\"\n\t\t\t\t\t\tvariants={xVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M20 15h2\"\n\t\t\t\t\t\tvariants={xVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M20 9h2\"\n\t\t\t\t\t\tvariants={xVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9 2v2\"\n\t\t\t\t\t\tvariants={yVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9 20v2\"\n\t\t\t\t\t\tvariants={yVariants}\n\t\t\t\t\t\ttransition={transition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCpuIcon.displayName = \"CpuIcon\";\n\nexport { CpuIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/rocket.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RocketIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RocketIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\tx: [0, 0, -3, 2, -2, 1, -1, 0],\r\n\t\ty: [0, -3, 0, -2, -3, -1, -2, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 6,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\trepeat: Infinity,\r\n\t\t\trepeatType: \"reverse\",\r\n\t\t\ttimes: [0, 0.15, 0.3, 0.45, 0.6, 0.75, 0.9, 1],\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst fireVariants: Variants = {\r\n\tnormal: {\r\n\t\td: \"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t},\r\n\tanimate: {\r\n\t\td: [\r\n\t\t\t\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t\t\t\"M4.5 16.5c-1.5 1.26-3 5.5-3 5.5s4.74-1 6-2.5c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t\t\t\"M4.5 16.5c-1.5 1.26-2.2 4.8-2.2 4.8s3.94-0.3 5.2-1.8c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t\t\t\"M4.5 16.5c-1.5 1.26-2.8 5.2-2.8 5.2s4.54-0.7 5.8-2.2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t\t\t\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\",\r\n\t\t],\r\n\t\ttransition: {\r\n\t\t\tduration: 2,\r\n\t\t\tease: [0.4, 0, 0.2, 1],\r\n\t\t\trepeat: Infinity,\r\n\t\t\ttimes: [0, 0.2, 0.5, 0.8, 1],\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst RocketIcon = forwardRef<RocketIconHandle, RocketIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\"\r\n\t\t\t\t\t\tvariants={fireVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\r\n\t\t\t\t\t<path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\r\n\t\t\t\t\t<path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nRocketIcon.displayName = \"RocketIcon\";\r\n\r\nexport { RocketIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/activity.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ActivityIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.6,\r\n\t\t\tease: \"linear\",\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\td=\"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nActivityIcon.displayName = \"ActivityIcon\";\r\n\r\nexport { ActivityIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [0.5, 0],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.5,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst MapPinIcon = forwardRef<MapPinIconHandle, MapPinIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"10\"\n\t\t\t\t\t\tr=\"3\"\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMapPinIcon.displayName = \"MapPinIcon\";\n\nexport { MapPinIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-check-inside.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MapPinCheckInsideIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MapPinCheckInsideIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\ty: [0, -5, -3],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\ttimes: [0, 0.6, 1],\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 10,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst checkVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst MapPinCheckInsideIcon = forwardRef<\r\n\tMapPinCheckInsideIconHandle,\r\n\tMapPinCheckInsideIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\tvariants={svgVariants}\r\n\t\t\t\tinitial=\"normal\"\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"m9 10 2 2 4-4\"\r\n\t\t\t\t\tvariants={checkVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nMapPinCheckInsideIcon.displayName = \"MapPinCheckInsideIcon\";\r\n\r\nexport { MapPinCheckInsideIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-minus-inside.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinMinusInsideIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinMinusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst minusVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst MapPinMinusInsideIcon = forwardRef<\n\tMapPinMinusInsideIconHandle,\n\tMapPinMinusInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tvariants={svgVariants}\n\t\t\t\tinitial=\"normal\"\n\t\t\t\tanimate={controls}\n\t\t\t>\n\t\t\t\t<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M9 10h6\"\n\t\t\t\t\tvariants={minusVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nMapPinMinusInsideIcon.displayName = \"MapPinMinusInsideIcon\";\n\nexport { MapPinMinusInsideIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-plus-inside.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinPlusInsideIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinPlusInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst verticalBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst horizontalBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.6,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.6 },\n\t\t},\n\t},\n};\n\nconst MapPinPlusInsideIcon = forwardRef<\n\tMapPinPlusInsideIconHandle,\n\tMapPinPlusInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tvariants={svgVariants}\n\t\t\t\tinitial=\"normal\"\n\t\t\t\tanimate={controls}\n\t\t\t>\n\t\t\t\t<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 7v6\"\n\t\t\t\t\tvariants={horizontalBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M9 10h6\"\n\t\t\t\t\tvariants={verticalBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nMapPinPlusInsideIcon.displayName = \"MapPinPlusInsideIcon\";\n\nexport { MapPinPlusInsideIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-off.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MapPinOffIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MapPinOffIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\ty: [0, -5, -3],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\ttimes: [0, 0.6, 1],\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 10,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst barVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.3,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst MapPinOffIcon = forwardRef<MapPinOffIconHandle, MapPinOffIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tvariants={svgVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M12.75 7.09a3 3 0 0 1 2.16 2.16\" />\r\n\t\t\t\t\t<path d=\"M17.072 17.072c-1.634 2.17-3.527 3.912-4.471 4.727a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 1.432-4.568\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m2 2 20 20\"\r\n\t\t\t\t\t\tvariants={barVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"M8.475 2.818A8 8 0 0 1 20 10c0 1.183-.31 2.377-.81 3.533\" />\r\n\t\t\t\t\t<path d=\"M9.13 9.13a3 3 0 0 0 3.74 3.74\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nMapPinOffIcon.displayName = \"MapPinOffIcon\";\r\n\r\nexport { MapPinOffIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst MapPinCheckIcon = forwardRef<MapPinCheckIconHandle, MapPinCheckIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M19.43 12.935c.357-.967.57-1.955.57-2.935a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32.197 32.197 0 0 0 .813-.728\" />\n\t\t\t\t\t<circle cx=\"12\" cy=\"10\" r=\"3\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m16 18 2 2 4-4\"\n\t\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMapPinCheckIcon.displayName = \"MapPinCheckIcon\";\n\nexport { MapPinCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-house.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinHouseIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinHouseIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst houseVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst MapPinHouseIcon = forwardRef<MapPinHouseIconHandle, MapPinHouseIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 .601.2\" />\n\t\t\t\t\t<circle cx=\"10\" cy=\"10\" r=\"3\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M15 22a1 1 0 0 1-1-1v-4a1 1 0 0 1 .445-.832l3-2a1 1 0 0 1 1.11 0l3 2A1 1 0 0 1 22 17v4a1 1 0 0 1-1 1z M18 22v-3\"\n\t\t\t\t\t\tvariants={houseVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMapPinHouseIcon.displayName = \"MapPinHouseIcon\";\n\nexport { MapPinHouseIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-minus.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinMinusIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinMinusIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst minusVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.3,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst MapPinMinusIcon = forwardRef<MapPinMinusIconHandle, MapPinMinusIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M18.977 14C19.6 12.701 20 11.343 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\" />\n\t\t\t\t\t<circle cx=\"12\" cy=\"10\" r=\"3\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16 18h6\"\n\t\t\t\t\t\tvariants={minusVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMapPinMinusIcon.displayName = \"MapPinMinusIcon\";\n\nexport { MapPinMinusIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-plus.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MapPinPlusIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MapPinPlusIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst svgVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\ty: [0, -5, -3],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\ttimes: [0, 0.6, 1],\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 10,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst verticalBarVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.3,\r\n\t\t\tduration: 0.2,\r\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst horizontalBarVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.6,\r\n\t\t\tduration: 0.2,\r\n\t\t\topacity: { duration: 0.1, delay: 0.6 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst MapPinPlusIcon = forwardRef<MapPinPlusIconHandle, MapPinPlusIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tvariants={svgVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M19.914 11.105A7.298 7.298 0 0 0 20 10a8 8 0 0 0-16 0c0 4.993 5.539 10.193 7.399 11.799a1 1 0 0 0 1.202 0 32 32 0 0 0 .824-.738\" />\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"10\" r=\"3\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M16 18h6\"\r\n\t\t\t\t\t\tvariants={horizontalBarVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M19 15v6\"\r\n\t\t\t\t\t\tvariants={verticalBarVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nMapPinPlusIcon.displayName = \"MapPinPlusIcon\";\r\n\r\nexport { MapPinPlusIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/map-pin-x-inside.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MapPinXInsideIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MapPinXInsideIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\ty: 0,\n\t},\n\tanimate: {\n\t\ty: [0, -5, -3],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\ttimes: [0, 0.6, 1],\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 10,\n\t\t},\n\t},\n};\n\nconst firstBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst secondBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.6,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.6 },\n\t\t},\n\t},\n};\n\nconst MapPinXInsideIcon = forwardRef<\n\tMapPinXInsideIconHandle,\n\tMapPinXInsideIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tvariants={svgVariants}\n\t\t\t\tinitial=\"normal\"\n\t\t\t\tanimate={controls}\n\t\t\t>\n\t\t\t\t<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"m14.5 7.5-5 5\"\n\t\t\t\t\tvariants={firstBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"m9.5 7.5 5 5\"\n\t\t\t\t\tvariants={secondBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nMapPinXInsideIcon.displayName = \"MapPinXInsideIcon\";\n\nexport { MapPinXInsideIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/battery-full.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface BatteryFullIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BatteryFullIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tinitial: { opacity: 1 },\n\tfadeOut: {\n\t\topacity: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n\tfadeIn: (i: number) => ({\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tdelay: i * 0.4,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t}),\n};\n\nconst BatteryFullIcon = forwardRef<BatteryFullIconHandle, BatteryFullIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"initial\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"initial\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<rect width=\"16\" height=\"10\" x=\"2\" y=\"7\" rx=\"2\" ry=\"2\" />\n\t\t\t\t\t<line x1=\"22\" x2=\"22\" y1=\"11\" y2=\"13\" />\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"6\"\n\t\t\t\t\t\tx2=\"6\"\n\t\t\t\t\t\ty1=\"11\"\n\t\t\t\t\t\ty2=\"13\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"initial\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"10\"\n\t\t\t\t\t\tx2=\"10\"\n\t\t\t\t\t\ty1=\"11\"\n\t\t\t\t\t\ty2=\"13\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"initial\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"14\"\n\t\t\t\t\t\tx2=\"14\"\n\t\t\t\t\t\ty1=\"11\"\n\t\t\t\t\t\ty2=\"13\"\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"initial\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBatteryFullIcon.displayName = \"BatteryFullIcon\";\n\nexport { BatteryFullIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/terminal.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface TerminalIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface TerminalIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst lineVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: {\r\n\t\topacity: [1, 0, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.8,\r\n\t\t\trepeat: Infinity,\r\n\t\t\tease: \"linear\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst TerminalIcon = forwardRef<TerminalIconHandle, TerminalIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<polyline points=\"4 17 10 11 4 5\" />\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"12\"\r\n\t\t\t\t\t\tx2=\"20\"\r\n\t\t\t\t\t\ty1=\"19\"\r\n\t\t\t\t\t\ty2=\"19\"\r\n\t\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTerminalIcon.displayName = \"TerminalIcon\";\r\n\r\nexport { TerminalIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/keyboard.tsx",
      "content": "\"use client\";\n\nimport {\n\tforwardRef,\n\tuseCallback,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from \"react\";\nimport type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { AnimatePresence, motion, useAnimation } from \"motion/react\";\n\nexport interface KeyboardIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface KeyboardIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst KEYBOARD_PATHS = [\n\t{ id: \"key1\", d: \"M10 8h.01\" },\n\t{ id: \"key2\", d: \"M12 12h.01\" },\n\t{ id: \"key3\", d: \"M14 8h.01\" },\n\t{ id: \"key4\", d: \"M16 12h.01\" },\n\t{ id: \"key5\", d: \"M18 8h.01\" },\n\t{ id: \"key6\", d: \"M6 8h.01\" },\n\t{ id: \"key7\", d: \"M7 16h10\" },\n\t{ id: \"key8\", d: \"M8 12h.01\" },\n];\n\nconst KeyboardIcon = forwardRef<KeyboardIconHandle, KeyboardIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst [isHovered, setIsHovered] = useState(false);\n\t\tconst controls = useAnimation();\n\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => setIsHovered(true),\n\t\t\t\tstopAnimation: () => setIsHovered(false),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsetIsHovered(true);\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsetIsHovered(false);\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseLeave]\n\t\t);\n\n\t\tuseEffect(() => {\n\t\t\tconst animateKeys = async () => {\n\t\t\t\tif (isHovered) {\n\t\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\t\topacity: [1, 0.2, 1],\n\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\tduration: 1.5,\n\t\t\t\t\t\t\ttimes: [0, 0.5, 1],\n\t\t\t\t\t\t\tdelay: i * 0.2 * Math.random(),\n\t\t\t\t\t\t\trepeat: 1,\n\t\t\t\t\t\t\trepeatType: \"reverse\",\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\t\t\t\t} else {\n\t\t\t\t\tcontrols.stop();\n\t\t\t\t\tcontrols.set({ opacity: 1 });\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tanimateKeys();\n\t\t}, [isHovered, controls]);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<rect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\" />\n\t\t\t\t\t<AnimatePresence>\n\t\t\t\t\t\t{KEYBOARD_PATHS.map((path, index) => (\n\t\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\t\tkey={path.id}\n\t\t\t\t\t\t\t\td={path.d}\n\t\t\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t\t\tcustom={index}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</AnimatePresence>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nKeyboardIcon.displayName = \"KeyboardIcon\";\n\nexport { KeyboardIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/clap.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ClapIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ClapIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\toriginX: \"4px\",\r\n\t\toriginY: \"20px\",\r\n\t},\r\n\tanimate: {\r\n\t\trotate: [-10, -10, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.8,\r\n\t\t\ttimes: [0, 0.5, 1],\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst clapVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\toriginX: \"3px\",\r\n\t\toriginY: \"11px\",\r\n\t},\r\n\tanimate: {\r\n\t\trotate: [0, -10, 16, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\ttimes: [0, 0.3, 0.6, 1],\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ClapIcon = forwardRef<ClapIconHandle, ClapIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g animate={controls} variants={variants}>\r\n\t\t\t\t\t\t<motion.g animate={controls} variants={clapVariants}>\r\n\t\t\t\t\t\t\t<path d=\"M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3Z\" />\r\n\t\t\t\t\t\t\t<path d=\"m6.2 5.3 3.1 3.9\" />\r\n\t\t\t\t\t\t\t<path d=\"m12.4 3.4 3.1 4\" />\r\n\t\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t\t<path d=\"M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2Z\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nClapIcon.displayName = \"ClapIcon\";\r\n\r\nexport { ClapIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/layout-panel-top.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface LayoutPanelTopIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface LayoutPanelTopIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst LayoutPanelTopIcon = forwardRef<\n\tLayoutPanelTopIconHandle,\n\tLayoutPanelTopIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.rect\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"7\"\n\t\t\t\t\tx=\"3\"\n\t\t\t\t\ty=\"3\"\n\t\t\t\t\trx=\"1\"\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { opacity: 1, translateY: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\ttranslateY: [-5, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\topacity: { duration: 0.5, times: [0.2, 1] },\n\t\t\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<motion.rect\n\t\t\t\t\twidth=\"7\"\n\t\t\t\t\theight=\"7\"\n\t\t\t\t\tx=\"3\"\n\t\t\t\t\ty=\"14\"\n\t\t\t\t\trx=\"1\"\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { opacity: 1, translateX: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\ttranslateX: [-10, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\topacity: { duration: 0.7, times: [0.5, 1] },\n\t\t\t\t\t\t\t\ttranslateX: { delay: 0.3 },\n\t\t\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<motion.rect\n\t\t\t\t\twidth=\"7\"\n\t\t\t\t\theight=\"7\"\n\t\t\t\t\tx=\"14\"\n\t\t\t\t\ty=\"14\"\n\t\t\t\t\trx=\"1\"\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { opacity: 1, translateX: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\topacity: [0, 1],\n\t\t\t\t\t\t\ttranslateX: [10, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\topacity: { duration: 0.8, times: [0.5, 1] },\n\t\t\t\t\t\t\t\ttranslateX: { delay: 0.4 },\n\t\t\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nLayoutPanelTopIcon.displayName = \"LayoutPanelTopIcon\";\n\nexport { LayoutPanelTopIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/book-text.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BookTextIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BookTextIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst BookTextIcon = forwardRef<BookTextIconHandle, BookTextIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\tscale: [1, 1.04, 1],\n\t\t\t\t\t\t\trotate: [0, -8, 8, -8, 0],\n\t\t\t\t\t\t\ty: [0, -2, 0],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\tduration: 0.6,\n\t\t\t\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\t\t\t\ttimes: [0, 0.2, 0.5, 0.8, 1],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnormal: {\n\t\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\t\trotate: 0,\n\t\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\" />\n\t\t\t\t\t<path d=\"M8 11h8\" />\n\t\t\t\t\t<path d=\"M8 7h6\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBookTextIcon.displayName = \"BookTextIcon\";\n\nexport { BookTextIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/shower-head.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ShowerHeadIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ShowerHeadIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dropVariants: Variants = {\n\tanimate: {\n\t\ttransition: {\n\t\t\tstaggerChildren: 0.2,\n\t\t},\n\t},\n};\n\nconst dropChildVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [1, 0.2, 1],\n\t\ttransition: {\n\t\t\tduration: 1,\n\t\t\trepeat: Infinity,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst dropPath = [\n\t{ id: \"drop1\", d: \"M14 17v.01\" },\n\t{ id: \"drop2\", d: \"M10 16v.01\" },\n\t{ id: \"drop3\", d: \"M13 13v.01\" },\n\t{ id: \"drop4\", d: \"M16 10v.01\" },\n\t{ id: \"drop5\", d: \"M11 20v.01\" },\n\t{ id: \"drop6\", d: \"M17 14v.01\" },\n\t{ id: \"drop7\", d: \"M20 11v.01\" },\n];\n\nconst ShowerHeadIcon = forwardRef<ShowerHeadIconHandle, ShowerHeadIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"m4 4 2.5 2.5\" />\n\t\t\t\t\t<path d=\"M13.5 6.5a4.95 4.95 0 0 0-7 7\" />\n\t\t\t\t\t<path d=\"M15 5 5 15\" />\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={dropVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{dropPath.map((path) => (\n\t\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\t\tvariants={dropChildVariants}\n\t\t\t\t\t\t\t\tkey={path.id}\n\t\t\t\t\t\t\t\td={path.d}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</motion.g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nShowerHeadIcon.displayName = \"ShowerHeadIcon\";\n\nexport { ShowerHeadIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/telescope.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface TelescopeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TelescopeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst scopeVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n\tanimate: {\n\t\trotate: -15,\n\t\ttransition: {\n\t\t\tduration: 0.8,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst TelescopeIcon = forwardRef<TelescopeIconHandle, TelescopeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={scopeVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tstyle={{ transformOrigin: \"12px 13px\" }}\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\" />\n\t\t\t\t\t\t<path d=\"m13.56 11.747 4.332-.924\" />\n\t\t\t\t\t\t<path d=\"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44\" />\n\t\t\t\t\t\t<path d=\"m13.56 11.747 4.332-.924\" />\n\t\t\t\t\t\t<path d=\"M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z\" />\n\t\t\t\t\t\t<path d=\"m6.158 8.633 1.114 4.456\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t\t<path d=\"m16 21-3.105-6.21\" />\n\t\t\t\t\t<path d=\"m8 21 3.105-6.21\" />\n\t\t\t\t\t<circle cx=\"12\" cy=\"13\" r=\"2\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTelescopeIcon.displayName = \"TelescopeIcon\";\n\nexport { TelescopeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/wind.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface WindIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface WindIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: (custom: number) => ({\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: custom,\r\n\t\t},\r\n\t}),\r\n\tanimate: (custom: number) => ({\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: custom,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst WindIcon = forwardRef<WindIconHandle, WindIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M12.8 19.6A2 2 0 1 0 14 16H2\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0.2}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M17.5 8a2.5 2.5 0 1 1 2 4H2\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M9.8 4.4A2 2 0 1 1 11 8H2\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0.4}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nWindIcon.displayName = \"WindIcon\";\r\n\r\nexport { WindIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cctv.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CctvIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CctvIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dotVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: {\n\t\topacity: [1, 0, 1],\n\t\ttransition: {\n\t\t\tduration: 1,\n\t\t\trepeat: Infinity,\n\t\t},\n\t},\n};\n\nconst cctvVariants: Variants = {\n\tnormal: { rotate: 0 },\n\tanimate: {\n\t\trotate: [0, -15, 10, 0],\n\t\toriginX: \"9px\",\n\t\toriginY: \"15px\",\n\t\ttransition: {\n\t\t\tduration: 2,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst CctvIcon = forwardRef<CctvIconHandle, CctvIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.g variants={cctvVariants} animate={controls}>\n\t\t\t\t\t\t<path d=\"M16.75 12h3.632a1 1 0 0 1 .894 1.447l-2.034 4.069a1 1 0 0 1-1.708.134l-2.124-2.97\" />\n\t\t\t\t\t\t<path d=\"M17.106 9.053a1 1 0 0 1 .447 1.341l-3.106 6.211a1 1 0 0 1-1.342.447L3.61 12.3a2.92 2.92 0 0 1-1.3-3.91L3.69 5.6a2.92 2.92 0 0 1 3.92-1.3z\" />\n\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\td=\"M7 9h.01\"\n\t\t\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</motion.g>\n\t\t\t\t\t<path d=\"M2 19h3.76a2 2 0 0 0 1.8-1.1L9 15\" />\n\t\t\t\t\t<path d=\"M2 21v-4\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCctvIcon.displayName = \"CctvIcon\";\n\nexport { CctvIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/coffee.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CoffeeIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CoffeeIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\ty: -3,\r\n\t\topacity: [0, 1, 0],\r\n\t\ttransition: {\r\n\t\t\trepeat: Infinity,\r\n\t\t\tduration: 1.5,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: 0.2 * custom,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst CoffeeIcon = forwardRef<CoffeeIconHandle, CoffeeIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M10 2v2\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={0.2}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M14 2v2\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={0.4}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M6 2v2\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCoffeeIcon.displayName = \"CoffeeIcon\";\r\n\r\nexport { CoffeeIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-down-z-a.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowDownZAIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowDownZAIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst swapTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 240,\r\n\tdamping: 24,\r\n};\r\n\r\nconst swapVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateY: 0,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\ttranslateY: custom * 10,\r\n\t}),\r\n};\r\n\r\nconst ArrowDownZAIcon = forwardRef<ArrowDownZAIconHandle, ArrowDownZAIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m3 16 4 4 4-4\" />\r\n\t\t\t\t\t<path d=\"M7 20V4\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M15 4h5l-5 6h5\"\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={-1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M20 18h-5\" />\r\n\t\t\t\t\t\t<path d=\"M15 20v-3.5a2.5 2.5 0 0 1 5 0V20\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowDownZAIcon.displayName = \"ArrowDownZAIcon\";\r\n\r\nexport { ArrowDownZAIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-down-a-z.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowDownAZIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowDownAZIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst swapTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 240,\r\n\tdamping: 24,\r\n};\r\n\r\nconst swapVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateY: 0,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\ttranslateY: custom * 10,\r\n\t}),\r\n};\r\n\r\nconst ArrowDownAZIcon = forwardRef<ArrowDownAZIconHandle, ArrowDownAZIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m3 16 4 4 4-4\" />\r\n\t\t\t\t\t<path d=\"M7 20V4\" />\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M20 8h-5\" />\r\n\t\t\t\t\t\t<path d=\"M15 10V6.5a2.5 2.5 0 0 1 5 0V10\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M15 14h5l-5 6h5\"\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={-1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowDownAZIcon.displayName = \"ArrowDownAZIcon\";\r\n\r\nexport { ArrowDownAZIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-down-0-1.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowDown01IconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowDown01IconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst swapTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 240,\r\n\tdamping: 24,\r\n};\r\n\r\nconst swapVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateY: 0,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\ttranslateY: custom * 10,\r\n\t}),\r\n};\r\n\r\nconst ArrowDown01con = forwardRef<ArrowDown01IconHandle, ArrowDown01IconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m3 16 4 4 4-4\" />\r\n\t\t\t\t\t<path d=\"M7 20V4\" />\r\n\t\t\t\t\t<motion.rect\r\n\t\t\t\t\t\tx=\"15\"\r\n\t\t\t\t\t\ty=\"4\"\r\n\t\t\t\t\t\twidth=\"4\"\r\n\t\t\t\t\t\theight=\"6\"\r\n\t\t\t\t\t\try=\"2\"\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={-1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M17 20v-6h-2\" />\r\n\t\t\t\t\t\t<path d=\"M15 20h4\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowDown01con.displayName = \"ArrowDown01con\";\r\n\r\nexport { ArrowDown01con };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-down-1-0.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowDown10IconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowDown10IconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst swapTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 240,\r\n\tdamping: 24,\r\n};\r\n\r\nconst swapVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateY: 0,\r\n\t},\r\n\tanimate: (custom: number) => ({\r\n\t\ttranslateY: custom * 10,\r\n\t}),\r\n};\r\n\r\nconst ArrowDown10Icon = forwardRef<ArrowDown10IconHandle, ArrowDown10IconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m3 16 4 4 4-4\" />\r\n\t\t\t\t\t<path d=\"M7 20V4\" />\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M17 10V4h-2\" />\r\n\t\t\t\t\t\t<path d=\"M15 10h4\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t<motion.rect\r\n\t\t\t\t\t\tx=\"15\"\r\n\t\t\t\t\t\ty=\"14\"\r\n\t\t\t\t\t\twidth=\"4\"\r\n\t\t\t\t\t\theight=\"6\"\r\n\t\t\t\t\t\try=\"2\"\r\n\t\t\t\t\t\tvariants={swapVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={-1}\r\n\t\t\t\t\t\ttransition={swapTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowDown10Icon.displayName = \"ArrowDown10Icon\";\r\n\r\nexport { ArrowDown10Icon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/clipboard-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface ClipboardCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ClipboardCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 0,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst ClipboardCheckIcon = forwardRef<\n\tClipboardCheckIconHandle,\n\tClipboardCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tclassName=\"text-foreground hover:text-foreground transition-colors duration-200\"\n\t\t\t>\n\t\t\t\t<rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\" ry=\"1\" />\n\t\t\t\t<path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\td=\"m9 14 2 2 4-4\"\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nClipboardCheckIcon.displayName = \"ClipboardCheckIcon\";\n\nexport { ClipboardCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/facebook.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FacebookIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FacebookIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst facebookVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst FacebookIcon = forwardRef<FacebookIconHandle, FacebookIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={facebookVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFacebookIcon.displayName = \"FacebookIcon\";\n\nexport { FacebookIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/linkedin.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface LinkedinIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface LinkedinIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst rectVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst LinkedinIcon = forwardRef<LinkedinIconHandle, LinkedinIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst pathControls = useAnimation();\n\t\tconst rectControls = useAnimation();\n\t\tconst circleControls = useAnimation();\n\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\trectControls.start(\"animate\");\n\t\t\t\t\tcircleControls.start(\"animate\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\trectControls.start(\"normal\");\n\t\t\t\t\tcircleControls.start(\"normal\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\trectControls.start(\"animate\");\n\t\t\t\t\tcircleControls.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[circleControls, onMouseEnter, pathControls, rectControls]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\trectControls.start(\"normal\");\n\t\t\t\t\tcircleControls.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[pathControls, rectControls, circleControls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={pathControls}\n\t\t\t\t\t\td=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\tvariants={rectVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={rectControls}\n\t\t\t\t\t\tx=\"2\"\n\t\t\t\t\t\ty=\"9\"\n\t\t\t\t\t\twidth=\"4\"\n\t\t\t\t\t\theight=\"12\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={circleControls}\n\t\t\t\t\t\tcx=\"4\"\n\t\t\t\t\t\tcy=\"4\"\n\t\t\t\t\t\tr=\"2\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nLinkedinIcon.displayName = \"LinkedinIcon\";\n\nexport { LinkedinIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/twitter.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface TwitterIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface TwitterIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.6,\r\n\t\t\tease: \"linear\",\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst TwitterIcon = forwardRef<TwitterIconHandle, TwitterIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nTwitterIcon.displayName = \"TwitterIcon\";\r\n\r\nexport { TwitterIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/youtube.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface YoutubeIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface YoutubeIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst triangleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst YoutubeIcon = forwardRef<YoutubeIconHandle, YoutubeIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst pathControls = useAnimation();\n\t\tconst triangleControls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\ttriangleControls.start(\"animate\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\ttriangleControls.start(\"normal\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\ttriangleControls.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[onMouseEnter, pathControls, triangleControls]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\ttriangleControls.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[pathControls, triangleControls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={pathControls}\n\t\t\t\t\t\td=\"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={triangleVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={triangleControls}\n\t\t\t\t\t\td=\"M10 15l5-3-5-3z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nYoutubeIcon.displayName = \"YoutubeIcon\";\n\nexport { YoutubeIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/instagram.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface InstagramIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface InstagramIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst rectVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.6,\r\n\t\t\tease: \"linear\",\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.6,\r\n\t\t\tease: \"linear\",\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst lineVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.6,\r\n\t\t\tease: \"linear\",\r\n\t\t\topacity: { duration: 0.1 },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst InstagramIcon = forwardRef<InstagramIconHandle, InstagramIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst rectControls = useAnimation();\r\n\t\tconst pathControls = useAnimation();\r\n\t\tconst lineControls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => {\r\n\t\t\t\t\trectControls.start(\"animate\");\r\n\t\t\t\t\tpathControls.start(\"animate\");\r\n\t\t\t\t\tlineControls.start(\"animate\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => {\r\n\t\t\t\t\trectControls.start(\"normal\");\r\n\t\t\t\t\tpathControls.start(\"normal\");\r\n\t\t\t\t\tlineControls.start(\"normal\");\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\trectControls.start(\"animate\");\r\n\t\t\t\t\tpathControls.start(\"animate\");\r\n\t\t\t\t\tlineControls.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[lineControls, onMouseEnter, pathControls, rectControls]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\trectControls.start(\"normal\");\r\n\t\t\t\t\tpathControls.start(\"normal\");\r\n\t\t\t\t\tlineControls.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[rectControls, pathControls, lineControls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.rect\r\n\t\t\t\t\t\tvariants={rectVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={rectControls}\r\n\t\t\t\t\t\tx=\"2\"\r\n\t\t\t\t\t\ty=\"2\"\r\n\t\t\t\t\t\twidth=\"20\"\r\n\t\t\t\t\t\theight=\"20\"\r\n\t\t\t\t\t\trx=\"5\"\r\n\t\t\t\t\t\try=\"5\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={pathControls}\r\n\t\t\t\t\t\td=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tvariants={lineVariants}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tanimate={lineControls}\r\n\t\t\t\t\t\tx1=\"17.5\"\r\n\t\t\t\t\t\ty1=\"6.5\"\r\n\t\t\t\t\t\tx2=\"17.51\"\r\n\t\t\t\t\t\ty2=\"6.5\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nInstagramIcon.displayName = \"InstagramIcon\";\r\n\r\nexport { InstagramIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/twitch.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface TwitchIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TwitchIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst lineVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst TwitchIcon = forwardRef<TwitchIconHandle, TwitchIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst pathControls = useAnimation();\n\t\tconst line1Controls = useAnimation();\n\t\tconst line2Controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\tline1Controls.start(\"animate\");\n\t\t\t\t\tline2Controls.start(\"animate\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\tline1Controls.start(\"normal\");\n\t\t\t\t\tline2Controls.start(\"normal\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"animate\");\n\t\t\t\t\tline1Controls.start(\"animate\");\n\t\t\t\t\tline2Controls.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[line1Controls, line2Controls, onMouseEnter, pathControls]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tpathControls.start(\"normal\");\n\t\t\t\t\tline1Controls.start(\"normal\");\n\t\t\t\t\tline2Controls.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[pathControls, line1Controls, line2Controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={pathControls}\n\t\t\t\t\t\td=\"M21 2H3v16h5v4l4-4h5l4-4V2z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={line1Controls}\n\t\t\t\t\t\td=\"M11 11V7\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={line2Controls}\n\t\t\t\t\t\td=\"M16 11V7\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTwitchIcon.displayName = \"TwitchIcon\";\n\nexport { TwitchIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/dribbble.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface DribbbleIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface DribbbleIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst circleVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst DribbbleIcon = forwardRef<DribbbleIconHandle, DribbbleIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst circleControls = useAnimation();\n\t\tconst path1Controls = useAnimation();\n\t\tconst path2Controls = useAnimation();\n\t\tconst path3Controls = useAnimation();\n\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tcircleControls.start(\"animate\");\n\t\t\t\t\tpath1Controls.start(\"animate\");\n\t\t\t\t\tpath2Controls.start(\"animate\");\n\t\t\t\t\tpath3Controls.start(\"animate\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tcircleControls.start(\"normal\");\n\t\t\t\t\tpath1Controls.start(\"normal\");\n\t\t\t\t\tpath2Controls.start(\"normal\");\n\t\t\t\t\tpath3Controls.start(\"normal\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcircleControls.start(\"animate\");\n\t\t\t\t\tpath1Controls.start(\"animate\");\n\t\t\t\t\tpath2Controls.start(\"animate\");\n\t\t\t\t\tpath3Controls.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[\n\t\t\t\tcircleControls,\n\t\t\t\tonMouseEnter,\n\t\t\t\tpath1Controls,\n\t\t\t\tpath2Controls,\n\t\t\t\tpath3Controls,\n\t\t\t]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcircleControls.start(\"normal\");\n\t\t\t\t\tpath1Controls.start(\"normal\");\n\t\t\t\t\tpath2Controls.start(\"normal\");\n\t\t\t\t\tpath3Controls.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[\n\t\t\t\tcircleControls,\n\t\t\t\tpath1Controls,\n\t\t\t\tpath2Controls,\n\t\t\t\tpath3Controls,\n\t\t\t\tonMouseLeave,\n\t\t\t]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\tvariants={circleVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={circleControls}\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"12\"\n\t\t\t\t\t\tr=\"10\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={path1Controls}\n\t\t\t\t\t\td=\"M19.13 5.09C15.22 9.14 10 10.44 2.25 10.94\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={path2Controls}\n\t\t\t\t\t\td=\"M21.75 12.84c-6.62-1.41-12.14 1-16.38 6.32\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={path3Controls}\n\t\t\t\t\t\td=\"M8.56 2.75c4.37 6 6 9.42 8 17.72\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDribbbleIcon.displayName = \"DribbbleIcon\";\n\nexport { DribbbleIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/discord.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface DiscordIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface DiscordIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\ttranslateX: 0,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.2,\n\t\t},\n\t},\n\tanimate: {\n\t\ttranslateX: [0, -2, 2, -2, 2, 0],\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\ttimes: [0, 0.2, 0.4, 0.6, 0.8, 1],\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst DiscordIcon = forwardRef<DiscordIconHandle, DiscordIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 44 44\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"3\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M17.54,34.22A47.42,47.42,0,0,1,14.68,38C7.3,37.79,4.5,33,4.5,33A44.83,44.83,0,0,1,9.31,13.48,16.47,16.47,0,0,1,18.69,10l1,2.31\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M17.85,22.67a3.48,3.48,0,0,0-3.37,3.9,3.38,3.38,0,0,0,3.31,3.22,3.53,3.53,0,0,0,3.43-3.9A3.45,3.45,0,0,0,17.85,22.67Z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M12.2,14.37a28.19,28.19,0,0,1,8.16-2.18A23.26,23.26,0,0,1,24,12a23.26,23.26,0,0,1,3.64.21,28.19,28.19,0,0,1,8.16,2.18m-7.47-2.09l1-2.31a16.47,16.47,0,0,1,9.38,3.51A44.83,44.83,0,0,1,43.5,33S40.7,37.79,33.32,38a47.42,47.42,0,0,1-2.86-3.81\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M36.92,31.29a29.63,29.63,0,0,1-8.64,3.49,21.25,21.25,0,0,1-4.28.4h0a21.25,21.25,0,0,1-4.28-.4,29.63,29.63,0,0,1-8.64-3.49\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M30.15,22.67a3.48,3.48,0,0,1,3.37,3.9,3.38,3.38,0,0,1-3.31,3.22,3.53,3.53,0,0,1-3.43-3.9A3.45,3.45,0,0,1,30.15,22.67Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nDiscordIcon.displayName = \"DiscordIcon\";\n\nexport { DiscordIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/x.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface XIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface XIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\tpathLength: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [0, 1],\r\n\t\tpathLength: [0, 1],\r\n\t},\r\n};\r\n\r\nconst XIcon = forwardRef<XIconHandle, XIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M18 6 6 18\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{ delay: 0.2 }}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"m6 6 12 12\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nXIcon.displayName = \"XIcon\";\r\n\r\nexport { XIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/moon.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MoonIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MoonIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst svgVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t},\n\tanimate: {\n\t\trotate: [0, -10, 10, -5, 5, 0],\n\t},\n};\n\nconst svgTransition: Transition = {\n\tduration: 1.2,\n\tease: \"easeInOut\",\n};\n\nconst MoonIcon = forwardRef<MoonIconHandle, MoonIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={svgVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\ttransition={svgTransition}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMoonIcon.displayName = \"MoonIcon\";\n\nexport { MoonIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/vibrate.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface VibrateIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface VibrateIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst rectVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t},\r\n\tanimate: {\r\n\t\trotate: [0, -5, 5, -5, 5, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t\ttimes: [0, 0.2, 0.4, 0.6, 0.8, 1],\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst VibrateIcon = forwardRef<VibrateIconHandle, VibrateIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m2 8 2 2-2 2 2 2-2 2\" />\r\n\t\t\t\t\t<path d=\"m22 8-2 2 2 2-2 2 2 2\" />\r\n\t\t\t\t\t<motion.rect\r\n\t\t\t\t\t\twidth=\"8\"\r\n\t\t\t\t\t\theight=\"14\"\r\n\t\t\t\t\t\tx=\"8\"\r\n\t\t\t\t\t\ty=\"5\"\r\n\t\t\t\t\t\trx=\"1\"\r\n\t\t\t\t\t\tvariants={rectVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nVibrateIcon.displayName = \"VibrateIcon\";\r\n\r\nexport { VibrateIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/smartphone-charging.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SmartphoneChargingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SmartphoneChargingIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SmartphoneChargingIcon = forwardRef<\n\tSmartphoneChargingIconHandle,\n\tSmartphoneChargingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<rect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12.667 8 10 12h4l-2.667 4\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { opacity: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\topacity: [1, 0.4, 1],\n\t\t\t\t\t\t\ttransition: {\n\t\t\t\t\t\t\t\tduration: 1,\n\t\t\t\t\t\t\t\trepeat: Infinity,\n\t\t\t\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nSmartphoneChargingIcon.displayName = \"SmartphoneChargingIcon\";\n\nexport { SmartphoneChargingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cast.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CastIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CastIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst variants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (custom: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: custom,\r\n\t\t\tduration: 0.5,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst CastIcon = forwardRef<CastIconHandle, CastIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0.2}\r\n\t\t\t\t\t\td=\"M2 12a9 9 0 0 1 8 8\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcustom={0.1}\r\n\t\t\t\t\t\td=\"M2 16a5 5 0 0 1 4 4\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\tcustom={0}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tx1=\"2\"\r\n\t\t\t\t\t\tx2=\"2.01\"\r\n\t\t\t\t\t\ty1=\"20\"\r\n\t\t\t\t\t\ty2=\"20\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCastIcon.displayName = \"CastIcon\";\r\n\r\nexport { CastIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/upload.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface UploadIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UploadIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: { y: 0 },\r\n\tanimate: {\r\n\t\ty: -2,\r\n\t\ttransition: {\r\n\t\t\ttype: \"spring\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 10,\r\n\t\t\tmass: 1,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst UploadIcon = forwardRef<UploadIconHandle, UploadIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\r\n\t\t\t\t\t<motion.g variants={arrowVariants} animate={controls}>\r\n\t\t\t\t\t\t<polyline points=\"17 8 12 3 7 8\" />\r\n\t\t\t\t\t\t<line x1=\"12\" x2=\"12\" y1=\"3\" y2=\"15\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nUploadIcon.displayName = \"UploadIcon\";\r\n\r\nexport { UploadIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cloud-sun.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CloudSunIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CloudSunIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst cloudVariants: Variants = {\r\n\tnormal: {\r\n\t\tx: 0,\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\tx: [-1, 1, -1, 1, 0],\r\n\t\ty: [-1, 1, -1, 1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 1,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst sunVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t}),\r\n};\r\n\r\nconst CloudSunIcon = forwardRef<CloudSunIconHandle, CloudSunIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst cloudControls = useAnimation();\r\n\t\tconst sunControls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => {\r\n\t\t\t\t\tcloudControls.start(\"animate\");\r\n\t\t\t\t\tsunControls.start(\"animate\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => {\r\n\t\t\t\t\tcloudControls.start(\"normal\");\r\n\t\t\t\t\tsunControls.start(\"normal\");\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcloudControls.start(\"animate\");\r\n\t\t\t\t\tsunControls.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[cloudControls, sunControls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcloudControls.start(\"normal\");\r\n\t\t\t\t\tsunControls.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[cloudControls, sunControls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tvariants={cloudVariants}\r\n\t\t\t\t\t\tanimate={cloudControls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M13 22H7a5 5 0 1 1 4.9-6H13a3 3 0 0 1 0 6Z\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t{[\r\n\t\t\t\t\t\t\"M12 2v2\",\r\n\t\t\t\t\t\t\"m4.93 4.93 1.41 1.41\",\r\n\t\t\t\t\t\t\"M20 12h2\",\r\n\t\t\t\t\t\t\"m19.07 4.93-1.41 1.41\",\r\n\t\t\t\t\t\t\"M15.947 12.65a4 4 0 0 0-5.925-4.128\",\r\n\t\t\t\t\t].map((d, index) => (\r\n\t\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\t\tkey={d}\r\n\t\t\t\t\t\t\td={d}\r\n\t\t\t\t\t\t\tanimate={sunControls}\r\n\t\t\t\t\t\t\tvariants={sunVariants}\r\n\t\t\t\t\t\t\tcustom={index + 1}\r\n\t\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nCloudSunIcon.displayName = \"CloudSunIcon\";\r\n\r\nexport { CloudSunIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sunset.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SunsetIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SunsetIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t},\r\n\tanimate: {\r\n\t\ty: [0, 1, 0],\r\n\t},\r\n};\r\nconst raysVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t}),\r\n};\r\n\r\nconst SunsetIcon = forwardRef<SunsetIconHandle, SunsetIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst arrowControls = useAnimation();\r\n\t\tconst raysControls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => {\r\n\t\t\t\t\tarrowControls.start(\"animate\");\r\n\t\t\t\t\traysControls.start(\"animate\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => {\r\n\t\t\t\t\tarrowControls.start(\"normal\");\r\n\t\t\t\t\traysControls.start(\"normal\");\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tarrowControls.start(\"animate\");\r\n\t\t\t\t\traysControls.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[arrowControls, raysControls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tarrowControls.start(\"normal\");\r\n\t\t\t\t\traysControls.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[arrowControls, raysControls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tanimate={arrowControls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M12 10V2\" />\r\n\t\t\t\t\t\t<path d=\"m16 6-4 4-4-4\" />\r\n\t\t\t\t\t</motion.g>\r\n\r\n\t\t\t\t\t{[\r\n\t\t\t\t\t\t\"m4.93 10.93 1.41 1.41\",\r\n\t\t\t\t\t\t\"M2 18h2\",\r\n\t\t\t\t\t\t\"M20 18h2\",\r\n\t\t\t\t\t\t\"m19.07 10.93-1.41 1.41\",\r\n\t\t\t\t\t\t\"M22 22H2\",\r\n\t\t\t\t\t\t,\r\n\t\t\t\t\t].map((d, index) => (\r\n\t\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\t\tkey={d}\r\n\t\t\t\t\t\t\td={d}\r\n\t\t\t\t\t\t\tanimate={raysControls}\r\n\t\t\t\t\t\t\tvariants={raysVariants}\r\n\t\t\t\t\t\t\tcustom={index + 1}\r\n\t\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t\t<path d=\"M16 18a4 4 0 0 0-8 0\" />\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSunsetIcon.displayName = \"SunsetIcon\";\r\n\r\nexport { SunsetIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sun-dim.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SunDimIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SunDimIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t}),\r\n};\r\n\r\nconst SunDimIcon = forwardRef<SunDimIconHandle, SunDimIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"4\" />\r\n\t\t\t\t\t{[\r\n\t\t\t\t\t\t\"M12 4h.01\",\r\n\t\t\t\t\t\t\"M20 12h.01\",\r\n\t\t\t\t\t\t\"M12 20h.01\",\r\n\t\t\t\t\t\t\"M4 12h.01\",\r\n\t\t\t\t\t\t\"M17.657 6.343h.01\",\r\n\t\t\t\t\t\t\"M17.657 17.657h.01\",\r\n\t\t\t\t\t\t\"M6.343 17.657h.01\",\r\n\t\t\t\t\t\t\"M6.343 6.343h.01\",\r\n\t\t\t\t\t].map((d, index) => (\r\n\t\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\t\tkey={d}\r\n\t\t\t\t\t\t\td={d}\r\n\t\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\t\tcustom={index + 1}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nSunDimIcon.displayName = \"SunDimIcon\";\r\n\r\nexport { SunDimIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sun-medium.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SunMediumIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SunMediumIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: (i: number) => ({\n\t\topacity: [0, 1],\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t}),\n};\n\nconst SunMediumIcon = forwardRef<SunMediumIconHandle, SunMediumIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"4\" />\n\t\t\t\t\t{[\n\t\t\t\t\t\t\"M12 3v1\",\n\t\t\t\t\t\t\"M12 20v1\",\n\t\t\t\t\t\t\"M3 12h1\",\n\t\t\t\t\t\t\"M20 12h1\",\n\t\t\t\t\t\t\"m18.364 5.636-.707.707\",\n\t\t\t\t\t\t\"m6.343 17.657-.707.707\",\n\t\t\t\t\t\t\"m5.636 5.636.707.707\",\n\t\t\t\t\t\t\"m17.657 17.657.707.707\",\n\t\t\t\t\t].map((d, index) => (\n\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\tkey={d}\n\t\t\t\t\t\t\td={d}\n\t\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\t\tcustom={index + 1}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSunMediumIcon.displayName = \"SunMediumIcon\";\n\nexport { SunMediumIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/sun-moon.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SunMoonIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SunMoonIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst sunVariants: Variants = {\n\tnormal: {\n\t\trotate: 0,\n\t},\n\tanimate: {\n\t\trotate: [0, -5, 5, -2, 2, 0],\n\t\ttransition: {\n\t\t\tduration: 1.5,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst moonVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: (i: number) => ({\n\t\topacity: [0, 1],\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t}),\n};\n\nconst SunMoonIcon = forwardRef<SunMoonIconHandle, SunMoonIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst sunControls = useAnimation();\n\t\tconst moonControls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => {\n\t\t\t\t\tsunControls.start(\"animate\");\n\t\t\t\t\tmoonControls.start(\"animate\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => {\n\t\t\t\t\tsunControls.start(\"normal\");\n\t\t\t\t\tmoonControls.start(\"normal\");\n\t\t\t\t},\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsunControls.start(\"animate\");\n\t\t\t\t\tmoonControls.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[sunControls, moonControls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tsunControls.start(\"normal\");\n\t\t\t\t\tmoonControls.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[sunControls, moonControls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={sunVariants}\n\t\t\t\t\t\tanimate={sunControls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path d=\"M12 8a2.83 2.83 0 0 0 4 4 4 4 0 1 1-4-4\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t\t{[\n\t\t\t\t\t\t\"M12 2v2\",\n\t\t\t\t\t\t\"M12 20v2\",\n\t\t\t\t\t\t\"m4.9 4.9 1.4 1.4\",\n\t\t\t\t\t\t\"m17.7 17.7 1.4 1.4\",\n\t\t\t\t\t\t\"M2 12h2\",\n\t\t\t\t\t\t\"M20 12h2\",\n\t\t\t\t\t\t\"m6.3 17.7-1.4 1.4\",\n\t\t\t\t\t\t\"m19.1 4.9-1.4 1.4\",\n\t\t\t\t\t].map((d, index) => (\n\t\t\t\t\t\t<motion.path\n\t\t\t\t\t\t\tkey={d}\n\t\t\t\t\t\t\td={d}\n\t\t\t\t\t\t\tanimate={moonControls}\n\t\t\t\t\t\t\tvariants={moonVariants}\n\t\t\t\t\t\t\tcustom={index + 1}\n\t\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSunMoonIcon.displayName = \"SunMoonIcon\";\n\nexport { SunMoonIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-square.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MessageSquareIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MessageSquareIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst iconVariants: Variants = {\n\tnormal: {\n\t\tscale: 1,\n\t\trotate: 0,\n\t},\n\tanimate: {\n\t\tscale: 1.05,\n\t\trotate: [0, -7, 7, 0],\n\t\ttransition: {\n\t\t\trotate: {\n\t\t\t\tduration: 0.5,\n\t\t\t\tease: \"easeInOut\",\n\t\t\t},\n\t\t\tscale: {\n\t\t\t\ttype: \"spring\",\n\t\t\t\tstiffness: 400,\n\t\t\t\tdamping: 10,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst MessageSquareIcon = forwardRef<\n\tMessageSquareIconHandle,\n\tMessageSquareIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tvariants={iconVariants}\n\t\t\t\tanimate={controls}\n\t\t\t>\n\t\t\t\t<path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nMessageSquareIcon.displayName = \"MessageSquareIcon\";\n\nexport { MessageSquareIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-square-more.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MessageSquareMoreIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MessageSquareMoreIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dotVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: (custom: number) => ({\n\t\topacity: [1, 0, 0, 1, 1, 0, 0, 1],\n\t\ttransition: {\n\t\t\topacity: {\n\t\t\t\ttimes: [\n\t\t\t\t\t0,\n\t\t\t\t\t0.1,\n\t\t\t\t\t0.1 + custom * 0.1,\n\t\t\t\t\t0.1 + custom * 0.1 + 0.1,\n\t\t\t\t\t0.5,\n\t\t\t\t\t0.6,\n\t\t\t\t\t0.6 + custom * 0.1,\n\t\t\t\t\t0.6 + custom * 0.1 + 0.1,\n\t\t\t\t],\n\t\t\t\tduration: 1.5,\n\t\t\t},\n\t\t},\n\t}),\n};\n\nconst MessageSquareMoreIcon = forwardRef<\n\tMessageSquareMoreIconHandle,\n\tMessageSquareMoreIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M8 10h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M12 10h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M16 10h.01\"\n\t\t\t\t\tvariants={dotVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nMessageSquareMoreIcon.displayName = \"MessageSquareMoreIcon\";\n\nexport { MessageSquareMoreIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-circle-dashed.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MessageCircleDashedIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MessageCircleDashedIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { opacity: 1 },\n\tanimate: (i: number) => ({\n\t\topacity: [0, 1],\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t}),\n};\n\nconst MessageCircleDashedIcon = forwardRef<\n\tMessageCircleDashedIconHandle,\n\tMessageCircleDashedIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t{[\n\t\t\t\t\t\"M13.5 3.1c-.5 0-1-.1-1.5-.1s-1 .1-1.5.1\",\n\t\t\t\t\t\"M19.3 6.8a10.45 10.45 0 0 0-2.1-2.1\",\n\t\t\t\t\t\"M20.9 13.5c.1-.5.1-1 .1-1.5s-.1-1-.1-1.5\",\n\t\t\t\t\t\"M17.2 19.3a10.45 10.45 0 0 0 2.1-2.1\",\n\t\t\t\t\t\"M10.5 20.9c.5.1 1 .1 1.5.1s1-.1 1.5-.1\",\n\t\t\t\t\t\"M3.5 17.5 2 22l4.5-1.5\",\n\t\t\t\t\t\"M3.1 10.5c0 .5-.1 1-.1 1.5s.1 1 .1 1.5\",\n\t\t\t\t\t\"M6.8 4.7a10.45 10.45 0 0 0-2.1 2.1\",\n\t\t\t\t].map((d, index) => (\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tkey={d}\n\t\t\t\t\t\td={d}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tcustom={index + 1}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nMessageCircleDashedIcon.displayName = \"MessageCircleDashedIcon\";\n\nexport { MessageCircleDashedIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/message-square-dashed.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface MessageSquareDashedIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface MessageSquareDashedIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: { delay: i * 0.1, duration: 0.3 },\r\n\t}),\r\n};\r\n\r\nconst MessageSquareDashedIcon = forwardRef<\r\n\tMessageSquareDashedIconHandle,\r\n\tMessageSquareDashedIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t{[\r\n\t\t\t\t\t\"M14 3h1\",\r\n\t\t\t\t\t\"M14 17h1\",\r\n\t\t\t\t\t\"M10 17H7l-4 4v-7\",\r\n\t\t\t\t\t\"M9 3h1\",\r\n\t\t\t\t\t\"M19 3a2 2 0 0 1 2 2\",\r\n\t\t\t\t\t\"M3 9v1\",\r\n\t\t\t\t\t\"M21 9v1\",\r\n\t\t\t\t\t\"M21 14v1a2 2 0 0 1-2 2\",\r\n\t\t\t\t\t\"M5 3a2 2 0 0 0-2 2\",\r\n\t\t\t\t].map((d, index) => (\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tkey={d}\r\n\t\t\t\t\t\td={d}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={index + 1}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))}\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nMessageSquareDashedIcon.displayName = \"MessageSquareDashedIcon\";\r\n\r\nexport { MessageSquareDashedIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/a-arrow-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AArrowUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst letterVariants: Variants = {\n\tnormal: { opacity: 1, scale: 1 },\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tscale: [0.8, 1],\n\t\ttransition: { duration: 0.3 },\n\t},\n};\n\nconst arrowVariants: Variants = {\n\tnormal: { opacity: 1, y: 0 },\n\tanimate: {\n\t\topacity: [0, 1],\n\t\ty: [10, 0], // Changed from [-10, 0] to animate upward\n\t\ttransition: { duration: 0.3, delay: 0.2 },\n\t},\n};\n\nconst AArrowUpIcon = forwardRef<AArrowUpIconHandle, AArrowUpIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t{/* Letter A - unchanged */}\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M3.5 13h6\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={letterVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m2 16 4.5-9 4.5 9\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={letterVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t{/* Arrow pointing up - modified */}\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M18 16V7\" // Vertical line from bottom to top\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m14 11 4-4 4 4\" // Arrowhead pointing up\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAArrowUpIcon.displayName = \"AArrowUpIcon\";\n\nexport { AArrowUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-cog.tsx",
      "content": "'use client';\r\n\r\nimport type { Variants } from 'framer-motion';\r\nimport { motion, useAnimation } from 'framer-motion';\r\nimport type { HTMLAttributes } from 'react';\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\r\n\r\nexport interface FileCogIconHandle {\r\n  startAnimation: () => void;\r\n  stopAnimation: () => void;\r\n}\r\n\r\nconst gVariants: Variants = {\r\n  normal: { rotate: 0 },\r\n  animate: { rotate: 180 },\r\n};\r\n\r\nconst FileCogIcon = forwardRef<\r\n  FileCogIconHandle,\r\n  HTMLAttributes<HTMLDivElement>\r\n>(({ onMouseEnter, onMouseLeave, ...props }, ref) => {\r\n  const controls = useAnimation();\r\n  const isControlledRef = useRef(false);\r\n\r\n  useImperativeHandle(ref, () => {\r\n    isControlledRef.current = true;\r\n    return {\r\n      startAnimation: () => controls.start('animate'),\r\n      stopAnimation: () => controls.start('normal'),\r\n    };\r\n  });\r\n\r\n  const handleMouseEnter = useCallback(\r\n    (e: React.MouseEvent<HTMLDivElement>) => {\r\n      if (!isControlledRef.current) {\r\n        controls.start('animate');\r\n      } else {\r\n        onMouseEnter?.(e);\r\n      }\r\n    },\r\n    [controls, onMouseEnter]\r\n  );\r\n\r\n  const handleMouseLeave = useCallback(\r\n    (e: React.MouseEvent<HTMLDivElement>) => {\r\n      if (!isControlledRef.current) {\r\n        controls.start('normal');\r\n      } else {\r\n        onMouseLeave?.(e);\r\n      }\r\n    },\r\n    [controls, onMouseLeave]\r\n  );\r\n\r\n  return (\r\n    <div\r\n      className=\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\"\r\n      onMouseEnter={handleMouseEnter}\r\n      onMouseLeave={handleMouseLeave}\r\n      {...props}\r\n    >\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        width=\"28\"\r\n        height=\"28\"\r\n        viewBox=\"0 0 24 24\"\r\n        fill=\"none\"\r\n        stroke=\"currentColor\"\r\n        strokeWidth=\"2\"\r\n        strokeLinecap=\"round\"\r\n        strokeLinejoin=\"round\"\r\n      >\r\n        <path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\r\n        <path d=\"M4.677 21.5a2 2 0 0 0 1.313.5H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v2.5\" />\r\n        <motion.g\r\n          transition={{ type: 'spring', stiffness: 50, damping: 10 }}\r\n          variants={gVariants}\r\n          animate={controls}\r\n        >\r\n          <path d=\"m3.2 12.9-.9-.4\" />\r\n          <path d=\"m3.2 15.1-.9.4\" />\r\n          <path d=\"m4.9 11.2-.4-.9\" />\r\n          <path d=\"m4.9 16.8-.4.9\" />\r\n          <path d=\"m7.5 10.3-.4.9\" />\r\n          <path d=\"m7.5 17.7-.4-.9\" />\r\n          <path d=\"m9.7 12.5-.9.4\" />\r\n          <path d=\"m9.7 15.5-.9-.4\" />\r\n          <circle cx=\"6\" cy=\"14\" r=\"3\" />\r\n        </motion.g>\r\n      </svg>\r\n    </div>\r\n  );\r\n});\r\n\r\nFileCogIcon.displayName = 'FileCogIcon';\r\n\r\nexport { FileCogIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/calendar-days.tsx",
      "content": "\"use client\";\r\n\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\nimport type { HTMLAttributes } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { AnimatePresence, motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface CalendarDaysIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CalendarDaysIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst DOTS = [\r\n\t{ cx: 8, cy: 14 },\r\n\t{ cx: 12, cy: 14 },\r\n\t{ cx: 16, cy: 14 },\r\n\t{ cx: 8, cy: 18 },\r\n\t{ cx: 12, cy: 18 },\r\n\t{ cx: 16, cy: 18 },\r\n];\r\n\r\nconst variants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.2,\r\n\t\t},\r\n\t},\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [1, 0.3, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: i * 0.1,\r\n\t\t\tduration: 0.4,\r\n\t\t\ttimes: [0, 0.5, 1],\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst CalendarDaysIcon = forwardRef<\r\n\tCalendarDaysIconHandle,\r\n\tCalendarDaysIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M8 2v4\" />\r\n\t\t\t\t<path d=\"M16 2v4\" />\r\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\r\n\t\t\t\t<path d=\"M3 10h18\" />\r\n\t\t\t\t<AnimatePresence>\r\n\t\t\t\t\t{DOTS.map((dot, index) => (\r\n\t\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\t\tkey={`${dot.cx}-${dot.cy}`}\r\n\t\t\t\t\t\t\tcx={dot.cx}\r\n\t\t\t\t\t\t\tcy={dot.cy}\r\n\t\t\t\t\t\t\tr=\"1\"\r\n\t\t\t\t\t\t\tfill=\"currentColor\"\r\n\t\t\t\t\t\t\tstroke=\"none\"\r\n\t\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\t\tvariants={variants}\r\n\t\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\t\tcustom={index}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</AnimatePresence>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nCalendarDaysIcon.displayName = \"CalendarDaysIcon\";\r\n\r\nexport { CalendarDaysIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-down-dash.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigDownDashIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigDownDashIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dashVariants: Variants = {\n\tnormal: { translateY: 0 },\n\tanimate: {\n\t\ttranslateY: [0, 1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst arrowVariants: Variants = {\n\tnormal: { translateY: 0 },\n\tanimate: {\n\t\ttranslateY: [0, 3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigDownDashIcon = forwardRef<\n\tArrowBigDownDashIconHandle,\n\tArrowBigDownDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M15 5H9\"\n\t\t\t\t\tvariants={dashVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M15 9v3h4l-7 7-7-7h4V9z\"\n\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigDownDashIcon.displayName = \"ArrowBigDownDashIcon\";\n\nexport { ArrowBigDownDashIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-left-dash.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigLeftDashIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigLeftDashIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dashVariants: Variants = {\n\tnormal: { translateX: 0 },\n\tanimate: {\n\t\ttranslateX: [0, -1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst arrowVariants: Variants = {\n\tnormal: { translateX: 0 },\n\tanimate: {\n\t\ttranslateX: [0, -3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigLeftDashIcon = forwardRef<\n\tArrowBigLeftDashIconHandle,\n\tArrowBigLeftDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M19 15V9\"\n\t\t\t\t\tvariants={dashVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M15 15h-3v4l-7-7 7-7v4h3v6z\"\n\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigLeftDashIcon.displayName = \"ArrowBigLeftDashIcon\";\n\nexport { ArrowBigLeftDashIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-right-dash.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigRightDashIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigRightDashIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst dashVariants: Variants = {\n\tnormal: { translateX: 0 },\n\tanimate: {\n\t\ttranslateX: [0, 1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst arrowVariants: Variants = {\n\tnormal: { translateX: 0 },\n\tanimate: {\n\t\ttranslateX: [0, 3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigRightDashIcon = forwardRef<\n\tArrowBigRightDashIconHandle,\n\tArrowBigRightDashIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M5 9v6\"\n\t\t\t\t\tvariants={dashVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M9 9h3V5l7 7-7 7v-4H9V9z\"\n\t\t\t\t\tvariants={arrowVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigRightDashIcon.displayName = \"ArrowBigRightDashIcon\";\n\nexport { ArrowBigRightDashIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-up-dash.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowBigUpDashIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowBigUpDashIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst dashVariants: Variants = {\r\n\tnormal: { translateY: 0 },\r\n\tanimate: {\r\n\t\ttranslateY: [0, -1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: { translateY: 0 },\r\n\tanimate: {\r\n\t\ttranslateY: [0, -3, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ArrowBigUpDashIcon = forwardRef<\r\n\tArrowBigUpDashIconHandle,\r\n\tArrowBigUpDashIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M9 19h6\"\r\n\t\t\t\t\tvariants={dashVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M9 15v-3H5l7-7 7 7h-4v3H9z\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nArrowBigUpDashIcon.displayName = \"ArrowBigUpDashIcon\";\r\n\r\nexport { ArrowBigUpDashIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { d: \"m19 12-7 7-7-7\", translateY: 0 },\r\n\tanimate: {\r\n\t\td: \"m19 12-7 7-7-7\",\r\n\t\ttranslateY: [0, -3, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst secondPathVariants: Variants = {\r\n\tnormal: { d: \"M12 5v14\" },\r\n\tanimate: {\r\n\t\td: [\"M12 5v14\", \"M12 5v9\", \"M12 5v14\"],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ArrowDownIcon = forwardRef<ArrowDownIconHandle, ArrowDownIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m19 12-7 7-7-7\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M12 5v14\"\r\n\t\t\t\t\t\tvariants={secondPathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowDownIcon.displayName = \"ArrowDownIcon\";\r\n\r\nexport { ArrowDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-up.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ArrowUpIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { d: \"m5 12 7-7 7 7\", translateY: 0 },\r\n\tanimate: {\r\n\t\td: \"m5 12 7-7 7 7\",\r\n\t\ttranslateY: [0, 3, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst secondPathVariants: Variants = {\r\n\tnormal: { d: \"M12 19V5\" },\r\n\tanimate: {\r\n\t\td: [\"M12 19V5\", \"M12 19V10\", \"M12 19V5\"],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.4,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst ArrowUpIcon = forwardRef<ArrowUpIconHandle, ArrowUpIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"m5 12 7-7 7 7\"\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M12 19V5\"\r\n\t\t\t\t\t\tvariants={secondPathVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nArrowUpIcon.displayName = \"ArrowUpIcon\";\r\n\r\nexport { ArrowUpIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-down.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigDownIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigDownIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M15 6v6h4l-7 7-7-7h4V6h6z\", translateY: 0 },\n\tanimate: {\n\t\td: \"M15 6v6h4l-7 7-7-7h4V6h6z\",\n\t\ttranslateY: [0, +3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigDownIcon = forwardRef<\n\tArrowBigDownIconHandle,\n\tArrowBigDownIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M15 6v6h4l-7 7-7-7h4V6h6z\"\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigDownIcon.displayName = \"ArrowBigDownIcon\";\n\nexport { ArrowBigDownIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M18 15h-6v4l-7-7 7-7v4h6v6z\", translateX: 0 },\n\tanimate: {\n\t\td: \"M18 15h-6v4l-7-7 7-7v4h6v6z\",\n\t\ttranslateX: [0, -3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigLeftIcon = forwardRef<\n\tArrowBigLeftIconHandle,\n\tArrowBigLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M18 15h-6v4l-7-7 7-7v4h6v6z\"\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigLeftIcon.displayName = \"ArrowBigLeftIcon\";\n\nexport { ArrowBigLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-right.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigRightIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigRightIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M6 9h6V5l7 7-7 7v-4H6V9z\", translateX: 0 },\n\tanimate: {\n\t\td: \"M6 9h6V5l7 7-7 7v-4H6V9z\",\n\t\ttranslateX: [0, 3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigRightIcon = forwardRef<\n\tArrowBigRightIconHandle,\n\tArrowBigRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M6 9h6V5l7 7-7 7v-4H6V9z\"\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nArrowBigRightIcon.displayName = \"ArrowBigRightIcon\";\n\nexport { ArrowBigRightIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/arrow-big-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ArrowBigUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ArrowBigUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"M9 18v-6H5l7-7 7 7h-4v6H9z\", translateY: 0 },\n\tanimate: {\n\t\td: \"M9 18v-6H5l7-7 7 7h-4v6H9z\",\n\t\ttranslateY: [0, -3, 0],\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n};\n\nconst ArrowBigUpIcon = forwardRef<ArrowBigUpIconHandle, ArrowBigUpIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M9 18v-6H5l7-7 7 7h-4v6H9z\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nArrowBigUpIcon.displayName = \"ArrowBigUpIcon\";\n\nexport { ArrowBigUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/key.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface KeyIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst KeyIcon = forwardRef<KeyIconHandle, KeyIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\trotate: 0,\r\n\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\ttype: \"spring\",\r\n\t\t\t\t\t\t\t\tstiffness: 120,\r\n\t\t\t\t\t\t\t\tdamping: 14,\r\n\t\t\t\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\trotate: [-3, -33, -25, -28],\r\n\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\t\t\t\ttimes: [0, 0.6, 0.8, 1],\r\n\t\t\t\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tstyle={{ originX: 0.3, originY: 0.7 }}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4\" />\r\n\t\t\t\t\t<path d=\"m21 2-9.6 9.6\" />\r\n\t\t\t\t\t<circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nKeyIcon.displayName = \"KeyIcon\";\r\n\r\nexport { KeyIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/key-circle.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface KeyIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst KeyCircleIcon = forwardRef<KeyIconHandle, KeyIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { y: 0, rotate: 0 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\ty: [0, -3, 0, -2, 0],\n\t\t\t\t\t\t\trotate: [0, 3, -3, 0],\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.9,\n\t\t\t\t\t\tbounce: 0.5,\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" />\n\t\t\t\t\t<circle cx=\"16.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nKeyCircleIcon.displayName = \"KeyCircleIcon\";\n\nexport { KeyCircleIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/key-square.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface KeyIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface KeyIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst KeySquareIcon = forwardRef<KeyIconHandle, KeyIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { rotate: 0, scale: 1 },\n\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\trotate: [0, 15, -15, 0],\n\t\t\t\t\t\t\tscale: [1, 1.05, 1, 1],\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={{\n\t\t\t\t\t\tduration: 0.6,\n\t\t\t\t\t\tbounce: 0.4,\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z\" />\n\t\t\t\t\t<path d=\"m14 7 3 3\" />\n\t\t\t\t\t<path d=\"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nKeySquareIcon.displayName = \"KeySquareIcon\";\n\nexport { KeySquareIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-line.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChartLineIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15,\n\t\t\tduration: 0.3,\n\t\t\topacity: { delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst ChartLineIcon = forwardRef<ChartLineIconHandle, ChartLineIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"m7 13 3-3 4 4 5-5\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nChartLineIcon.displayName = \"ChartLineIcon\";\n\nexport { ChartLineIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-spline.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChartSplineIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartSplineIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15,\n\t\t\tduration: 0.3,\n\t\t\topacity: { delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst ChartSplineIcon = forwardRef<ChartSplineIconHandle, ChartSplineIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 3v16a2 2 0 0 0 2 2h16\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7 16c.5-2 1.5-7 4-7 2 0 2 3 4 3 2.5 0 4.5-5 5-7\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nChartSplineIcon.displayName = \"ChartSplineIcon\";\n\nexport { ChartSplineIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-chart-line.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface FileChartLineIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FileChartLineIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.15,\n\t\t\tduration: 0.3,\n\t\t\topacity: { delay: 0.1 },\n\t\t},\n\t},\n};\n\nconst FileChartLineIcon = forwardRef<\n\tFileChartLineIconHandle,\n\tFileChartLineIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\n\t\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"m8 17 2.5-2.5 2 2L16 13\"\n\t\t\t\t\tvariants={variants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nFileChartLineIcon.displayName = \"FileChartLineIcon\";\n\nexport { FileChartLineIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-no-axes-column-increasing.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface ChartNoAxesColumnIncreasingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartNoAxesColumnIncreasingIconProps\n\textends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartNoAxesColumnIncreasingIcon = forwardRef<\n\tChartNoAxesColumnIncreasingIconHandle,\n\tChartNoAxesColumnIncreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: async () => {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t},\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"visible\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t\td=\"M6 20v-4\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t\td=\"M12 20v-10\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t\td=\"M18 20v-16\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChartNoAxesColumnIncreasingIcon.displayName = \"ChartNoAxesColumnIncreasingIcon\";\n\nexport { ChartNoAxesColumnIncreasingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chart-no-axes-column-decreasing.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation, type Variants } from \"motion/react\";\n\nexport interface ChartNoAxesColumnDecreasingIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChartNoAxesColumnDecreasingIconProps\n\textends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst lineVariants: Variants = {\n\tvisible: { pathLength: 1, opacity: 1 },\n\thidden: { pathLength: 0, opacity: 0 },\n};\n\nconst ChartNoAxesColumnDecreasingIcon = forwardRef<\n\tChartNoAxesColumnDecreasingIconHandle,\n\tChartNoAxesColumnDecreasingIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: async () => {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t},\n\t\t\tstopAnimation: () => controls.start(\"visible\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 0,\n\t\t\t\t\topacity: 0,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t\tawait controls.start((i) => ({\n\t\t\t\t\tpathLength: 1,\n\t\t\t\t\topacity: 1,\n\t\t\t\t\ttransition: { delay: i * 0.1, duration: 0.3 },\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"visible\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={0}\n\t\t\t\t\td=\"M6 20V4\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={1}\n\t\t\t\t\td=\"M12 20V10\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={lineVariants}\n\t\t\t\t\tinitial=\"visible\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tcustom={2}\n\t\t\t\t\td=\"M18 20v-4\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChartNoAxesColumnDecreasingIcon.displayName = \"ChartNoAxesColumnDecreasingIcon\";\n\nexport { ChartNoAxesColumnDecreasingIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/radio.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RadioIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RadioIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n\tfadeOut: {\n\t\topacity: 0,\n\t\ttransition: { duration: 0.3 },\n\t},\n\tfadeIn: (i: number) => ({\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 300,\n\t\t\tdamping: 20,\n\t\t\tdelay: i * 0.1,\n\t\t},\n\t}),\n};\n\nconst RadioIcon = forwardRef<RadioIconHandle, RadioIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4.9 19.1C1 15.2 1 8.8 4.9 4.9\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7.8 16.2c-2.3-2.3-2.3-6.1 0-8.5\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"2\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16.2 7.8c2.3 2.3 2.3 6.1 0 8.5\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M19.1 4.9C23 8.8 23 15.1 19.1 19\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRadioIcon.displayName = \"RadioIcon\";\n\nexport { RadioIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/radio-tower.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RadioTowerIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RadioTowerIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n\tfadeOut: {\n\t\topacity: 0,\n\t\ttransition: { duration: 0.3 },\n\t},\n\tfadeIn: (i: number) => ({\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 300,\n\t\t\tdamping: 20,\n\t\t\tdelay: i * 0.1,\n\t\t},\n\t}),\n};\n\nconst RadioTowerIcon = forwardRef<RadioTowerIconHandle, RadioTowerIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: async () => {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t},\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tawait controls.start(\"fadeOut\");\n\t\t\t\t\tcontrols.start(\"fadeIn\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M4.9 16.1C1 12.2 1 5.8 4.9 1.9\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7.8 4.7a6.14 6.14 0 0 0-.8 7.5\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<circle cx=\"12\" cy=\"9\" r=\"2\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16.2 4.8c2 2 2.26 5.11.8 7.47\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M19.1 1.9a9.96 9.96 0 0 1 0 14.1\"\n\t\t\t\t\t\tinitial={{ opacity: 1 }}\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<path d=\"M9.5 18h5\" />\n\t\t\t\t\t<path d=\"m8 22 4-11 4 11\" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRadioTowerIcon.displayName = \"RadioTowerIcon\";\n\nexport { RadioTowerIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/air-vent.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AirVentIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AirVentIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst windVariants: Variants = {\n\tnormal: (custom: number) => ({\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tease: \"easeInOut\",\n\t\t\tdelay: custom,\n\t\t},\n\t}),\n\tanimate: (custom: number) => ({\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.5,\n\t\t\tease: \"easeInOut\",\n\t\t\tdelay: custom,\n\t\t},\n\t}),\n};\n\nconst AirVentIcon = forwardRef<AirVentIconHandle, AirVentIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\" />\n\t\t\t\t\t<path d=\"M6 8h12\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12\"\n\t\t\t\t\t\tvariants={windVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M6.6 15.6A2 2 0 1 0 10 17v-5\"\n\t\t\t\t\t\tvariants={windVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={0.2}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAirVentIcon.displayName = \"AirVentIcon\";\n\nexport { AirVentIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/tornado.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface TornadoIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface TornadoIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\tx: 0,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n\tanimate: (custom: number) => ({\n\t\tx: [0, custom * 1, 0],\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tx: {\n\t\t\t\tduration: 0.6,\n\t\t\t\trepeat: 0.7,\n\t\t\t\trepeatType: \"reverse\",\n\t\t\t\tease: \"easeInOut\",\n\t\t\t\tdelay: custom * 0.1,\n\t\t\t},\n\t\t},\n\t}),\n};\n\nconst TornadoIcon = forwardRef<TornadoIconHandle, TornadoIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M21 4H3\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={1}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M18 8H6\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={2}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M19 12H9\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={3}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M16 16h-6\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={4}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M11 20H9\"\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcustom={5}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nTornadoIcon.displayName = \"TornadoIcon\";\n\nexport { TornadoIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/wind-arrow-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface WindArrowDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface WindArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst windVariants: Variants = {\r\n\tnormal: (custom: number) => ({\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\tpathOffset: 0,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: custom,\r\n\t\t},\r\n\t}),\r\n\tanimate: (custom: number) => ({\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\tpathOffset: [1, 0],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: custom,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: {\r\n\t\ty: 0,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\ty: [-10, 0],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 0.5,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t\tdelay: 0.35,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst WindArrowDownIcon = forwardRef<\r\n\tWindArrowDownIconHandle,\r\n\tWindArrowDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t{/* Wind paths */}\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M12.8 21.6A2 2 0 1 0 14 18H2\"\r\n\t\t\t\t\tvariants={windVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={0.2}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M17.5 10a2.5 2.5 0 1 1 2 4H2\"\r\n\t\t\t\t\tvariants={windVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={0.4}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M10 2v8\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"m6 6 4 4 4-4\"\r\n\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nWindArrowDownIcon.displayName = \"WindArrowDownIcon\";\r\n\r\nexport { WindArrowDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cloud-rain.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface CloudRainIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CloudRainIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst rainVariants: Variants = {\n\tanimate: {\n\t\ttransition: {\n\t\t\tstaggerChildren: 0.2,\n\t\t},\n\t},\n};\n\nconst rainChildVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [1, 0.2, 1],\n\t\ttransition: {\n\t\t\tduration: 1,\n\t\t\trepeat: Infinity,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst CloudRainIcon = forwardRef<CloudRainIconHandle, CloudRainIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t{/* Cloud - static */}\n\t\t\t\t\t<path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\n\t\t\t\t\t{/* Rain lines - opacity animation */}\n\t\t\t\t\t<motion.g\n\t\t\t\t\t\tvariants={rainVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<motion.path variants={rainChildVariants} d=\"M16 14v6\" />\n\t\t\t\t\t\t<motion.path variants={rainChildVariants} d=\"M8 14v6\" />\n\t\t\t\t\t\t<motion.path variants={rainChildVariants} d=\"M12 16v6\" />\n\t\t\t\t\t</motion.g>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nCloudRainIcon.displayName = \"CloudRainIcon\";\n\nexport { CloudRainIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/cloud-rain-wind.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface CloudRainWindIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface CloudRainWindIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst windVariants: Variants = {\r\n\tanimate: {\r\n\t\ttransition: {\r\n\t\t\tstaggerChildren: 0.2,\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst windChildVariants: Variants = {\r\n\tnormal: {\r\n\t\topacity: 1,\r\n\t},\r\n\tanimate: {\r\n\t\topacity: [1, 0.2, 1],\r\n\t\ttransition: {\r\n\t\t\tduration: 1,\r\n\t\t\trepeat: Infinity,\r\n\t\t\tease: \"easeInOut\",\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst CloudRainWindIcon = forwardRef<\r\n\tCloudRainWindIconHandle,\r\n\tCloudRainWindIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 24, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t{/* Cloud - static */}\r\n\t\t\t\t<path d=\"M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242\" />\r\n\t\t\t\t{/* Wind lines - opacity animation */}\r\n\t\t\t\t<motion.g\r\n\t\t\t\t\tvariants={windVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path variants={windChildVariants} d=\"m9.2 22 3-7\" />\r\n\t\t\t\t\t<motion.path variants={windChildVariants} d=\"m9 13-3 7\" />\r\n\t\t\t\t\t<motion.path variants={windChildVariants} d=\"m17 13-3 7\" />\r\n\t\t\t\t</motion.g>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nCloudRainWindIcon.displayName = \"CloudRainWindIcon\";\r\n\r\nexport { CloudRainWindIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/waves.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface WavesIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface WavesIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst WavesIcon = forwardRef<WavesIconHandle, WavesIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t}\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t}\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M2 6c.6.5 1.2 1 2.5 1C7 7 7 5 9.5 5c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\r\n\t\t\t\t\t\tinitial={{ pathLength: 1 }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\t\ttransition: { duration: 0.4, ease: \"linear\" },\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M2 12c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\r\n\t\t\t\t\t\tinitial={{ pathLength: 1 }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\t\ttransition: { duration: 0.4, ease: \"linear\" },\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M2 18c.6.5 1.2 1 2.5 1c2.5 0 2.5-2 5-2c2.6 0 2.4 2 5 2c2.5 0 2.5-2 5-2c1.3 0 1.9.5 2.5 1\"\r\n\t\t\t\t\t\tinitial={{ pathLength: 1 }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [0, 1],\r\n\t\t\t\t\t\t\t\ttransition: { duration: 0.4, ease: \"linear\" },\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nWavesIcon.displayName = \"WavesIcon\";\r\nexport { WavesIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/waves-ladder.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface WavesLadderIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface WavesLadderIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst WavesLadderIcon = forwardRef<WavesLadderIconHandle, WavesLadderIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M2 18c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 2.6 0 2.4 2 5 2 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\" />\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\tinitial={{ y: 0, opacity: 1 }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { y: 0, opacity: 1 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\ty: [13, 0],\r\n\t\t\t\t\t\t\t\topacity: [0, 0, 1],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 1,\r\n\t\t\t\t\t\t\t\t\ttimes: [0, 0.5, 1],\r\n\t\t\t\t\t\t\t\t\trepeat: 0,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M19 5a2 2 0 0 0-2 2v11\" />\r\n\t\t\t\t\t\t<path d=\"M7 13h10\" />\r\n\t\t\t\t\t\t<path d=\"M7 9h10\" />\r\n\t\t\t\t\t\t<path d=\"M9 5a2 2 0 0 0-2 2v11\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nWavesLadderIcon.displayName = \"WavesLadderIcon\";\r\nexport { WavesLadderIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-arrow-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SquareArrowDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SquareArrowDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst squareVariants: Variants = {\r\n\tnormal: { transition: { duration: 0.4 } },\r\n\tanimate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { d: \"m8 12 4 4 4-4\", translateY: 0, opacity: 1 },\r\n\tanimate: {\r\n\t\td: \"m8 12 4 4 4-4\",\r\n\t\ttranslateY: [0, -3, 0],\r\n\t\ttransition: { duration: 0.4 },\r\n\t},\r\n};\r\n\r\nconst secondPathVariants: Variants = {\r\n\tnormal: { d: \"M12 8v8\", opacity: 1 },\r\n\tanimate: {\r\n\t\td: [\"M12 8v8\", \"M12 8v5\", \"M12 8v8\"],\r\n\t\ttransition: { duration: 0.4 },\r\n\t},\r\n};\r\n\r\nconst SquareArrowDownIcon = forwardRef<\r\n\tSquareArrowDownIconHandle,\r\n\tSquareArrowDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\telse onMouseEnter?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\telse onMouseLeave?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.rect\r\n\t\t\t\t\twidth=\"18\"\r\n\t\t\t\t\theight=\"18\"\r\n\t\t\t\t\tx=\"3\"\r\n\t\t\t\t\ty=\"3\"\r\n\t\t\t\t\trx=\"2\"\r\n\t\t\t\t\tvariants={squareVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m8 12 4 4 4-4\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={secondPathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"M12 8v8\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nSquareArrowDownIcon.displayName = \"SquareArrowDownIcon\";\r\n\r\nexport { SquareArrowDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-arrow-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SquareArrowLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SquareArrowLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst squareVariants: Variants = {\n\tnormal: { transition: { duration: 0.4 } },\n\tanimate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"m12 8-4 4 4 4\", translateX: 0, opacity: 1 },\n\tanimate: {\n\t\td: \"m12 8-4 4 4 4\",\n\t\ttranslateX: [0, 3, 0],\n\t\ttransition: { duration: 0.4 },\n\t},\n};\n\nconst secondPathVariants: Variants = {\n\tnormal: { d: \"M16 12H8\", opacity: 1 },\n\tanimate: {\n\t\td: [\"M16 12H8\", \"M16 12H13\", \"M16 12H8\"],\n\t\ttransition: { duration: 0.4 },\n\t},\n};\n\nconst SquareArrowLeftIcon = forwardRef<\n\tSquareArrowLeftIconHandle,\n\tSquareArrowLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\telse onMouseEnter?.(e);\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\telse onMouseLeave?.(e);\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.rect\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tx=\"3\"\n\t\t\t\t\ty=\"3\"\n\t\t\t\t\trx=\"2\"\n\t\t\t\t\tvariants={squareVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"m12 8-4 4 4 4\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={secondPathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"M16 12H8\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nSquareArrowLeftIcon.displayName = \"SquareArrowLeftIcon\";\n\nexport { SquareArrowLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-arrow-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SquareArrowUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SquareArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst squareVariants: Variants = {\n\tnormal: { transition: { duration: 0.4 } },\n\tanimate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\n};\n\nconst pathVariants: Variants = {\n\tnormal: { d: \"m16 12-4-4-4 4\", translateY: 0, opacity: 1 },\n\tanimate: {\n\t\td: \"m16 12-4-4-4 4\",\n\t\ttranslateY: [0, 3, 0],\n\t\ttransition: { duration: 0.4 },\n\t},\n};\n\nconst secondPathVariants: Variants = {\n\tnormal: { d: \"M12 16V8\", opacity: 1 },\n\tanimate: {\n\t\td: [\"M12 16V8\", \"M12 16V13\", \"M12 16V8\"],\n\t\ttransition: { duration: 0.4 },\n\t},\n};\n\nconst SquareArrowUpIcon = forwardRef<\n\tSquareArrowUpIconHandle,\n\tSquareArrowUpIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\telse onMouseEnter?.(e);\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\telse onMouseLeave?.(e);\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.rect\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tx=\"3\"\n\t\t\t\t\ty=\"3\"\n\t\t\t\t\trx=\"2\"\n\t\t\t\t\tvariants={squareVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"m16 12-4-4-4 4\"\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={secondPathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\td=\"M12 16V8\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nSquareArrowUpIcon.displayName = \"SquareArrowUpIcon\";\n\nexport { SquareArrowUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-arrow-right.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SquareArrowRightIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SquareArrowRightIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst squareVariants: Variants = {\r\n\tnormal: { transition: { duration: 0.4 } },\r\n\tanimate: { transition: { duration: 0.6, ease: \"easeInOut\" } },\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { d: \"M8 12h8\", opacity: 1 },\r\n\tanimate: {\r\n\t\td: [\"M8 12h8\", \"M8 12h5\", \"M8 12h8\"],\r\n\t\ttransition: { duration: 0.4 },\r\n\t},\r\n};\r\n\r\nconst secondPathVariants: Variants = {\r\n\tnormal: { d: \"m12 8 4 4-4 4\", translateX: 0, opacity: 1 },\r\n\tanimate: {\r\n\t\td: \"m12 8 4 4-4 4\",\r\n\t\ttranslateX: [0, -3, 0],\r\n\t\ttransition: { duration: 0.4 },\r\n\t},\r\n};\r\n\r\nconst SquareArrowRightIcon = forwardRef<\r\n\tSquareArrowRightIconHandle,\r\n\tSquareArrowRightIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\telse onMouseEnter?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\telse onMouseLeave?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.rect\r\n\t\t\t\t\twidth=\"18\"\r\n\t\t\t\t\theight=\"18\"\r\n\t\t\t\t\tx=\"3\"\r\n\t\t\t\t\ty=\"3\"\r\n\t\t\t\t\trx=\"2\"\r\n\t\t\t\t\tvariants={squareVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"M8 12h8\"\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={secondPathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\td=\"m12 8 4 4-4 4\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nSquareArrowRightIcon.displayName = \"SquareArrowRightIcon\";\r\n\r\nexport { SquareArrowRightIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/blocks.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BlocksIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BlocksIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst variants: Variants = {\n\tnormal: { translateX: 0, translateY: 0 },\n\tanimate: { translateX: -4, translateY: 4 },\n};\n\nconst BlocksIcon = forwardRef<BlocksIconHandle, BlocksIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M14 3h7v7h-7z\"\n\t\t\t\t\t\tvariants={variants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBlocksIcon.displayName = \"BlocksIcon\";\n\nexport { BlocksIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/calendar-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface CalendarCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CalendarCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst CalendarCheckIcon = forwardRef<\n\tCalendarCheckIconHandle,\n\tCalendarCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M8 2v4\" />\n\t\t\t\t<path d=\"M16 2v4\" />\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\" />\n\t\t\t\t<path d=\"M3 10h18\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\td=\"m9 16 2 2 4-4\"\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCalendarCheckIcon.displayName = \"CalendarCheckIcon\";\n\nexport { CalendarCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/calendar-check-2.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface CalendarCheck2IconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface CalendarCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst CalendarCheck2Icon = forwardRef<\n\tCalendarCheck2IconHandle,\n\tCalendarCheck2IconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M8 2v4\" />\n\t\t\t\t<path d=\"M16 2v4\" />\n\t\t\t\t<path d=\"M21 14V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8\" />\n\t\t\t\t<path d=\"M3 10h18\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\td=\"m16 20 2 2 4-4\"\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nCalendarCheck2Icon.displayName = \"CalendarCheck2Icon\";\n\nexport { CalendarCheck2Icon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface FileCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FileCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst checkVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst FileCheckIcon = forwardRef<FileCheckIconHandle, FileCheckIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\r\n\t\t\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tvariants={checkVariants}\r\n\t\t\t\t\t\td=\"m9 15 2 2 4-4\"\r\n\t\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFileCheckIcon.displayName = \"FileCheckIcon\";\r\n\r\nexport { FileCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-check-2.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface FileCheck2IconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface FileCheck2IconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst FileCheck2Icon = forwardRef<FileCheck2IconHandle, FileCheck2IconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\n\t\t\t\t\t<path d=\"M4 22h14a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v4\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\t\td=\"m3 15 2 2 4-4\"\n\t\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nFileCheck2Icon.displayName = \"FileCheck2Icon\";\n\nexport { FileCheck2Icon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/mail-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface MailCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MailCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst MailCheckIcon = forwardRef<MailCheckIconHandle, MailCheckIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8\" />\n\t\t\t\t\t<path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\t\td=\"m16 19 2 2 4-4\"\n\t\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMailCheckIcon.displayName = \"MailCheckIcon\";\n\nexport { MailCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/monitor-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface MonitorCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MonitorCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst MonitorCheckIcon = forwardRef<\n\tMonitorCheckIconHandle,\n\tMonitorCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<rect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\" />\n\t\t\t\t<path d=\"M12 17v4\" />\n\t\t\t\t<path d=\"M8 21h8\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\td=\"m9 10 2 2 4-4\"\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nMonitorCheckIcon.displayName = \"MonitorCheckIcon\";\n\nexport { MonitorCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/laptop-minimal-check.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\nimport type { Variants } from \"motion/react\";\n\nexport interface LaptopMinimalCheckIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface LaptopMinimalCheckIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst checkVariants: Variants = {\n\tnormal: {\n\t\tpathLength: 1,\n\t\topacity: 1,\n\t\ttransition: {\n\t\t\tduration: 0.3,\n\t\t},\n\t},\n\tanimate: {\n\t\tpathLength: [0, 1],\n\t\topacity: [0, 1],\n\t\ttransition: {\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\n\t\t},\n\t},\n};\n\nconst LaptopMinimalCheckIcon = forwardRef<\n\tLaptopMinimalCheckIconHandle,\n\tLaptopMinimalCheckIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<path d=\"M2 20h20\" />\n\t\t\t\t<rect x=\"3\" y=\"4\" width=\"18\" height=\"12\" rx=\"2\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={checkVariants}\n\t\t\t\t\td=\"m9 10 2 2 4-4\"\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nLaptopMinimalCheckIcon.displayName = \"LaptopMinimalCheckIcon\";\n\nexport { LaptopMinimalCheckIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevron-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ChevronDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst ChevronDownIcon = forwardRef<ChevronDownIconHandle, ChevronDownIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { y: 0 },\r\n\t\t\t\t\t\t\tanimate: { y: [0, 2, 0] },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"m6 9 6 6 6-6\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nChevronDownIcon.displayName = \"ChevronDownIcon\";\r\n\r\nexport { ChevronDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevron-up.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChevronUpIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst ChevronUpIcon = forwardRef<ChevronUpIconHandle, ChevronUpIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { y: 0 },\n\t\t\t\t\t\t\tanimate: { y: [0, -2, 0] },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"m18 15-6-6-6 6\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nChevronUpIcon.displayName = \"ChevronUpIcon\";\n\nexport { ChevronUpIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevron-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChevronLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst ChevronLeftIcon = forwardRef<ChevronLeftIconHandle, ChevronLeftIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { x: 0 },\n\t\t\t\t\t\t\tanimate: { x: [0, -2, 0] },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"m15 18-6-6 6-6\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nChevronLeftIcon.displayName = \"ChevronLeftIcon\";\n\nexport { ChevronLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/chevron-right.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ChevronRightIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst ChevronRightIcon = forwardRef<\n\tChevronRightIconHandle,\n\tChevronRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { x: 0 },\n\t\t\t\t\t\tanimate: { x: [0, 2, 0] },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m9 18 6-6-6-6\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nChevronRightIcon.displayName = \"ChevronRightIcon\";\n\nexport { ChevronRightIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-chevron-down.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SquareChevronDownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SquareChevronDownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst SquareChevronDownIcon = forwardRef<\r\n\tSquareChevronDownIconHandle,\r\n\tSquareChevronDownIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { y: 0 },\r\n\t\t\t\t\t\tanimate: { y: [0, 2, 0] },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m16 10-4 4-4-4\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nSquareChevronDownIcon.displayName = \"SquareChevronDownIcon\";\r\n\r\nexport { SquareChevronDownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-chevron-up.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface SquareChevronUpIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface SquareChevronUpIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst SquareChevronUpIcon = forwardRef<\r\n\tSquareChevronUpIconHandle,\r\n\tSquareChevronUpIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { y: 0 },\r\n\t\t\t\t\t\tanimate: { y: [0, -2, 0] },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m8 14 4-4 4 4\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nSquareChevronUpIcon.displayName = \"SquareChevronUpIcon\";\r\n\r\nexport { SquareChevronUpIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-chevron-right.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SquareChevronRightIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SquareChevronRightIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst SquareChevronRightIcon = forwardRef<\n\tSquareChevronRightIconHandle,\n\tSquareChevronRightIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { x: 0 },\n\t\t\t\t\t\tanimate: { x: [0, 2, 0] },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m10 8 4 4-4 4\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nSquareChevronRightIcon.displayName = \"SquareChevronRightIcon\";\n\nexport { SquareChevronRightIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-chevron-left.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SquareChevronLeftIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SquareChevronLeftIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst SquareChevronLeftIcon = forwardRef<\n\tSquareChevronLeftIconHandle,\n\tSquareChevronLeftIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n\t\t\t\t<motion.path\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { x: 0 },\n\t\t\t\t\t\tanimate: { x: [0, -2, 0] },\n\t\t\t\t\t}}\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m14 16-4-4 4-4\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nSquareChevronLeftIcon.displayName = \"SquareChevronLeftIcon\";\n\nexport { SquareChevronLeftIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/gallery-horizontal-end.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GalleryHorizontalEndIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GalleryHorizontalEndIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateX: 0,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\ttype: \"tween\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t},\r\n\tanimate: (i: number) => ({\r\n\t\ttranslateX: [2 * i, 0],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.25 * (2 - i),\r\n\t\t\ttype: \"tween\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst GalleryHorizontalEndIcon = forwardRef<\r\n\tGalleryHorizontalEndIconHandle,\r\n\tGalleryHorizontalEndIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M6 5v14\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={2}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M2 7v10\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={1}\r\n\t\t\t\t/>\r\n\t\t\t\t<rect width=\"12\" height=\"18\" x=\"10\" y=\"3\" rx=\"2\" />\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nGalleryHorizontalEndIcon.displayName = \"GalleryHorizontalEndIcon\";\r\n\r\nexport { GalleryHorizontalEndIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/gallery-vertical-end.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GalleryVerticalEndIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GalleryVerticalEndIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: {\r\n\t\ttranslateY: 0,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\ttype: \"tween\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t},\r\n\tanimate: (i: number) => ({\r\n\t\ttranslateY: [2 * i, 0],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tdelay: 0.25 * (2 - i),\r\n\t\t\ttype: \"tween\",\r\n\t\t\tstiffness: 200,\r\n\t\t\tdamping: 13,\r\n\t\t},\r\n\t}),\r\n};\r\n\r\nconst GalleryVerticalEndIcon = forwardRef<\r\n\tGalleryVerticalEndIconHandle,\r\n\tGalleryVerticalEndIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M7 2h10\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={1}\r\n\t\t\t\t/>\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\td=\"M5 6h14\"\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tcustom={2}\r\n\t\t\t\t/>\r\n\t\t\t\t<rect width=\"18\" height=\"12\" x=\"3\" y=\"10\" rx=\"2\" />\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nGalleryVerticalEndIcon.displayName = \"GalleryVerticalEndIcon\";\r\n\r\nexport { GalleryVerticalEndIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/hand-heart.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface HandHeartIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface HandHeartIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\nconst heartVariants: Variants = {\n\tnormal: {\n\t\ttranslateY: 0,\n\t\tscale: 1,\n\t\ttransition: {\n\t\t\tdelay: 0.1,\n\t\t\tscale: { duration: 0.2 },\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n\tanimate: {\n\t\ttranslateY: [0, -2],\n\t\tscale: [1, 1.1],\n\t\ttransition: {\n\t\t\tdelay: 0.1,\n\t\t\tscale: { duration: 0.2 },\n\t\t\ttype: \"spring\",\n\t\t\tstiffness: 200,\n\t\t\tdamping: 25,\n\t\t},\n\t},\n};\n\nconst HandHeartIcon = forwardRef<HandHeartIconHandle, HandHeartIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M11 14h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16\" />\n\t\t\t\t\t<path d=\"m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9\" />\n\t\t\t\t\t<path d=\"m2 15 6 6\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tvariants={heartVariants}\n\t\t\t\t\t\td=\"M19.5 8.5c.7-.7 1.5-1.6 1.5-2.7A2.73 2.73 0 0 0 16 4a2.78 2.78 0 0 0-5 1.8c0 1.2.8 2 1.5 2.8L16 12Z\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nHandHeartIcon.displayName = \"HandHeartIcon\";\n\nexport { HandHeartIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/square-activity.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface ActivityIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface ActivityIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst pathVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t\tpathLength: 1,\n\t\tpathOffset: 0,\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\tpathOffset: [1, 0],\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"linear\",\n\t\t\topacity: { duration: 0.1 },\n\t\t},\n\t},\n};\n\nconst squareVariants: Variants = {\n\tnormal: {\n\t\ttransition: {\n\t\t\tduration: 0.4,\n\t\t},\n\t},\n\tanimate: {\n\t\ttransition: {\n\t\t\tduration: 0.6,\n\t\t\tease: \"easeInOut\",\n\t\t},\n\t},\n};\n\nconst SquareActivityIcon = forwardRef<ActivityIconHandle, ActivityIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.rect\n\t\t\t\t\t\twidth=\"18\"\n\t\t\t\t\t\theight=\"18\"\n\t\t\t\t\t\tx=\"3\"\n\t\t\t\t\t\ty=\"3\"\n\t\t\t\t\t\trx=\"2\"\n\t\t\t\t\t\tvariants={squareVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M17 12h-2l-2 5-2-10-2 5H7\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSquareActivityIcon.displayName = \"SquareActivityIcon\";\n\nexport { SquareActivityIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/rotate-cw.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RotateCWIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RotateCWIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst RotateCWIcon = forwardRef<RotateCWIconHandle, RotateCWIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\t\telse onMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\t\telse onMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { rotate: \"0deg\" },\r\n\t\t\t\t\t\tanimate: { rotate: \"50deg\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\" />\r\n\t\t\t\t\t<path d=\"M21 3v5h-5\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nRotateCWIcon.displayName = \"RotateCWIcon\";\r\n\r\nexport { RotateCWIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/rotate-ccw.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RotateCCWIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RotateCCWIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst RotateCCWIcon = forwardRef<RotateCCWIconHandle, RotateCCWIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\t\telse onMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\t\telse onMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { rotate: \"0deg\" },\r\n\t\t\t\t\t\tanimate: { rotate: \"-50deg\" },\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n\t\t\t\t\t<path d=\"M3 3v5h5\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nRotateCCWIcon.displayName = \"RotateCCWIcon\";\r\n\r\nexport { RotateCCWIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/gallery-thumbnails.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface GalleryThumbnailsIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface GalleryThumbnailsIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { opacity: 1 },\r\n\tanimate: (i: number) => ({\r\n\t\topacity: [0, 1],\r\n\t\ttransition: { delay: i * 0.15, duration: 0.2 },\r\n\t}),\r\n};\r\n\r\nconst GalleryThumbnailsIcon = forwardRef<\r\n\tGalleryThumbnailsIconHandle,\r\n\tGalleryThumbnailsIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<rect width=\"18\" height=\"14\" x=\"3\" y=\"3\" rx=\"2\" />\r\n\t\t\t\t{[\"M4 21h1\", \"M9 21h1\", \"M14 21h1\", \"M19 21h1\"].map((d, index) => (\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tkey={d}\r\n\t\t\t\t\t\td={d}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\t\tcustom={index + 1}\r\n\t\t\t\t\t/>\r\n\t\t\t\t))}\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nGalleryThumbnailsIcon.displayName = \"GalleryThumbnailsIcon\";\r\n\r\nexport { GalleryThumbnailsIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/user-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface UserCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UserCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst checkVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst UserCheckIcon = forwardRef<UserCheckIconHandle, UserCheckIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" />\r\n\t\t\t\t\t<circle cx=\"9\" cy=\"7\" r=\"4\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\tvariants={checkVariants}\r\n\t\t\t\t\t\td=\"M16 11L18 13L22 9\"\r\n\t\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nUserCheckIcon.displayName = \"UserCheckIcon\";\r\n\r\nexport { UserCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/user-round-check.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\nimport type { Variants } from \"motion/react\";\r\n\r\nexport interface UserRoundCheckIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface UserRoundCheckIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst checkVariants: Variants = {\r\n\tnormal: {\r\n\t\tpathLength: 1,\r\n\t\topacity: 1,\r\n\t\ttransition: {\r\n\t\t\tduration: 0.3,\r\n\t\t},\r\n\t},\r\n\tanimate: {\r\n\t\tpathLength: [0, 1],\r\n\t\topacity: [0, 1],\r\n\t\ttransition: {\r\n\t\t\tpathLength: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t\topacity: { duration: 0.4, ease: \"easeInOut\" },\r\n\t\t},\r\n\t},\r\n};\r\n\r\nconst UserRoundCheckIcon = forwardRef<\r\n\tUserRoundCheckIconHandle,\r\n\tUserRoundCheckIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M2 21a8 8 0 0 1 13.292-6\" />\r\n\t\t\t\t<circle cx=\"10\" cy=\"8\" r=\"5\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tvariants={checkVariants}\r\n\t\t\t\t\td=\"m16 19 2 2 4-4\"\r\n\t\t\t\t\tstyle={{ transformOrigin: \"center\" }}\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nUserRoundCheckIcon.displayName = \"UserRoundCheckIcon\";\r\n\r\nexport { UserRoundCheckIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/boxes.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface BoxesIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface BoxesIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst BoxesIcon = forwardRef<BoxesIconHandle, BoxesIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tstyle={{ overflow: \"visible\" }}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z m4.03 3.58 -4.74 -2.85 m4.74 2.85 5-3 m-5 3v5.17\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: -1.5, translateY: 1.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z m5 3-5-3 m5 3 4.74-2.85 M17 16.5v5.17\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: 1.5, translateY: 1.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z M12 8 7.26 5.15 m4.74 2.85 4.74-2.85 M12 13.5V8\"\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0 },\n\t\t\t\t\t\t\tanimate: { translateX: 0, translateY: -1.5 },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nBoxesIcon.displayName = \"BoxesIcon\";\n\nexport { BoxesIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/refresh-cw.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RefreshCCWIconWIcon {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RefreshCCWIcoWIcon extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst RefreshCWIcon = forwardRef<RefreshCCWIconWIcon, RefreshCCWIcoWIcon>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\telse onMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\telse onMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { rotate: \"0deg\" },\n\t\t\t\t\t\tanimate: { rotate: \"50deg\" },\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\" />\n\t\t\t\t\t<path d=\"M21 3v5h-5\" />\n\t\t\t\t\t<path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\" />\n\t\t\t\t\t<path d=\"M8 16H3v5\" />\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRefreshCWIcon.displayName = \"RefreshCWIcon\";\n\nexport { RefreshCWIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/refresh-ccw-dot.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface RefreshCCWDotIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RefreshCCWDotIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst RefreshCCWDotIcon = forwardRef<\n\tRefreshCCWDotIconHandle,\n\tRefreshCCWDotIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\telse onMouseEnter?.(e);\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\telse onMouseLeave?.(e);\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<motion.g\n\t\t\t\t\ttransition={{ type: \"spring\", stiffness: 250, damping: 25 }}\n\t\t\t\t\tvariants={{\n\t\t\t\t\t\tnormal: { rotate: \"0deg\" },\n\t\t\t\t\t\tanimate: { rotate: \"-50deg\" },\n\t\t\t\t\t}}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M3 2v6h6\" />\n\t\t\t\t\t<path d=\"M21 12A9 9 0 0 0 6 5.3L3 8\" />\n\t\t\t\t\t<path d=\"M21 22v-6h-6\" />\n\t\t\t\t\t<path d=\"M3 12a9 9 0 0 0 15 6.7l3-2.7\" />\n\t\t\t\t</motion.g>\n\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"1\" />\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nRefreshCCWDotIcon.displayName = \"RefreshCCWDotIcon\";\n\nexport { RefreshCCWDotIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/refresh-cw-off.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RefreshCWOffIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RefreshCWOffIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst RefreshCWOffIcon = forwardRef<\r\n\tRefreshCWOffIconHandle,\r\n\tRefreshCWOffIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\telse onMouseEnter?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\telse onMouseLeave?.(e);\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<motion.svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\ttransition={{ type: \"spring\", stiffness: 500, damping: 20 }}\r\n\t\t\t\tvariants={{\r\n\t\t\t\t\tnormal: { x: 0 },\r\n\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\tx: [-3, 3, -3, 3, 0],\r\n\t\t\t\t\t\ttransition: { duration: 0.4 },\r\n\t\t\t\t\t},\r\n\t\t\t\t}}\r\n\t\t\t\tanimate={controls}\r\n\t\t\t>\r\n\t\t\t\t<path d=\"M21 8L18.74 5.74A9.75 9.75 0 0 0 12 3C11 3 10.03 3.16 9.13 3.47\" />\r\n\t\t\t\t<path d=\"M8 16H3v5\" />\r\n\t\t\t\t<path d=\"M3 12C3 9.51 4 7.26 5.64 5.64\" />\r\n\t\t\t\t<path d=\"m3 16 2.26 2.26A9.75 9.75 0 0 0 12 21c2.49 0 4.74-1 6.36-2.64\" />\r\n\t\t\t\t<path d=\"M21 12c0 1-.16 1.97-.47 2.87\" />\r\n\t\t\t\t<path d=\"M21 3v5h-5\" />\r\n\t\t\t\t<path d=\"M22 22 2 2\" />\r\n\t\t\t</motion.svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nRefreshCWOffIcon.displayName = \"RefreshCWOffIcon\";\r\n\r\nexport { RefreshCWOffIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/redo.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\n\nexport interface RedoIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface RedoIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst customEasing = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst RedoIcon = forwardRef<RedoIconHandle, RedoIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0, rotate: 0 },\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\ttranslateX: [0, -2.1, 0],\n\t\t\t\t\t\t\t\ttranslateY: [0, -1.4, 0],\n\t\t\t\t\t\t\t\trotate: [0, -12, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M21 7v6h-6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\n\t\t\t\t\t\t\tanimate: { pathLength: [1, 0.8, 1] },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nRedoIcon.displayName = \"RedoIcon\";\n\nexport { RedoIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/undo-dot.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\n\nexport interface UndoDotIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface UndoDotIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst customEasing = cubicBezier(0.25, 0.1, 0.25, 1);\n\nconst UndoDotIcon = forwardRef<UndoDotIconHandle, UndoDotIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"animate\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseEnter?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) {\n\t\t\t\t\tcontrols.start(\"normal\");\n\t\t\t\t} else {\n\t\t\t\t\tonMouseLeave?.(e);\n\t\t\t\t}\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0, rotate: 0 },\n\t\t\t\t\t\t\tanimate: {\n\t\t\t\t\t\t\t\ttranslateX: [0, 2.1, 0],\n\t\t\t\t\t\t\t\ttranslateY: [0, -1.4, 0],\n\t\t\t\t\t\t\t\trotate: [0, 12, 0],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M3 7v6h6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\n\t\t\t\t\t\t\tanimate: { pathLength: [1, 0.8, 1] },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M21 17a9 9 0 0 0-15-6.7L3 13\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.circle\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\n\t\t\t\t\t\tvariants={{\n\t\t\t\t\t\t\tnormal: { scale: 1 },\n\t\t\t\t\t\t\tanimate: { scale: [1, 1.2, 1] },\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tcx=\"12\"\n\t\t\t\t\t\tcy=\"17\"\n\t\t\t\t\t\tr=\"1\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nUndoDotIcon.displayName = \"UndoDotIcon\";\n\nexport { UndoDotIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/redo-dot.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { cubicBezier, motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface RedoDotIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface RedoDotIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst customEasing = cubicBezier(0.25, 0.1, 0.25, 1);\r\n\r\nconst RedoDotIcon = forwardRef<RedoDotIconHandle, RedoDotIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { translateX: 0, translateY: 0, rotate: 0 },\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\ttranslateX: [0, -2.1, 0],\r\n\t\t\t\t\t\t\t\ttranslateY: [0, -1.4, 0],\r\n\t\t\t\t\t\t\t\trotate: [0, -12, 0],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M21 7v6h-6\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { pathLength: 1 },\r\n\t\t\t\t\t\t\tanimate: { pathLength: [1, 0.8, 1] },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\td=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.circle\r\n\t\t\t\t\t\ttransition={{ duration: 0.6, ease: customEasing }}\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: { scale: 1 },\r\n\t\t\t\t\t\t\tanimate: { scale: [1, 1.2, 1] },\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tcx=\"12\"\r\n\t\t\t\t\t\tcy=\"17\"\r\n\t\t\t\t\t\tr=\"1\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nRedoDotIcon.displayName = \"RedoDotIcon\";\r\n\r\nexport { RedoDotIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/scan-face.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface ScanFaceIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface ScanFaceIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst ScanFaceIcon = forwardRef<ScanFaceIconHandle, ScanFaceIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: async () => {\r\n\t\t\t\t\tawait controls.start(\"hidden\");\r\n\t\t\t\t\tawait controls.start(\"visible\");\r\n\t\t\t\t},\r\n\t\t\t\tstopAnimation: () => controls.start(\"visible\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\tasync (e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tawait controls.start(\"hidden\");\r\n\t\t\t\t\tawait controls.start(\"visible\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"visible\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\tconst faceVariants: Variants = {\r\n\t\t\tvisible: { scale: 1 },\r\n\t\t\thidden: {\r\n\t\t\t\tscale: 0.9,\r\n\t\t\t\ttransition: { type: \"spring\", stiffness: 200, damping: 20 },\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst cornerVariants: Variants = {\r\n\t\t\tvisible: { scale: 1, rotate: 0, opacity: 1 },\r\n\t\t\thidden: {\r\n\t\t\t\tscale: 1.2,\r\n\t\t\t\trotate: 45,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttransition: { type: \"spring\", stiffness: 200, damping: 20 },\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst mouthVariants: Variants = {\r\n\t\t\tvisible: { scale: 1, opacity: 1 },\r\n\t\t\thidden: {\r\n\t\t\t\tscale: 0.8,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttransition: { duration: 0.3, delay: 0.1 },\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tvariants={faceVariants}\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={cornerVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\t\td=\"M3 7V5a2 2 0 0 1 2-2h2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={cornerVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\t\td=\"M17 3h2a2 2 0 0 1 2 2v2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={cornerVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\t\td=\"M21 17v2a2 2 0 0 1-2 2h-2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={cornerVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\t\td=\"M7 21H5a2 2 0 0 1-2-2v-2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={mouthVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"visible\"\r\n\t\t\t\t\t\td=\"M8 14s1.5 2 4 2 4-2 4-2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\r\n\t\t\t\t\t<line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nScanFaceIcon.displayName = \"ScanFaceIcon\";\r\n\r\nexport { ScanFaceIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/frown.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface FrownIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FrownIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst FrownIcon = forwardRef<FrownIconHandle, FrownIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\tconst faceVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\tscale: 1,\r\n\t\t\t\trotate: 0,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\tscale: [1, 1.15, 1.05, 1.08],\r\n\t\t\t\trotate: [0, -2, 2, 0],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 0.8,\r\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst mouthVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\td: \"M16 16s-1.5-2-4-2-4 2-4 2\",\r\n\t\t\t\tpathLength: 1,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\td: \"M16 17s-1.5-2.5-4-2.5-4 2.5-4 2.5\",\r\n\t\t\t\tpathLength: [0.3, 1, 1],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\td: { duration: 0.5, ease: \"easeOut\" },\r\n\t\t\t\t\tpathLength: {\r\n\t\t\t\t\t\tduration: 0.5,\r\n\t\t\t\t\t\ttimes: [0, 0.5, 1],\r\n\t\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdelay: 0.1,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst leftEyeVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\tscale: 1,\r\n\t\t\t\ty: 0,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\tscale: [1, 1.3, 0.9, 1.1],\r\n\t\t\t\ty: [0, -0.5, 0.3, 0],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst rightEyeVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\tscale: 1,\r\n\t\t\t\ty: 0,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\tscale: [1, 0.9, 1.3, 1.1],\r\n\t\t\t\ty: [0, -0.5, 0.3, 0],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tvariants={faceVariants}\r\n\t\t\t\t>\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={mouthVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\td=\"M16 16s-1.5-2-4-2-4 2-4 2\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"9\"\r\n\t\t\t\t\t\tx2=\"9.01\"\r\n\t\t\t\t\t\ty1=\"9\"\r\n\t\t\t\t\t\ty2=\"9\"\r\n\t\t\t\t\t\tvariants={leftEyeVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"15\"\r\n\t\t\t\t\t\tx2=\"15.01\"\r\n\t\t\t\t\t\ty1=\"9\"\r\n\t\t\t\t\t\ty2=\"9\"\r\n\t\t\t\t\t\tvariants={rightEyeVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFrownIcon.displayName = \"FrownIcon\";\r\n\r\nexport { FrownIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/smile-plus.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SmilePlusIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SmilePlusIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SmilePlusIcon = forwardRef<SmilePlusIconHandle, SmilePlusIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\telse onMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\telse onMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\tconst faceVariants: Variants = {\n\t\t\tnormal: { scale: 1 },\n\t\t\tanimate: {\n\t\t\t\tscale: 1.1,\n\t\t\t\ttransition: { type: \"spring\", stiffness: 200, damping: 20 },\n\t\t\t},\n\t\t};\n\n\t\tconst plusVariants: Variants = {\n\t\t\tnormal: { rotate: 0, scale: 1 },\n\t\t\tanimate: {\n\t\t\t\trotate: 90,\n\t\t\t\tscale: 1.2,\n\t\t\t\ttransition: {\n\t\t\t\t\ttype: \"spring\",\n\t\t\t\t\tstiffness: 200,\n\t\t\t\t\tdamping: 20,\n\t\t\t\t\tdelay: 0.1,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tvariants={faceVariants}\n\t\t\t\t>\n\t\t\t\t\t<path d=\"M22 11v1a10 10 0 1 1-9-10\" />\n\t\t\t\t\t<path d=\"M8 14s1.5 2 4 2 4-2 4-2\" />\n\t\t\t\t\t<line x1=\"9\" x2=\"9.01\" y1=\"9\" y2=\"9\" />\n\t\t\t\t\t<line x1=\"15\" x2=\"15.01\" y1=\"9\" y2=\"9\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={plusVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M16 5h6\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={plusVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\td=\"M19 2v6\"\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSmilePlusIcon.displayName = \"SmilePlusIcon\";\n\nexport { SmilePlusIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/smile.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface SmileIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface SmileIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst SmileIcon = forwardRef<SmileIconHandle, SmileIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\tconst faceVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\trotate: 0,\n\t\t\t\tstrokeWidth: 2,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: [1, 1.15, 1.05, 1.1],\n\t\t\t\trotate: [0, -3, 3, 0],\n\t\t\t\tstrokeWidth: [2, 2.5, 2.5, 2.5],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.8,\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst mouthVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\td: \"M8 14s1.5 2 4 2 4-2 4-2\",\n\t\t\t\tpathLength: 1,\n\t\t\t\tpathOffset: 0,\n\t\t\t\tstrokeWidth: 2,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\td: \"M7 13.5s2.5 3.5 5 3.5 5-3.5 5-3.5\",\n\t\t\t\tpathLength: [0.3, 1, 1],\n\t\t\t\tpathOffset: [0, 0, 0],\n\t\t\t\tstrokeWidth: 2.5,\n\t\t\t\ttransition: {\n\t\t\t\t\td: { duration: 0.4, ease: \"easeOut\" },\n\t\t\t\t\tpathLength: {\n\t\t\t\t\t\tduration: 0.5,\n\t\t\t\t\t\ttimes: [0, 0.5, 1],\n\t\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\t},\n\t\t\t\t\tdelay: 0.1,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst eyeVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\topacity: 1,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: [1, 1.5, 0.8, 1.2],\n\t\t\t\topacity: [1, 1, 1, 1],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.5,\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={faceVariants}\n\t\t\t\t>\n\t\t\t\t\t<motion.circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\tvariants={mouthVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\td=\"M8 14s1.5 2 4 2 4-2 4-2\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"9\"\n\t\t\t\t\t\tx2=\"9.01\"\n\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\ty2=\"9\"\n\t\t\t\t\t\tvariants={eyeVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"15\"\n\t\t\t\t\t\tx2=\"15.01\"\n\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\ty2=\"9\"\n\t\t\t\t\t\tvariants={eyeVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nSmileIcon.displayName = \"SmileIcon\";\n\nexport { SmileIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/laugh.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface LaughIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface LaughIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst LaughIcon = forwardRef<LaughIconHandle, LaughIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\tconst faceVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\tscale: 1,\r\n\t\t\t\trotate: 0,\r\n\t\t\t\tstrokeWidth: 2,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\tscale: [1, 1.15, 1, 1.1, 1.05],\r\n\t\t\t\trotate: [0, 3, -2, 3, 0],\r\n\t\t\t\tstrokeWidth: [2, 2.5, 2.5, 2.5, 2],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 1.2,\r\n\t\t\t\t\ttimes: [0, 0.2, 0.4, 0.6, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t\trepeat: 0,\r\n\t\t\t\t\trepeatType: \"reverse\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst mouthVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\td: \"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\",\r\n\t\t\t\tpathLength: 1,\r\n\t\t\t\tstrokeWidth: 2,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\td: \"M18 13a6 6 0 0 1-6 5 6 6 0 0 1-6-5h12Z\",\r\n\t\t\t\tpathLength: [0.7, 1, 1],\r\n\t\t\t\tstrokeWidth: 2.5,\r\n\t\t\t\tscaleY: [1, 1.2, 1.1],\r\n\t\t\t\ty: [0, 0.5, 0.3],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\ttimes: [0, 0.5, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\tconst eyeVariants: Variants = {\r\n\t\t\tnormal: {\r\n\t\t\t\tscale: 1,\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\r\n\t\t\t},\r\n\t\t\tanimate: {\r\n\t\t\t\tscale: [1, 1.3, 1, 1.7],\r\n\t\t\t\topacity: [1, 1, 1, 1],\r\n\t\t\t\ttransition: {\r\n\t\t\t\t\tduration: 0.6,\r\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\r\n\t\t\t\t\tease: \"easeInOut\",\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tvariants={faceVariants}\r\n\t\t\t\t>\r\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\tvariants={mouthVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"9\"\r\n\t\t\t\t\t\tx2=\"9.01\"\r\n\t\t\t\t\t\ty1=\"9\"\r\n\t\t\t\t\t\ty2=\"9\"\r\n\t\t\t\t\t\tvariants={eyeVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"15\"\r\n\t\t\t\t\t\tx2=\"15.01\"\r\n\t\t\t\t\t\ty1=\"9\"\r\n\t\t\t\t\t\ty2=\"9\"\r\n\t\t\t\t\t\tvariants={eyeVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nLaughIcon.displayName = \"LaughIcon\";\r\n\r\nexport { LaughIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/annoyed.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface AnnoyedIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface AnnoyedIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst AnnoyedIcon = forwardRef<AnnoyedIconHandle, AnnoyedIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\tconst faceVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\ttransition: { duration: 0.2, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: 1.05,\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.3,\n\t\t\t\t\tease: \"easeOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst mouthVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscaleX: 1,\n\t\t\t\ty: 0,\n\t\t\t\ttransition: { duration: 0.2, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscaleX: 0.8,\n\t\t\t\ty: 1,\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.3,\n\t\t\t\t\tease: \"easeOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst leftEyebrowVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\trotate: 0,\n\t\t\t\ty: 0,\n\t\t\t\tx: 0,\n\t\t\t\ttransition: { duration: 0.2, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\trotate: 15,\n\t\t\t\ty: -1,\n\t\t\t\tx: -0.5,\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.25,\n\t\t\t\t\tease: \"easeOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst rightEyebrowVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\trotate: 0,\n\t\t\t\ty: 0,\n\t\t\t\tx: 0,\n\t\t\t\ttransition: { duration: 0.2, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\trotate: 15,\n\t\t\t\ty: -1,\n\t\t\t\tx: 0.5,\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.25,\n\t\t\t\t\tease: \"easeOut\",\n\t\t\t\t\tdelay: 0.05,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={faceVariants}\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M8 15h8\"\n\t\t\t\t\t\tvariants={mouthVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M8 9h2\"\n\t\t\t\t\t\tvariants={leftEyebrowVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.path\n\t\t\t\t\t\td=\"M14 9h2\"\n\t\t\t\t\t\tvariants={rightEyebrowVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nAnnoyedIcon.displayName = \"AnnoyedIcon\";\n\nexport { AnnoyedIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/meh.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface MehIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface MehIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst MehIcon = forwardRef<MehIconHandle, MehIconProps>(\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\t\tconst controls = useAnimation();\n\t\tconst isControlledRef = useRef(false);\n\n\t\tuseImperativeHandle(ref, () => {\n\t\t\tisControlledRef.current = true;\n\t\t\treturn {\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t\t};\n\t\t});\n\n\t\tconst handleMouseEnter = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"animate\");\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseEnter]\n\t\t);\n\n\t\tconst handleMouseLeave = useCallback(\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\t\tif (!isControlledRef.current) controls.start(\"normal\");\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t},\n\t\t\t[controls, onMouseLeave]\n\t\t);\n\n\t\tconst faceVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\trotate: 0,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: [1, 1.05, 0.98, 1.02],\n\t\t\t\trotate: [0, 1, -1, 0],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.7,\n\t\t\t\t\ttimes: [0, 0.4, 0.7, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst mouthVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscaleX: 1,\n\t\t\t\ty: 0,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscaleX: [1, 1.2, 0.9, 1.1],\n\t\t\t\ty: [0, 0.5, -0.5, 0],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.6,\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t\tdelay: 0.1,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst leftEyeVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\tx: 0,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: [1, 1.3, 1, 1.2],\n\t\t\t\tx: [0, -0.3, 0.3, 0],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.5,\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\tconst rightEyeVariants: Variants = {\n\t\t\tnormal: {\n\t\t\t\tscale: 1,\n\t\t\t\tx: 0,\n\t\t\t\ttransition: { duration: 0.3, ease: \"easeOut\" },\n\t\t\t},\n\t\t\tanimate: {\n\t\t\t\tscale: [1, 1.3, 1, 1.2],\n\t\t\t\tx: [0, 0.3, -0.3, 0],\n\t\t\t\ttransition: {\n\t\t\t\t\tduration: 0.5,\n\t\t\t\t\ttimes: [0, 0.3, 0.6, 1],\n\t\t\t\t\tease: \"easeInOut\",\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<motion.svg\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\twidth={size}\n\t\t\t\t\theight={size}\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tvariants={faceVariants}\n\t\t\t\t>\n\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\" />\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tvariants={mouthVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t\tx1=\"8\"\n\t\t\t\t\t\tx2=\"16\"\n\t\t\t\t\t\ty1=\"15\"\n\t\t\t\t\t\ty2=\"15\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"9\"\n\t\t\t\t\t\tx2=\"9.01\"\n\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\ty2=\"9\"\n\t\t\t\t\t\tvariants={leftEyeVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t\t<motion.line\n\t\t\t\t\t\tx1=\"15\"\n\t\t\t\t\t\tx2=\"15.01\"\n\t\t\t\t\t\ty1=\"9\"\n\t\t\t\t\t\ty2=\"9\"\n\t\t\t\t\t\tvariants={rightEyeVariants}\n\t\t\t\t\t\tanimate={controls}\n\t\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\t/>\n\t\t\t\t</motion.svg>\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nMehIcon.displayName = \"MehIcon\";\n\nexport { MehIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/history.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface HistoryIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface HistoryIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst arrowTransition: Transition = {\r\n\ttype: \"spring\",\r\n\tstiffness: 250,\r\n\tdamping: 25,\r\n};\r\n\r\nconst arrowVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: \"0deg\",\r\n\t},\r\n\tanimate: {\r\n\t\trotate: \"-50deg\",\r\n\t},\r\n};\r\n\r\nconst handTransition: Transition = {\r\n\tduration: 0.6,\r\n\tease: [0.4, 0, 0.2, 1],\r\n};\r\n\r\nconst handVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\toriginX: \"50%\",\r\n\t\toriginY: \"50%\",\r\n\t},\r\n\tanimate: {\r\n\t\trotate: -360,\r\n\t},\r\n};\r\n\r\nconst minuteHandTransition: Transition = {\r\n\tduration: 0.5,\r\n\tease: \"easeInOut\",\r\n};\r\n\r\nconst minuteHandVariants: Variants = {\r\n\tnormal: {\r\n\t\trotate: 0,\r\n\t\toriginX: \"50%\",\r\n\t\toriginY: \"50%\",\r\n\t},\r\n\tanimate: {\r\n\t\trotate: -45,\r\n\t},\r\n};\r\n\r\nconst HistoryIcon = forwardRef<HistoryIconHandle, HistoryIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t\"cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center\",\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t>\r\n\t\t\t\t\t<motion.g\r\n\t\t\t\t\t\ttransition={arrowTransition}\r\n\t\t\t\t\t\tvariants={arrowVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\r\n\t\t\t\t\t\t<path d=\"M3 3v5h5\" />\r\n\t\t\t\t\t</motion.g>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"12\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\tx2=\"12\"\r\n\t\t\t\t\t\ty2=\"7\"\r\n\t\t\t\t\t\tvariants={handVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\ttransition={handTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.line\r\n\t\t\t\t\t\tx1=\"12\"\r\n\t\t\t\t\t\ty1=\"12\"\r\n\t\t\t\t\t\tx2=\"16\"\r\n\t\t\t\t\t\ty2=\"14\"\r\n\t\t\t\t\t\tvariants={minuteHandVariants}\r\n\t\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\t\ttransition={minuteHandTransition}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nHistoryIcon.displayName = \"HistoryIcon\";\r\n\r\nexport { HistoryIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/file-text.tsx",
      "content": "\"use client\";\r\n\r\nimport React, {\r\n\tforwardRef,\r\n\tuseCallback,\r\n\tuseImperativeHandle,\r\n\tuseRef,\r\n} from \"react\";\r\nimport type { HTMLAttributes } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface FileTextIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface FileTextIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst FileText = forwardRef<FileTextIconHandle, FileTextIconProps>(\r\n\t({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\t\tconst controls = useAnimation();\r\n\t\tconst isControlledRef = useRef(false);\r\n\r\n\t\tuseImperativeHandle(ref, () => {\r\n\t\t\tisControlledRef.current = true;\r\n\r\n\t\t\treturn {\r\n\t\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tconst handleMouseEnter = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseEnter]\r\n\t\t);\r\n\r\n\t\tconst handleMouseLeave = useCallback(\r\n\t\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t[controls, onMouseLeave]\r\n\t\t);\r\n\r\n\t\treturn (\r\n\t\t\t<div\r\n\t\t\t\tclassName={cn(\r\n\t\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\t\tclassName\r\n\t\t\t\t)}\r\n\t\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t\t{...props}\r\n\t\t\t>\r\n\t\t\t\t<motion.svg\r\n\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\t\twidth={size}\r\n\t\t\t\t\theight={size}\r\n\t\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\t\tfill=\"none\"\r\n\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t\t\tinitial=\"normal\"\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\tnormal: { scale: 1 },\r\n\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\tscale: 1.05,\r\n\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\tduration: 0.3,\r\n\t\t\t\t\t\t\t\tease: \"easeOut\",\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t<path d=\"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\" />\r\n\t\t\t\t\t<path d=\"M14 2v4a2 2 0 0 0 2 2h4\" />\r\n\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M10 9H8\"\r\n\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t\tx2: 10,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [1, 0, 1],\r\n\t\t\t\t\t\t\t\tx1: [8, 10, 8],\r\n\t\t\t\t\t\t\t\tx2: [10, 10, 10],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.7,\r\n\t\t\t\t\t\t\t\t\tdelay: 0.3,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M16 13H8\"\r\n\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t\tx2: 16,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [1, 0, 1],\r\n\t\t\t\t\t\t\t\tx1: [8, 16, 8],\r\n\t\t\t\t\t\t\t\tx2: [16, 16, 16],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.7,\r\n\t\t\t\t\t\t\t\t\tdelay: 0.5,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t\t<motion.path\r\n\t\t\t\t\t\td=\"M16 17H8\"\r\n\t\t\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\t\t\tvariants={{\r\n\t\t\t\t\t\t\tnormal: {\r\n\t\t\t\t\t\t\t\tpathLength: 1,\r\n\t\t\t\t\t\t\t\tx1: 8,\r\n\t\t\t\t\t\t\t\tx2: 16,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tanimate: {\r\n\t\t\t\t\t\t\t\tpathLength: [1, 0, 1],\r\n\t\t\t\t\t\t\t\tx1: [8, 16, 8],\r\n\t\t\t\t\t\t\t\tx2: [16, 16, 16],\r\n\t\t\t\t\t\t\t\ttransition: {\r\n\t\t\t\t\t\t\t\t\tduration: 0.7,\r\n\t\t\t\t\t\t\t\t\tdelay: 0.7,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</motion.svg>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n);\r\n\r\nFileText.displayName = \"FileTextIcon\";\r\n\r\nexport { FileText as FileTextIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/user-round-plus.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface UserRoundPlusIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface UserRoundPlusIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst verticalBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.3,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.3 },\n\t\t},\n\t},\n};\n\nconst horizontalBarVariants: Variants = {\n\tnormal: {\n\t\topacity: 1,\n\t},\n\tanimate: {\n\t\topacity: [0, 1],\n\t\tpathLength: [0, 1],\n\t\ttransition: {\n\t\t\tdelay: 0.6,\n\t\t\tduration: 0.2,\n\t\t\topacity: { duration: 0.1, delay: 0.6 },\n\t\t},\n\t},\n};\n\nconst UserRoundPlusIcon = forwardRef<\n\tUserRoundPlusIconHandle,\n\tUserRoundPlusIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<motion.svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t\tinitial=\"normal\"\n\t\t\t>\n\t\t\t\t<path d=\"M2 21a8 8 0 0 1 13.292-6\" />\n\t\t\t\t<circle cx=\"10\" cy=\"8\" r=\"5\" />\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M19 16v6\"\n\t\t\t\t\tvariants={verticalBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t\t<motion.path\n\t\t\t\t\td=\"M22 19h-6\"\n\t\t\t\t\tvariants={horizontalBarVariants}\n\t\t\t\t\tinitial=\"normal\"\n\t\t\t\t\tanimate={controls}\n\t\t\t\t/>\n\t\t\t</motion.svg>\n\t\t</div>\n\t);\n});\n\nUserRoundPlusIcon.displayName = \"UserRoundPlusIcon\";\n\nexport { UserRoundPlusIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/panel-left-open.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface PanelLeftOpenIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface PanelLeftOpenIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { x: 0 },\r\n\tanimate: { x: [0, 1.5, 0] },\r\n};\r\n\r\nconst PanelLeftOpenIcon = forwardRef<\r\n\tPanelLeftOpenIconHandle,\r\n\tPanelLeftOpenIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\r\n\t\t\t\t<path d=\"M9 3v18\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m14 9 3 3-3 3\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nPanelLeftOpenIcon.displayName = \"PanelLeftOpenIcon\";\r\n\r\nexport { PanelLeftOpenIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/panel-left-close.tsx",
      "content": "\"use client\";\r\n\r\nimport type { HTMLAttributes } from \"react\";\r\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\nimport type { Transition, Variants } from \"motion/react\";\r\nimport { motion, useAnimation } from \"motion/react\";\r\n\r\nexport interface PanelLeftCloseIconHandle {\r\n\tstartAnimation: () => void;\r\n\tstopAnimation: () => void;\r\n}\r\n\r\ninterface PanelLeftCloseIconProps extends HTMLAttributes<HTMLDivElement> {\r\n\tsize?: number;\r\n}\r\n\r\nconst defaultTransition: Transition = {\r\n\ttimes: [0, 0.4, 1],\r\n\tduration: 0.5,\r\n};\r\n\r\nconst pathVariants: Variants = {\r\n\tnormal: { x: 0 },\r\n\tanimate: { x: [0, -1.5, 0] },\r\n};\r\n\r\nconst PanelLeftCloseIcon = forwardRef<\r\n\tPanelLeftCloseIconHandle,\r\n\tPanelLeftCloseIconProps\r\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\r\n\tconst controls = useAnimation();\r\n\tconst isControlledRef = useRef(false);\r\n\r\n\tuseImperativeHandle(ref, () => {\r\n\t\tisControlledRef.current = true;\r\n\t\treturn {\r\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\r\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\r\n\t\t};\r\n\t});\r\n\r\n\tconst handleMouseEnter = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"animate\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseEnter?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseEnter]\r\n\t);\r\n\r\n\tconst handleMouseLeave = useCallback(\r\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\r\n\t\t\tif (!isControlledRef.current) {\r\n\t\t\t\tcontrols.start(\"normal\");\r\n\t\t\t} else {\r\n\t\t\t\tonMouseLeave?.(e);\r\n\t\t\t}\r\n\t\t},\r\n\t\t[controls, onMouseLeave]\r\n\t);\r\n\r\n\treturn (\r\n\t\t<div\r\n\t\t\tclassName={cn(\r\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\r\n\t\t\t\tclassName\r\n\t\t\t)}\r\n\t\t\tonMouseEnter={handleMouseEnter}\r\n\t\t\tonMouseLeave={handleMouseLeave}\r\n\t\t\t{...props}\r\n\t\t>\r\n\t\t\t<svg\r\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\r\n\t\t\t\twidth={size}\r\n\t\t\t\theight={size}\r\n\t\t\t\tviewBox=\"0 0 24 24\"\r\n\t\t\t\tfill=\"none\"\r\n\t\t\t\tstroke=\"currentColor\"\r\n\t\t\t\tstrokeWidth=\"2\"\r\n\t\t\t\tstrokeLinecap=\"round\"\r\n\t\t\t\tstrokeLinejoin=\"round\"\r\n\t\t\t>\r\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\r\n\t\t\t\t<path d=\"M9 3v18\" />\r\n\t\t\t\t<motion.path\r\n\t\t\t\t\ttransition={defaultTransition}\r\n\t\t\t\t\tvariants={pathVariants}\r\n\t\t\t\t\tanimate={controls}\r\n\t\t\t\t\td=\"m16 15-3-3 3-3\"\r\n\t\t\t\t/>\r\n\t\t\t</svg>\r\n\t\t</div>\r\n\t);\r\n});\r\n\r\nPanelLeftCloseIcon.displayName = \"PanelLeftCloseIcon\";\r\n\r\nexport { PanelLeftCloseIcon };\r\n",
      "type": "registry:ui"
    },
    {
      "path": "registry/open-source/icons/panel-right-open.tsx",
      "content": "\"use client\";\n\nimport type { HTMLAttributes } from \"react\";\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from \"react\";\n\nimport { cn } from \"@/registry/utilities/cn\";\nimport type { Transition, Variants } from \"motion/react\";\nimport { motion, useAnimation } from \"motion/react\";\n\nexport interface PanelRightOpenIconHandle {\n\tstartAnimation: () => void;\n\tstopAnimation: () => void;\n}\n\ninterface PanelRightOpenIconProps extends HTMLAttributes<HTMLDivElement> {\n\tsize?: number;\n}\n\nconst defaultTransition: Transition = {\n\ttimes: [0, 0.4, 1],\n\tduration: 0.5,\n};\n\nconst pathVariants: Variants = {\n\tnormal: { x: 0 },\n\tanimate: { x: [0, -1.5, 0] },\n};\n\nconst PanelRightOpenIcon = forwardRef<\n\tPanelRightOpenIconHandle,\n\tPanelRightOpenIconProps\n>(({ onMouseEnter, onMouseLeave, className, size = 28, ...props }, ref) => {\n\tconst controls = useAnimation();\n\tconst isControlledRef = useRef(false);\n\n\tuseImperativeHandle(ref, () => {\n\t\tisControlledRef.current = true;\n\t\treturn {\n\t\t\tstartAnimation: () => controls.start(\"animate\"),\n\t\t\tstopAnimation: () => controls.start(\"normal\"),\n\t\t};\n\t});\n\n\tconst handleMouseEnter = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"animate\");\n\t\t\t} else {\n\t\t\t\tonMouseEnter?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseEnter]\n\t);\n\n\tconst handleMouseLeave = useCallback(\n\t\t(e: React.MouseEvent<HTMLDivElement>) => {\n\t\t\tif (!isControlledRef.current) {\n\t\t\t\tcontrols.start(\"normal\");\n\t\t\t} else {\n\t\t\t\tonMouseLeave?.(e);\n\t\t\t}\n\t\t},\n\t\t[controls, onMouseLeave]\n\t);\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\t`cursor-pointer select-none p-2 hover:bg-accent rounded-md transition-colors duration-200 flex items-center justify-center`,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\tonMouseEnter={handleMouseEnter}\n\t\t\tonMouseLeave={handleMouseLeave}\n\t\t\t{...props}\n\t\t>\n\t\t\t<svg\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\twidth={size}\n\t\t\t\theight={size}\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\tstrokeLinejoin=\"round\"\n\t\t\t>\n\t\t\t\t<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n\t\t\t\t<path d=\"M15 3v18\" />\n\t\t\t\t<motion.path\n\t\t\t\t\ttransition={defaultTransition}\n\t\t\t\t\tvariants={pathVariants}\n\t\t\t\t\tanimate={controls}\n\t\t\t\t\td=\"m10 15-3-3 3-3\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t</div>\n\t);\n});\n\nPanelRightOpenIcon.displayName = \"PanelRightOpenIcon\";\n\nexport { PanelRightOpenIcon };\n",
      "type": "registry:ui"
    },
    {
      "path": "components/ui/card.tsx",
      "content": "import React from \"react\";\r\n\r\nimport { cn } from \"@/registry/utilities/cn\";\r\n\r\nconst Card = React.forwardRef<\r\n\tHTMLDivElement,\r\n\tReact.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<div\r\n\t\tref={ref}\r\n\t\tclassName={cn(\r\n\t\t\t\"rounded-lg border bg-card text-card-foreground shadow-xs\",\r\n\t\t\tclassName\r\n\t\t)}\r\n\t\t{...props}\r\n\t/>\r\n));\r\nCard.displayName = \"Card\";\r\n\r\nconst CardHeader = React.forwardRef<\r\n\tHTMLDivElement,\r\n\tReact.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<div\r\n\t\tref={ref}\r\n\t\tclassName={cn(\"flex flex-col space-y-1.5 p-6\", className)}\r\n\t\t{...props}\r\n\t/>\r\n));\r\nCardHeader.displayName = \"CardHeader\";\r\n\r\nconst CardTitle = React.forwardRef<\r\n\tHTMLParagraphElement,\r\n\tReact.HTMLAttributes<HTMLHeadingElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<h3\r\n\t\tref={ref}\r\n\t\tclassName={cn(\r\n\t\t\t\"text-2xl font-semibold leading-none tracking-tight\",\r\n\t\t\tclassName\r\n\t\t)}\r\n\t\t{...props}\r\n\t/>\r\n));\r\nCardTitle.displayName = \"CardTitle\";\r\n\r\nconst CardDescription = React.forwardRef<\r\n\tHTMLParagraphElement,\r\n\tReact.HTMLAttributes<HTMLParagraphElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<p\r\n\t\tref={ref}\r\n\t\tclassName={cn(\"text-sm text-muted-foreground\", className)}\r\n\t\t{...props}\r\n\t/>\r\n));\r\nCardDescription.displayName = \"CardDescription\";\r\n\r\nconst CardContent = React.forwardRef<\r\n\tHTMLDivElement,\r\n\tReact.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\r\n));\r\nCardContent.displayName = \"CardContent\";\r\n\r\nconst CardFooter = React.forwardRef<\r\n\tHTMLDivElement,\r\n\tReact.HTMLAttributes<HTMLDivElement>\r\n>(({ className, ...props }, ref) => (\r\n\t<div\r\n\t\tref={ref}\r\n\t\tclassName={cn(\"flex items-center p-6 pt-0\", className)}\r\n\t\t{...props}\r\n\t/>\r\n));\r\nCardFooter.displayName = \"CardFooter\";\r\n\r\nexport {\r\n\tCard,\r\n\tCardHeader,\r\n\tCardFooter,\r\n\tCardTitle,\r\n\tCardDescription,\r\n\tCardContent,\r\n};\r\n",
      "type": "registry:ui"
    }
  ]
}