Rating
عرض شاملimport { Rating, RatingAlignment, RatingBar, RatingBarArea, RatingBarLabels, RatingBarType } from '@nili/ui';هذه صفحة العرض الشامل الخاصة بالمكتبة، معروضة حيّة. غيّر اللغة أو السمة من الأعلى وسَتتبعك.
تفاعلي
تحت الأيقونات مجموعة أزرار اختيار، فتعمل مفاتيح الأسهم وتُرسَل القيمة مع النموذج. ويربطها name بالإرسال الأصلي.
import { Rating } from "@nili/ui"
export function Example() {
const [score, setScore] = useState(4)
return (
<Rating
value={score}
onValueChange={setScore}
name="score"
labels={{
root: "Rate this article",
item: (score) => `${score} stars`,
}}
/>
)
}للقراءة فقط
للعرض فقط — متوسّط أو درجة مراجعة. يرسم دور صورة واحدًا بدل مجموعة أزرار اختيار، ويقبل القيم الكسرية، فيرسم ٤٫٥ نصف نجمة.
import { Rating } from "@nili/ui"
export function Example() {
return (
<>
<Rating readOnly value={4.5} showValue />
<Rating
readOnly
value={4.5}
valueLabel={t('reviews')}
labels={{ summary: (value, max) => `${value} out of ${max}` }}
/>
</>
)
}الرمز والحالة الفارغة
يختار type بين النجمة والقلب ويحدّد اللون. ويختار empty بين الشكل المفرّغ ورمز رمادي مملوء — والثاني أوضح على سطح مزدحم.
import { Rating } from "@nili/ui"
export function Example() {
return (
<>
<Rating type="star" defaultValue={3} />
<Rating type="heart" defaultValue={3} />
<Rating type="star" empty="filled" defaultValue={3} />
<Rating max={10} defaultValue={7} />
</>
)
}التقييم والمراجعة
alignment هو كتلة Rating & Review في فيجما: ratings هو الصف المجرّد، وvertical يضع الوصف تحته، وhorizontal بجانبه.
import { Rating, LinkButton } from "@nili/ui"
export function Example() {
return (
<>
<Rating
readOnly
value={4.5}
alignment="vertical"
showValue
description="Based on 128 reviews from verified buyers."
linkButton={<LinkButton href="#" size="sm">Read reviews</LinkButton>}
/>
<Rating
readOnly
value={4.5}
alignment="horizontal"
description="128 reviews"
/>
</>
)
}شريط التقييم
مقياس رضا من خمس نقاط — عنصر الاستبيان لا صفّ النجوم. أربعة أنواع، والأرقام تتبع اللغة.
import { RatingBar } from "@nili/ui"
export function Example() {
return (
<>
<RatingBar type="emoji" labels={{ root: "How was it?" }} />
<RatingBar type="number" labels={{ root: "How was it?" }} />
<RatingBar type="star" labels={{ root: "How was it?" }} />
<RatingBar type="heart" labels={{ root: "How was it?" }} />
</>
)
}شريط التقييم مع تعليق
كتلة الاستبيان كاملة: المقياس مع حقل نص حر. وcommentLabel مطلوبة عند إظهار التعليق — فمربّع نص مجرّد لا شيء يسمّيه.
import { RatingBarArea } from "@nili/ui"
export function Example() {
return (
<RatingBarArea
type="emoji"
labels={{ root: "How was your experience?" }}
commentLabel="Tell us more"
commentPlaceholder="Tell us why!"
/>
)
}Rating
extends Omit< ComponentPropsWithoutRef<'div'>, 'onChange' | 'defaultValue' | 'color' >
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| value | number | — | Current score. Controlled. |
| defaultValue | number | 0 | |
| onValueChange | (value: number) => void | — | |
| max | number | 5 | Number of items. |
| type | star | heart | star | Figma's Type. Drives the glyph and its colour. |
| empty | filled | line | line | Which empty glyph to draw. Figma's `Empty Line` / `Empty Filled`. |
| readOnly | boolean | false | Display only — an average, a review score. Renders a single `role="img"` instead of a set of radios, and accepts fractional values. |
| disabled | boolean | false | |
| icon | ReactNode | — | Replaces the glyph the `type` would pick. |
| emptyIcon | ReactNode | — | Empty-state glyph, when it is not simply the outline of `icon`. |
| showValue | boolean | false | Shows the numeric score beside the items. |
| valueLabel | ReactNode | — | Replaces the readout — `'4.5 (128 reviews)'`, a count, anything. |
| name | string | — | `name` for the underlying radios, when the form is submitted natively. |
| locale | string | — | BCP-47 tag driving the digits (`'fa'` → Persian). Defaults to the ambient locale from `NiliProvider`. |
| labels | RatingLabels | — | |
| alignment | horizontal | vertical | ratings | ratings | Figma's `Rating & Review` → Alignment. `ratings` is the bare row; `vertical` and `horizontal` place `description` below it or beside it. |
| description | ReactNode | — | Supporting copy. Figma's "Description". |
| linkButton | ReactNode | — | Action under the score. Figma's "Link Button". |
RatingBar
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| type | number | emoji | star | heart | star | Figma `🧩 Type`. |
| count | number | 5 | How many options. Figma draws five; the count is yours. |
| value | number | null | — | |
| defaultValue | number | null | — | |
| onValueChange | (value: number) => void | — | |
| disabled | boolean | false | |
| emojis | readonly ReactNode[] | — | Overrides the emoji set. Must be at least `count` long. |
| locale | string | — | Digits follow the locale, so `4` renders in Persian digits under `fa`. |
| labels | RatingBarLabels | — | |
| name | string | — | |
| id | string | — | |
| className | string | — |
RatingBarArea
extends RatingBarProps
باقي الخصائص
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| commentPlaceholder | string | — | The comment field's placeholder — Figma's "Tell us why!". |
| commentLabel | string | — | Accessible name for the comment field. Required if the comment is shown. |
| comment | string | — | |
| defaultComment | string | ||
| onCommentChange | (comment: string) => void | — | |
| showComment | boolean | true | Hides the comment box, leaving a bordered scale. |
| rows | number | 4 | |
| footer | ReactNode | — | |
| rootClassName | string | — | |
| type | number | emoji | star | heart | — | Figma `🧩 Type`. |
| count | number | — | How many options. Figma draws five; the count is yours. |
| value | number | null | — | |
| defaultValue | number | null | — | |
| onValueChange | (value: number) => void | — | |
| disabled | boolean | — | |
| emojis | readonly ReactNode[] | — | Overrides the emoji set. Must be at least `count` long. |
| locale | string | — | Digits follow the locale, so `4` renders in Persian digits under `fa`. |
| labels | RatingBarLabels | — | |
| name | string | — | |
| id | string | — | |
| className | string | — |
RatingFill
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| type | star | heart | star |
RatingGlyph
داخليRatingInput
داخليRatingItem
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| interactive | 'true' | 'false' | false | |
| disabled | 'true' | 'false' | false | |
| empty | line | filled | line |
RatingReview
داخليمحاور التنويع — من تعريف cva للمكوّن
| الخاصيّة | النوع | الافتراضي | ملاحظات |
|---|---|---|---|
| alignment | ratings | vertical | horizontal | ratings |