← All @molecule/* packages · App templates
@molecule/app-rating-display-reactFeature · rating-display · App (browser) · v1.0.1 · Apache-2.0
Read-only and interactive star rating display with half-star support
npm install @molecule/app-rating-display-react@molecule/app-rating-display-react is a ready-made rating-display feature for the app (browser) side. It composes the core interfaces it needs, so it works with whichever providers your app has bonded.
import { useState } from 'react'
import { RatingDisplay } from '@molecule/app-rating-display-react'
function ProductRating() {
const [rating, setRating] = useState(0)
const scrollToReviews = (): void => {
document.getElementById('reviews')?.scrollIntoView()
}
// First: read-only with review count. Second: interactive — user picks a rating.
return (
<>
<RatingDisplay value={4.5} reviewCount={128} onReviewsClick={scrollToReviews} />
<RatingDisplay value={rating} size="lg" onChange={(v) => setRating(v)} />
</>
)
}Works with: @molecule/app-react, @molecule/app-ui, @molecule/app-ui-react
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
React star-rating display.
Exports <RatingDisplay> — fractional star rendering (inline SVG),
optional review count tail, optional interactive mode via onChange.
import { useState } from 'react'
import { RatingDisplay } from '@molecule/app-rating-display-react'
function ProductRating() {
const [rating, setRating] = useState(0)
const scrollToReviews = (): void => {
document.getElementById('reviews')?.scrollIntoView()
}
// First: read-only with review count. Second: interactive — user picks a rating.
return (
<>
<RatingDisplay value={4.5} reviewCount={128} onReviewsClick={scrollToReviews} />
<RatingDisplay value={rating} size="lg" onChange={(v) => setRating(v)} />
</>
)
}
feature
npm install @molecule/app-rating-display-react @molecule/app-react @molecule/app-ui @molecule/app-ui-react react
npm install -D @types/react
RatingDisplayPropsProps for {@link RatingDisplay}.
interface RatingDisplayProps {
/** Rating value (0–max). Fractional supported. */
value: number
/** Maximum rating. Defaults to 5. */
max?: number
/** Optional review count shown after the stars. */
reviewCount?: number
/** Called when the review-count is clicked (renders it as a button). */
onReviewsClick?: () => void
/** Size preset. */
size?: 'sm' | 'md' | 'lg'
/** Interactive mode — star clicks call `onChange(starIndex + 1)`. */
onChange?: (value: number) => void
/** Accessible label override. */
ariaLabel?: string
/** Extra classes. */
className?: string
}
RatingDisplay(props)Star-rating display supporting fractional values and an optional
review-count tail. When onChange is provided each star becomes an
interactive button.
Uses inline SVG stars so the component works without icon-font fallback.
function RatingDisplay({
value,
max = 5,
reviewCount,
onReviewsClick,
size = 'md',
onChange,
ariaLabel,
className,
}: RatingDisplayProps): JSX.Element
props — Component props (see {@link RatingDisplayProps}).Peer dependencies:
@molecule/app-react ^1.0.1@molecule/app-ui ^1.0.1@molecule/app-ui-react ^1.0.1react ^18.0.0 || ^19.0.0@molecule/app-react@molecule/app-ui@molecule/app-ui-reactreactStars are inline SVG filled with currentColor — set a text color on the
wrapper (e.g. a warning/amber token) to tint them; unfilled portions render
at 25% opacity of the same color. Accessibility labels are English defaults:
the container label is overridable via ariaLabel, but the per-star "Rate N
of M" button labels in interactive mode are not — this package has no locale
bond. Requires a wired ClassMap bond.