@@ -10,17 +10,23 @@ export const Dropdown = (props: DropdownMenu.DropdownMenuProps) => (
1010 < DropdownMenu . Root { ...props } />
1111) ;
1212
13- const DropdownMenuItem = styled ( GenericMenuItem ) `
13+ const DropdownMenuItem = styled ( GenericMenuItem ) < { $type ?: "default" | "danger" } > `
1414 position: relative;
1515 display: flex;
1616 min-height: 32px;
1717 &[data-state="open"] {
18- ${ ( { theme } ) => `
18+ ${ ( { theme, $type = "default" } ) => {
19+ const colorGroup =
20+ theme ?. click ?. genericMenu ?. item ?. color ?. [ $type ] ||
21+ theme ?. click ?. genericMenu ?. item ?. color ?. default ;
22+ if ( ! colorGroup || ! theme ?. click ?. genericMenu ?. item ?. typography ) return "" ;
23+ return `
1924 font: ${ theme . click . genericMenu . item . typography . label . hover } ;
20- background: ${ theme . click . genericMenu . item . color . background . hover } ;
21- color: ${ theme . click . genericMenu . item . color . text . hover } ;
25+ background: ${ colorGroup . background . hover } ;
26+ color: ${ colorGroup . text . hover } ;
2227 cursor: pointer;
23- ` }
28+ ` ;
29+ } }
2430 }
2531` ;
2632
@@ -138,7 +144,7 @@ Dropdown.Content = DropdownContent;
138144const DropdownMenuGroup = styled ( DropdownMenu . Group ) `
139145 width: 100%;
140146 border-bottom: 1px solid
141- ${ ( { theme } ) => theme . click . genericMenu . item . color . stroke . default } ;
147+ ${ ( { theme } ) => theme . click . genericMenu . item . color . default . stroke . default } ;
142148` ;
143149
144150const DropdownGroup = ( props : DropdownMenu . DropdownMenuGroupProps ) => {
@@ -150,7 +156,7 @@ Dropdown.Group = DropdownGroup;
150156
151157const DropdownMenuSub = styled ( DropdownMenu . Sub ) `
152158 border-bottom: 1px solid
153- ${ ( { theme } ) => theme . click . genericMenu . item . color . stroke . default } ;
159+ ${ ( { theme } ) => theme . click . genericMenu . item . color . default . stroke . default } ;
154160` ;
155161
156162const DropdownSub = ( { ...props } : DropdownMenu . DropdownMenuGroupProps ) => {
@@ -165,11 +171,22 @@ interface DropdownItemProps extends DropdownMenu.DropdownMenuItemProps {
165171 icon ?: IconName ;
166172 /** The direction of the icon relative to the label */
167173 iconDir ?: HorizontalDirection ;
174+ /** The type of the menu item */
175+ type ?: "default" | "danger" ;
168176}
169- const DropdownItem = ( { icon, iconDir, children, ...props } : DropdownItemProps ) => {
177+
178+ export type { DropdownItemProps } ;
179+ const DropdownItem = ( {
180+ icon,
181+ iconDir,
182+ type = "default" ,
183+ children,
184+ ...props
185+ } : DropdownItemProps ) => {
170186 return (
171187 < DropdownMenuItem
172188 as = { DropdownMenu . Item }
189+ $type = { type }
173190 { ...props }
174191 >
175192 < IconWrapper
0 commit comments