Rating
Genel görünümimport { Rating, RatingAlignment, RatingBar, RatingBarArea, RatingBarLabels, RatingBarType } from '@nili/ui';Bu, kütüphanenin kendi genel görünüm sayfası — canlı olarak render ediliyor. Üstten dili veya temayı değiştirin, o da değişir.
Etkileşimli
Simgelerin altında bir radyo kümesi var; böylece ok tuşları çalışır ve değer formla birlikte gönderilir. name onu yerel gönderime bağlar.
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`,
}}
/>
)
}Salt okunur
Yalnızca gösterim — bir ortalama, bir değerlendirme puanı. Bir radyo kümesi yerine tek bir görsel rolü çizer ve kesirli değer kabul eder; 4,5 yarım yıldız çizer.
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}` }}
/>
</>
)
}Simge ve boş durum
type yıldız ya da kalbi seçer ve rengi belirler. empty dış çizgi ile dolu gri simge arasında seçim yapar — ikincisi kalabalık bir yüzeyde daha iyi okunur.
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} />
</>
)
}Puan ve değerlendirme
alignment, Figma’nın Rating & Review bloğudur: ratings çıplak satır, vertical açıklamayı altına, horizontal yanına koyar.
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"
/>
</>
)
}Puan çubuğu
Beş noktalı bir memnuniyet ölçeği — anket denetimi, yıldız satırı değil. Dört tür ve rakamlar yerel ayarı izler.
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?" }} />
</>
)
}Yorumlu puan çubuğu
Anket bloğunun tamamı: ölçek artı serbest metin alanı. Yorum gösterildiğinde commentLabel zorunludur — çıplak bir metin alanını adlandıracak bir şey yoktur.
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' >
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| 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
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| 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
Diğer proplar
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| 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
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| type | star | heart | star |
RatingGlyph
dahiliRatingInput
dahiliRatingItem
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| interactive | 'true' | 'false' | false | |
| disabled | 'true' | 'false' | false | |
| empty | line | filled | line |
RatingReview
dahiliVaryant eksenleri — bileşenin cva tanımından
| Prop | Tip | Varsayılan | Notlar |
|---|---|---|---|
| alignment | ratings | vertical | horizontal | ratings |