Skip to content

Commit 74b78e6

Browse files
committed
feat: add support for component size
1 parent ab91c34 commit 74b78e6

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/Common/SegmentedControl/NSegmentedControl.component.tsx

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useState } from 'react'
22
import { SelectPickerOptionType } from '@Shared/Components'
3-
// import { ComponentSizeType } from '@Shared/constants'
3+
import { ComponentSizeType } from '@Shared/constants'
44

55
type SegmentType = Pick<SelectPickerOptionType, 'label' | 'value' | 'startIcon' | 'tooltipProps'>
66

@@ -10,10 +10,16 @@ export interface NSegmentedControlProps {
1010
onChange?: (selectedTab: SegmentType) => void
1111
// disabled?: boolean
1212
name: string
13-
// size?: Extract<ComponentSizeType, ComponentSizeType.xs | ComponentSizeType.small | ComponentSizeType.medium>
13+
size?: Extract<ComponentSizeType, ComponentSizeType.xs | ComponentSizeType.small | ComponentSizeType.medium>
1414
}
1515

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) => {
1723
const [selectedSegmentValue, setSelectedSegmentValue] = useState<SegmentType['value'] | null>(segments[0].value)
1824

1925
const handleSegmentChange = (updatedSegment: SegmentType) => {
@@ -23,7 +29,9 @@ const NSegmentedControl = ({ segments, onChange, name }: NSegmentedControlProps)
2329

2430
return (
2531
<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+
>
2735
{segments.map((segment) => {
2836
const isSelected = segment.value === selectedSegmentValue
2937

@@ -45,11 +53,11 @@ const NSegmentedControl = ({ segments, onChange, name }: NSegmentedControlProps)
4553
/>
4654
<label
4755
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]}`}
4957
style={
5058
isSelected
5159
? {
52-
border: '0.5px solid var(--border-secondary)',
60+
border: '1px solid var(--border-secondary)',
5361
boxShadow: '0px 1px 2px 0px var(--black-20)',
5462
}
5563
: {}

0 commit comments

Comments
 (0)