{
	"$schema": "https://ui.shadcn.com/schema/registry.json",
	"homepage": "https://pulkitxm.com",
	"items": [
		{
			"dependencies": ["gsap"],
			"description": "Animates text sliding in from the left with a fade on scroll into view.",
			"files": [
				{
					"path": "registry/new-york/slide-in-text/slide-in-text.tsx",
					"type": "registry:component"
				}
			],
			"name": "slide-in-text",
			"title": "Slide In Text",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Image component that adapts quality and loading strategy based on real-time network speed.",
			"files": [
				{
					"path": "registry/new-york/network-image/network-image.tsx",
					"type": "registry:component"
				}
			],
			"name": "network-image",
			"title": "Network Image",
			"type": "registry:component"
		},
		{
			"description": "Animated underline that tracks hover/active state and slides beneath nav items. Use with data-link-index on list items.",
			"files": [
				{
					"path": "registry/new-york/animated-underline/animated-underline.tsx",
					"type": "registry:component"
				}
			],
			"name": "animated-underline",
			"title": "Animated Underline",
			"type": "registry:component"
		},
		{
			"description": "Sample navbar demonstrating AnimatedUnderline with hover and active states.",
			"files": [
				{
					"path": "registry/new-york/animated-underline/animated-underline.tsx",
					"target": "components/ui/animated-underline.tsx",
					"type": "registry:component"
				},
				{
					"path": "registry/new-york/animated-underline-navbar/animated-underline-navbar.tsx",
					"target": "components/animated-underline-navbar.tsx",
					"type": "registry:component"
				}
			],
			"name": "animated-underline-navbar",
			"title": "Animated Underline Navbar",
			"type": "registry:block"
		},
		{
			"dependencies": ["gsap"],
			"description": "Confetti celebration effect on click. Wraps any trigger element and fires particles on interaction.",
			"files": [
				{
					"path": "registry/new-york/party-popper/party-popper.tsx",
					"type": "registry:component"
				}
			],
			"name": "party-popper",
			"title": "Party Popper",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion"],
			"description": "Scroll-linked parallax effect for images or content. Moves children on scroll for depth.",
			"files": [
				{
					"path": "registry/new-york/parallax-image/parallax-image.tsx",
					"type": "registry:component"
				}
			],
			"name": "parallax-image",
			"title": "Parallax Image",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion", "lucide-react"],
			"description": "Animated 404 page with subtle icon motion and reduced-motion support.",
			"files": [
				{
					"path": "registry/new-york/not-found-page/not-found-page.tsx",
					"target": "components/not-found-page.tsx",
					"type": "registry:component"
				}
			],
			"name": "not-found-page",
			"title": "Not Found Page",
			"type": "registry:component"
		},
		{
			"dependencies": ["lucide-react", "next-themes"],
			"description": "Accessible dark mode toggle with View Transitions API support and icon, icon-label, or dual-tab variants.",
			"files": [
				{
					"path": "registry/new-york/theme-toggle/theme-provider.tsx",
					"target": "providers/theme-provider.tsx",
					"type": "registry:component"
				},
				{
					"path": "registry/new-york/theme-toggle/theme-toggle.tsx",
					"type": "registry:component"
				},
				{
					"path": "registry/new-york/theme-toggle/theme-toggle.css",
					"target": "app/theme-toggle.css",
					"type": "registry:file"
				}
			],
			"name": "theme-toggle",
			"registryDependencies": ["button"],
			"title": "Theme Toggle",
			"type": "registry:block"
		},
		{
			"dependencies": [],
			"description": "Text that decrypts character by character with a scramble effect. Trigger on scroll, hover, or mount.",
			"files": [
				{
					"path": "registry/new-york/text-scramble/text-scramble.tsx",
					"type": "registry:component"
				}
			],
			"name": "text-scramble",
			"title": "Text Scramble",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion"],
			"description": "3D card with tilt and holographic glare effect that follows the cursor.",
			"files": [
				{
					"path": "registry/new-york/tilt-card-glare/tilt-card-glare.tsx",
					"type": "registry:component"
				}
			],
			"name": "tilt-card-glare",
			"title": "Tilt Card Glare",
			"type": "registry:component"
		},
		{
			"dependencies": ["gsap"],
			"description": "SVG path that draws itself on scroll, hover, or mount. Presets: diamond, circle, star, heart, arrow.",
			"files": [
				{
					"path": "registry/new-york/line-draw-svg/line-draw-svg.tsx",
					"type": "registry:component"
				}
			],
			"name": "line-draw-svg",
			"title": "Line Draw SVG",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Canvas particle trail that follows the cursor. Fixed overlay, customizable color and particle count.",
			"files": [
				{
					"path": "registry/new-york/fluid-cursor-trail/fluid-cursor-trail.tsx",
					"type": "registry:component"
				}
			],
			"name": "fluid-cursor-trail",
			"title": "Fluid Cursor Trail",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion"],
			"description": "Typewriter effect that cycles through phrases with variable typing speed and blinking cursor.",
			"files": [
				{
					"path": "registry/new-york/typewriter/typewriter.tsx",
					"type": "registry:component"
				}
			],
			"name": "typewriter",
			"title": "Typewriter",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion"],
			"description": "macOS-style dock with magnetic cursor effect. Items scale and lift as cursor approaches.",
			"files": [
				{
					"path": "registry/new-york/magnetic-cursor-dock/magnetic-cursor-dock.tsx",
					"type": "registry:component"
				}
			],
			"name": "magnetic-cursor-dock",
			"title": "Magnetic Cursor Dock",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Living aurora background with multiple variants. Sunset, ocean, forest, lavender, ember, ice.",
			"files": [
				{
					"path": "registry/new-york/aurora-background/aurora-background.tsx",
					"type": "registry:component"
				}
			],
			"name": "aurora-background",
			"title": "Aurora Background",
			"type": "registry:component"
		},
		{
			"dependencies": ["flubber", "gsap"],
			"description": "Button with SVG path morph animation. Supports custom paths for idle, hover, loading, success.",
			"files": [
				{
					"path": "registry/new-york/svg-morph-button/svg-morph-button.tsx",
					"type": "registry:component"
				},
				{
					"path": "registry/new-york/svg-morph-button/flubber.d.ts",
					"target": "types/flubber.d.ts",
					"type": "registry:file"
				}
			],
			"name": "svg-morph-button",
			"title": "SVG Morph Button",
			"type": "registry:component"
		},
		{
			"dependencies": ["@react-three/fiber", "three"],
			"description": "400x400 Three.js particle field from SVG. lucide-react, react-icons, Heroicons, Tabler, Phosphor, and similar libs work out of the box. Cursor repel + spring home.",
			"files": [
				{
					"path": "registry/new-york/svg-particle/svg-particle.tsx",
					"type": "registry:component"
				}
			],
			"name": "svg-particle",
			"title": "SVG Particle",
			"type": "registry:component"
		},
		{
			"description": "Shadcn button that swaps between two labels (and optional icons) with a crossfade. Width stays put. No layout jump when copy changes.",
			"files": [
				{
					"path": "registry/new-york/swap-button/swap-button.tsx",
					"target": "components/ui/swap-button.tsx",
					"type": "registry:component"
				}
			],
			"name": "swap-button",
			"registryDependencies": ["button"],
			"title": "Swap Button",
			"type": "registry:component"
		},
		{
			"dependencies": ["gsap"],
			"description": "Grid that reveals items with wave-like stagger on scroll. Configurable columns and timing.",
			"files": [
				{
					"path": "registry/new-york/stagger-reveal-grid/stagger-reveal-grid.tsx",
					"type": "registry:component"
				}
			],
			"name": "stagger-reveal-grid",
			"title": "Stagger Reveal Grid",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion", "opentype.js"],
			"description": "SVG path that draws itself on mount. Pass path for custom shapes or text to render handwriting.",
			"files": [
				{
					"path": "registry/new-york/handwriting-svg/handwriting-svg.tsx",
					"type": "registry:component"
				},
				{
					"path": "registry/new-york/handwriting-svg/opentype.d.ts",
					"target": "types/opentype.d.ts",
					"type": "registry:file"
				}
			],
			"name": "handwriting-svg",
			"title": "Handwriting SVG",
			"type": "registry:component"
		},
		{
			"dependencies": ["gsap"],
			"description": "Cards that stack and unstack with scroll. Gravity-style depth effect.",
			"files": [
				{
					"path": "registry/new-york/gravity-scroll-cards/gravity-scroll-cards.tsx",
					"type": "registry:component"
				}
			],
			"name": "gravity-scroll-cards",
			"title": "Gravity Scroll Cards",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Scroll-jacks the page when the video reaches the viewport top. Scrubs video forward/backward with wheel input.",
			"files": [
				{
					"path": "registry/new-york/scroll-linked-video-scrubber/scroll-linked-video-scrubber.tsx",
					"type": "registry:component"
				}
			],
			"name": "scroll-linked-video-scrubber",
			"title": "Scroll-Linked Video Scrubber",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Pinned section where vertical scroll drives horizontal gallery position. Same pattern as Scroll-Linked Video Scrubber.",
			"files": [
				{
					"path": "registry/new-york/horizontal-scroll-gallery/horizontal-scroll-gallery.tsx",
					"type": "registry:component"
				}
			],
			"name": "horizontal-scroll-gallery",
			"title": "Horizontal Scroll Gallery",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Circular layout with numbered cards. Scroll wheel rotates the circle. No scrollbar, finite cards.",
			"files": [
				{
					"path": "registry/new-york/infinite-circular-scroll/infinite-circular-scroll.tsx",
					"type": "registry:component"
				}
			],
			"name": "infinite-circular-scroll",
			"title": "Infinite Circular Scroll",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Cursor spotlight effect. Dimmed background with bright radial gradient following cursor.",
			"files": [
				{
					"path": "registry/new-york/cursor-spotlight/cursor-spotlight.tsx",
					"type": "registry:component"
				}
			],
			"name": "cursor-spotlight",
			"title": "Cursor Spotlight",
			"type": "registry:component"
		},
		{
			"dependencies": ["framer-motion"],
			"description": "Fixed bar at the top that scales horizontally with scroll progress. Uses Framer Motion for smooth updates.",
			"files": [
				{
					"path": "registry/new-york/scroll-progress/scroll-progress.tsx",
					"type": "registry:component"
				}
			],
			"name": "scroll-progress",
			"title": "Scroll Progress",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Drag-resizable panels for dashboards, IDEs, and editors. Supports horizontal/vertical layout and dynamic panel count.",
			"files": [
				{
					"path": "registry/new-york/resizable-panels/resizable-panels.tsx",
					"type": "registry:component"
				}
			],
			"name": "resizable-panels",
			"title": "Resizable Panels",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Animated number counter that counts from 0 to target. Tabular nums prevent layout shift, respects reduced motion.",
			"files": [
				{
					"path": "registry/new-york/number-counter/number-counter.tsx",
					"type": "registry:component"
				}
			],
			"name": "number-counter",
			"title": "Number Counter",
			"type": "registry:component"
		},
		{
			"dependencies": ["lucide-react"],
			"description": "Accessible tabs with icon support, sliding indicator, and optional content panels. Keyboard navigable.",
			"files": [
				{
					"path": "registry/new-york/tabs/tabs.tsx",
					"type": "registry:component"
				}
			],
			"name": "tabs",
			"title": "Tabs",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Changes the page title to a custom message when the user switches away from the tab. Uses the Page Visibility API.",
			"files": [
				{
					"path": "registry/new-york/lonely-tab-title/lonely-tab-title.tsx",
					"type": "registry:component"
				}
			],
			"name": "lonely-tab-title",
			"title": "Lonely Tab Title",
			"type": "registry:component"
		},
		{
			"dependencies": [],
			"description": "Image component with Low Quality Image Placeholder (LQIP). Shows a blurred placeholder that fades into the full image on load.",
			"files": [
				{
					"path": "registry/new-york/lqip-image/lqip-image.tsx",
					"type": "registry:component"
				}
			],
			"name": "lqip-image",
			"title": "LQIP Image",
			"type": "registry:component"
		}
	],
	"name": "pulkitxm"
}
