@bhavyapage/assets
v1.1.8
Published
Delightful, interactive React components — drag-and-drop stickers, embeddable Wordle, and playful UI widgets
Maintainers
Readme
@bhavyapage/assets
Production-ready React components extracted from bhavya.page — featuring drag-and-drop stickers, an embeddable Wordle game, and playful UI elements with zero config.
Documentation & live demos: assets.bhavya.page
Installation
Install the package and its peer dependencies via npm, yarn, or pnpm:
npm install @bhavyapage/assets framer-motionComponents
Stickers
A floating button that opens a sticker picker panel. Users can drag stickers anywhere on the screen. The sticker positions are automatically saved to localStorage and persist across page loads.
Includes automatic dark/light theme support and responsive touch handling.
Usage
import { Stickers } from '@bhavyapage/assets';
import '@bhavyapage/assets/styles.css';
const myStickers = [
{ id: 'cat', src: '/stickers/cat.png' },
{ id: 'star', src: '/stickers/star.png' },
{ id: 'heart', src: '/stickers/heart.png' },
];
function App() {
return (
<Stickers
stickers={myStickers}
position="bottom-right"
theme="auto"
columns={4}
/>
);
}Wordle
An embeddable word guessing game with a virtual keyboard, dictionary validation, persistent stats, and glassmorphism styling. Works with zero props or fully customized.
Usage
import { Wordle } from '@bhavyapage/assets';
import '@bhavyapage/assets/styles.css';
function App() {
return <Wordle />;
}Custom word list
<Wordle
words={['react', 'vites', 'nodes', 'nexts', 'build']}
validateWords={false}
theme="auto"
accentColor="#6366f1"
/>Props
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| words | string[] | — | Custom 5-letter target words. Uses built-in list + API if omitted. |
| theme | 'dark' \| 'light' \| 'auto' | 'dark' | Color theme. Auto follows system. |
| maxGuesses | number | 6 | Max guesses per game. |
| accentColor | string | '#dc2626' | Play Again button color. |
| storageKey | string | 'bhavya-wordle' | localStorage key prefix. |
| validateWords | boolean | true | Validate guesses against dictionary API. |
Styling
This package uses vanilla CSS to ensure maximum compatibility and zero dependencies. You must import the CSS file at the root of your application to use the components properly.
import '@bhavyapage/assets/styles.css';Tip: If you experience horizontal zooming on mobile when dragging stickers to the edge, you must prevent mobile browsers from scaling the viewport.
- Standard HTML / Vite: Use
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />in your HTML<head>.- Next.js >= 14: Export a
viewportobject withuserScalable: falseandmaximumScale: 1in your rootlayout.tsx.
Architecture & Features
- Built with Framer Motion: Buttery smooth animations and spring physics out-of-the-box.
- Glassmorphism Design: Beautiful translucent panels that adapt to both dark and light modes cleanly.
- Tree-shakeable: Distributed in ESM and CJS formats, so you only bundle what you use.
- TypeScript Ready: Full type definitions are included for excellent developer experience.
License
MIT © Bhavya
