@liguelead/design-system 0.0.33 → 0.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/Select/Select.styles.ts +103 -78
- package/components/Select/Select.tsx +84 -126
- package/components/Select/Select.types.ts +3 -4
- package/components/SplitButton/SplitButton.sizes.ts +12 -0
- package/components/SplitButton/SplitButton.stories.tsx +221 -0
- package/components/SplitButton/SplitButton.styles.ts +106 -0
- package/components/SplitButton/SplitButton.tsx +83 -0
- package/components/SplitButton/SplitButton.types.ts +20 -0
- package/components/SplitButton/index.ts +2 -0
- package/components/Table/Table.tsx +11 -2
- package/components/Table/Table.types.ts +2 -1
- package/components/Table/components/DatatableColumnFilterMenu/DatatableColumnFilterMenu.styles.ts +42 -0
- package/components/Table/components/DatatableColumnFilterMenu/DatatableColumnFilterMenu.tsx +51 -26
- package/components/Table/components/TableHeader/TableHeader.tsx +5 -1
- package/components/Table/hooks/useDatatableFilters.ts +8 -2
- package/components/Table/stories.fixtures.ts +3 -2
- package/components/Table/utils/currencySortingFn.ts +20 -0
- package/components/Table/utils/index.ts +1 -0
- package/components/index.ts +1 -0
- package/package.json +1 -1
|
@@ -8,148 +8,173 @@ import {
|
|
|
8
8
|
shadow
|
|
9
9
|
} from '@liguelead/foundation'
|
|
10
10
|
import { parseColor } from '../../utils'
|
|
11
|
-
import { Content, Item } from '@radix-ui/react-select'
|
|
11
|
+
import { Content, Item, ItemIndicator, Trigger } from '@radix-ui/react-select'
|
|
12
12
|
|
|
13
|
-
interface
|
|
13
|
+
interface WrapperProps {
|
|
14
14
|
size: TextFieldSizeType
|
|
15
15
|
$themefication: StateInterface
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export const InputWrapper = styled.div`
|
|
19
|
-
position: relative;
|
|
20
|
-
width: 100%;
|
|
21
|
-
`
|
|
22
|
-
|
|
23
18
|
export const Label = styled.label`
|
|
24
19
|
display: block;
|
|
25
20
|
font-weight: ${fontWeight.fontWeight500};
|
|
26
21
|
font-size: ${fontSize.fontSize14}px;
|
|
27
22
|
`
|
|
28
23
|
|
|
29
|
-
export const HelperText = styled.span
|
|
24
|
+
export const HelperText = styled.span`
|
|
30
25
|
font-size: ${fontSize.fontSize12}px;
|
|
31
26
|
line-height: ${lineHeight.lineHeight16}px;
|
|
32
27
|
`
|
|
33
28
|
|
|
34
|
-
export const IconWrapper = styled.div<{
|
|
35
|
-
$right?: boolean
|
|
36
|
-
$error?: boolean
|
|
37
|
-
$disabled?: boolean
|
|
38
|
-
}>`
|
|
29
|
+
export const IconWrapper = styled.div<{
|
|
30
|
+
$right?: boolean
|
|
31
|
+
$error?: boolean
|
|
32
|
+
$disabled?: boolean
|
|
33
|
+
}>`
|
|
34
|
+
${({ theme, $error, $disabled, $right }) => `
|
|
39
35
|
display: flex;
|
|
40
36
|
align-items: center;
|
|
41
|
-
justify-content:
|
|
37
|
+
justify-content: center;
|
|
42
38
|
position: absolute;
|
|
43
|
-
top:
|
|
39
|
+
top: 0;
|
|
44
40
|
height: 100%;
|
|
45
|
-
|
|
46
|
-
${$right ? 'right:
|
|
47
|
-
padding:
|
|
41
|
+
pointer-events: ${$right ? 'none' : 'auto'};
|
|
42
|
+
${$right ? 'right: 0;' : 'left: 0;'}
|
|
43
|
+
padding: 0 ${spacing.spacing16}px;
|
|
44
|
+
z-index: 1;
|
|
48
45
|
|
|
49
46
|
& svg {
|
|
50
47
|
width: 16px;
|
|
51
48
|
height: 16px;
|
|
52
|
-
fill: ${
|
|
49
|
+
fill: ${
|
|
50
|
+
$error
|
|
53
51
|
? parseColor(theme.colors.danger200)
|
|
54
52
|
: $disabled
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
? parseColor(theme.colors.neutral400)
|
|
54
|
+
: parseColor(theme.colors.neutral800)
|
|
55
|
+
};
|
|
57
56
|
transition: fill 0.2s ease;
|
|
58
|
-
cursor: ${$disabled ? 'not-allowed' : 'pointer'};
|
|
59
57
|
}
|
|
60
58
|
`}
|
|
61
59
|
`
|
|
62
60
|
|
|
61
|
+
export const StyledTrigger = styled(Trigger)`
|
|
62
|
+
position: relative;
|
|
63
|
+
width: 100%;
|
|
64
|
+
display: flex;
|
|
65
|
+
align-items: center;
|
|
66
|
+
text-align: left;
|
|
67
|
+
background: transparent;
|
|
68
|
+
outline: none;
|
|
69
|
+
cursor: pointer;
|
|
70
|
+
border-radius: 4px;
|
|
71
|
+
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
72
|
+
|
|
73
|
+
&:focus-visible {
|
|
74
|
+
box-shadow: ${shadow.focusShadow};
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
&[data-state='open'] {
|
|
78
|
+
box-shadow: ${shadow.focusShadow};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
&[data-disabled] {
|
|
82
|
+
cursor: not-allowed;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&::placeholder {
|
|
86
|
+
color: ${({ theme }) => parseColor(theme.colors.neutral600)};
|
|
87
|
+
opacity: 1;
|
|
88
|
+
}
|
|
89
|
+
`
|
|
90
|
+
|
|
91
|
+
export const TriggerValue = styled.span<{
|
|
92
|
+
$hasValue: boolean
|
|
93
|
+
$leftIcon: boolean
|
|
94
|
+
$rightIcon: boolean
|
|
95
|
+
}>`
|
|
96
|
+
${({ theme, $hasValue, $leftIcon, $rightIcon }) => `
|
|
97
|
+
flex: 1;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
white-space: nowrap;
|
|
100
|
+
text-overflow: ellipsis;
|
|
101
|
+
color: ${$hasValue ? parseColor(theme.colors.textDark) : parseColor(theme.colors.neutral600)};
|
|
102
|
+
padding-left: ${$leftIcon ? '0' : '0'};
|
|
103
|
+
padding-right: ${$rightIcon ? '0' : '0'};
|
|
104
|
+
`}
|
|
105
|
+
`
|
|
106
|
+
|
|
63
107
|
export const StyledContent = styled(Content)`
|
|
64
|
-
padding:
|
|
108
|
+
padding: 0;
|
|
65
109
|
background-color: #fff;
|
|
66
110
|
min-width: var(--radix-select-trigger-width, auto);
|
|
67
|
-
width: 100
|
|
111
|
+
width: var(--radix-select-trigger-width, 100%);
|
|
68
112
|
box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.25);
|
|
69
113
|
border: 1px solid ${({ theme }) => parseColor(theme.colors.neutral500)};
|
|
70
|
-
border-top:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
scrollbar-width: thin; /* Personaliza a largura do scroll (opcional) */
|
|
114
|
+
border-top: 0;
|
|
115
|
+
border-radius: 0 0 8px 8px;
|
|
116
|
+
max-height: 314px;
|
|
117
|
+
overflow: hidden;
|
|
118
|
+
z-index: 9999;
|
|
119
|
+
|
|
120
|
+
&[data-state='open'] {
|
|
121
|
+
animation: none;
|
|
79
122
|
}
|
|
80
123
|
`
|
|
81
124
|
|
|
125
|
+
export const StyledViewport = styled.div`
|
|
126
|
+
max-height: 200px;
|
|
127
|
+
overflow-y: auto;
|
|
128
|
+
scrollbar-width: thin;
|
|
129
|
+
border-radius: 0 0 4px 4px;
|
|
130
|
+
`
|
|
131
|
+
|
|
82
132
|
export const StyledItem = styled(Item)`
|
|
83
|
-
padding: ${spacing.
|
|
133
|
+
padding: ${spacing.spacing8}px ${spacing.spacing12}px;
|
|
84
134
|
display: flex;
|
|
85
135
|
align-items: center;
|
|
86
136
|
justify-content: space-between;
|
|
87
|
-
gap: 8px;
|
|
88
|
-
transition:
|
|
137
|
+
gap: 8px;
|
|
138
|
+
transition: background-color 0.2s ease;
|
|
89
139
|
cursor: pointer;
|
|
140
|
+
outline: none;
|
|
141
|
+
font-size: ${fontSize.fontSize14}px;
|
|
90
142
|
|
|
91
|
-
&:hover
|
|
143
|
+
&:hover,
|
|
144
|
+
&[data-highlighted] {
|
|
92
145
|
background-color: ${({ theme }) => parseColor(theme.colors.primaryLight)};
|
|
93
146
|
}
|
|
94
147
|
|
|
95
148
|
&[data-state='checked'] {
|
|
96
|
-
background-color: ${({ theme }) =>
|
|
97
|
-
parseColor(theme.colors.primary)};
|
|
149
|
+
background-color: ${({ theme }) => parseColor(theme.colors.primary)};
|
|
98
150
|
color: ${({ theme }) => parseColor(theme.colors.white)};
|
|
99
151
|
}
|
|
100
|
-
`
|
|
101
|
-
|
|
102
|
-
export const StyledInput = styled.input.withConfig({
|
|
103
|
-
shouldForwardProp: prop => !['control', 'errors', 'rules'].includes(prop)
|
|
104
|
-
})`
|
|
105
|
-
width: 100%;
|
|
106
|
-
border-radius: 4px;
|
|
107
|
-
outline: none;
|
|
108
|
-
transition: border-color 0.2s ease;
|
|
109
|
-
background: transparent;
|
|
110
|
-
cursor: pointer;
|
|
111
|
-
|
|
112
|
-
&:focus {
|
|
113
|
-
box-shadow: ${shadow.focusShadow}
|
|
114
|
-
}
|
|
115
152
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
parseColor(theme.colors.neutral800)} !important;
|
|
119
|
-
box-shadow: ${shadow.focusShadow}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
&:disabled {
|
|
153
|
+
&[data-disabled] {
|
|
154
|
+
opacity: 0.5;
|
|
123
155
|
cursor: not-allowed;
|
|
124
156
|
}
|
|
125
157
|
`
|
|
126
158
|
|
|
127
|
-
export const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
right: 0;
|
|
132
|
-
bottom: 0;
|
|
133
|
-
pointer-events: none;
|
|
134
|
-
border: 2px solid #ccc;
|
|
135
|
-
border-radius: 4px;
|
|
136
|
-
background-color: transparent;
|
|
137
|
-
z-index: -1;
|
|
159
|
+
export const StyledItemIndicator = styled(ItemIndicator)`
|
|
160
|
+
display: flex;
|
|
161
|
+
align-items: center;
|
|
162
|
+
`
|
|
138
163
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
164
|
+
export const InputWrapper = styled.div`
|
|
165
|
+
position: relative;
|
|
166
|
+
width: 100%;
|
|
142
167
|
`
|
|
143
168
|
|
|
144
|
-
export const Wrapper = styled.div<
|
|
169
|
+
export const Wrapper = styled.div<WrapperProps>`
|
|
145
170
|
position: relative;
|
|
146
171
|
width: 100%;
|
|
147
172
|
display: flex;
|
|
148
173
|
flex-direction: column;
|
|
149
174
|
gap: ${spacing.spacing4}px;
|
|
150
|
-
|
|
175
|
+
|
|
151
176
|
${({ $themefication, size }) => `
|
|
152
|
-
${
|
|
177
|
+
${StyledTrigger} {
|
|
153
178
|
${$themefication.input}
|
|
154
179
|
${size.input}
|
|
155
180
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { forwardRef, useState } from 'react'
|
|
2
1
|
import * as RadixSelect from '@radix-ui/react-select'
|
|
3
2
|
import { CaretDownIcon, CheckIcon } from '@phosphor-icons/react'
|
|
4
3
|
import {
|
|
@@ -6,152 +5,111 @@ import {
|
|
|
6
5
|
IconWrapper,
|
|
7
6
|
InputWrapper,
|
|
8
7
|
StyledContent,
|
|
9
|
-
StyledInput,
|
|
10
8
|
StyledItem,
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
StyledItemIndicator,
|
|
10
|
+
StyledTrigger,
|
|
11
|
+
StyledViewport,
|
|
12
|
+
TriggerValue,
|
|
13
|
+
Wrapper
|
|
13
14
|
} from './Select.styles'
|
|
14
15
|
import { SelectStates } from './Select.states'
|
|
15
16
|
import { textFieldSizes } from './Select.sizes'
|
|
16
17
|
import { SelectProps, StateInterface } from './Select.types'
|
|
17
18
|
import getState from '../TextField/utils/getState'
|
|
18
19
|
import RequiredAsterisk from '../RequiredAsterisk'
|
|
20
|
+
import { Label } from './Select.styles'
|
|
19
21
|
|
|
20
|
-
const Select =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const [selectValue, setSelectValue] = useState(
|
|
40
|
-
defaultValue ?? options[0]?.value
|
|
41
|
-
)
|
|
42
|
-
const [open, setOpen] = useState(false)
|
|
22
|
+
const Select = ({
|
|
23
|
+
label,
|
|
24
|
+
defaultValue,
|
|
25
|
+
value,
|
|
26
|
+
error,
|
|
27
|
+
helperText,
|
|
28
|
+
leftIcon,
|
|
29
|
+
size = 'md',
|
|
30
|
+
options,
|
|
31
|
+
placeholder,
|
|
32
|
+
className,
|
|
33
|
+
disabled = false,
|
|
34
|
+
requiredSymbol = false,
|
|
35
|
+
handleLeftIcon,
|
|
36
|
+
onValueChange
|
|
37
|
+
}: SelectProps) => {
|
|
38
|
+
const state = getState(disabled, !!error)
|
|
39
|
+
const textFieldState: StateInterface = SelectStates(state)
|
|
40
|
+
const textFieldSize = textFieldSizes(size, !!leftIcon, true)
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
name: register.name,
|
|
49
|
-
value
|
|
50
|
-
}
|
|
51
|
-
})
|
|
52
|
-
}
|
|
42
|
+
const isControlled = value !== undefined
|
|
43
|
+
const rootProps = isControlled
|
|
44
|
+
? { value: value ?? '', onValueChange }
|
|
45
|
+
: { defaultValue, onValueChange }
|
|
53
46
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const selectedLabel =
|
|
58
|
-
options.find(option => option.value === selectValue)?.label ?? ''
|
|
59
|
-
|
|
60
|
-
return (
|
|
61
|
-
<Wrapper
|
|
62
|
-
className={className}
|
|
63
|
-
size={textFieldSize}
|
|
64
|
-
$themefication={textFieldState}
|
|
65
|
-
>
|
|
66
|
-
<input
|
|
67
|
-
type="hidden"
|
|
68
|
-
value={selectValue}
|
|
69
|
-
placeholder={placeholder}
|
|
70
|
-
ref={instance => {
|
|
71
|
-
if (typeof ref === 'function') {
|
|
72
|
-
ref(instance)
|
|
73
|
-
} else if (ref) {
|
|
74
|
-
ref.current = instance
|
|
75
|
-
}
|
|
76
|
-
register?.ref(instance)
|
|
77
|
-
}}
|
|
78
|
-
onChange={register?.onChange}
|
|
79
|
-
onBlur={register?.onBlur}
|
|
80
|
-
/>
|
|
47
|
+
return (
|
|
48
|
+
<Wrapper className={className} size={textFieldSize} $themefication={textFieldState}>
|
|
49
|
+
{label && (
|
|
81
50
|
<Label>
|
|
82
51
|
{label} {requiredSymbol && <RequiredAsterisk />}
|
|
83
52
|
</Label>
|
|
84
|
-
|
|
85
|
-
|
|
53
|
+
)}
|
|
54
|
+
|
|
55
|
+
<RadixSelect.Root {...rootProps} disabled={disabled}>
|
|
56
|
+
<InputWrapper>
|
|
57
|
+
<StyledTrigger aria-label={label} aria-invalid={!!error}>
|
|
86
58
|
{leftIcon && (
|
|
87
|
-
<IconWrapper
|
|
59
|
+
<IconWrapper
|
|
60
|
+
onClick={handleLeftIcon}
|
|
61
|
+
$disabled={disabled}
|
|
62
|
+
$error={!!error}
|
|
63
|
+
>
|
|
88
64
|
{leftIcon}
|
|
89
65
|
</IconWrapper>
|
|
90
66
|
)}
|
|
67
|
+
|
|
68
|
+
<TriggerValue
|
|
69
|
+
$hasValue={isControlled ? !!value : true}
|
|
70
|
+
$leftIcon={!!leftIcon}
|
|
71
|
+
$rightIcon
|
|
72
|
+
>
|
|
73
|
+
<RadixSelect.Value placeholder={placeholder} />
|
|
74
|
+
</TriggerValue>
|
|
75
|
+
|
|
91
76
|
<IconWrapper $right $error={!!error} $disabled={disabled}>
|
|
92
|
-
<
|
|
77
|
+
<RadixSelect.Icon asChild>
|
|
78
|
+
<CaretDownIcon weight="fill" size={14} />
|
|
79
|
+
</RadixSelect.Icon>
|
|
93
80
|
</IconWrapper>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
defaultValue={defaultValue}
|
|
106
|
-
onValueChange={(value: string) =>
|
|
107
|
-
handleOnChange(value)
|
|
108
|
-
}>
|
|
109
|
-
<RadixSelect.Trigger asChild disabled={disabled}>
|
|
110
|
-
<InputWrapper>
|
|
111
|
-
{leftIcon && (
|
|
112
|
-
<IconWrapper onClick={handleLeftIcon}>
|
|
113
|
-
{leftIcon}
|
|
114
|
-
</IconWrapper>
|
|
115
|
-
)}
|
|
116
|
-
<IconWrapper $right $error={!!error}>
|
|
117
|
-
<CaretDownIcon weight="fill" size={14} />
|
|
118
|
-
</IconWrapper>
|
|
119
|
-
<StyledInput
|
|
120
|
-
readOnly
|
|
121
|
-
style={{ cursor: 'pointer !important' }}
|
|
122
|
-
value={selectedLabel}
|
|
123
|
-
className={open ? 'is-open' : ''}
|
|
124
|
-
/>
|
|
125
|
-
</InputWrapper>
|
|
126
|
-
</RadixSelect.Trigger>
|
|
127
|
-
<StyledContent
|
|
128
|
-
asChild
|
|
129
|
-
sideOffset={0}
|
|
130
|
-
position="popper"
|
|
131
|
-
align="start"
|
|
132
|
-
className="RadixSelectContent">
|
|
133
|
-
<RadixSelect.Viewport className="RadixSelectViewport">
|
|
81
|
+
</StyledTrigger>
|
|
82
|
+
</InputWrapper>
|
|
83
|
+
|
|
84
|
+
<RadixSelect.Portal>
|
|
85
|
+
<StyledContent
|
|
86
|
+
sideOffset={0}
|
|
87
|
+
position="popper"
|
|
88
|
+
align="start"
|
|
89
|
+
>
|
|
90
|
+
<RadixSelect.Viewport asChild>
|
|
91
|
+
<StyledViewport>
|
|
134
92
|
{options.map(option => (
|
|
135
|
-
<StyledItem
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
)}
|
|
93
|
+
<StyledItem key={option.value} value={option.value}>
|
|
94
|
+
<RadixSelect.ItemText>
|
|
95
|
+
{option.label}
|
|
96
|
+
</RadixSelect.ItemText>
|
|
97
|
+
<StyledItemIndicator>
|
|
98
|
+
<CheckIcon weight="bold" size={14} />
|
|
99
|
+
</StyledItemIndicator>
|
|
143
100
|
</StyledItem>
|
|
144
101
|
))}
|
|
145
|
-
</
|
|
146
|
-
</
|
|
147
|
-
</
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
)
|
|
102
|
+
</StyledViewport>
|
|
103
|
+
</RadixSelect.Viewport>
|
|
104
|
+
</StyledContent>
|
|
105
|
+
</RadixSelect.Portal>
|
|
106
|
+
</RadixSelect.Root>
|
|
107
|
+
|
|
108
|
+
{(helperText || error) && (
|
|
109
|
+
<HelperText>{error?.message || helperText}</HelperText>
|
|
110
|
+
)}
|
|
111
|
+
</Wrapper>
|
|
112
|
+
)
|
|
113
|
+
}
|
|
156
114
|
|
|
157
115
|
export default Select
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { FieldValues
|
|
1
|
+
import { FieldValues } from 'react-hook-form'
|
|
2
2
|
export interface SelectProps<TFieldValues extends FieldValues = FieldValues> {
|
|
3
3
|
className?: string
|
|
4
4
|
disabled?: boolean
|
|
5
5
|
error?: TFieldValues
|
|
6
6
|
label?: string
|
|
7
7
|
placeholder?: string
|
|
8
|
-
requiredSymbol
|
|
8
|
+
requiredSymbol?: boolean
|
|
9
9
|
options: Array<{ label: string; value: string }>
|
|
10
10
|
value?: string
|
|
11
11
|
defaultValue?: string
|
|
12
12
|
handleLeftIcon?: () => void
|
|
13
13
|
helperText?: string
|
|
14
14
|
leftIcon?: React.ReactNode
|
|
15
|
-
|
|
15
|
+
onValueChange?: (value: string) => void
|
|
16
16
|
size?: 'sm' | 'md' | 'lg'
|
|
17
|
-
register?: UseFormRegisterReturn<string>
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
export interface StateInterface {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { spacing } from '@liguelead/foundation'
|
|
2
|
+
import { ButtonSizeTypes } from '../Button/Button.types'
|
|
3
|
+
|
|
4
|
+
export const SplitButtonTriggerSizes = (size: ButtonSizeTypes) => {
|
|
5
|
+
const sizes = {
|
|
6
|
+
sm: `width: ${spacing.spacing32}px; height: ${spacing.spacing32}px; padding: 0;`,
|
|
7
|
+
md: `width: ${spacing.spacing36}px; height: ${spacing.spacing36}px; padding: 0;`,
|
|
8
|
+
lg: `width: ${spacing.spacing40}px; height: ${spacing.spacing40}px; padding: 0;`
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
return sizes[size]
|
|
12
|
+
}
|