1
1
import { useState } from 'react'
2
2
import { SelectPickerOptionType } from '@Shared/Components'
3
- // import { ComponentSizeType } from '@Shared/constants'
3
+ import { ComponentSizeType } from '@Shared/constants'
4
4
5
5
type SegmentType = Pick < SelectPickerOptionType , 'label' | 'value' | 'startIcon' | 'tooltipProps' >
6
6
@@ -10,10 +10,16 @@ export interface NSegmentedControlProps {
10
10
onChange ?: ( selectedTab : SegmentType ) => void
11
11
// disabled?: boolean
12
12
name : string
13
- // size?: Extract<ComponentSizeType, ComponentSizeType.xs | ComponentSizeType.small | ComponentSizeType.medium>
13
+ size ?: Extract < ComponentSizeType , ComponentSizeType . xs | ComponentSizeType . small | ComponentSizeType . medium >
14
14
}
15
15
16
- const NSegmentedControl = ( { segments, onChange, name } : NSegmentedControlProps ) => {
16
+ export const COMPONENT_SIZE_TO_SEGMENT_CLASS_MAP : Record < NSegmentedControlProps [ 'size' ] , string > = {
17
+ [ ComponentSizeType . xs ] : 'py-1 px-5' ,
18
+ [ ComponentSizeType . small ] : 'py-1 px-5' ,
19
+ [ ComponentSizeType . medium ] : 'py-3 px-7' ,
20
+ } as const
21
+
22
+ const NSegmentedControl = ( { segments, onChange, name, size = ComponentSizeType . medium } : NSegmentedControlProps ) => {
17
23
const [ selectedSegmentValue , setSelectedSegmentValue ] = useState < SegmentType [ 'value' ] | null > ( segments [ 0 ] . value )
18
24
19
25
const handleSegmentChange = ( updatedSegment : SegmentType ) => {
@@ -23,7 +29,9 @@ const NSegmentedControl = ({ segments, onChange, name }: NSegmentedControlProps)
23
29
24
30
return (
25
31
< div >
26
- < div className = "dc__inline-flex dc__content-center dc__align-items-center dc__gap-2 br-6 bg__tertiary p-2" >
32
+ < div
33
+ className = { `dc__inline-flex dc__content-center dc__align-items-center dc__gap-2 br-6 bg__tertiary ${ size === ComponentSizeType . xs ? 'p-1' : 'p-2' } ` }
34
+ >
27
35
{ segments . map ( ( segment ) => {
28
36
const isSelected = segment . value === selectedSegmentValue
29
37
@@ -45,11 +53,11 @@ const NSegmentedControl = ({ segments, onChange, name }: NSegmentedControlProps)
45
53
/>
46
54
< label
47
55
htmlFor = { `${ name } -${ segment . value } ` }
48
- className = { `" pointer m-0 dc__block py-3 px-7 br-4 flex py-1 px-5 flex dc__gap-4 ${ isSelected ? 'bg__primary' : '' } ` }
56
+ className = { `pointer m-0 dc__block br-4 flex py-1 px-5 flex dc__gap-4 ${ isSelected ? 'bg__primary' : '' } ${ COMPONENT_SIZE_TO_SEGMENT_CLASS_MAP [ size ] } ` }
49
57
style = {
50
58
isSelected
51
59
? {
52
- border : '0.5px solid var(--border-secondary)' ,
60
+ border : '1px solid var(--border-secondary)' ,
53
61
boxShadow : '0px 1px 2px 0px var(--black-20)' ,
54
62
}
55
63
: { }
0 commit comments