Context-menu

Basic

Right click here
// Package contextmenu holds the site's example gsx components for
// ui/context-menu.
package contextmenu

import (
	"github.com/gsxhq/gsxui/ui"
)

// Basic mirrors shadcn's own context-menu-demo.tsx (registry/new-york-v4/
// examples/context-menu-demo.tsx): a dashed-border right-click zone, a few
// browser-chrome-shaped items (Back/Forward/Reload) each carrying a
// ContextMenuShortcut, a separator, and a destructive-variant item. The
// Sub/checkbox/radio-group parts of the real demo are dropped along with
// those components (see docs/jsx-parity.md's ## context-menu GAP entry).
component Basic() {
	<ui.ContextMenu>
		<ui.ContextMenuTrigger
			class="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm"
		>
			Right click here
		</ui.ContextMenuTrigger>
		<ui.ContextMenuContent class="w-52">
			<ui.ContextMenuItem>
				Back
				<ui.ContextMenuShortcut>⌘[</ui.ContextMenuShortcut>
			</ui.ContextMenuItem>
			<ui.ContextMenuItem aria-disabled="true" data-disabled="true">
				Forward
				<ui.ContextMenuShortcut>⌘]</ui.ContextMenuShortcut>
			</ui.ContextMenuItem>
			<ui.ContextMenuItem>
				Reload
				<ui.ContextMenuShortcut>⌘R</ui.ContextMenuShortcut>
			</ui.ContextMenuItem>
			<ui.ContextMenuSeparator/>
			<ui.ContextMenuItem variant="destructive">Delete</ui.ContextMenuItem>
		</ui.ContextMenuContent>
	</ui.ContextMenu>
}

Checkboxes, radios, and a submenu

Right click here
package contextmenu

import (
	"github.com/gsxhq/gsxui/ui"
)

// Full mirrors shadcn's own context-menu-demo.tsx (registry/new-york-v4/
// examples/context-menu-demo.tsx) end to end, now that Tier 4 Batch B Task 2
// has shipped the Sub/checkbox/radio-group parts basic.gsx's own doc comment
// used to point at as dropped: a submenu (More Tools, itself holding a
// destructive-variant Delete), a pair of checkbox items, and a labeled radio
// group. Every `inset` prop shadcn's demo passes maps to the CSS-only
// data-inset attr axis (see docs/jsx-parity.md's ## context-menu ledger).
component Full() {
	<ui.ContextMenu>
		<ui.ContextMenuTrigger
			class="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm"
		>
			Right click here
		</ui.ContextMenuTrigger>
		<ui.ContextMenuContent class="w-52">
			<ui.ContextMenuGroup>
				<ui.ContextMenuItem data-inset="true">
					Back
					<ui.ContextMenuShortcut>⌘[</ui.ContextMenuShortcut>
				</ui.ContextMenuItem>
			</ui.ContextMenuGroup>
			<ui.ContextMenuItem aria-disabled="true" data-disabled="true" data-inset="true">
				Forward
				<ui.ContextMenuShortcut>⌘]</ui.ContextMenuShortcut>
			</ui.ContextMenuItem>
			<ui.ContextMenuItem data-inset="true">
				Reload
				<ui.ContextMenuShortcut>⌘R</ui.ContextMenuShortcut>
			</ui.ContextMenuItem>
			<ui.ContextMenuSub>
				<ui.ContextMenuSubTrigger data-inset="true">More Tools</ui.ContextMenuSubTrigger>
				<ui.ContextMenuSubContent class="w-44">
					<ui.ContextMenuItem>Save Page As...</ui.ContextMenuItem>
					<ui.ContextMenuItem>Create Shortcut...</ui.ContextMenuItem>
					<ui.ContextMenuItem>Name Window...</ui.ContextMenuItem>
					<ui.ContextMenuSeparator/>
					<ui.ContextMenuItem>Developer Tools</ui.ContextMenuItem>
					<ui.ContextMenuSeparator/>
					<ui.ContextMenuItem variant="destructive">Delete</ui.ContextMenuItem>
				</ui.ContextMenuSubContent>
			</ui.ContextMenuSub>
			<ui.ContextMenuSeparator/>
			<ui.ContextMenuCheckboxItem checked={true} value="bookmarks">Show Bookmarks</ui.ContextMenuCheckboxItem>
			<ui.ContextMenuCheckboxItem checked={false} value="full-urls">Show Full URLs</ui.ContextMenuCheckboxItem>
			<ui.ContextMenuSeparator/>
			<ui.ContextMenuRadioGroup value="pedro">
				<ui.ContextMenuLabel data-inset="true">People</ui.ContextMenuLabel>
				<ui.ContextMenuRadioItem checked={true} value="pedro">Pedro Duarte</ui.ContextMenuRadioItem>
				<ui.ContextMenuRadioItem checked={false} value="colm">Colm Tuite</ui.ContextMenuRadioItem>
			</ui.ContextMenuRadioGroup>
		</ui.ContextMenuContent>
	</ui.ContextMenu>
}

RTL

انقر بزر الماوس الأيمن هنا
package contextmenu

import (
	"github.com/gsxhq/gsxui/ui"
)

// Rtl mirrors shadcn's own context-menu-rtl demo's Arabic strings for the
// browser-chrome items, kept in Basic's flat shape (no Sub/checkbox/radio —
// those parts are already dropped from this directory's Basic, per
// docs/jsx-parity.md's context-menu GAP entry, so Rtl doesn't reintroduce
// them either).
component Rtl() {
	<div dir="rtl" lang="ar">
		<ui.ContextMenu>
			<ui.ContextMenuTrigger
				class="flex h-[150px] w-[300px] items-center justify-center rounded-md border border-dashed text-sm"
			>
				انقر بزر الماوس الأيمن هنا
			</ui.ContextMenuTrigger>
			<ui.ContextMenuContent class="w-52">
				<ui.ContextMenuItem>
					رجوع
					<ui.ContextMenuShortcut>⌘[</ui.ContextMenuShortcut>
				</ui.ContextMenuItem>
				<ui.ContextMenuItem aria-disabled="true" data-disabled="true">
					تقدم
					<ui.ContextMenuShortcut>⌘]</ui.ContextMenuShortcut>
				</ui.ContextMenuItem>
				<ui.ContextMenuItem>
					إعادة تحميل
					<ui.ContextMenuShortcut>⌘R</ui.ContextMenuShortcut>
				</ui.ContextMenuItem>
				<ui.ContextMenuSeparator/>
				<ui.ContextMenuItem variant="destructive">حذف</ui.ContextMenuItem>
			</ui.ContextMenuContent>
		</ui.ContextMenu>
	</div>
}