CountryFlag
نمای کلیimport { CountryCode, CountryFlag, FlagEntry } from '@nili/ui';این همان صفحهی نمای کلیِ خود کتابخانه است که زنده رندر میشود. زبان یا تم را از هدر عوض کنید، همراهش میآید.
اندازهها
شش اندازه، از ۱۶ تا ۴۸ پیکسل. تصویر بهصورت SVG ایستا سرو میشود نه درونخطی — ۴۴۴ پرچم داخل باندل یعنی حدود ۳۲۰ کیلوبایت جاوااسکریپت که هر مصرفکننده پارسش میکند، چه پرچمی رندر کند چه نکند.
import { CountryFlag } from "@nili/ui"
export function Example() {
return (
<>
<CountryFlag code="ir" size="xs" />
<CountryFlag code="ir" size="sm" />
<CountryFlag code="ir" size="md" />
<CountryFlag code="ir" size="lg" />
<CountryFlag code="ir" size="xl" />
<CountryFlag code="ir" size="2xl" />
</>
)
}با حاشیه
bordered یک حلقهی مویی اضافه میکند — برای پرچمهایی که بیشترشان سفید است و وگرنه در صفحه حل میشوند، میارزد.
import { CountryFlag } from "@nili/ui"
export function Example() {
return (
<>
<CountryFlag code="jp" size="lg" />
<CountryFlag code="jp" size="lg" bordered />
</>
)
}برچسبها
اگر label را ندهید پرچم تزئینی میشود — و وقتی نام کشور همان کنارش نوشته شده، همین را میخواهید. وقتی پرچم تنها چیزی است که ردیف را مشخص میکند، برچسب بدهید.
import { CountryFlag } from "@nili/ui"
export function Example() {
return (
<>
{/* decorative: the name is right there */}
<span>
<CountryFlag code="de" size="sm" /> Germany
</span>
{/* named: nothing else says which country this is */}
<CountryFlag code="de" size="sm" label="Germany" />
</>
)
}تقسیمات، مناطق و کدهای ناشناخته
کدها به بزرگی و کوچکی حروف حساس نیستند. تقسیمات کشوری و چند پرچم غیرکشوری از یک اسلاگ بلندتر استفاده میکنند. کد ناشناخته یک دایرهی خنثی میکشد، نه اینکه در ردیف سوراخ بگذارد.
import { CountryFlag } from "@nili/ui"
export function Example() {
return (
<>
<CountryFlag code="gb-eng" size="lg" label="England" />
<CountryFlag code="es-ct" size="lg" label="Catalonia" />
<CountryFlag code="x-un" size="lg" label="United Nations" />
{/* not a real code — renders the neutral disc */}
<CountryFlag code="zz" size="lg" />
</>
)
}CountryFlag
extends Omit<ComponentPropsWithoutRef<'span'>, 'children'>, CountryFlagVariantProps
محورهای واریانت — از تعریف cva کامپوننت
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| size | xs | sm | md | lg | xl | 2xl | md | |
| bordered | 'true' | 'false' | false |
بقیهی پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| children | ReactNode | — | |
| aria-label | string | — | |
| code* | CountryCode | (string & {}) | — | ISO 3166-1 alpha-2 code, case-insensitive. Subdivisions and a handful of non-country flags use a longer slug (`'gb-eng'`, `'x-un'`); `COUNTRY_CODES` is the full list. An unrecognised code renders a neutral disc rather than a gap. |
| label | string | — | Accessible name. Omit it and the flag is decorative, which is what you want whenever the country name is already on screen beside it. |
| basePath | string | — | Override where the SVG files are served from, for this one flag. Prefer `setAssetBasePath()` at startup; this is for the odd case of two asset origins in one app. |
| loading | lazy | eager | lazy | Defaults to `'lazy'`. Use `'eager'` for a flag above the fold. |