@platformatic/ui-components 0.6.12 → 0.7.1

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/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Platformatic UI Components</title>
7
- <script type="module" crossorigin src="/assets/index-CzGl5ygC.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-Bdl3RcHK.css">
7
+ <script type="module" crossorigin src="/assets/index-DbI83KVc.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-BUMVjZ-U.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
package/dist/main.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /*
2
- ! tailwindcss v3.4.4 | MIT License | https://tailwindcss.com
2
+ ! tailwindcss v3.4.7 | MIT License | https://tailwindcss.com
3
3
  */
4
4
 
5
5
  /*
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@platformatic/ui-components",
3
3
  "description": "Platformatic UI Components",
4
- "version": "0.6.12",
4
+ "version": "0.7.1",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -2,7 +2,7 @@
2
2
  @apply flex flex-col w-full relative;
3
3
  }
4
4
  .inputContainer {
5
- @apply flex min-h-[2.5rem] relative z-20;
5
+ @apply flex relative z-20;
6
6
  }
7
7
  .input {
8
8
  padding-block: 0px;
@@ -0,0 +1,186 @@
1
+ 'use strict'
2
+ import React, { useState } from 'react'
3
+ import PropTypes from 'prop-types'
4
+ import styles from './InputFileUpload.module.css'
5
+ import commonStyles from '../Common.module.css'
6
+ import PlatformaticIcon from '../PlatformaticIcon'
7
+ import Button from '../Button'
8
+ import { ERROR_RED, MAIN_DARK_BLUE, MAIN_GREEN, RICH_BLACK, TRANSPARENT, WHITE } from '../constants'
9
+
10
+ function InputFileUpload ({
11
+ placeholder = '',
12
+ borderColor = MAIN_GREEN,
13
+ errorMessage = '',
14
+ errorMessageTextClassName = '',
15
+ onFileSelect = () => {},
16
+ disabled = false,
17
+ beforeIcon = null,
18
+ afterIcon = null,
19
+ backgroundColor = WHITE,
20
+ inputTextClassName = '',
21
+ verticalPaddingClassName = '',
22
+ dataAttrName = '',
23
+ dataAttrValue = '',
24
+ readOnly = false,
25
+ removeFileButton = {},
26
+ onClickDetail = () => {}
27
+ }) {
28
+ let baseInputClassName = `${commonStyles.fullWidth} ${styles.input} ${inputTextClassName} `
29
+ baseInputClassName += verticalPaddingClassName || ` ${styles.inputDefaultVerticalPadding} `
30
+ baseInputClassName += ' ' + commonStyles[`text--${borderColor}`] + ' ' + commonStyles[`background-color-${backgroundColor}`]
31
+ const errorMessageClassName = errorMessageTextClassName || commonStyles['error-message']
32
+ const showError = errorMessage.length > 0
33
+ if (disabled) baseInputClassName += ' ' + commonStyles['apply-opacity-30']
34
+ if (beforeIcon) baseInputClassName += ' ' + styles.beforeIconPadding
35
+ if (afterIcon) baseInputClassName += ' ' + styles.afterIconPadding
36
+ const [focus, setFocus] = useState(false)
37
+ const inputPlaceholder = placeholder
38
+ const [file, setFile] = useState(null)
39
+
40
+ const dataProps = {}
41
+ if (dataAttrName && dataAttrValue) {
42
+ dataProps[`data-${dataAttrName}`] = dataAttrValue
43
+ }
44
+
45
+ function focusedClassName () {
46
+ const useEffectColor = showError ? ERROR_RED : borderColor
47
+ return (baseInputClassName + ' ' + commonStyles[`bordered--${useEffectColor}-100`])
48
+ }
49
+
50
+ function normalClassName () {
51
+ const useEffectColor = showError ? ERROR_RED : borderColor
52
+ return baseInputClassName + ' ' + commonStyles[`bordered--${useEffectColor}-70`]
53
+ }
54
+
55
+ function handleFocus () {
56
+ if (!disabled) {
57
+ setFocus(true)
58
+ }
59
+ }
60
+
61
+ function handleBlur () {
62
+ if (!disabled) setFocus(false)
63
+ }
64
+
65
+ function handleFileInput (e) {
66
+ setFile(e.target.files[0])
67
+ onFileSelect(e.target.files[0])
68
+ }
69
+
70
+ function clearFile () {
71
+ setFile(null)
72
+ onFileSelect(null)
73
+ }
74
+
75
+ return (
76
+ <div className={styles.container} {...dataProps}>
77
+ <div className={styles.inputContainer}>
78
+ {beforeIcon && <div className={styles.beforeInputIcon}><PlatformaticIcon iconName={beforeIcon.iconName} size='small' data-testid='before-icon' color={beforeIcon.color} onClick={() => beforeIcon.onClick()} /></div>}
79
+ <input
80
+ type='file'
81
+ className={focus ? focusedClassName() : normalClassName()}
82
+ onChange={handleFileInput}
83
+ disabled={disabled}
84
+ placeholder={inputPlaceholder}
85
+ readOnly={readOnly}
86
+ aria-readonly={readOnly}
87
+ onFocus={() => handleFocus()}
88
+ onBlur={() => handleBlur()}
89
+ />
90
+ {file !== null && <span onClick={() => onClickDetail()}>Detail</span>}
91
+ {file !== null && (
92
+ <Button
93
+ textClass={removeFileButton?.textClass ?? ''}
94
+ paddingClass={removeFileButton?.paddingClass ?? ''}
95
+ label={removeFileButton?.label ?? 'Remove file'}
96
+ color={removeFileButton?.color ?? ERROR_RED}
97
+ type='button'
98
+ onClick={() => clearFile()}
99
+ />
100
+ )}
101
+ </div>
102
+ {showError && <span className={errorMessageClassName}>{errorMessage}</span>}
103
+ </div>
104
+ )
105
+ }
106
+
107
+ InputFileUpload.propTypes = {
108
+ /**
109
+ * placeholder
110
+ */
111
+ placeholder: PropTypes.string,
112
+ /**
113
+ * color of border
114
+ */
115
+ borderColor: PropTypes.oneOf([MAIN_GREEN, MAIN_DARK_BLUE, WHITE, RICH_BLACK]),
116
+ /**
117
+ * color of border
118
+ */
119
+ backgroundColor: PropTypes.oneOf([MAIN_GREEN, MAIN_DARK_BLUE, WHITE, RICH_BLACK, TRANSPARENT]),
120
+ /**
121
+ * onFileSelect
122
+ */
123
+ onFileSelect: PropTypes.func,
124
+ /**
125
+ * Disabled
126
+ */
127
+ disabled: PropTypes.bool,
128
+ /**
129
+ * beforeIcon: PlatformaticIcon props
130
+ */
131
+ beforeIcon: PropTypes.shape({
132
+ iconName: PropTypes.string,
133
+ color: PropTypes.string,
134
+ onClick: PropTypes.func
135
+ }),
136
+ /**
137
+ * afterIcon: PlatformaticIcon props
138
+ */
139
+ afterIcon: PropTypes.shape({
140
+ iconName: PropTypes.string,
141
+ color: PropTypes.string,
142
+ onClick: PropTypes.func
143
+ }),
144
+ /**
145
+ * backgroundTransparent
146
+ */
147
+ backgroundTransparent: PropTypes.bool,
148
+ /**
149
+ * inputTextClassName
150
+ */
151
+ inputTextClassName: PropTypes.string,
152
+ /**
153
+ * verticalPaddingClassName
154
+ */
155
+ verticalPaddingClassName: PropTypes.string,
156
+ /**
157
+ * dataAttrName
158
+ */
159
+ dataAttrName: PropTypes.string,
160
+ /**
161
+ * dataAttrValue
162
+ */
163
+ dataAttrValue: PropTypes.string,
164
+ /**
165
+ * readOnly
166
+ */
167
+ readOnly: PropTypes.bool,
168
+ /**
169
+ * errorMessage
170
+ */
171
+ errorMessage: PropTypes.string,
172
+ /**
173
+ * errorMessageTextClassName
174
+ */
175
+ errorMessageTextClassName: PropTypes.string,
176
+ /**
177
+ * removeFileButton
178
+ */
179
+ removeFileButton: PropTypes.object,
180
+ /**
181
+ * onClickDetail
182
+ */
183
+ onClickDetail: PropTypes.func
184
+ }
185
+
186
+ export default InputFileUpload
@@ -0,0 +1,50 @@
1
+ .container {
2
+ @apply flex flex-col w-full relative;
3
+ }
4
+ .inputContainer {
5
+ @apply flex min-h-[2.5rem] relative z-20 gap-x-2 items-center;
6
+ }
7
+ .input {
8
+ padding-block: 0px;
9
+ padding-inline: 0px;
10
+ @apply border border-solid box-border rounded px-2 z-10;
11
+ }
12
+ .inputDefaultVerticalPadding {
13
+ @apply py-2.5;
14
+ }
15
+ .afterInputIcon,
16
+ .beforeInputIcon {
17
+ @apply absolute top-[50%] z-20;
18
+ transform: translateY(-50%);
19
+ }
20
+ .beforeInputIcon {
21
+ @apply left-0 ml-2
22
+ }
23
+ .afterInputIcon {
24
+ @apply right-0 mr-2
25
+ }
26
+ .beforeIconPadding {
27
+ @apply pl-8
28
+ }
29
+ .afterIconPadding {
30
+ @apply pr-8
31
+ }
32
+ .color-main-dark-blue {
33
+ @apply text-main-dark-blue;
34
+ }
35
+ .color-error-red{
36
+ @apply text-error-red;
37
+ }
38
+ .color-white{
39
+ @apply text-white;
40
+ }
41
+ .paddingFocused {
42
+ @apply p-4;
43
+ }
44
+ .placeholderAPart {
45
+ @apply absolute top-[50%] right-0 translate-y-[-50%] left-0 text-main-dark-blue text-opacity-20 ml-2 z-0;
46
+ }
47
+ .input.active,
48
+ .input:focus {
49
+ outline: none;
50
+ }
@@ -3,8 +3,9 @@ import React, { useState, useEffect, useRef } from 'react'
3
3
  import PropTypes from 'prop-types'
4
4
  import styles from './Select.module.css'
5
5
  import commonStyles from '../Common.module.css'
6
- import { MAIN_DARK_BLUE, MAIN_GREEN, RICH_BLACK, SMALL, WHITE } from '../constants'
6
+ import { MAIN_DARK_BLUE, MAIN_GREEN, RICH_BLACK, SIZES, SMALL, WHITE } from '../constants'
7
7
  import PlatformaticIcon from '../PlatformaticIcon'
8
+ import Icons from '../icons'
8
9
 
9
10
  function Select ({
10
11
  defaultContainerClassName = '',
@@ -25,7 +26,8 @@ function Select ({
25
26
  dataAttrName = '',
26
27
  dataAttrValue = '',
27
28
  backgroundColor = WHITE,
28
- inputTextClassName = ''
29
+ inputTextClassName = '',
30
+ beforeIcon = {}
29
31
  }) {
30
32
  const inputRef = useRef()
31
33
  const [showOptions, setShowOptions] = useState(false)
@@ -35,10 +37,12 @@ function Select ({
35
37
  const errorMessageClassName = errorMessageTextClassName || commonStyles['error-message']
36
38
  const showError = errorMessage.length > 0
37
39
  const containerClassName = `${styles.container} ${defaultContainerClassName} `
40
+ let baseWrapperClassName = `${styles.selectContainer} `
38
41
  let inputClassName = `${commonStyles.fullWidth} ${styles.select} ${inputTextClassName}`
39
- inputClassName += ' ' + styles[`select-${mainColor}`]
40
- inputClassName += ' ' + commonStyles[`text--${borderColor}`]
42
+ baseWrapperClassName += ' ' + styles[`select-${mainColor}`]
43
+ baseWrapperClassName += ' ' + commonStyles[`text--${borderColor}`]
41
44
  let optionsClassName = `${styles.options} ${defaultOptionsClassName} `
45
+ baseWrapperClassName += ' ' + commonStyles[`background-color-${backgroundColor}`]
42
46
  inputClassName += ' ' + commonStyles[`background-color-${backgroundColor}`]
43
47
  optionsClassName += commonStyles[`background-color-${backgroundColor}`]
44
48
 
@@ -50,7 +54,6 @@ function Select ({
50
54
  if (optionsBorderedBottom) {
51
55
  singleOptionClassName += ` ${styles['bordered-bottom']}`
52
56
  }
53
-
54
57
  const optionSpanClassName = commonStyles[`text--${mainColor}-70`]
55
58
  const optionSpanClassNameSelected = commonStyles[`text--${mainColor}`]
56
59
  const descriptionClassName = commonStyles[`text--${mainColor}`]
@@ -58,17 +61,17 @@ function Select ({
58
61
  const [wrapperClassName, setWrapperClassName] = useState(normalClassName())
59
62
 
60
63
  function onFocusClassName () {
61
- return inputClassName + ' ' + commonStyles[`bordered--${borderColor}-100`]
64
+ return commonStyles[`bordered--${borderColor}-100`] + ' ' + baseWrapperClassName
62
65
  }
63
66
 
64
67
  function normalClassName () {
65
- const baseClassName = inputClassName
68
+ const baseClassName = baseWrapperClassName
66
69
  if (showError) {
67
- inputClassName += ' ' + commonStyles['bordered--error-red']
70
+ baseWrapperClassName += ' ' + commonStyles['bordered--error-red']
68
71
  } else {
69
- inputClassName += ' ' + commonStyles[`bordered--${borderColor}-70`]
72
+ baseWrapperClassName += ' ' + commonStyles[`bordered--${borderColor}-70`]
70
73
  }
71
- if (disabled) inputClassName += ' ' + commonStyles['apply-opacity-30']
74
+ if (disabled) baseWrapperClassName += ' ' + commonStyles['apply-opacity-30']
72
75
  return baseClassName
73
76
  }
74
77
 
@@ -158,10 +161,18 @@ function Select ({
158
161
  }, 250)
159
162
  }
160
163
 
164
+ function getBeforeIcon () {
165
+ return React.createElement(Icons[`${beforeIcon.iconName}`], {
166
+ color: beforeIcon.color,
167
+ size: beforeIcon.size
168
+ })
169
+ }
170
+
161
171
  return (
162
172
  <div className={containerClassName} {...dataProps}>
163
- <div className={styles.selectContainer}>
164
- <input type='text' name={name} value={value} className={wrapperClassName} ref={inputRef} disabled={disabled} placeholder={placeholder} onFocus={() => handleFocus()} onBlur={(e) => handleBlur(e)} readOnly />
173
+ <div className={wrapperClassName}>
174
+ {beforeIcon?.iconName && getBeforeIcon()}
175
+ <input type='text' name={name} value={value} className={inputClassName} ref={inputRef} disabled={disabled} placeholder={placeholder} onFocus={() => handleFocus()} onBlur={(e) => handleBlur(e)} readOnly />
165
176
  <div className={styles.icons}>
166
177
  <PlatformaticIcon iconName={showOptions ? 'ArrowUpIcon' : 'ArrowDownIcon'} color={borderColor} disabled={disabled} onClick={() => setShowOptions(!showOptions)} size={SMALL} />
167
178
  </div>
@@ -261,7 +272,15 @@ Select.propTypes = {
261
272
  /**
262
273
  * errorMessageTextClassName
263
274
  */
264
- errorMessageTextClassName: PropTypes.string
275
+ errorMessageTextClassName: PropTypes.string,
276
+ /**
277
+ * beforeIcon: PlatformaticIcon props
278
+ */
279
+ beforeIcon: PropTypes.shape({
280
+ iconName: PropTypes.string,
281
+ color: PropTypes.string,
282
+ size: PropTypes.oneOf(SIZES)
283
+ })
265
284
  }
266
285
 
267
286
  export default Select
@@ -2,18 +2,17 @@
2
2
  @apply flex flex-col w-full relative
3
3
  }
4
4
  .selectContainer {
5
- @apply w-full flex items-center relative z-10;
5
+ @apply w-full flex items-center relative z-10 gap-x-2 border border-solid box-border rounded py-1.5 px-2 md:px-3 md:py-[10.5px];
6
6
  }
7
7
  .select {
8
- @apply py-1.5 px-2 md:px-3 md:py-[10.5px] h-full border border-solid box-border rounded;
8
+ @apply h-full border-none rounded;
9
9
  }
10
-
11
- .select-main-dark-blue.active,
12
- .select-main-dark-blue:focus {
10
+ .select-main-dark-blue input.active,
11
+ .select-main-dark-blue input:focus {
13
12
  @apply shadow-main-dark-blue outline-none;
14
13
  }
15
- .select-white.active,
16
- .select-white:focus {
14
+ .select-white input.active,
15
+ .select-white input:focus {
17
16
  @apply outline-none;
18
17
  }
19
18
  .options {
@@ -37,4 +36,4 @@
37
36
  }
38
37
  .descriptionValue {
39
38
  @apply opacity-70
40
- }
39
+ }
@@ -1,5 +1,6 @@
1
1
  import Field from './Field'
2
2
  import Input from './Input'
3
+ import InputFileUpload from './InputFileUpload'
3
4
  import InputWithSeparator from './InputWithSeparator'
4
5
  import Password from './Password'
5
6
  import Preview from './Preview'
@@ -11,6 +12,7 @@ import ToggleSwitch from './ToggleSwitch'
11
12
 
12
13
  export default {
13
14
  Field,
15
+ InputFileUpload,
14
16
  Input,
15
17
  InputWithSeparator,
16
18
  Password,
@@ -17,6 +17,7 @@ const GraphQLEditsIcon = ({
17
17
  className += ` ${styles.iconInactive}`
18
18
  }
19
19
  const filledClassName = styles[`filled-${color}`]
20
+ const strokeTransparent = styles.strokeTransparent
20
21
 
21
22
  let icon = <></>
22
23
 
@@ -34,13 +35,13 @@ const GraphQLEditsIcon = ({
34
35
  <rect x='11.376' y='6.36633' width='1.9323' height='7.0851' transform='rotate(45 11.376 6.36633)' stroke='none' strokeLinejoin='round' />
35
36
  <path d='M7.73304 12.7427L6.3667 11.3763L5.68353 13.4259L7.73304 12.7427Z' stroke='none' strokeLinejoin='round' />
36
37
  <path d='M12.0595 5.68317C12.4368 5.30587 13.0485 5.30587 13.4258 5.68317V5.68317C13.8032 6.06048 13.8032 6.67221 13.4258 7.04951L12.7427 7.73268L11.3763 6.36634L12.0595 5.68317Z' stroke='none' />
37
- <circle cx='5' cy='2' r='1' fill='none' className={filledClassName} />
38
- <circle cx='5' cy='9' r='1' fill='none' className={filledClassName} />
38
+ <circle cx='5' cy='2' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
39
+ <circle cx='5' cy='9' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
39
40
  <path d='M2 7V4L5 2M2 7L5 9L8 7M2 7H8M2 7L5 2M5 2L8 4V7M5 2L8 7' stroke='none' />
40
- <circle cx='8' cy='4' r='1' fill='none' className={filledClassName} />
41
- <circle cx='8' cy='7' r='1' fill='none' className={filledClassName} />
42
- <circle cx='2' cy='7' r='1' fill='none' className={filledClassName} />
43
- <circle cx='2' cy='4' r='1' fill='none' className={filledClassName} />
41
+ <circle cx='8' cy='4' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
42
+ <circle cx='8' cy='7' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
43
+ <circle cx='2' cy='7' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
44
+ <circle cx='2' cy='4' r='1' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
44
45
  </svg>
45
46
  )
46
47
  break
@@ -57,13 +58,14 @@ const GraphQLEditsIcon = ({
57
58
  <rect x='17.064' y='9.54956' width='2.89845' height='10.6276' transform='rotate(45 17.064 9.54956)' stroke='none' strokeWidth={1.5} strokeLinejoin='round' />
58
59
  <path d='M11.5988 19.114L9.54932 17.0645L8.52456 20.1387L11.5988 19.114Z' stroke='none' strokeWidth={1.5} strokeLinejoin='round' />
59
60
  <path d='M18.4067 8.20711C18.7972 7.81658 19.4304 7.81658 19.8209 8.20711L20.4562 8.84241C20.8467 9.23293 20.8467 9.8661 20.4562 10.2566L19.1138 11.599L17.0643 9.54951L18.4067 8.20711Z' stroke='none' strokeWidth={1.5} />
60
- <circle cx='7.5' cy='3' r='1.5' fill='none' className={filledClassName} />
61
- <circle cx='7.5' cy='13.5' r='1.5' fill='none' className={filledClassName} />
61
+ <circle cx='7.5' cy='3' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
62
+ <circle cx='7.5' cy='13.5' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
62
63
  <path d='M3 10.5V6L7.5 3M3 10.5L7.5 13.5L12 10.5M3 10.5H12M3 10.5L7.5 3M7.5 3L12 6V10.5M7.5 3L12 10.5' stroke='none' strokeWidth={1.5} />
63
- <circle cx='12' cy='6' r='1.5' fill='none' className={filledClassName} />
64
- <circle cx='12' cy='10.5' r='1.5' fill='none' className={filledClassName} />
65
- <circle cx='3' cy='10.5' r='1.5' fill='none' className={filledClassName} />
66
- <circle cx='3' cy='6' r='1.5' fill='none' className={filledClassName} />
64
+ <circle cx='12' cy='6' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
65
+ <circle cx='12' cy='10.5' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
66
+ <circle cx='3' cy='10.5' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
67
+ <circle cx='3' cy='6' r='1.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
68
+
67
69
  </svg>
68
70
  )
69
71
  break
@@ -80,13 +82,13 @@ const GraphQLEditsIcon = ({
80
82
  <rect x='28.4404' y='15.9159' width='4.83075' height='17.7127' transform='rotate(45 28.4404 15.9159)' stroke='none' strokeWidth={2} strokeLinejoin='round' />
81
83
  <path d='M19.3319 31.8567L15.916 28.4408L14.2081 33.5646L19.3319 31.8567Z' stroke='none' strokeWidth={2} strokeLinejoin='round' />
82
84
  <path d='M31.1493 13.2071C31.5399 12.8166 32.173 12.8166 32.5636 13.2071L34.5652 15.2087C34.9557 15.5993 34.9557 16.2324 34.5652 16.623L31.8564 19.3317L28.4406 15.9159L31.1493 13.2071Z' stroke='none' strokeWidth={2} />
83
- <circle cx='12.5' cy='5' r='2.5' fill='none' className={filledClassName} />
84
- <circle cx='12.5' cy='22.5' r='2.5' fill='none' className={filledClassName} />
85
+ <circle cx='12.5' cy='5' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
86
+ <circle cx='12.5' cy='22.5' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
85
87
  <path d='M5 17.5V10L12.5 5M5 17.5L12.5 22.5L20 17.5M5 17.5H20M5 17.5L12.5 5M12.5 5L20 10V17.5M12.5 5L20 17.5' stroke='none' strokeWidth={2} />
86
- <circle cx='20' cy='10' r='2.5' fill='none' className={filledClassName} />
87
- <circle cx='20' cy='17.5' r='2.5' fill='none' className={filledClassName} />
88
- <circle cx='5' cy='17.5' r='2.5' fill='none' className={filledClassName} />
89
- <circle cx='5' cy='10' r='2.5' fill='none' className={filledClassName} />
88
+ <circle cx='20' cy='10' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
89
+ <circle cx='20' cy='17.5' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
90
+ <circle cx='5' cy='17.5' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
91
+ <circle cx='5' cy='10' r='2.5' fill='none' className={`${filledClassName} ${strokeTransparent}`} />
90
92
  </svg>
91
93
  )
92
94
  break
@@ -111,10 +111,10 @@
111
111
  }
112
112
 
113
113
  .filled-rich-black {
114
- @apply fill-rich-black
114
+ @apply fill-rich-black;
115
115
  }
116
116
  .filled-white {
117
- @apply fill-white
117
+ @apply fill-white;
118
118
  }
119
119
  .filled-error-red{
120
120
  @apply fill-error-red;
@@ -149,4 +149,8 @@
149
149
 
150
150
  .iconInactive {
151
151
  @apply opacity-70
152
+ }
153
+
154
+ .strokeTransparent {
155
+ stroke: transparent !important;
152
156
  }