Files
shadcn-ui/apps/v4/examples/base/input-group-rtl.tsx
shadcn 38de7fddc2 feat: rtl (#9498)
* feat: rtl

* feat

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* feat: add sidebar

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* chore: changeset

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix
2026-01-30 21:08:39 +04:00

120 lines
3.4 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"use client"
import * as React from "react"
import {
Field,
FieldDescription,
FieldGroup,
FieldLabel,
} from "@/examples/base/ui-rtl/field"
import {
InputGroup,
InputGroupAddon,
InputGroupButton,
InputGroupInput,
InputGroupText,
InputGroupTextarea,
} from "@/examples/base/ui-rtl/input-group"
import { Spinner } from "@/examples/base/ui-rtl/spinner"
import { Search } from "lucide-react"
import {
useTranslation,
type Translations,
} from "@/components/language-selector"
const translations: Translations = {
en: {
dir: "ltr",
values: {
placeholder: "Search...",
results: "12 results",
searching: "Searching...",
saving: "Saving...",
savingChanges: "Saving changes...",
textareaLabel: "Textarea",
textareaPlaceholder: "Write a comment...",
characterCount: "0/280",
post: "Post",
textareaDescription: "Footer positioned below the textarea.",
},
},
ar: {
dir: "rtl",
values: {
placeholder: "بحث...",
results: "١٢ نتيجة",
searching: "جاري البحث...",
saving: "جاري الحفظ...",
savingChanges: "جاري حفظ التغييرات...",
textareaLabel: "منطقة النص",
textareaPlaceholder: "اكتب تعليقًا...",
characterCount: "٠/٢٨٠",
post: "نشر",
textareaDescription: "تذييل موضع أسفل منطقة النص.",
},
},
he: {
dir: "rtl",
values: {
placeholder: "חפש...",
results: "12 תוצאות",
searching: "מחפש...",
saving: "שומר...",
savingChanges: "שומר שינויים...",
textareaLabel: "אזור טקסט",
textareaPlaceholder: "כתוב תגובה...",
characterCount: "0/280",
post: "פרסם",
textareaDescription: "כותרת תחתונה ממוקמת מתחת לאזור הטקסט.",
},
},
}
export function InputGroupRtl() {
const { dir, t } = useTranslation(translations, "ar")
return (
<div className="grid w-full max-w-sm gap-6">
<InputGroup className="max-w-xs">
<InputGroupInput placeholder={t.placeholder} />
<InputGroupAddon>
<Search />
</InputGroupAddon>
<InputGroupAddon align="inline-end">{t.results}</InputGroupAddon>
</InputGroup>
<InputGroup>
<InputGroupInput placeholder={t.searching} />
<InputGroupAddon align="inline-end">
<Spinner />
</InputGroupAddon>
</InputGroup>
<InputGroup>
<InputGroupInput placeholder={t.savingChanges} />
<InputGroupAddon align="inline-end">
<InputGroupText>{t.saving}</InputGroupText>
<Spinner />
</InputGroupAddon>
</InputGroup>
<FieldGroup className="max-w-sm">
<Field>
<FieldLabel htmlFor="rtl-textarea">{t.textareaLabel}</FieldLabel>
<InputGroup>
<InputGroupTextarea
id="rtl-textarea"
placeholder={t.textareaPlaceholder}
/>
<InputGroupAddon align="block-end">
<InputGroupText>{t.characterCount}</InputGroupText>
<InputGroupButton variant="default" size="sm" className="ms-auto">
{t.post}
</InputGroupButton>
</InputGroupAddon>
</InputGroup>
<FieldDescription>{t.textareaDescription}</FieldDescription>
</Field>
</FieldGroup>
</div>
)
}