پرتوپرتو

گروه ورودی (Input Group)

گروه‌بندی input با addon ها و دکمه‌ها

معرفی

کامپوننت Input Group برای افزودن addon، آیکون یا دکمه به input استفاده می‌شود.

استفاده

https://
تومان
import {
  InputGroup,
  InputGroupAddon,
  InputGroupInput,
} from '@parto-system-design/ui';

export default function MyComponent() {
  return (
    <InputGroup dir="ltr">
      <InputGroupAddon>https://</InputGroupAddon>
      <InputGroupInput placeholder="example.com" type="url" />
    </InputGroup>
  );
}

با آیکون

import { Icons } from '@parto-system-design/ui';

<InputGroup>
  <InputGroupAddon>
    <Icons.search className="w-4 h-4" />
  </InputGroupAddon>
  <InputGroupInput placeholder="جستجو..." />
</InputGroup>

با دکمه

<InputGroup>
  <InputGroupInput placeholder="ایمیل شما" />
  <InputGroupAddon>
    <InputGroupButton>ارسال</InputGroupButton>
  </InputGroupAddon>
</InputGroup>

چینش عمودی

<InputGroup>
  <InputGroupAddon align="block-start">
    عنوان
  </InputGroupAddon>
  <InputGroupInput />
  <InputGroupAddon align="block-end">
    توضیحات پایین
  </InputGroupAddon>
</InputGroup>

با Textarea

<InputGroup>
  <InputGroupAddon align="block-start">
    پیام شما
  </InputGroupAddon>
  <InputGroupTextarea rows={4} />
</InputGroup>

محتوای LTR (URL، ایمیل، شماره تلفن)

برای فیلدهایی که محتوای انگلیسی یا LTR دارند (مثل URL، ایمیل، شماره تلفن)، از dir="ltr" روی InputGroup استفاده کنید:

{/* URL - کل گروه LTR */}
<InputGroup dir="ltr">
  <InputGroupAddon>https://</InputGroupAddon>
  <InputGroupInput placeholder="example.com" type="url" />
</InputGroup>

{/* ایمیل - کل گروه LTR */}
<InputGroup dir="ltr">
  <InputGroupAddon>@</InputGroupAddon>
  <InputGroupInput placeholder="username" type="email" />
</InputGroup>

{/* مبلغ - گروه RTL ولی عدد LTR */}
<InputGroup>
  <InputGroupAddon align="inline-end">تومان</InputGroupAddon>
  <InputGroupInput placeholder="مبلغ" type="number" />
</InputGroup>

نکته: وقتی type برابر با url، email، tel یا number باشد، input به صورت خودکار LTR می‌شود. اما برای نمایش صحیح addon ها (مثل https://)، باید dir="ltr" را روی کل InputGroup تنظیم کنید.

Props

InputGroup

Prop

Type

InputGroupAddon

Prop

Type

InputGroupInput

Prop

Type

InputGroupButton

Prop

Type

کامپوننت‌ها

  • InputGroup - wrapper اصلی
  • InputGroupInput - input اصلی
  • InputGroupTextarea - textarea
  • InputGroupAddon - addon برای متن/آیکون
  • InputGroupButton - دکمه داخل group
  • InputGroupText - متن ساده

ملاحظات RTL

  • برای محتوای LTR (URL، ایمیل، تلفن)، dir="ltr" را روی InputGroup تنظیم کنید
  • Input های با type="number" به صورت خودکار LTR می‌شوند ولی گروه RTL می‌ماند (برای نمایش "تومان" در سمت راست)
  • از align="inline-end" برای addon های سمت چپ استفاده کنید