Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1444 commits
Select commit Hold shift + click to select a range
9a8bace
chore: sync package-lock.json with latest main to prevent dependency …
angelarreolagg Mar 2, 2026
4b47a6c
feat: support ReactNode in ScrollVelocity texts prop
mohamed-younes16 Mar 4, 2026
e046fd2
perf(Grainient): split useEffect, pause RAF when offscreen/tab hidden
mohamed-younes16 Mar 4, 2026
2eb4e0b
Merge pull request #903 from EunHyeokJung/fix/laserflow-aspect-ratio
DavidHDev Mar 9, 2026
32aba29
Merge pull request #895 from angelarreolagg/feat/decrypted-text-on-click
DavidHDev Mar 9, 2026
8c3b568
🎉 New <MagicRings /> component
DavidHDev Mar 11, 2026
9dfebb2
Merge branch 'main' into fixes/webgl-cleanup
DavidHDev Mar 12, 2026
5ac9b78
Merge pull request #884 from Utkarsh-Singhal-26/fixes/webgl-cleanup
DavidHDev Mar 12, 2026
4c9933c
fix: handle SSR error in TargetCursor component by checking for windo…
Himanshu-Lilhore Mar 12, 2026
fcfa83d
Remove announcement
DavidHDev Mar 12, 2026
e6412cd
Fix sidebar glitch and improve item transitions
CyberCrypter Mar 14, 2026
d86f010
Potential fix for pull request finding
CyberCrypter Mar 14, 2026
7ff3116
Remove sponsor
DavidHDev Mar 15, 2026
e05036a
Merge pull request #911 from Himanshu-Lilhore/fix/target-cursor-ssr-e…
DavidHDev Mar 15, 2026
7566a48
Update text in ComponentList
DavidHDev Mar 15, 2026
ef2b7de
Merge pull request #907 from mohamed-younes16/feat/scroll-velocity-re…
DavidHDev Mar 15, 2026
b1e207b
Merge pull request #912 from CyberCrypter/feat/fix-sidebar-bug
DavidHDev Mar 15, 2026
dd35613
Initial plan
Copilot Mar 15, 2026
d89fbbb
Revert PR #912: Fix sidebar visual bug
Copilot Mar 15, 2026
b524b4b
Merge pull request #914 from DavidHDev/copilot/revert-pr-912
DavidHDev Mar 15, 2026
628b006
update message
DavidHDev Mar 15, 2026
9f98b76
feat: add Hexagons background component
aashirpersonal Mar 15, 2026
1a623be
refactor: add shape prop to Squares component (square + hexagon)
aashirpersonal Mar 15, 2026
4132b86
Merge pull request #915 from aashirpersonal/feat/hexagon-grid-background
DavidHDev Mar 15, 2026
3f672e3
Replace Squares with ShapeGrid, add 2 new shapes
DavidHDev Mar 15, 2026
0819632
🎉 5 New Components: LineWaves, EvilEye, BorderGlow, Radar, SoftAurora
DavidHDev Mar 17, 2026
35a3411
change copy
DavidHDev Mar 17, 2026
db4dd79
Spring Code Cleanup
DavidHDev Mar 19, 2026
62a2d22
refactor
DavidHDev Mar 19, 2026
2731842
move header bar
DavidHDev Mar 19, 2026
a3f6247
fix(Counter): ensure correct number rendering in RTL by enforcing LTR…
TWQS Mar 21, 2026
bc52be2
update list
DavidHDev Mar 25, 2026
73c9f70
fix(Grainient): render initial frame in setSize to prevent mount flicker
anonymousRecords Mar 30, 2026
4ee0f25
fix: cancel in-flight animation on mouseleave in DecryptedText
junijaei Apr 1, 2026
fac1aca
fix(code-example): handle quote variants and dedupe injected props
Utkarsh-Singhal-26 Apr 5, 2026
2839570
fix(code-example): update regex to handle line endings in prop injection
Utkarsh-Singhal-26 Apr 5, 2026
1eb2cd7
Add sponsor - tailark
DavidHDev Apr 13, 2026
4cedd62
🎉 2026 Redesign - New landing page, all pages redesigned, overhauled …
DavidHDev Apr 14, 2026
0812b6c
fix demo
DavidHDev Apr 14, 2026
f8054d3
styling fixes
DavidHDev Apr 14, 2026
f5c2773
small fix
DavidHDev Apr 14, 2026
4a10987
fix: staggered menu flicker on first dom render
aighita Apr 15, 2026
d366adb
fix lp scroll animations
DavidHDev Apr 16, 2026
7a25362
Merge pull request #943 from aighita/fix/staggered-menu-flicker
DavidHDev Apr 16, 2026
6d86104
Merge pull request #938 from Utkarsh-Singhal-26/fix/codeexample-prop-…
DavidHDev Apr 16, 2026
d8cffc2
Merge pull request #933 from junijaei/feature/fix-decrypted-text-mous…
DavidHDev Apr 16, 2026
14d33e4
Merge pull request #929 from anonymousRecords/feat/fix-grainient-moun…
DavidHDev Apr 16, 2026
c95772b
Merge pull request #919 from TWQS/feat/fix-Counter-component
DavidHDev Apr 16, 2026
d70d17b
fix: remove mathjs import and use Math instead in GradualBlur component
Arjunsharmahehe Apr 16, 2026
47cc8e8
Connect QuickStart tool/runner selectors to InstallationContext for p…
KhaledSaeed18 Apr 17, 2026
d1ca6f7
fix: remove mathjs as a dependency from registry.json
Arjunsharmahehe Apr 17, 2026
841cc83
Merge pull request #946 from KhaledSaeed18/feat/sync-quickstart-insta…
DavidHDev Apr 20, 2026
19af24c
Merge pull request #944 from Arjunsharmahehe/feat/fix-GradualBlur-com…
DavidHDev Apr 20, 2026
b5b5b60
update demo img
DavidHDev Apr 20, 2026
ea95d3e
fix(Navbar): render docs mobile menu via portal to escape backdrop-fi…
KhaledSaeed18 Apr 21, 2026
113cde8
fix plasma
DavidHDev Apr 22, 2026
c6dea8a
Merge pull request #949 from KhaledSaeed18/fix/mobile-docs-menu-hidde…
DavidHDev Apr 22, 2026
1e610a0
fix(demo): rename setColor to onChange for PreviewColorPickerCustom
KhaledSaeed18 Apr 23, 2026
93b0496
fix(ShinyTextDemo): rename setColor to onChange for PreviewColorPicke…
KhaledSaeed18 Apr 23, 2026
72728d4
Merge pull request #951 from KhaledSaeed18/fix/preview-color-picker-o…
DavidHDev Apr 23, 2026
49a25aa
mobile fixes
DavidHDev Apr 23, 2026
5ca37bb
promo update
DavidHDev Apr 25, 2026
193b509
fix: update Open Graph and Twitter image references to new image
DavidHDev May 2, 2026
b31b23d
Svelte Bits port info
DavidHDev May 3, 2026
56f072b
fix: correct ComponentPropsProvider usage in 8 background demos
KhaledSaeed18 May 5, 2026
0becc2d
Merge pull request #955 from KhaledSaeed18/fix/component-props-provid…
DavidHDev May 12, 2026
70ada6a
Merge branch 'main' into feat/grainient-performance
DavidHDev May 12, 2026
c8df710
Merge pull request #908 from mohamed-younes16/feat/grainient-performance
DavidHDev May 12, 2026
e519c73
update
DavidHDev May 12, 2026
98a7353
fix: resync canvas size on browser zoom change in ElectricBorder
KhaledSaeed18 May 14, 2026
66f9d50
Merge pull request #963 from KhaledSaeed18/fix/electric-border-zoom
DavidHDev May 20, 2026
21e6b1e
UX Enhancement: Make Canvas empty state clickable
naama-git May 20, 2026
e3063f1
Fix Chrome black screen issue on Browse Components navigation
KrrishSR4 May 21, 2026
41c1fd5
Remove useless Comment
agdral May 21, 2026
6218083
Merge pull request #968 from agdral/patch-1
DavidHDev May 21, 2026
633fc7a
Merge pull request #966 from naama-git/feat/clickable-canvas-upload
DavidHDev May 21, 2026
ebb813e
Merge pull request #967 from KrrishSR4/fix/chrome-black-screen-issue
DavidHDev May 21, 2026
ca7feb8
Initial plan
Copilot May 21, 2026
a3b191a
fix: exclude lanyard assets from shadcn registry output
Copilot May 21, 2026
c41b7d8
chore: remove unrelated regenerated registry file
Copilot May 21, 2026
366f4c8
Merge pull request #969 from DavidHDev/copilot/fix-lanyard-js-add-error
DavidHDev May 21, 2026
c129f61
fix(OrbitImages): prevent responsive scale flash on mount and refresh
achelie May 27, 2026
3e13f4a
Merge pull request #971 from achelie/feat/fix-orbit-images-responsive…
DavidHDev May 28, 2026
618779c
remove announcement
DavidHDev May 31, 2026
f862b50
update counts
DavidHDev Jun 2, 2026
efc946c
Add 3 New backgrounds - SideRays, Ferrofluid, Lightfall
DavidHDev Jun 2, 2026
fef6744
fix TargetCursor, add new font props to CircularGallery
DavidHDev Jun 2, 2026
09082a6
fix: resolve duplicate Ferrofluid link
Prathamesh1734 Jun 4, 2026
9d0137e
Merge pull request #974 from Prathamesh1734/fix/duplicate-Ferrofluid-…
DavidHDev Jun 4, 2026
603c7d2
feat(Lanyard): render card front/back from separate images (JS/CSS)
EnderRomantice Jun 7, 2026
0d3f04f
feat(Lanyard): render card front/back from separate images (JS/Tailwind)
EnderRomantice Jun 7, 2026
2ac6e31
feat(Lanyard): render card front/back from separate images (TS/CSS)
EnderRomantice Jun 7, 2026
2020667
feat(Lanyard): render card front/back from separate images (TS/Tailwind)
EnderRomantice Jun 7, 2026
ef541ad
docs(Lanyard): document frontImage/backImage/imageFit in the demo pro…
EnderRomantice Jun 7, 2026
a49c9f9
docs(Lanyard): update usage snippet for front/back card images
EnderRomantice Jun 7, 2026
d56cf15
feat(Lanyard): add lanyardWidth prop to size the band (JS/CSS)
EnderRomantice Jun 7, 2026
de14991
feat(Lanyard): add lanyardWidth prop to size the band (JS/Tailwind)
EnderRomantice Jun 7, 2026
c57cc94
feat(Lanyard): add lanyardWidth prop to size the band (TS/CSS)
EnderRomantice Jun 7, 2026
ff78010
feat(Lanyard): add lanyardWidth prop to size the band (TS/Tailwind)
EnderRomantice Jun 7, 2026
4a4ef0b
docs(Lanyard): document lanyardWidth in the demo prop table
EnderRomantice Jun 7, 2026
91aab01
docs(Lanyard): mention lanyardWidth in the usage snippet
EnderRomantice Jun 7, 2026
3f85b9c
add missing videos, sort by new components on index page
DavidHDev Jun 8, 2026
11624c7
tool fixes
DavidHDev Jun 8, 2026
42d31de
tool fixes (more)
DavidHDev Jun 8, 2026
4cfa19f
shape magic update - more features, bug fixes
DavidHDev Jun 8, 2026
70356e2
Merge pull request #977 from EnderRomantice/feat/lanyard-front-back-i…
DavidHDev Jun 8, 2026
463dc35
fix(Carousel): make slide indicators keyboard accessible
feichuans Jun 8, 2026
48631ee
Merge pull request #978 from ifeichuan/feat/carousel-keyboard-accessi…
DavidHDev Jun 9, 2026
b36c683
NEW COMPONENT: STRANDS
DavidHDev Jun 10, 2026
b8f0d67
fix ferrofluid usage example
DavidHDev Jun 10, 2026
ff91d0d
feat: add keyboard navigation support to CircularGallery
Sarthak-Bhagat2006 Jun 11, 2026
879347a
yearly info announcement
DavidHDev Jun 12, 2026
f9aec37
reduce margin
DavidHDev Jun 12, 2026
3b39bb1
Remove any refs from Lanyard
PedroMarianoAlmeida Jun 12, 2026
890ef9b
feat(Dock): add keyboard activation and accessible labels
Sarthak-Bhagat2006 Jun 13, 2026
87fb81f
Merge pull request #982 from Sarthak-Bhagat2006/feat/CircularGallary-…
DavidHDev Jun 17, 2026
17995d0
Merge pull request #986 from Sarthak-Bhagat2006/feat/dock-keyboard-na…
DavidHDev Jun 17, 2026
d352289
Merge pull request #984 from PedroMarianoAlmeida/remove-any-from-lany…
DavidHDev Jun 17, 2026
465ac90
feat(Folder): add keyboard navigation and accessibility support
Sarthak-Bhagat2006 Jun 18, 2026
1fa1fcf
fix(ui): non-functional toggle button
Krishang-Zinzuwadia Jun 19, 2026
887f812
Merge pull request #992 from Krishang-Zinzuwadia/fix/toggle-button
DavidHDev Jun 20, 2026
37d7140
Merge pull request #989 from Sarthak-Bhagat2006/feat/Folder-keyboard-…
DavidHDev Jun 20, 2026
d1e15cb
fix textpressure
DavidHDev Jun 20, 2026
6f073fc
optimize Threads
DavidHDev Jun 20, 2026
e11bf49
feat(TargetCursor): add cursorColor and cursorColorOnTarget props
calebephrem Jun 20, 2026
9c86c31
feat(TargetCursorDemo): wire up cursorColor and cursorColorOnTarget c…
calebephrem Jun 20, 2026
5a18a50
Merge pull request #993 from calebephrem/feat/target-cursor-color
DavidHDev Jun 21, 2026
1f281ab
fix ballpit types
DavidHDev Jun 21, 2026
d655bcd
feat(CardNav): add keyboard support for hamburger menu
Sarthak-Bhagat2006 Jun 23, 2026
f292047
Merge pull request #995 from Sarthak-Bhagat2006/feat/cardNav-keyboard…
DavidHDev Jun 24, 2026
8d938e3
fix(CircularText): remove debug console.log on hover
KishenPC Jul 2, 2026
ff008da
Merge pull request #997 from KishenPC/feat/circulartext-remove-debug-log
DavidHDev Jul 5, 2026
5614af7
update sponsors
DavidHDev Jul 6, 2026
dda69c3
New Component: <LineSidebar />
DavidHDev Jul 7, 2026
7da323c
small fixes for LineSidebar
DavidHDev Jul 7, 2026
497ccf6
small fixes for LineSidebar
DavidHDev Jul 7, 2026
5990118
small fixes for LineSidebar
DavidHDev Jul 7, 2026
0b49ecc
crash fixes
DavidHDev Jul 8, 2026
70f8fe4
fix: improve ref assignment
DavidHDev Jul 8, 2026
271b49c
fix crash
DavidHDev Jul 10, 2026
b4efe4e
New CurvedInput component
DavidHDev Jul 12, 2026
dafa09e
remove any from SplashCursor
PedroMarianoAlmeida Jul 12, 2026
cb791f9
RBP Updates
DavidHDev Jul 14, 2026
134717f
Add 3 new components - OptionWheel, CursorGrid, SpecularButton
DavidHDev Jul 14, 2026
83da806
update readme
DavidHDev Jul 14, 2026
fd03149
Merge pull request #1000 from PedroMarianoAlmeida/splash-cursor-types
DavidHDev Jul 14, 2026
4c398d8
add click control for optionwheel
DavidHDev Jul 14, 2026
41a740a
darkveil fixes
urliveyn Jul 14, 2026
3fdf623
Add click sound to OptionWheel
DavidHDev Jul 14, 2026
3acbd54
run build
DavidHDev Jul 14, 2026
a38cf96
Readme updates
DavidHDev Jul 15, 2026
953eae6
sponsorship updates
DavidHDev Jul 15, 2026
8848b06
styling updates
DavidHDev Jul 15, 2026
55268dc
update og pic
DavidHDev Jul 15, 2026
cea1646
seo updates
DavidHDev Jul 15, 2026
ddb1cd8
fix: remove duplicated SideRays component code
rorz Jul 15, 2026
8fe8dd2
Merge pull request #1004 from rorz/main
DavidHDev Jul 15, 2026
dbdaac1
Merge pull request #1001 from urliveyn/main
DavidHDev Jul 15, 2026
f88bb89
update stars
DavidHDev Jul 16, 2026
a5dd3c9
fix: parse alpha hex colors in PrismaticBurst
Jw705 Jul 19, 2026
6a16640
fix: parse alpha hex colors in FaultyTerminal
Jw705 Jul 19, 2026
86f8a5a
fix: parse alpha hex colors in LaserFlow
Jw705 Jul 19, 2026
3ae27de
fix: parse alpha hex colors in CursorGrid
Jw705 Jul 19, 2026
b31b124
fix: parse alpha hex colors in Particles
Jw705 Jul 19, 2026
6f26c4c
fix: parse alpha hex colors in Folder
Jw705 Jul 19, 2026
e531da1
fix: parse alpha hex colors in ElectricBorder
Jw705 Jul 19, 2026
8d1c5fa
Merge pull request #1005 from Jw705/feat/fix-hex-colors
DavidHDev Jul 20, 2026
6016e09
fix: guard render-time window/matchMedia access for SSR
zbysir Jul 21, 2026
d8ff27c
Initial commit; Updated all Plasma background files, including the de…
elias4044 Jul 21, 2026
4d848e3
fix: Change position from absolute to relative
elias4044 Jul 21, 2026
1b11734
Updated default to 60 fps in all files
elias4044 Jul 21, 2026
95a6e43
fix: changed default FPS to 60 instead of 30.
elias4044 Jul 21, 2026
67140d3
Merge pull request #1006 from zbysir/feat/fix-ssr-window-guards
DavidHDev Jul 23, 2026
61d7583
fix: Changed "Quality" prop to "Iterations".
elias4044 Jul 23, 2026
4ebca5b
Merge pull request #1007 from elias4044/fix/plasma-performance
DavidHDev Jul 23, 2026
0d6e3d3
feat: add JS/Tailwind, TS/CSS, and TS/Tailwind variants for <CurvedIn…
Jul 24, 2026
cf1dbf8
Merge pull request #1009 from Utkarsh-Singhal-26/feat/curved-input-ad…
DavidHDev Jul 24, 2026
75a9632
Initial plan
Copilot Jul 26, 2026
67a5e0f
Fix Silk background freezing on parameter change by keeping uniforms …
Copilot Jul 26, 2026
5d26a67
Merge pull request #1011 from DavidHDev/copilot/fix-silk-background-f…
DavidHDev Jul 26, 2026
66fa5ec
feat: fix ballpit background in background studio, add parameter reac…
DarkFalc0n Jul 27, 2026
6190995
Merge pull request #1013 from DarkFalc0n/feat/fix-ballpit-background
DavidHDev Jul 28, 2026
487f8a2
Fixes the animation loop getting stuck due to a stale requestAnimatio…
ishubhamrathi Jul 29, 2026
83ccc37
Prevent multiple animation frames in startLoop
ishubhamrathi Jul 29, 2026
88cc7cb
update sponsors
DavidHDev Jul 29, 2026
e442da4
cleanup
DavidHDev Jul 29, 2026
e4aa7c6
shapemagic updates
DavidHDev Jul 29, 2026
b9158ac
Update README
DavidHDev Jul 30, 2026
0e473cb
disable announcement
DavidHDev Jul 31, 2026
7acd3b4
update info
DavidHDev Aug 1, 2026
8761041
add videos
DavidHDev Aug 1, 2026
34ca267
Updates
ishubhamrathi Aug 1, 2026
81056bb
Merge pull request #1015 from ishubhamrathi/ishubhamrathi-patch-1
DavidHDev Aug 2, 2026
afc765e
Initial plan
Copilot Aug 2, 2026
4c0aa5a
Fix OptionWheel stacked layout under StrictMode by resetting rAF ref …
Copilot Aug 2, 2026
49d4448
Apply StrictMode rAF reset fix to LineSidebar component variants
Copilot Aug 2, 2026
d26ed7a
Merge pull request #1024 from DavidHDev/copilot/fix-optionwheel-layou…
DavidHDev Aug 2, 2026
d6acc44
27 New Components
DavidHDev Aug 4, 2026
7d594a3
fix dotfield landing page interactivity
DavidHDev Aug 4, 2026
d04c13f
safari + mobile fixes
DavidHDev Aug 4, 2026
1320d40
image updates
DavidHDev Aug 4, 2026
c705f8c
fix(performance): dedupe React dependencies and cache lazy loaded cat…
DarkFalc0n Aug 5, 2026
3ba27d8
Merge pull request #1028 from DarkFalc0n/fix/prevent-component-remoun…
DavidHDev Aug 6, 2026
06518d3
fix: stack showcase header vertically on mobile to prevent overflow
Koushik-Zzz Aug 7, 2026
b7edb82
chore: remove leftover debug comment
Koushik-Zzz Aug 7, 2026
badf4c2
refactor(ui): auto-format and normalize select control options in Pre…
DarkFalc0n Aug 7, 2026
a1343c1
fix(ui): correct label normalization and memoization in PreviewSelect
DarkFalc0n Aug 7, 2026
f9e7826
fix: add neonwaves (six) preset to hyperspeed demo
DarkFalc0n Aug 8, 2026
f52fe50
Merge pull request #1032 from DarkFalc0n/refactor/normalize-select-op…
DavidHDev Aug 8, 2026
6a33cdd
Merge pull request #1031 from Koushik-Zzz/fix/showcase-header-mobile-…
DavidHDev Aug 8, 2026
55bb7cb
fix(GlassSurface): drop the duplicated resize effect
noron12234 Jul 31, 2026
e47ba52
fix(Ballpit): bind the resize/visibility handlers once so they can be…
noron12234 Jul 31, 2026
e36d938
fix(Lightning, RippleGrid): cancel the render loop on cleanup
noron12234 Jul 31, 2026
7cc457e
fix(ImageTrail): stop the render loop and drop listeners on unmount
noron12234 Aug 4, 2026
cb8bde6
fix(ts): import types with type-only specifiers in TS variants
noron12234 Jul 31, 2026
250be4b
docs updates
DavidHDev Aug 11, 2026
677e9eb
update data
DavidHDev Aug 11, 2026
01c9515
Add PixelSwap component
EnderRomantice Aug 12, 2026
0d97dac
PixelSwap: fix perf, grid centering, demo colors, and text
EnderRomantice Aug 12, 2026
6f642e9
PixelSwap: delay content reveal until animation ends + smooth opacity…
EnderRomantice Aug 12, 2026
729da98
PixelSwap: fix content swap race condition with single timer + double…
EnderRomantice Aug 12, 2026
f7e550a
PixelSwap: fix content cross-fade — enter fades in, exit snaps out in…
EnderRomantice Aug 12, 2026
25ce79c
PixelSwap: simplify — swap content at total with visibility, no opaci…
EnderRomantice Aug 12, 2026
6df9d20
PixelSwap: remove clearTransition from timer callback to prevent sync…
EnderRomantice Aug 12, 2026
b683de1
PixelSwap: revert to original swapAt timing with visibility hidden
EnderRomantice Aug 12, 2026
6cb2c2c
PixelSwap demo: fade text in 0.5s after animation completes
EnderRomantice Aug 12, 2026
624ff61
PixelSwap demo: pure CSS fade-in after animation via data attributes
EnderRomantice Aug 12, 2026
f2f0441
PixelSwap demo: use aria-hidden to hide incoming text, fade in after …
EnderRomantice Aug 12, 2026
2b27c71
PixelSwap demo: fix fade-in timing — keep opacity 0 between swapAt an…
EnderRomantice Aug 12, 2026
6271a4e
PixelSwap demo: locked hover toggle + shorter fade delay
EnderRomantice Aug 12, 2026
ecd2680
PixelSwap demo: fix manual trigger — remove extra div, merge fade log…
EnderRomantice Aug 12, 2026
5e3a6ed
PixelSwap demo: single animation rule, no opacity during animation
EnderRomantice Aug 12, 2026
d7e01ae
PixelSwap demo: targeted fade class — only fade the panel being revealed
EnderRomantice Aug 12, 2026
adb1179
PixelSwap demo: start fade at swapAt instead of total
EnderRomantice Aug 12, 2026
e957966
PixelSwap demo: fade in at animation end, no delay
EnderRomantice Aug 12, 2026
eff9bd2
Merge pull request #1037 from EnderRomantice/feat/pixel-swap
DavidHDev Aug 12, 2026
016d40e
Merge pull request #1035 from DarkFalc0n/fix/add-neonwaves-to-hyperspeed
DavidHDev Aug 12, 2026
c7109dc
pixelswap improvements
DavidHDev Aug 12, 2026
555d8d3
fix(ShapeBlur): prevent flicker when updating uniform props
DarkFalc0n Aug 13, 2026
aa00079
fix(ShapeBlur): dispose geometry and material on cleanup
DarkFalc0n Aug 13, 2026
4907562
chore: remove unused deps and split CLI installation component
phh235 Aug 14, 2026
12b8e20
Merge pull request #1043 from DarkFalc0n/fix/shapeblur-flicker-on-pro…
DavidHDev Aug 14, 2026
7b98054
Merge pull request #1020 from noron12234/feat/fix-ballpit-listener-leak
DavidHDev Aug 14, 2026
501084e
Merge pull request #1021 from noron12234/feat/fix-glasssurface-duplic…
DavidHDev Aug 14, 2026
11b6fb0
Merge pull request #1022 from noron12234/feat/cancel-raf-loops
DavidHDev Aug 14, 2026
0a3dfc7
Merge pull request #1026 from noron12234/fix/unmount-animation-loop-l…
DavidHDev Aug 14, 2026
4022efa
Merge pull request #1018 from noron12234/feat/fix-type-only-imports
DavidHDev Aug 14, 2026
40d7a5f
Merge branch 'main' into feat/remove-unused-deps-split-cli-installation
phh235 Aug 14, 2026
4e0e030
Merge pull request #1045 from phh235/feat/remove-unused-deps-split-cl…
DavidHDev Aug 15, 2026
d52dcae
fix: resolve no-empty lint errors
houssamb4 Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
3 changes: 3 additions & 0 deletions .assetsignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
default/**
tailwind/**
ts/**
301 changes: 301 additions & 0 deletions .context/new-component.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,301 @@
# React Bits – New Component Creation Context

This file provides complete, concrete context for an AI agent to reliably create new components in this repository. It is based on the OrbitImages component as a reference implementation.

---

## 0. Prerequisites

Run the scaffolding script first. It creates empty files and registers the component in `Components.js`, `Categories.js`, and `Information.js` automatically.

```bash
npm run new:component -- <Category> <ComponentName>
# Example: npm run new:component -- Animations OrbitImages
```

This creates:
- `src/content/<Category>/<ComponentName>/<ComponentName>.jsx` (empty)
- `src/content/<Category>/<ComponentName>/<ComponentName>.css` (empty)
- `src/tailwind/<Category>/<ComponentName>/<ComponentName>.jsx` (empty)
- `src/ts-default/<Category>/<ComponentName>/<ComponentName>.tsx` (empty)
- `src/ts-default/<Category>/<ComponentName>/<ComponentName>.css` (empty)
- `src/ts-tailwind/<Category>/<ComponentName>/<ComponentName>.tsx` (empty)
- `src/demo/<Category>/<ComponentName>Demo.jsx` (scaffold with Noise component placeholder)
- `src/constants/code/<Category>/<camelCaseName>Code.js` (empty)
- Entries in `Components.js`, `Categories.js`, `Information.js`

After scaffolding, you fill in the 8 files (4 variants + demo + code metadata + 2 CSS files for CSS variants).

---

## 1. Four Variant Rules

All four variants must produce **identical visual output and behavior**. The differences are only:

| Variant | Path | Language | Styling |
|---|---|---|---|
| JS + CSS | `src/content/…/<Name>.jsx` + `.css` | JavaScript | CSS classes imported via `./Name.css` |
| JS + Tailwind | `src/tailwind/…/<Name>.jsx` | JavaScript | Tailwind utility classes inline |
| TS + CSS | `src/ts-default/…/<Name>.tsx` + `.css` | TypeScript | CSS classes imported via `./Name.css` |
| TS + Tailwind | `src/ts-tailwind/…/<Name>.tsx` | TypeScript | Tailwind utility classes inline |

### JS + CSS variant rules
- Import `'./ComponentName.css'`
- Use named CSS classes for layout/styling (e.g. `.orbit-container`, `.orbit-item`)
- No TypeScript, no type annotations
- Props destructured with defaults in function signature
- `export default function ComponentName({ ... }) {}`

### JS + Tailwind variant rules
- **No** CSS import
- Replace every CSS class with Tailwind utility classes inline
- Same logic, same props, same defaults as JS+CSS

### TS + CSS variant rules
- Same CSS file content (duplicated into `ts-default/`)
- Import `'./ComponentName.css'`
- Add TypeScript `interface` for props
- Add `type` aliases for union types
- Type all refs: `useRef<HTMLDivElement>(null)`
- Type function params and return types for helpers
- Type motion values: `MotionValue<number>`

### TS + Tailwind variant rules
- **No** CSS import
- TypeScript interfaces + types (same as TS+CSS)
- Tailwind utility classes inline (same as JS+Tailwind)
- **No `cn()` utility**

### CSS file conventions
- Use component-scoped class names prefixed with component name (e.g. `.orbit-container`, `.orbit-item`)
- The CSS file in `ts-default/` is an exact copy of the one in `content/`
- Keep styles minimal – only what's needed for layout/positioning

---

## 2. Demo File Pattern

Location: `src/demo/<Category>/<ComponentName>Demo.jsx`

### Standard imports
```jsx
import { useMemo } from 'react';
import { Flex } from '@chakra-ui/react'; // or Box, depending on layout needs
import { CodeTab, PreviewTab, TabsLayout } from '../../components/common/TabsLayout';

import Customize from '../../components/common/Preview/Customize';
import PreviewSlider from '../../components/common/Preview/PreviewSlider';
import PreviewSwitch from '../../components/common/Preview/PreviewSwitch';
import PreviewSelect from '../../components/common/Preview/PreviewSelect';
import CodeExample from '../../components/code/CodeExample';
import RefreshButton from '../../components/common/Preview/RefreshButton';
import PropTable from '../../components/common/Preview/PropTable';
import Dependencies from '../../components/code/Dependencies';
import useForceRerender from '../../hooks/useForceRerender';
import useComponentProps from '../../hooks/useComponentProps';
import { ComponentPropsProvider } from '../../components/context/ComponentPropsContext';

// Import the JS+CSS component (always from content/)
import ComponentName from '../../content/<Category>/<ComponentName>/<ComponentName>';
// Import code metadata
import { camelCaseName } from '../../constants/code/<Category>/<camelCaseName>Code';
```

### Demo structure
```jsx
const DEFAULT_PROPS = {
// Only include props that have demo controls
someProp: defaultValue,
};

const ComponentNameDemo = () => {
const [key, forceRerender] = useForceRerender();
const { props, updateProp, resetProps, hasChanges } = useComponentProps(DEFAULT_PROPS);
const { someProp } = props;

const propData = useMemo(() => [
// ALL public props documented, not just controlled ones
{ name: 'propName', type: 'type', default: 'value', description: 'Description.' },
], []);

return (
<ComponentPropsProvider props={props} defaultProps={DEFAULT_PROPS} resetProps={resetProps} hasChanges={hasChanges}>
<TabsLayout>
<PreviewTab>
<Flex overflow="hidden" justifyContent="center" alignItems="center"
minH="400px" position="relative" className="demo-container">
<ComponentName key={key} {...controlledProps} />
<RefreshButton onClick={forceRerender} />
</Flex>

<Customize>
{/* Controls here */}
</Customize>

<PropTable data={propData} />
<Dependencies dependencyList={['dep1']} />
</PreviewTab>

<CodeTab>
<CodeExample codeObject={camelCaseName} componentName="ComponentName" />
</CodeTab>
</TabsLayout>
</ComponentPropsProvider>
);
};

export default ComponentNameDemo;
```

### Control types
```jsx
// Slider
<PreviewSlider
title="Label"
min={0} max={100} step={1}
value={propValue}
valueUnit="px" // optional suffix
onChange={val => { updateProp('propName', val); forceRerender(); }}
/>

// Switch (boolean toggle)
<PreviewSwitch
title="Label"
isChecked={propValue}
onChange={checked => { updateProp('propName', checked); forceRerender(); }}
/>

// Select (dropdown)
<PreviewSelect
title="Label"
name="unique-name"
width={140}
value={propValue}
options={[{ label: 'Display', value: 'value' }]}
onChange={val => { updateProp('propName', val); forceRerender(); }}
/>
```

### When to call `forceRerender()`
- Always call it for props that affect animation initialization or layout
- For live-updating props (like autoplay toggle), it may not be needed
- When in doubt, call it

---

## 3. Code Metadata File

Location: `src/constants/code/<Category>/<camelCaseName>Code.js`

```js
import code from '@content/<Category>/<ComponentName>/<ComponentName>.jsx?raw';
import css from '@content/<Category>/<ComponentName>/<ComponentName>.css?raw';
import tailwind from '@tailwind/<Category>/<ComponentName>/<ComponentName>.jsx?raw';
import tsCode from '@ts-default/<Category>/<ComponentName>/<ComponentName>.tsx?raw';
import tsTailwind from '@ts-tailwind/<Category>/<ComponentName>/<ComponentName>.tsx?raw';

export const camelCaseName = {
dependencies: `dep1 dep2`, // space-separated npm package names
usage: `import ComponentName from './ComponentName'

<ComponentName
prop1={value1}
prop2={value2}
/>`,
code,
css,
tailwind,
tsCode,
tsTailwind
};
```

- `dependencies`: space-separated string of npm packages (e.g. `"motion"`, `"gsap"`)
- `usage`: JSX code snippet showing basic usage (imports + JSX)
- Path aliases: `@content`, `@tailwind`, `@ts-default`, `@ts-tailwind` map to `src/content`, `src/tailwind`, etc.
- The `?raw` suffix imports file contents as a raw string (Vite feature)

---

## 4. Registration (Auto-generated by scaffolding)

These are handled by `npm run new:component` but for reference:

### `src/constants/Components.js`
```js
'kebab-case-name': () => import('../demo/<Category>/<ComponentName>Demo')
```

### `src/constants/Categories.js`
Component name added to the category's subcategories array and optionally to `NEW` array:
```js
export const NEW = ['Component Name', ...];
// And in the subcategories:
{ heading: 'Category', subcategories: ['Component Name', ...] }
```

### `src/constants/Information.js`
```js
'Category/ComponentName': {
videoUrl: '/assets/video/componentname.webm',
description: 'Short description.',
category: 'Category',
name: 'ComponentName',
docsUrl: 'https://reactbits.dev/category/kebab-case-name',
tags: []
},
```

---

## 5. Background Studio (backgrounds only)

If the component is in the `Backgrounds` category, also register it in:
`src/tools/background-studio/backgrounds/index.js`

And add `OpenInStudioButton` to the demo:
```jsx
import OpenInStudioButton from '../../components/common/Preview/OpenInStudioButton';

// After the preview, before <Customize>:
<Flex justify="flex-end" mt={2} mb={-2}>
<OpenInStudioButton
backgroundId="kebab-case-id"
currentProps={{ ...controlledProps }}
defaultProps={DEFAULT_PROPS}
/>
</Flex>
```

---

## 6. Naming Conventions

| Context | Format | Example |
|---|---|---|
| Component name | PascalCase | `OrbitImages` |
| File names | PascalCase matching component | `OrbitImages.jsx` |
| CSS class prefix | kebab-case component name | `.orbit-container` |
| Route slug | kebab-case | `orbit-images` |
| Code metadata export | camelCase | `orbitImages` |
| Code metadata file | camelCase + `Code.js` | `orbitImagesCode.js` |
| Category display name | Space-separated | `Orbit Images` |
| Folder name | PascalCase | `OrbitImages/` |

---

## 7. Checklist

Before considering a component complete:

- [ ] All 4 variant files are implemented with identical behavior
- [ ] CSS files in `content/` and `ts-default/` are identical
- [ ] TS variants have proper interfaces and type annotations
- [ ] Demo imports from `content/` (JS+CSS variant)
- [ ] Demo has `DEFAULT_PROPS`, `useComponentProps`, `ComponentPropsProvider`
- [ ] Demo has `RefreshButton`, `Customize` controls, `PropTable`, `Dependencies`
- [ ] Demo has `CodeTab` with `CodeExample`
- [ ] Code metadata uses `?raw` imports with correct path aliases
- [ ] Code metadata has `dependencies`, `usage`, `code`, `css`, `tailwind`, `tsCode`, `tsTailwind`
- [ ] Component is registered in `Components.js`, `Categories.js`, and `Information.js`
- [ ] Props/defaults are consistent across component, demo, and code metadata usage example
15 changes: 6 additions & 9 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,15 @@ module.exports = {
'eslint:recommended',
'plugin:react/recommended',
'plugin:react/jsx-runtime',
'plugin:react-hooks/recommended',
'plugin:react-hooks/recommended'
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
ignorePatterns: ['dist', '.eslintrc.cjs', 'public/default', 'public/tailwind', 'public/ts', 'public/r'],
parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
settings: { react: { version: '18.2' } },
settings: { react: { version: '19.0' } },
plugins: ['react-refresh'],
rules: {
'react/prop-types': 'off',
'react/jsx-no-target-blank': 'off',
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}
'react-refresh/only-export-components': ['warn', { allowConstantExport: true }]
}
};
15 changes: 15 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# These are supported funding model platforms

github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: #
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
polar: # Replace with a single Polar username
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
thanks_dev: # Replace with a single thanks.dev username
custom: ['https://reactbits.dev/sponsors']
47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/1-bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: 🐞 Bug report
description: Help improve React Bits.
labels: ['bug']
title: '[BUG]: '
body:
- type: markdown
attributes:
value: |
## Thanks for trying to improve React Bits!
Before continuing make sure you have checked other issues to see if your issue has already been reported / addressed.
- type: textarea
id: desc
attributes:
label: Describe the issue
description: What is happening right now? What is supposed to happen?
placeholder: When I do ..., it does ... but it should do ...
validations:
required: true
- type: markdown
attributes:
value: |
## Reproduction

Please provide code snippets/screenshots and, if possible/needed, a codesandbox environment where your bug can be reproduced.
- type: input
id: reproduction-link
attributes:
label: Reproduction Link
description: Link a codesandbox environment you used to reproduce.
placeholder: https://github.com/DavidHDev/react-bits
validations:
required: false
- type: textarea
id: repro-steps
attributes:
label: Steps to reproduce
description: What steps should be taken to reproduce your issue.
validations:
required: true
- type: checkboxes
id: terms
attributes:
label: Validations
description: Please make sure you have checked all of the following.
options:
- label: I have checked other issues to see if my issue was already reported or addressed
required: true
Loading