{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "retro-icons",
  "title": "RetroIcons",
  "description": "21 pure-CSS/SVG Mac OS 9 icons (folder, document, Trash, alerts, Happy Mac, Sad Mac, bomb, user, memory, Finder, extension and more) with a name-based RetroIcon wrapper.",
  "dependencies": [
    "class-variance-authority"
  ],
  "registryDependencies": [
    "https://nostalgia-ui.com/r/nostalgia-theme.json"
  ],
  "files": [
    {
      "path": "registry/new-york/ui/retro-icons.tsx",
      "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\n/* ---------------------------------------------------------------------------\n * Size variants\n * -------------------------------------------------------------------------*/\n\nconst retroIconVariants = cva(\"inline-block shrink-0\", {\n  variants: {\n    size: {\n      sm: \"h-4 w-4\",\n      default: \"h-8 w-8\",\n      lg: \"h-12 w-12\",\n      xl: \"h-16 w-16\",\n    },\n  },\n  defaultVariants: {\n    size: \"default\",\n  },\n})\n\nconst sizePixels: Record<string, number> = {\n  sm: 16,\n  default: 32,\n  lg: 48,\n  xl: 64,\n}\n\n/* ---------------------------------------------------------------------------\n * Shared icon props\n * -------------------------------------------------------------------------*/\n\ninterface RetroIconProps\n  extends React.SVGAttributes<SVGSVGElement>,\n    VariantProps<typeof retroIconVariants> {}\n\n/* ---------------------------------------------------------------------------\n * Helper: wraps each icon SVG with shared viewBox, sizing, and a11y attrs\n * -------------------------------------------------------------------------*/\n\nfunction IconShell(\n  {\n    size = \"default\",\n    className,\n    children,\n    ...props\n  }: RetroIconProps & { children: React.ReactNode },\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  const px = sizePixels[size ?? \"default\"]\n  return (\n    <svg\n      ref={ref}\n      width={px}\n      height={px}\n      viewBox=\"0 0 32 32\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      className={cn(retroIconVariants({ size }), className)}\n      aria-hidden\n      {...props}\n    >\n      {children}\n    </svg>\n  )\n}\n\nconst Shell = React.forwardRef(IconShell)\n\n/* ---------------------------------------------------------------------------\n * 1. RetroIconFolder — Classic manila folder\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconFolderInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Tab */}\n      <path d=\"M3 8L3 6H13L15 8H3Z\" fill=\"#ffcc66\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Body */}\n      <rect x=\"3\" y=\"8\" width=\"26\" height=\"18\" fill=\"#ffcc66\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Top-left bevel highlight */}\n      <line x1=\"4\" y1=\"9\" x2=\"28\" y2=\"9\" stroke=\"#ffe599\" strokeWidth=\"1\" />\n      <line x1=\"4\" y1=\"9\" x2=\"4\" y2=\"25\" stroke=\"#ffe599\" strokeWidth=\"1\" />\n      {/* Bottom-right shadow */}\n      <line x1=\"28\" y1=\"10\" x2=\"28\" y2=\"25\" stroke=\"#cc9933\" strokeWidth=\"1\" />\n      <line x1=\"4\" y1=\"25\" x2=\"28\" y2=\"25\" stroke=\"#cc9933\" strokeWidth=\"1\" />\n    </Shell>\n  )\n}\n\nconst RetroIconFolder = React.forwardRef(RetroIconFolderInner)\nRetroIconFolder.displayName = \"RetroIconFolder\"\n\n/* ---------------------------------------------------------------------------\n * 2. RetroIconDocument — Page with dog-ear corner fold\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconDocumentInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Page body */}\n      <path\n        d=\"M6 3H21L26 8V29H6V3Z\"\n        fill=\"#ffffff\"\n        stroke=\"#262626\"\n        strokeWidth=\"1\"\n        strokeLinejoin=\"round\"\n      />\n      {/* Corner fold */}\n      <path d=\"M21 3V8H26\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Text lines */}\n      <line x1=\"9\" y1=\"13\" x2=\"23\" y2=\"13\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"9\" y1=\"16\" x2=\"23\" y2=\"16\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"9\" y1=\"19\" x2=\"23\" y2=\"19\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"9\" y1=\"22\" x2=\"18\" y2=\"22\" stroke=\"#999999\" strokeWidth=\"1\" />\n    </Shell>\n  )\n}\n\nconst RetroIconDocument = React.forwardRef(RetroIconDocumentInner)\nRetroIconDocument.displayName = \"RetroIconDocument\"\n\n/* ---------------------------------------------------------------------------\n * 3. RetroIconTrash — Trash can with lid and body ribs\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconTrashInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Lid */}\n      <rect x=\"7\" y=\"5\" width=\"18\" height=\"3\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Lid handle */}\n      <rect x=\"13\" y=\"3\" width=\"6\" height=\"3\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Body */}\n      <path\n        d=\"M8 8H24L23 28H9L8 8Z\"\n        fill=\"#dddddd\"\n        stroke=\"#262626\"\n        strokeWidth=\"1\"\n        strokeLinejoin=\"round\"\n      />\n      {/* Body ribs */}\n      <line x1=\"13\" y1=\"12\" x2=\"13\" y2=\"24\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"16\" y1=\"12\" x2=\"16\" y2=\"24\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"19\" y1=\"12\" x2=\"19\" y2=\"24\" stroke=\"#999999\" strokeWidth=\"1\" />\n    </Shell>\n  )\n}\n\nconst RetroIconTrash = React.forwardRef(RetroIconTrashInner)\nRetroIconTrash.displayName = \"RetroIconTrash\"\n\n/* ---------------------------------------------------------------------------\n * 4. RetroIconHardDrive — Drive enclosure with LED and vent\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconHardDriveInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Drive body */}\n      <rect x=\"3\" y=\"9\" width=\"26\" height=\"14\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Top bevel */}\n      <line x1=\"4\" y1=\"10\" x2=\"28\" y2=\"10\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      <line x1=\"4\" y1=\"10\" x2=\"4\" y2=\"22\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      {/* Bottom shadow */}\n      <line x1=\"28\" y1=\"10\" x2=\"28\" y2=\"22\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"4\" y1=\"22\" x2=\"28\" y2=\"22\" stroke=\"#999999\" strokeWidth=\"1\" />\n      {/* LED indicator */}\n      <circle cx=\"25\" cy=\"20\" r=\"1.5\" fill=\"#33cc33\" stroke=\"#262626\" strokeWidth=\"0.5\" />\n      {/* Vent slits */}\n      <line x1=\"7\" y1=\"14\" x2=\"14\" y2=\"14\" stroke=\"#999999\" strokeWidth=\"0.75\" />\n      <line x1=\"7\" y1=\"16\" x2=\"14\" y2=\"16\" stroke=\"#999999\" strokeWidth=\"0.75\" />\n      <line x1=\"7\" y1=\"18\" x2=\"14\" y2=\"18\" stroke=\"#999999\" strokeWidth=\"0.75\" />\n    </Shell>\n  )\n}\n\nconst RetroIconHardDrive = React.forwardRef(RetroIconHardDriveInner)\nRetroIconHardDrive.displayName = \"RetroIconHardDrive\"\n\n/* ---------------------------------------------------------------------------\n * 5. RetroIconFloppy — 3.5\" floppy disk\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconFloppyInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Disk body */}\n      <rect x=\"4\" y=\"3\" width=\"24\" height=\"26\" fill=\"#3366cc\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Metal slide (top center) */}\n      <rect x=\"10\" y=\"3\" width=\"12\" height=\"9\" fill=\"#cccccc\" stroke=\"#999999\" strokeWidth=\"0.5\" />\n      {/* Slide hole */}\n      <rect x=\"14\" y=\"5\" width=\"4\" height=\"5\" fill=\"#262626\" />\n      {/* Label area (bottom) */}\n      <rect x=\"7\" y=\"18\" width=\"18\" height=\"9\" fill=\"#ffffff\" stroke=\"#999999\" strokeWidth=\"0.5\" />\n      {/* Label lines */}\n      <line x1=\"9\" y1=\"21\" x2=\"23\" y2=\"21\" stroke=\"#cccccc\" strokeWidth=\"0.5\" />\n      <line x1=\"9\" y1=\"23\" x2=\"23\" y2=\"23\" stroke=\"#cccccc\" strokeWidth=\"0.5\" />\n      <line x1=\"9\" y1=\"25\" x2=\"18\" y2=\"25\" stroke=\"#cccccc\" strokeWidth=\"0.5\" />\n    </Shell>\n  )\n}\n\nconst RetroIconFloppy = React.forwardRef(RetroIconFloppyInner)\nRetroIconFloppy.displayName = \"RetroIconFloppy\"\n\n/* ---------------------------------------------------------------------------\n * 6. RetroIconApplication — Diamond (rotated square) app icon\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconApplicationInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Diamond shape */}\n      <path\n        d=\"M16 3L29 16L16 29L3 16L16 3Z\"\n        fill=\"#ccccff\"\n        stroke=\"#262626\"\n        strokeWidth=\"1\"\n        strokeLinejoin=\"round\"\n      />\n      {/* Top-left highlight */}\n      <path d=\"M16 5L5 16\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      {/* Bottom-right shadow */}\n      <path d=\"M16 27L27 16\" stroke=\"#999999\" strokeWidth=\"1\" />\n      {/* Center \"A\" letter hint — small square inside */}\n      <rect x=\"12\" y=\"12\" width=\"8\" height=\"8\" fill=\"none\" stroke=\"#333399\" strokeWidth=\"1\" />\n      <line x1=\"14\" y1=\"14\" x2=\"18\" y2=\"14\" stroke=\"#333399\" strokeWidth=\"1\" />\n    </Shell>\n  )\n}\n\nconst RetroIconApplication = React.forwardRef(RetroIconApplicationInner)\nRetroIconApplication.displayName = \"RetroIconApplication\"\n\n/* ---------------------------------------------------------------------------\n * 7. RetroIconAlert — Yellow triangle with exclamation mark\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconAlertInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Triangle */}\n      <path\n        d=\"M16 3L30 28H2L16 3Z\"\n        fill=\"#ffcc00\"\n        stroke=\"#262626\"\n        strokeWidth=\"1.5\"\n        strokeLinejoin=\"round\"\n      />\n      {/* Exclamation mark stem */}\n      <rect x=\"14.5\" y=\"11\" width=\"3\" height=\"9\" fill=\"#262626\" />\n      {/* Exclamation mark dot */}\n      <rect x=\"14.5\" y=\"22\" width=\"3\" height=\"3\" fill=\"#262626\" />\n    </Shell>\n  )\n}\n\nconst RetroIconAlert = React.forwardRef(RetroIconAlertInner)\nRetroIconAlert.displayName = \"RetroIconAlert\"\n\n/* ---------------------------------------------------------------------------\n * 8. RetroIconInfo — Blue circle with \"i\"\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconInfoInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Circle */}\n      <circle cx=\"16\" cy=\"16\" r=\"13\" fill=\"#333399\" stroke=\"#262626\" strokeWidth=\"1\" />\n      {/* Highlight arc */}\n      <path d=\"M8 9 A13 13 0 0 1 24 8\" stroke=\"#6666cc\" strokeWidth=\"1\" fill=\"none\" />\n      {/* \"i\" dot */}\n      <rect x=\"14\" y=\"8\" width=\"4\" height=\"4\" fill=\"#ffffff\" />\n      {/* \"i\" stem */}\n      <rect x=\"14\" y=\"14\" width=\"4\" height=\"11\" fill=\"#ffffff\" />\n      {/* Serifs */}\n      <rect x=\"11\" y=\"14\" width=\"10\" height=\"2\" fill=\"#ffffff\" />\n      <rect x=\"11\" y=\"23\" width=\"10\" height=\"2\" fill=\"#ffffff\" />\n    </Shell>\n  )\n}\n\nconst RetroIconInfo = React.forwardRef(RetroIconInfoInner)\nRetroIconInfo.displayName = \"RetroIconInfo\"\n\n/* ---------------------------------------------------------------------------\n * 9. RetroIconQuestion — Blue circle with \"?\"\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconQuestionInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Circle */}\n      <circle cx=\"16\" cy=\"16\" r=\"13\" fill=\"#333399\" stroke=\"#262626\" strokeWidth=\"1\" />\n      {/* Highlight arc */}\n      <path d=\"M8 9 A13 13 0 0 1 24 8\" stroke=\"#6666cc\" strokeWidth=\"1\" fill=\"none\" />\n      {/* \"?\" top curve */}\n      <path\n        d=\"M11 11C11 7 21 7 21 11C21 15 17 14 17 19\"\n        stroke=\"#ffffff\"\n        strokeWidth=\"3\"\n        fill=\"none\"\n        strokeLinecap=\"square\"\n      />\n      {/* \"?\" dot */}\n      <rect x=\"15\" y=\"22\" width=\"4\" height=\"4\" fill=\"#ffffff\" />\n    </Shell>\n  )\n}\n\nconst RetroIconQuestion = React.forwardRef(RetroIconQuestionInner)\nRetroIconQuestion.displayName = \"RetroIconQuestion\"\n\n/* ---------------------------------------------------------------------------\n * 10. RetroIconStop — Red octagon with raised hand\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconStopInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Octagon */}\n      <path\n        d=\"M11 2L21 2L30 11L30 21L21 30L11 30L2 21L2 11L11 2Z\"\n        fill=\"#cc0000\"\n        stroke=\"#262626\"\n        strokeWidth=\"1\"\n        strokeLinejoin=\"round\"\n      />\n      {/* Hand — simplified open palm */}\n      {/* Palm */}\n      <rect x=\"12\" y=\"14\" width=\"8\" height=\"10\" rx=\"0\" fill=\"#ffffff\" />\n      {/* Fingers */}\n      <rect x=\"12\" y=\"8\" width=\"2\" height=\"8\" fill=\"#ffffff\" />\n      <rect x=\"15\" y=\"7\" width=\"2\" height=\"9\" fill=\"#ffffff\" />\n      <rect x=\"18\" y=\"8\" width=\"2\" height=\"8\" fill=\"#ffffff\" />\n      {/* Thumb */}\n      <rect x=\"10\" y=\"14\" width=\"3\" height=\"5\" fill=\"#ffffff\" />\n    </Shell>\n  )\n}\n\nconst RetroIconStop = React.forwardRef(RetroIconStopInner)\nRetroIconStop.displayName = \"RetroIconStop\"\n\n/* ---------------------------------------------------------------------------\n * 11. RetroIconNetwork — Two connected computers\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconNetworkInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Left monitor */}\n      <rect x=\"2\" y=\"6\" width=\"11\" height=\"9\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Left screen */}\n      <rect x=\"4\" y=\"8\" width=\"7\" height=\"5\" fill=\"#ccccff\" />\n      {/* Left stand */}\n      <rect x=\"5\" y=\"15\" width=\"5\" height=\"2\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"0.5\" />\n      {/* Left base */}\n      <rect x=\"3\" y=\"17\" width=\"9\" height=\"2\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"0.5\" />\n\n      {/* Right monitor */}\n      <rect x=\"19\" y=\"6\" width=\"11\" height=\"9\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Right screen */}\n      <rect x=\"21\" y=\"8\" width=\"7\" height=\"5\" fill=\"#ccccff\" />\n      {/* Right stand */}\n      <rect x=\"22\" y=\"15\" width=\"5\" height=\"2\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"0.5\" />\n      {/* Right base */}\n      <rect x=\"20\" y=\"17\" width=\"9\" height=\"2\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"0.5\" />\n\n      {/* Connection line */}\n      <line x1=\"13\" y1=\"23\" x2=\"19\" y2=\"23\" stroke=\"#262626\" strokeWidth=\"1.5\" />\n      {/* Down from left */}\n      <line x1=\"8\" y1=\"19\" x2=\"8\" y2=\"23\" stroke=\"#262626\" strokeWidth=\"1.5\" />\n      <line x1=\"8\" y1=\"23\" x2=\"13\" y2=\"23\" stroke=\"#262626\" strokeWidth=\"1.5\" />\n      {/* Down from right */}\n      <line x1=\"24\" y1=\"19\" x2=\"24\" y2=\"23\" stroke=\"#262626\" strokeWidth=\"1.5\" />\n      <line x1=\"19\" y1=\"23\" x2=\"24\" y2=\"23\" stroke=\"#262626\" strokeWidth=\"1.5\" />\n      {/* Center hub dot */}\n      <circle cx=\"16\" cy=\"23\" r=\"1.5\" fill=\"#262626\" />\n    </Shell>\n  )\n}\n\nconst RetroIconNetwork = React.forwardRef(RetroIconNetworkInner)\nRetroIconNetwork.displayName = \"RetroIconNetwork\"\n\n/* ---------------------------------------------------------------------------\n * 12. RetroIconPrinter — Printer with paper output\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconPrinterInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Paper coming out (top) */}\n      <path d=\"M10 4H22V12H10V4Z\" fill=\"#ffffff\" stroke=\"#262626\" strokeWidth=\"0.75\" />\n      {/* Text lines on paper */}\n      <line x1=\"12\" y1=\"7\" x2=\"20\" y2=\"7\" stroke=\"#cccccc\" strokeWidth=\"0.5\" />\n      <line x1=\"12\" y1=\"9\" x2=\"18\" y2=\"9\" stroke=\"#cccccc\" strokeWidth=\"0.5\" />\n\n      {/* Printer body */}\n      <rect x=\"4\" y=\"11\" width=\"24\" height=\"11\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Top bevel */}\n      <line x1=\"5\" y1=\"12\" x2=\"27\" y2=\"12\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      <line x1=\"5\" y1=\"12\" x2=\"5\" y2=\"21\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      {/* Bottom shadow */}\n      <line x1=\"27\" y1=\"12\" x2=\"27\" y2=\"21\" stroke=\"#999999\" strokeWidth=\"1\" />\n      <line x1=\"5\" y1=\"21\" x2=\"27\" y2=\"21\" stroke=\"#999999\" strokeWidth=\"1\" />\n\n      {/* Paper slot */}\n      <rect x=\"8\" y=\"11\" width=\"16\" height=\"2\" fill=\"#444444\" />\n\n      {/* Output tray */}\n      <path d=\"M6 22H26L28 27H4L6 22Z\" fill=\"#cccccc\" stroke=\"#262626\" strokeWidth=\"0.75\" strokeLinejoin=\"round\" />\n\n      {/* Power LED */}\n      <circle cx=\"24\" cy=\"18\" r=\"1\" fill=\"#33cc33\" />\n    </Shell>\n  )\n}\n\nconst RetroIconPrinter = React.forwardRef(RetroIconPrinterInner)\nRetroIconPrinter.displayName = \"RetroIconPrinter\"\n\n/* ---------------------------------------------------------------------------\n * 13. RetroIconSearch — Magnifying glass\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconSearchInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Lens circle */}\n      <circle cx=\"14\" cy=\"14\" r=\"9\" fill=\"#ffffff\" stroke=\"#262626\" strokeWidth=\"2\" />\n      {/* Glass highlight */}\n      <path d=\"M9 10 A6 6 0 0 1 14 7\" stroke=\"#dddddd\" strokeWidth=\"1.5\" fill=\"none\" strokeLinecap=\"round\" />\n      {/* Handle */}\n      <line x1=\"21\" y1=\"21\" x2=\"28\" y2=\"28\" stroke=\"#262626\" strokeWidth=\"3\" strokeLinecap=\"square\" />\n      {/* Handle highlight */}\n      <line x1=\"22\" y1=\"22\" x2=\"27\" y2=\"27\" stroke=\"#999999\" strokeWidth=\"1\" />\n    </Shell>\n  )\n}\n\nconst RetroIconSearch = React.forwardRef(RetroIconSearchInner)\nRetroIconSearch.displayName = \"RetroIconSearch\"\n\n/* ---------------------------------------------------------------------------\n * 14. RetroIconPreferences — Control panel sliders\n * -------------------------------------------------------------------------*/\n\nfunction RetroIconPreferencesInner(\n  { size, className, ...props }: RetroIconProps,\n  ref: React.ForwardedRef<SVGSVGElement>\n) {\n  return (\n    <Shell ref={ref} size={size} className={className} {...props}>\n      {/* Panel background */}\n      <rect x=\"3\" y=\"3\" width=\"26\" height=\"26\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n      {/* Top bevel */}\n      <line x1=\"4\" y1=\"4\" x2=\"28\" y2=\"4\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      <line x1=\"4\" y1=\"4\" x2=\"4\" y2=\"28\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n\n      {/* Slider track 1 */}\n      <line x1=\"7\" y1=\"10\" x2=\"25\" y2=\"10\" stroke=\"#999999\" strokeWidth=\"1.5\" />\n      {/* Slider knob 1 (left position) */}\n      <rect x=\"9\" y=\"7\" width=\"4\" height=\"6\" fill=\"#eeeeee\" stroke=\"#262626\" strokeWidth=\"0.75\" />\n      <line x1=\"10\" y1=\"8\" x2=\"10\" y2=\"12\" stroke=\"#ffffff\" strokeWidth=\"0.5\" />\n\n      {/* Slider track 2 */}\n      <line x1=\"7\" y1=\"17\" x2=\"25\" y2=\"17\" stroke=\"#999999\" strokeWidth=\"1.5\" />\n      {/* Slider knob 2 (center position) */}\n      <rect x=\"14\" y=\"14\" width=\"4\" height=\"6\" fill=\"#eeeeee\" stroke=\"#262626\" strokeWidth=\"0.75\" />\n      <line x1=\"15\" y1=\"15\" x2=\"15\" y2=\"19\" stroke=\"#ffffff\" strokeWidth=\"0.5\" />\n\n      {/* Slider track 3 */}\n      <line x1=\"7\" y1=\"24\" x2=\"25\" y2=\"24\" stroke=\"#999999\" strokeWidth=\"1.5\" />\n      {/* Slider knob 3 (right position) */}\n      <rect x=\"20\" y=\"21\" width=\"4\" height=\"6\" fill=\"#eeeeee\" stroke=\"#262626\" strokeWidth=\"0.75\" />\n      <line x1=\"21\" y1=\"22\" x2=\"21\" y2=\"26\" stroke=\"#ffffff\" strokeWidth=\"0.5\" />\n    </Shell>\n  )\n}\n\nconst RetroIconPreferences = React.forwardRef(RetroIconPreferencesInner)\nRetroIconPreferences.displayName = \"RetroIconPreferences\"\n\n/* ---------------------------------------------------------------------------\n * 15-16. RetroIconHappyMac / RetroIconSadMac — compact Macintosh faces\n * -------------------------------------------------------------------------*/\n\n/** Shared compact-Mac case; the face is drawn on top by each icon. */\nfunction CompactMacCase({ children }: { children: React.ReactNode }) {\n  return (\n    <>\n      {/* Case */}\n      <rect x=\"6.5\" y=\"1.5\" width=\"19\" height=\"25\" fill=\"#dddddd\" stroke=\"#262626\" strokeWidth=\"1\" />\n      {/* Case bevel */}\n      <line x1=\"7.5\" y1=\"2.5\" x2=\"24.5\" y2=\"2.5\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      <line x1=\"7.5\" y1=\"2.5\" x2=\"7.5\" y2=\"25.5\" stroke=\"#ffffff\" strokeWidth=\"1\" />\n      <line x1=\"24.5\" y1=\"3\" x2=\"24.5\" y2=\"25.5\" stroke=\"#999999\" strokeWidth=\"1\" />\n      {/* Screen bezel + screen */}\n      <rect x=\"9.5\" y=\"4.5\" width=\"13\" height=\"11\" fill=\"#bbbbbb\" stroke=\"#808080\" strokeWidth=\"1\" />\n      <rect x=\"10.5\" y=\"5.5\" width=\"11\" height=\"9\" fill=\"#ffffff\" stroke=\"#262626\" strokeWidth=\"1\" />\n      {/* Floppy slot */}\n      <rect x=\"16\" y=\"20\" width=\"6\" height=\"1\" fill=\"#262626\" />\n      {/* Foot */}\n      <rect x=\"8.5\" y=\"26.5\" width=\"15\" height=\"3\" fill=\"#bbbbbb\" stroke=\"#262626\" strokeWidth=\"1\" />\n      {/* Face (pixel grid) */}\n      <g fill=\"#262626\" shapeRendering=\"crispEdges\">\n        {children}\n      </g>\n    </>\n  )\n}\n\nconst RetroIconHappyMac = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconHappyMac({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        <CompactMacCase>\n          {/* Eyes */}\n          <rect x=\"13\" y=\"7\" width=\"1\" height=\"2\" />\n          <rect x=\"18\" y=\"7\" width=\"1\" height=\"2\" />\n          {/* Nose */}\n          <rect x=\"16\" y=\"7\" width=\"1\" height=\"4\" />\n          <rect x=\"15\" y=\"10\" width=\"1\" height=\"1\" />\n          {/* Smile */}\n          <rect x=\"13\" y=\"12\" width=\"1\" height=\"1\" />\n          <rect x=\"14\" y=\"13\" width=\"4\" height=\"1\" />\n          <rect x=\"18\" y=\"12\" width=\"1\" height=\"1\" />\n        </CompactMacCase>\n      </Shell>\n    )\n  }\n)\nRetroIconHappyMac.displayName = \"RetroIconHappyMac\"\n\nconst RetroIconSadMac = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconSadMac({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        <CompactMacCase>\n          {/* X eyes */}\n          <rect x=\"12\" y=\"7\" width=\"1\" height=\"1\" />\n          <rect x=\"14\" y=\"7\" width=\"1\" height=\"1\" />\n          <rect x=\"13\" y=\"8\" width=\"1\" height=\"1\" />\n          <rect x=\"12\" y=\"9\" width=\"1\" height=\"1\" />\n          <rect x=\"14\" y=\"9\" width=\"1\" height=\"1\" />\n          <rect x=\"17\" y=\"7\" width=\"1\" height=\"1\" />\n          <rect x=\"19\" y=\"7\" width=\"1\" height=\"1\" />\n          <rect x=\"18\" y=\"8\" width=\"1\" height=\"1\" />\n          <rect x=\"17\" y=\"9\" width=\"1\" height=\"1\" />\n          <rect x=\"19\" y=\"9\" width=\"1\" height=\"1\" />\n          {/* Nose */}\n          <rect x=\"16\" y=\"8\" width=\"1\" height=\"3\" />\n          <rect x=\"15\" y=\"10\" width=\"1\" height=\"1\" />\n          {/* Frown */}\n          <rect x=\"14\" y=\"12\" width=\"4\" height=\"1\" />\n          <rect x=\"13\" y=\"13\" width=\"1\" height=\"1\" />\n          <rect x=\"18\" y=\"13\" width=\"1\" height=\"1\" />\n        </CompactMacCase>\n      </Shell>\n    )\n  }\n)\nRetroIconSadMac.displayName = \"RetroIconSadMac\"\n\n/* ---------------------------------------------------------------------------\n * 17. RetroIconBomb — the system error bomb with lit fuse\n * -------------------------------------------------------------------------*/\n\nconst RetroIconBomb = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconBomb({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        {/* Fuse cap */}\n        <rect\n          x=\"18.5\"\n          y=\"8\"\n          width=\"5\"\n          height=\"5\"\n          fill=\"#808080\"\n          stroke=\"#262626\"\n          strokeWidth=\"1\"\n          transform=\"rotate(45 21 10.5)\"\n        />\n        {/* Bomb body */}\n        <circle cx=\"14\" cy=\"19\" r=\"10\" fill=\"#262626\" />\n        {/* Highlight */}\n        <path d=\"M8 16 A7 7 0 0 1 12 12\" stroke=\"#ffffff\" strokeWidth=\"1.5\" fill=\"none\" strokeLinecap=\"square\" />\n        {/* Fuse */}\n        <path d=\"M22.5 8.5 Q24 4.5 27.5 5\" stroke=\"#996633\" strokeWidth=\"1.5\" fill=\"none\" />\n        {/* Spark */}\n        <g stroke=\"#ffcc00\" strokeWidth=\"1\" strokeLinecap=\"square\">\n          <line x1=\"28.5\" y1=\"1.5\" x2=\"28.5\" y2=\"3\" />\n          <line x1=\"28.5\" y1=\"7\" x2=\"28.5\" y2=\"8.5\" />\n          <line x1=\"25.5\" y1=\"3\" x2=\"26.5\" y2=\"4\" />\n          <line x1=\"30.5\" y1=\"3\" x2=\"30\" y2=\"3.5\" />\n          <line x1=\"30.5\" y1=\"5\" x2=\"31.5\" y2=\"5\" />\n        </g>\n        <circle cx=\"28.5\" cy=\"5\" r=\"1.25\" fill=\"#ff6600\" />\n      </Shell>\n    )\n  }\n)\nRetroIconBomb.displayName = \"RetroIconBomb\"\n\n/* ---------------------------------------------------------------------------\n * 18. RetroIconUser — Head and shoulders (Multiple Users)\n * -------------------------------------------------------------------------*/\n\nconst RetroIconUser = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconUser({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        {/* Shoulders */}\n        <path d=\"M4.5 29.5 Q4.5 19.5 16 19.5 Q27.5 19.5 27.5 29.5 Z\" fill=\"#6666cc\" stroke=\"#262626\" strokeWidth=\"1\" strokeLinejoin=\"round\" />\n        {/* Collar */}\n        <path d=\"M13 19.5 L16 23.5 L19 19.5\" stroke=\"#ffffff\" strokeWidth=\"1\" fill=\"none\" />\n        {/* Head */}\n        <circle cx=\"16\" cy=\"11\" r=\"6.5\" fill=\"#ffcc99\" stroke=\"#262626\" strokeWidth=\"1\" />\n        {/* Hair */}\n        <path\n          d=\"M9.6 10 Q9.5 4.5 16 4.5 Q22.5 4.5 22.4 10 Q19.5 7.5 16 8.5 Q12.5 7.5 9.6 10 Z\"\n          fill=\"#663300\"\n          stroke=\"#262626\"\n          strokeWidth=\"0.75\"\n          strokeLinejoin=\"round\"\n        />\n        {/* Eyes */}\n        <rect x=\"13\" y=\"11\" width=\"1.5\" height=\"1.5\" fill=\"#262626\" />\n        <rect x=\"17.5\" y=\"11\" width=\"1.5\" height=\"1.5\" fill=\"#262626\" />\n      </Shell>\n    )\n  }\n)\nRetroIconUser.displayName = \"RetroIconUser\"\n\n/* ---------------------------------------------------------------------------\n * 19. RetroIconMemory — RAM module (DIMM)\n * -------------------------------------------------------------------------*/\n\nconst RetroIconMemory = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconMemory({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        {/* Circuit board */}\n        <rect x=\"1.5\" y=\"9.5\" width=\"29\" height=\"13\" fill=\"#339966\" stroke=\"#262626\" strokeWidth=\"1\" />\n        <line x1=\"2.5\" y1=\"10.5\" x2=\"29.5\" y2=\"10.5\" stroke=\"#66cc99\" strokeWidth=\"1\" />\n        {/* Chips */}\n        {[4, 10, 16, 22].map((x) => (\n          <rect key={x} x={x} y=\"12\" width=\"5\" height=\"5\" fill=\"#262626\" />\n        ))}\n        {/* Gold contacts */}\n        {Array.from({ length: 12 }, (_, i) => (\n          <rect key={i} x={3 + i * 2.25} y=\"19\" width=\"1.25\" height=\"3\" fill=\"#ffcc33\" />\n        ))}\n      </Shell>\n    )\n  }\n)\nRetroIconMemory.displayName = \"RetroIconMemory\"\n\n/* ---------------------------------------------------------------------------\n * 20. RetroIconFinder — Two-tone smiling Finder face (Mac OS logo)\n * -------------------------------------------------------------------------*/\n\nconst RetroIconFinder = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconFinder({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        {/* Left (light) half */}\n        <path d=\"M3.5 3.5H17L14 17H17.5V28.5H3.5Z\" fill=\"#ccccff\" />\n        {/* Right (dark) half */}\n        <path d=\"M17 3.5H28.5V28.5H17.5V17H14Z\" fill=\"#6666cc\" />\n        {/* Profile line */}\n        <path d=\"M17 3.5L14 17H17.5V28.5\" stroke=\"#262626\" strokeWidth=\"1\" fill=\"none\" strokeLinejoin=\"round\" />\n        {/* Outline */}\n        <rect x=\"3.5\" y=\"3.5\" width=\"25\" height=\"25\" stroke=\"#262626\" strokeWidth=\"1\" fill=\"none\" />\n        {/* Eyes */}\n        <rect x=\"9\" y=\"8\" width=\"2\" height=\"5\" fill=\"#262626\" />\n        <rect x=\"21\" y=\"8\" width=\"2\" height=\"5\" fill=\"#262626\" />\n        {/* Smile */}\n        <path d=\"M8 21 Q16 26 24 21\" stroke=\"#262626\" strokeWidth=\"1.5\" fill=\"none\" />\n      </Shell>\n    )\n  }\n)\nRetroIconFinder.displayName = \"RetroIconFinder\"\n\n/* ---------------------------------------------------------------------------\n * 21. RetroIconExtension — System extension puzzle piece\n * -------------------------------------------------------------------------*/\n\nconst RetroIconExtension = React.forwardRef<SVGSVGElement, RetroIconProps>(\n  function RetroIconExtension({ size, className, ...props }, ref) {\n    return (\n      <Shell ref={ref} size={size} className={className} {...props}>\n        <path\n          d=\"M4.5 10.5H11.5C11.5 5.5 18.5 5.5 18.5 10.5H25.5V15.5C30.5 15.5 30.5 22.5 25.5 22.5V28.5H4.5Z\"\n          fill=\"#99cc99\"\n          stroke=\"#262626\"\n          strokeWidth=\"1\"\n          strokeLinejoin=\"round\"\n        />\n        {/* Bevel */}\n        <path d=\"M5.5 27.5V11.5H12\" stroke=\"#ccffcc\" strokeWidth=\"1\" fill=\"none\" />\n        <path d=\"M24.5 23.5V27.5H5.5\" stroke=\"#669966\" strokeWidth=\"1\" fill=\"none\" />\n      </Shell>\n    )\n  }\n)\nRetroIconExtension.displayName = \"RetroIconExtension\"\n\n/* ---------------------------------------------------------------------------\n * Icon map & convenience wrapper\n * -------------------------------------------------------------------------*/\n\nconst iconMap = {\n  folder: RetroIconFolder,\n  document: RetroIconDocument,\n  trash: RetroIconTrash,\n  \"hard-drive\": RetroIconHardDrive,\n  floppy: RetroIconFloppy,\n  application: RetroIconApplication,\n  alert: RetroIconAlert,\n  info: RetroIconInfo,\n  question: RetroIconQuestion,\n  stop: RetroIconStop,\n  network: RetroIconNetwork,\n  printer: RetroIconPrinter,\n  search: RetroIconSearch,\n  preferences: RetroIconPreferences,\n  \"happy-mac\": RetroIconHappyMac,\n  \"sad-mac\": RetroIconSadMac,\n  bomb: RetroIconBomb,\n  user: RetroIconUser,\n  memory: RetroIconMemory,\n  finder: RetroIconFinder,\n  extension: RetroIconExtension,\n} as const\n\ntype RetroIconName = keyof typeof iconMap\n\ninterface RetroIconWrapperProps extends RetroIconProps {\n  name: RetroIconName\n}\n\nconst RetroIcon = React.forwardRef<SVGSVGElement, RetroIconWrapperProps>(\n  function RetroIcon({ name, ...props }, ref) {\n    const IconComponent = iconMap[name]\n    return <IconComponent ref={ref} {...props} />\n  }\n)\nRetroIcon.displayName = \"RetroIcon\"\n\n/* ---------------------------------------------------------------------------\n * Exports\n * -------------------------------------------------------------------------*/\n\nexport {\n  RetroIcon,\n  RetroIconFolder,\n  RetroIconDocument,\n  RetroIconTrash,\n  RetroIconHardDrive,\n  RetroIconFloppy,\n  RetroIconApplication,\n  RetroIconAlert,\n  RetroIconInfo,\n  RetroIconQuestion,\n  RetroIconStop,\n  RetroIconNetwork,\n  RetroIconPrinter,\n  RetroIconSearch,\n  RetroIconPreferences,\n  RetroIconHappyMac,\n  RetroIconSadMac,\n  RetroIconBomb,\n  RetroIconUser,\n  RetroIconMemory,\n  RetroIconFinder,\n  RetroIconExtension,\n  retroIconVariants,\n  iconMap,\n}\n\nexport type { RetroIconProps, RetroIconName, RetroIconWrapperProps }\n",
      "type": "registry:ui"
    }
  ],
  "type": "registry:ui"
}