mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-28 15:14:12 +00:00
* 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
184 lines
6.0 KiB
TypeScript
184 lines
6.0 KiB
TypeScript
"use client"
|
|
|
|
import * as React from "react"
|
|
import {
|
|
ContextMenu,
|
|
ContextMenuCheckboxItem,
|
|
ContextMenuContent,
|
|
ContextMenuGroup,
|
|
ContextMenuItem,
|
|
ContextMenuLabel,
|
|
ContextMenuRadioGroup,
|
|
ContextMenuRadioItem,
|
|
ContextMenuSeparator,
|
|
ContextMenuShortcut,
|
|
ContextMenuSub,
|
|
ContextMenuSubContent,
|
|
ContextMenuSubTrigger,
|
|
ContextMenuTrigger,
|
|
} from "@/examples/base/ui-rtl/context-menu"
|
|
import { ArrowLeftIcon, ArrowRightIcon, RotateCwIcon } from "lucide-react"
|
|
|
|
import {
|
|
useTranslation,
|
|
type Translations,
|
|
} from "@/components/language-selector"
|
|
|
|
const translations: Translations = {
|
|
en: {
|
|
dir: "ltr",
|
|
values: {
|
|
rightClick: "Right click here",
|
|
longPress: "Long press here",
|
|
navigation: "Navigation",
|
|
back: "Back",
|
|
forward: "Forward",
|
|
reload: "Reload",
|
|
moreTools: "More Tools",
|
|
savePage: "Save Page...",
|
|
createShortcut: "Create Shortcut...",
|
|
nameWindow: "Name Window...",
|
|
developerTools: "Developer Tools",
|
|
delete: "Delete",
|
|
showBookmarks: "Show Bookmarks",
|
|
showFullUrls: "Show Full URLs",
|
|
people: "People",
|
|
pedro: "Pedro Duarte",
|
|
colm: "Colm Tuite",
|
|
},
|
|
},
|
|
ar: {
|
|
dir: "rtl",
|
|
values: {
|
|
rightClick: "انقر بزر الماوس الأيمن هنا",
|
|
longPress: "اضغط مطولاً هنا",
|
|
navigation: "التنقل",
|
|
back: "رجوع",
|
|
forward: "تقدم",
|
|
reload: "إعادة تحميل",
|
|
moreTools: "المزيد من الأدوات",
|
|
savePage: "حفظ الصفحة...",
|
|
createShortcut: "إنشاء اختصار...",
|
|
nameWindow: "تسمية النافذة...",
|
|
developerTools: "أدوات المطور",
|
|
delete: "حذف",
|
|
showBookmarks: "إظهار الإشارات المرجعية",
|
|
showFullUrls: "إظهار عناوين URL الكاملة",
|
|
people: "الأشخاص",
|
|
pedro: "Pedro Duarte",
|
|
colm: "Colm Tuite",
|
|
},
|
|
},
|
|
he: {
|
|
dir: "rtl",
|
|
values: {
|
|
rightClick: "לחץ לחיצה ימנית כאן",
|
|
longPress: "לחץ לחיצה ארוכה כאן",
|
|
navigation: "ניווט",
|
|
back: "חזור",
|
|
forward: "קדימה",
|
|
reload: "רענן",
|
|
moreTools: "כלים נוספים",
|
|
savePage: "שמור עמוד...",
|
|
createShortcut: "צור קיצור דרך...",
|
|
nameWindow: "שם חלון...",
|
|
developerTools: "כלי מפתח",
|
|
delete: "מחק",
|
|
showBookmarks: "הצג סימניות",
|
|
showFullUrls: "הצג כתובות URL מלאות",
|
|
people: "אנשים",
|
|
pedro: "Pedro Duarte",
|
|
colm: "Colm Tuite",
|
|
},
|
|
},
|
|
}
|
|
|
|
export function ContextMenuRtl() {
|
|
const { dir, t, language } = useTranslation(translations, "ar")
|
|
const [people, setPeople] = React.useState("pedro")
|
|
|
|
return (
|
|
<ContextMenu>
|
|
<ContextMenuTrigger className="flex aspect-video w-full max-w-xs items-center justify-center rounded-xl border border-dashed text-sm">
|
|
<span className="hidden pointer-fine:inline-block">{t.rightClick}</span>
|
|
<span className="hidden pointer-coarse:inline-block">
|
|
{t.longPress}
|
|
</span>
|
|
</ContextMenuTrigger>
|
|
<ContextMenuContent
|
|
className="w-48"
|
|
dir={dir}
|
|
data-lang={dir === "rtl" ? language : undefined}
|
|
>
|
|
<ContextMenuGroup>
|
|
<ContextMenuSub>
|
|
<ContextMenuSubTrigger>{t.navigation}</ContextMenuSubTrigger>
|
|
<ContextMenuSubContent
|
|
className="w-44"
|
|
dir={dir}
|
|
data-lang={dir === "rtl" ? language : undefined}
|
|
>
|
|
<ContextMenuGroup>
|
|
<ContextMenuItem>
|
|
<ArrowLeftIcon />
|
|
{t.back}
|
|
<ContextMenuShortcut>⌘[</ContextMenuShortcut>
|
|
</ContextMenuItem>
|
|
<ContextMenuItem disabled>
|
|
<ArrowRightIcon />
|
|
{t.forward}
|
|
<ContextMenuShortcut>⌘]</ContextMenuShortcut>
|
|
</ContextMenuItem>
|
|
<ContextMenuItem>
|
|
<RotateCwIcon />
|
|
{t.reload}
|
|
<ContextMenuShortcut>⌘R</ContextMenuShortcut>
|
|
</ContextMenuItem>
|
|
</ContextMenuGroup>
|
|
</ContextMenuSubContent>
|
|
</ContextMenuSub>
|
|
<ContextMenuSub>
|
|
<ContextMenuSubTrigger>{t.moreTools}</ContextMenuSubTrigger>
|
|
<ContextMenuSubContent
|
|
className="w-44"
|
|
dir={dir}
|
|
data-lang={dir === "rtl" ? language : undefined}
|
|
>
|
|
<ContextMenuGroup>
|
|
<ContextMenuItem>{t.savePage}</ContextMenuItem>
|
|
<ContextMenuItem>{t.createShortcut}</ContextMenuItem>
|
|
<ContextMenuItem>{t.nameWindow}</ContextMenuItem>
|
|
</ContextMenuGroup>
|
|
<ContextMenuSeparator />
|
|
<ContextMenuGroup>
|
|
<ContextMenuItem>{t.developerTools}</ContextMenuItem>
|
|
</ContextMenuGroup>
|
|
<ContextMenuSeparator />
|
|
<ContextMenuGroup>
|
|
<ContextMenuItem variant="destructive">
|
|
{t.delete}
|
|
</ContextMenuItem>
|
|
</ContextMenuGroup>
|
|
</ContextMenuSubContent>
|
|
</ContextMenuSub>
|
|
</ContextMenuGroup>
|
|
<ContextMenuSeparator />
|
|
<ContextMenuGroup>
|
|
<ContextMenuCheckboxItem checked>
|
|
{t.showBookmarks}
|
|
</ContextMenuCheckboxItem>
|
|
<ContextMenuCheckboxItem>{t.showFullUrls}</ContextMenuCheckboxItem>
|
|
</ContextMenuGroup>
|
|
<ContextMenuSeparator />
|
|
<ContextMenuGroup>
|
|
<ContextMenuRadioGroup value={people} onValueChange={setPeople}>
|
|
<ContextMenuLabel>{t.people}</ContextMenuLabel>
|
|
<ContextMenuRadioItem value="pedro">{t.pedro}</ContextMenuRadioItem>
|
|
<ContextMenuRadioItem value="colm">{t.colm}</ContextMenuRadioItem>
|
|
</ContextMenuRadioGroup>
|
|
</ContextMenuGroup>
|
|
</ContextMenuContent>
|
|
</ContextMenu>
|
|
)
|
|
}
|