@@ -6,17 +6,17 @@ import { Button, type ButtonProps } from "./Button"
66import { overlayBaseStyle } from "./styleHelper"
77import { IconSizeHelper } from "./IconSizeHelper"
88import {
9+ CheckIcon ,
910 ChevronDownIcon ,
1011 ChevronLeftIcon ,
1112 ChevronRightIcon ,
1213 ChevronUpIcon ,
13- RadioIcon ,
1414} from "lucide-react"
15- import { CheckboxIcon } from "@radix-ui/react-icons"
1615
1716const commonStyles =
1817 "pl-1 pr-4 py-2.5 flex border-solid items-center outline-hidden border-l-2 border-y-0 border-r-0 focus-visible:border-l-2 border-transparent box-border focus-visible:outline-0 w-full cursor-default focus-visible:outline-hidden focus-visible:border-selected-border" as const
19- const disabledStyles = "text-disabled-text cursor-not-allowed" as const
18+ const disabledStyles =
19+ "data-[disabled=true]:text-disabled-text data-[disabled=true]:cursor-not-allowed" as const
2020const selectedStyles =
2121 "data-[selected=true]:bg-selected-subtle data-[selected=true]:hover:bg-selected-subtle-hovered data-[selected=true]:border-l-selected-bold data-[selected=true]:active:bg-selected-subtle-pressed data-[selected=true]:text-selected-subtle-text" as const
2222const normalStyles =
@@ -138,10 +138,11 @@ function ItemCheckbox({
138138 disabled = { disabled }
139139 checked = { checked }
140140 defaultChecked = { defaultChecked }
141- className = { twMerge (
141+ className = { twJoin (
142+ "group" ,
142143 commonStyles ,
143- ! disabled && ! checked ? normalStyles : undefined ,
144- checked ? selectedStyles : undefined ,
144+ normalStyles ,
145+ selectedStyles ,
145146 disabled ? disabledStyles : undefined ,
146147 className ,
147148 ) }
@@ -150,13 +151,17 @@ function ItemCheckbox({
150151 >
151152 < div
152153 className = { `${
153- disabled ? "border-border" : "border-border-bold"
154+ disabled
155+ ? "border-border"
156+ : "border-border-bold group-data-[state=checked]:border-selected-bold"
154157 } relative ml-2 mr-4 flex h-4 w-4 flex-none items-center justify-center rounded border-2`}
155158 >
156159 < RDd . ItemIndicator asChild >
157- < IconSizeHelper className = "text-brand-bold" >
158- < CheckboxIcon />
159- </ IconSizeHelper >
160+ < CheckIcon
161+ size = "12"
162+ strokeWidth = "5"
163+ className = "text-text-inverse bg-selected-bold"
164+ />
160165 </ RDd . ItemIndicator >
161166 </ div >
162167 < div >
@@ -232,6 +237,8 @@ type ItemRadioGroupProps = Pick<
232237 | "className"
233238 | "title"
234239 | "children"
240+ | "value"
241+ | "onValueChange"
235242> & {
236243 hasSeparator ?: boolean
237244}
@@ -264,7 +271,7 @@ function ItemRadioGroup({
264271}
265272
266273type ItemRadioProps = Pick <
267- RDd . DropdownMenuRadioGroupProps ,
274+ RDd . DropdownMenuRadioItemProps ,
268275 | "aria-label"
269276 | "aria-disabled"
270277 | "aria-selected"
@@ -282,14 +289,13 @@ type ItemRadioProps = Pick<
282289> & {
283290 description ?: React . ReactNode
284291 disabled ?: boolean
285- selected ?: boolean
292+ // selected?: boolean
286293 value : string
287294}
288295
289296function ItemRadio ( {
290297 onClick,
291298 description,
292- selected,
293299 disabled,
294300 value,
295301 children,
@@ -299,45 +305,30 @@ function ItemRadio({
299305} : ItemRadioProps ) {
300306 return (
301307 < RDd . RadioItem
302- onClick = { ( e ) => {
303- e . preventDefault ( )
304- if ( disabled ) return
305- onClick ?.( e )
306- } }
307308 disabled = { disabled }
308309 value = { value }
309- className = { twMerge (
310+ className = { twJoin (
311+ "group" ,
310312 commonStyles ,
311- ! disabled && ! selected ? normalStyles : undefined ,
312- selected ? selectedStyles : undefined ,
313+ normalStyles ,
314+ selectedStyles ,
313315 disabled ? disabledStyles : undefined ,
314316 className ,
315317 ) }
316318 style = { style }
317319 { ...props }
318320 >
319321 < div
320- className = { twMerge (
321- `${
322- selected
323- ? "border-selected-bold"
324- : `${
325- disabled
326- ? "border-border"
327- : "border-border-bold"
328- } hover:border-selected-bold`
329- } relative ml-2 mr-4 flex h-3 w-3 flex-none items-center justify-center rounded-full border-2`,
322+ className = { twJoin (
323+ "group-data-[selected=true]:border-selected-bold" ,
324+ disabled
325+ ? "border-border"
326+ : "border-border-bold group-hover:border-selected-bold" ,
327+ "relative ml-2 mr-4 flex size-3.5 flex-none items-center justify-center rounded-full border-2" ,
330328 ) }
331329 >
332- { selected && (
333- < IconSizeHelper className = "text-brand-bold absolute inset-0 flex items-center justify-center" >
334- < RadioIcon size = "12" />
335- </ IconSizeHelper >
336- ) }
337330 < RDd . ItemIndicator >
338- < IconSizeHelper >
339- < RadioIcon size = "12" />
340- </ IconSizeHelper >
331+ < div className = "size-3.5 rounded-full border-selected-bold border-4" />
341332 </ RDd . ItemIndicator >
342333 </ div >
343334 < div >
@@ -381,7 +372,7 @@ function SubMenu({
381372 < IconSizeHelper >
382373 < ChevronLeftIcon
383374 aria-label = "open submenu"
384- size = "12 "
375+ size = "14 "
385376 />
386377 </ IconSizeHelper >
387378 ) }
@@ -390,7 +381,7 @@ function SubMenu({
390381 < IconSizeHelper >
391382 < ChevronRightIcon
392383 aria-label = "close submenu"
393- size = "12 "
384+ size = "14 "
394385 />
395386 </ IconSizeHelper >
396387 ) }
@@ -494,7 +485,7 @@ const Trigger = forwardRef<HTMLButtonElement, DropdownTriggerProps>(
494485 : "group-data-[state=open]:flex group-data-[state=open]:visible"
495486 } `}
496487 >
497- < ChevronUpIcon size = "6 " />
488+ < ChevronUpIcon size = "12" strokeWidth = "4 " />
498489 </ IconSizeHelper >
499490 < IconSizeHelper
500491 className = { `hidden h-4 w-4 items-center justify-center ${
@@ -503,7 +494,7 @@ const Trigger = forwardRef<HTMLButtonElement, DropdownTriggerProps>(
503494 : "group-data-[state=closed]:flex group-data-[state=closed]:visible"
504495 } `}
505496 >
506- < ChevronDownIcon size = "6 " />
497+ < ChevronDownIcon size = "12" strokeWidth = "4 " />
507498 </ IconSizeHelper >
508499 </ Button >
509500 )
0 commit comments