Back to Tooljet

DropdownMenu — Rocket Design Spec

frontend/src/components/ui/Rocket/DropdownMenu/DropdownMenu.spec.md

3.20.154-lts2.9 KB
Original Source

DropdownMenu — Rocket Design Spec

<!-- synced: 2026-03-20 -->

Props

Sub-componentPropTypeValuesDefault
DropdownMenuIteminsetbooleanfalse
DropdownMenuItemdestructivebooleanfalse
DropdownMenuItemdisabledbooleanfalse
DropdownMenuLabelinsetbooleanfalse
DropdownMenuSubTriggerinsetbooleanfalse

Token Mapping

ElementStateToolJet class
content bgdefaulttw-bg-background-surface-layer-01
content borderdefaulttw-border-solid tw-border-border-default
content shadowdefaulttw-shadow-[var(--elevation-300-box-shadow)]
item textdefaulttw-text-text-default
item bghover/focusfocus:tw-bg-interactive-hover
item textdestructivetw-text-text-danger
item bgdestructive + focusfocus:tw-bg-interactive-hover
itemdisableddata-[disabled]:tw-opacity-50 data-[disabled]:tw-pointer-events-none
label textdefaulttw-text-text-default tw-font-semibold
separatordefaulttw-bg-border-default
shortcut textdefaulttw-text-text-placeholder
check/radio indicatordefaulttw-text-text-default

Sub-components

ComponentWraps shadcn?Styling
DropdownMenuRe-export (Root)none
DropdownMenuTriggerRe-exportnone
DropdownMenuContentHOC wrappertoken bg/border/shadow
DropdownMenuItemHOC wrappertoken text + hover + destructive + disabled
DropdownMenuCheckboxItemHOC wrappertoken text + hover + disabled + indicator
DropdownMenuRadioItemHOC wrappertoken text + hover + disabled + indicator
DropdownMenuLabelHOC wrappertoken text + font
DropdownMenuSeparatorHOC wrappertoken bg
DropdownMenuShortcutHOC wrappertoken text
DropdownMenuGroupRe-exportnone
DropdownMenuPortalRe-exportnone
DropdownMenuSubRe-exportnone
DropdownMenuSubTriggerHOC wrappertoken text + hover + chevron
DropdownMenuSubContentHOC wrappertoken bg/border/shadow
DropdownMenuRadioGroupRe-exportnone

CVA Shape

Shape E — compound/multi-part. No CVA needed — all sub-components use static cn() with ToolJet tokens.

Notes

  • No anchor context needed — Radix auto-anchors Content to Trigger
  • No items collection API — action menu, not filterable/selectable
  • forwardRef on every HOC wrapper — Radix uses cloneElement with refs internally
  • tw-border-solid required alongside border color (preflight is off)
  • Content uses elevation-300 shadow for floating panel depth
  • destructive is a boolean prop on DropdownMenuItem (not a variant)
  • Focus is keyboard-driven via Radix — focus: modifier on items
  • Animations kept from shadcn (animate-in/out, fade, zoom, slide)