Package Exports
- @nowt/rating
- @nowt/rating/dist/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@nowt/rating) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
🏷️ Nowt-UI Rating
A modern, premium-looking Rating
component built with React.
The Rating
is a highly customizable React component for creating interactive star ratings with modern, 3D animations, glow effects, and support for custom emojis or SVGs. It features a clean, background-free design, inline CSS styling, and a vibrant "rock show" click animation, making it ideal for engaging user interfaces.
You can explore the components at Nowt UI (click to visit)
🚀 Features
- 3D Hover Effects: Stars/emojis tilt dynamically based on mouse position for a responsive, immersive experience.
- Rock Show Click Animation: Clicking a star triggers a 3D spin (720° X-axis, 360° Y-axis, 45° Z-axis), upward motion, bounce, and a sparkling particle trail.
- Custom Emoji/SVG Support: Replace default stars with Unicode emojis (e.g., ❤️) or custom SVG icons.
- Dynamic Glow: Active stars pulse with a glowing shadow, customizable via
glowIntensity
(low, medium, high). - Particle Effects: Vibrant, theme-specific particles with varied sizes and colors enhance click interactions.
- Themes: Five distinct themes (default, cosmic, neon, futuristic, minimal).
- Tooltips: Interactive tooltips with a bounce-in animation, showing rating values on hover.
- Half-Star Support: Optional half-star ratings for precise input.
- Clean Design: No background, sleek standalone stars/emojis.
📦 Installation
npm i @nowt/rating
Usage
import React, { useState } from 'react';
import { Rating } from '@nowt/rating;
const App = () => {
const [rating, setRating] = useState(3.5);
return (
<div>
<Rating
value={rating}
onChange={setRating}
size={40}
theme="futuristic"
glowIntensity="high"
emoji="❤️"
tooltip={true}
animation={true}
/>
</div>
);
};
export default App;
Props
Prop | Type | Default | Description |
---|---|---|---|
value | number | 0 | Current rating value. |
max | number | 5 | Maximum number of stars/emojis. |
onChange | (rating: number) => void | undefined | Callback when rating changes. |
size | number | 40 | Size of each star/emoji. |
color | string | #d1d5db | Color of inactive stars/emojis. |
activeColor | string | #facc15 | Color of active stars/emojis. |
readonly | boolean | false | Disables interaction if true. |
allowHalf | boolean | true | Enables half-star ratings. |
className | string | '' | Additional CSS classes. |
emoji | string | JSX.Element | undefined | Custom emoji or SVG element. |
tooltip | boolean | true | Show tooltips on hover. |
theme | 'default'|'cosmic'|'neon'|'futuristic'|'minimal' | 'default' | Theme style. |
animation | boolean | true | Enable or disable animations. |
glowIntensity | 'low'|'medium'|'high' | 'medium' | Glow effect intensity. |
Themes
- default: Yellow-orange glow, balanced animations.
- cosmic: Purple-pink glow, vibrant particles.
- neon: Green-cyan glow, bright animations.
- futuristic: Blue-purple glow, deep effects.
- minimal: Subtle minimalistic look.
<Rating theme="neon" glowIntensity="high" />
Custom Emoji/SVG
Emoji Example:
<Rating emoji="👍" activeColor="#22c55e" theme="neon" />
Custom SVG Example:
const CustomCheckIcon = (
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10
10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8
8-8 8 3.59 8 8-3.59 8-8 8zm4.59-12.42L10 14.17l-2.59-2.58L6
13l4 4 8-8z" />
);
<Rating emoji={CustomCheckIcon} theme="futuristic" glowIntensity="high" />
Animations
- Rock Show Click: Spin and bounce on click.
- Hover Wobble: Tilt and wobble on hover.
- Active Pulse: Pulse active stars/emojis.
- Particle Trail: Colorful particle burst.
Styling
- Inline CSS for easy setup.
- Custom styles via
className
.
Full Example with All Features
import React, { useState } from 'react';
import { Rating } from '@nowt/rating;
const App = () => {
const [rating, setRating] = useState(2.5);
return (
<div style={{ padding: '20px', background: '#1a1a1a' }}>
<Rating
value={rating}
max={5}
onChange={setRating}
size={50}
color="#6b7280"
activeColor="#3b82f6"
readonly={false}
allowHalf={true}
emoji="🌟"
tooltip={true}
theme="futuristic"
animation={true}
glowIntensity="high"
className="custom-rating"
/>
</div>
);
};
export default App;
Notes
- Performance optimized for smooth rendering.
- Custom emojis and SVGs are fully supported.
- Animations can be disabled if needed.