@itcase/forms 1.0.53 → 1.0.55

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.
@@ -53,8 +53,9 @@ const emailValidation = (value, context) => {
53
53
  if (!value) {
54
54
  return true;
55
55
  }
56
- // eslint-disable-next-line
57
- const regexp = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;
56
+
57
+ // from https://www.regular-expressions.info/email.html
58
+ const regexp = /^[a-za-яёЁ0-9_-]+(?:\.[a-za-яёЁ0-9_-]+)*@(?:[a-za-яёЁ0-9](?:[a-za-яёЁ0-9-]*[a-za-яёЁ0-9])?\.)+[a-za-яёЁ0-9]+$/;
58
59
  return regexp.test(String(value).toLowerCase());
59
60
  };
60
61
  const addRequiredFieldsParamToSchema = schema => {
@@ -148,6 +149,10 @@ function FieldWrapperBase(props) {
148
149
  labelTextColor,
149
150
  labelTextSize,
150
151
  labelTextWidth,
152
+ helpText,
153
+ helpTextSize,
154
+ helpTextWeight,
155
+ helpTextColor,
151
156
  message,
152
157
  messageTextColor,
153
158
  messageTextSize,
@@ -215,16 +220,19 @@ function FieldWrapperBase(props) {
215
220
  return /*#__PURE__*/React__default.default.createElement(Tag, {
216
221
  className: clsx__default.default(formFieldClass, 'form__item', 'form-field', type && `form-field_type_${type}`, set && `form-field_set_${set}`, sizeClass, fillClass, shapeClass, isDisabled && `form-field_state_disabled`, isHidden && `form-field_state_hidden`, directionClass, widthClass),
217
222
  "data-tour": dataTour,
223
+ "data-testid": `${inputName}Field`,
218
224
  style: formFieldStyles
219
225
  }, before, (label || labelHidden) && /*#__PURE__*/React__default.default.createElement("div", {
220
226
  htmlFor: id,
221
- className: clsx__default.default('form-field__label')
227
+ className: clsx__default.default('form-field__label'),
228
+ "data-testid": `${inputName}FieldLabel`
222
229
  }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
223
230
  size: labelTextSize,
224
231
  textWeight: labelTextWidth,
225
232
  textColor: labelTextColor
226
233
  }, label, labelHidden && '\u00A0')), desc && /*#__PURE__*/React__default.default.createElement("div", {
227
- className: "form-field__desc"
234
+ className: "form-field__desc",
235
+ "data-testid": `${inputName}FieldDesc`
228
236
  }, /*#__PURE__*/React__default.default.createElement(Text.Text, {
229
237
  size: descTextSize,
230
238
  textWeight: descTextWidth,
@@ -240,21 +248,25 @@ function FieldWrapperBase(props) {
240
248
  size: dividerSize,
241
249
  fill: dividerFill
242
250
  })), showMessage && /*#__PURE__*/React__default.default.createElement("div", {
243
- className: "form-field__message"
251
+ className: "form-field__message",
252
+ "data-testid": `${inputName}FieldMessage`
244
253
  }, Boolean(showError) && error && typeof error === 'string' && /*#__PURE__*/React__default.default.createElement(Text.Text, {
245
254
  className: "form-field__message-item form-field__message-item_type-error",
246
255
  size: errorMessageTextSize,
247
256
  textWeight: errorMessageTextWeight,
248
257
  textColor: errorMessageTextColor,
249
- id: `${inputName}-error`
250
- }, error), Boolean(message) && (!error || typeof error !== 'string') && /*#__PURE__*/React__default.default.createElement(Text.Text, {
258
+ id: `${inputName}-error`,
259
+ dataTestId: `${inputName}FieldMessageError`
260
+ }, error), Boolean(helpText) && (!error || typeof error !== 'string') && /*#__PURE__*/React__default.default.createElement(Text.Text, {
261
+ className: "form-field__message-item form-field__message-item_type_help-text",
262
+ size: helpTextSize,
263
+ textWeight: helpTextWeight,
264
+ textColor: helpTextColor,
265
+ dataTestId: `${inputName}FieldMessageHelpText`
266
+ }, helpText), (!showError && !helpText || showError && !helpText && (!error || typeof error !== 'string')) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
251
267
  className: "form-field__message-item form-field__message-item_type_message",
252
268
  size: messageTextSize,
253
- textWeight: messageTextWeight,
254
- textColor: messageTextColor
255
- }, message), (!showError && !message || showError && !message && (!error || typeof error !== 'string')) && /*#__PURE__*/React__default.default.createElement(Text.Text, {
256
- className: "form-field__message-item form-field__message-item_type_message",
257
- size: messageTextSize
269
+ dataTestId: `${inputName}FieldMessagePlaceholder`
258
270
  }, '\u00A0')), after);
259
271
  }
260
272
  FieldWrapperBase.defaultProps = {
@@ -1307,6 +1319,7 @@ const InputField = /*#__PURE__*/React__default.default.memo(function InputField(
1307
1319
  isRevealable,
1308
1320
  name,
1309
1321
  parse,
1322
+ dataTestId,
1310
1323
  iconSize,
1311
1324
  isDisabled,
1312
1325
  iconBorder,
@@ -1371,7 +1384,8 @@ const InputField = /*#__PURE__*/React__default.default.memo(function InputField(
1371
1384
  onBlur: input.onBlur,
1372
1385
  onChange: onChangeField,
1373
1386
  onFocus: input.onFocus,
1374
- isDisabled: isDisabled
1387
+ isDisabled: isDisabled,
1388
+ dataTestId: `${input.name}FieldInput`
1375
1389
  }, inputProps)), isRevealable && /*#__PURE__*/React__default.default.createElement(Icon.Icon, {
1376
1390
  className: "form-field__icon",
1377
1391
  iconFill: iconFill,
@@ -1927,7 +1941,7 @@ const focusOnError = (formElementsList, errors) => {
1927
1941
  }
1928
1942
  }
1929
1943
 
1930
- // the field is covered by the header because header is "sticky",
1944
+ // The field is covered by the header because header is "sticky",
1931
1945
  // that's we scroll manually so that the field falls into the center of the visible area
1932
1946
  if (errorFieldElement) {
1933
1947
  errorFieldElement.scrollIntoView({
@@ -2120,7 +2134,12 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2120
2134
  className,
2121
2135
  config,
2122
2136
  dataTour,
2137
+ dataTestId,
2123
2138
  dataTourButtons,
2139
+ dataTestIdButtons,
2140
+ dataTestIdPrimaryButton,
2141
+ dataTestIdSecondaryButton,
2142
+ dataTestIdTertiaryButton,
2124
2143
  dataTourPrimaryButton,
2125
2144
  dataTourSecondaryButton,
2126
2145
  dataTourTertiaryButton,
@@ -2221,6 +2240,7 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2221
2240
  className: clsx__default.default(className, 'form', set && `form_set_${set}`, type && `form_type_${type}`, directionClass, fillClass, shapeClass, elevationClass),
2222
2241
  name: formName,
2223
2242
  "data-tour": dataTour,
2243
+ "data-testId": dataTestId,
2224
2244
  ref: () => onRefFormInstance(form),
2225
2245
  onSubmit: handleSubmit,
2226
2246
  autoComplete: disableFieldsAutoComplete ? 'off' : undefined,
@@ -2270,7 +2290,8 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2270
2290
  padding: buttonPadding,
2271
2291
  gap: buttonGap,
2272
2292
  className: "form__button",
2273
- dataTour: dataTourButtons
2293
+ dataTour: dataTourButtons,
2294
+ dataTestId: dataTestIdButtons
2274
2295
  }, primaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2275
2296
  width: "fill",
2276
2297
  className: "form__button-item",
@@ -2281,7 +2302,8 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2281
2302
  labelSize: primaryButtonLabelSize,
2282
2303
  labelTextWeight: primaryButtonLabelTextWeight,
2283
2304
  label: primaryButtonLabel,
2284
- dataTour: dataTourPrimaryButton
2305
+ dataTour: dataTourPrimaryButton,
2306
+ dataTestId: dataTestIdPrimaryButton
2285
2307
  }) : primaryButton, secondaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2286
2308
  width: "fill",
2287
2309
  className: "form__button-item",
@@ -2293,7 +2315,8 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2293
2315
  labelTextWeight: secondaryButtonLabelTextWeight,
2294
2316
  label: secondaryButtonLabel,
2295
2317
  onClick: onClickSecondaryButton,
2296
- dataTour: dataTourSecondaryButton
2318
+ dataTour: dataTourSecondaryButton,
2319
+ dataTestId: dataTestIdSecondaryButton
2297
2320
  }) : secondaryButton, tertiaryButtonLabel ? /*#__PURE__*/React__default.default.createElement(Button.Button, {
2298
2321
  width: "fill",
2299
2322
  className: "form__button-item",
@@ -2305,7 +2328,8 @@ const FinalForm = /*#__PURE__*/React__default.default.forwardRef(function FinalF
2305
2328
  labelTextWeight: tertiaryButtonLabelTextWeight,
2306
2329
  label: tertiaryButtonLabel,
2307
2330
  onClick: onClickTertiaryButton,
2308
- dataTour: dataTourTertiaryButton
2331
+ dataTour: dataTourTertiaryButton,
2332
+ dataTestId: dataTestIdTertiaryButton
2309
2333
  }) : tertiaryButton), after);
2310
2334
  },
2311
2335
  subscription: {
@@ -43,8 +43,9 @@ const emailValidation = (value, context) => {
43
43
  if (!value) {
44
44
  return true;
45
45
  }
46
- // eslint-disable-next-line
47
- const regexp = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]{2,}(?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/;
46
+
47
+ // from https://www.regular-expressions.info/email.html
48
+ const regexp = /^[a-za-яёЁ0-9_-]+(?:\.[a-za-яёЁ0-9_-]+)*@(?:[a-za-яёЁ0-9](?:[a-za-яёЁ0-9-]*[a-za-яёЁ0-9])?\.)+[a-za-яёЁ0-9]+$/;
48
49
  return regexp.test(String(value).toLowerCase());
49
50
  };
50
51
  const addRequiredFieldsParamToSchema = schema => {
@@ -138,6 +139,10 @@ function FieldWrapperBase(props) {
138
139
  labelTextColor,
139
140
  labelTextSize,
140
141
  labelTextWidth,
142
+ helpText,
143
+ helpTextSize,
144
+ helpTextWeight,
145
+ helpTextColor,
141
146
  message,
142
147
  messageTextColor,
143
148
  messageTextSize,
@@ -205,16 +210,19 @@ function FieldWrapperBase(props) {
205
210
  return /*#__PURE__*/React.createElement(Tag, {
206
211
  className: clsx(formFieldClass, 'form__item', 'form-field', type && `form-field_type_${type}`, set && `form-field_set_${set}`, sizeClass, fillClass, shapeClass, isDisabled && `form-field_state_disabled`, isHidden && `form-field_state_hidden`, directionClass, widthClass),
207
212
  "data-tour": dataTour,
213
+ "data-testid": `${inputName}Field`,
208
214
  style: formFieldStyles
209
215
  }, before, (label || labelHidden) && /*#__PURE__*/React.createElement("div", {
210
216
  htmlFor: id,
211
- className: clsx('form-field__label')
217
+ className: clsx('form-field__label'),
218
+ "data-testid": `${inputName}FieldLabel`
212
219
  }, /*#__PURE__*/React.createElement(Text, {
213
220
  size: labelTextSize,
214
221
  textWeight: labelTextWidth,
215
222
  textColor: labelTextColor
216
223
  }, label, labelHidden && '\u00A0')), desc && /*#__PURE__*/React.createElement("div", {
217
- className: "form-field__desc"
224
+ className: "form-field__desc",
225
+ "data-testid": `${inputName}FieldDesc`
218
226
  }, /*#__PURE__*/React.createElement(Text, {
219
227
  size: descTextSize,
220
228
  textWeight: descTextWidth,
@@ -230,21 +238,25 @@ function FieldWrapperBase(props) {
230
238
  size: dividerSize,
231
239
  fill: dividerFill
232
240
  })), showMessage && /*#__PURE__*/React.createElement("div", {
233
- className: "form-field__message"
241
+ className: "form-field__message",
242
+ "data-testid": `${inputName}FieldMessage`
234
243
  }, Boolean(showError) && error && typeof error === 'string' && /*#__PURE__*/React.createElement(Text, {
235
244
  className: "form-field__message-item form-field__message-item_type-error",
236
245
  size: errorMessageTextSize,
237
246
  textWeight: errorMessageTextWeight,
238
247
  textColor: errorMessageTextColor,
239
- id: `${inputName}-error`
240
- }, error), Boolean(message) && (!error || typeof error !== 'string') && /*#__PURE__*/React.createElement(Text, {
248
+ id: `${inputName}-error`,
249
+ dataTestId: `${inputName}FieldMessageError`
250
+ }, error), Boolean(helpText) && (!error || typeof error !== 'string') && /*#__PURE__*/React.createElement(Text, {
251
+ className: "form-field__message-item form-field__message-item_type_help-text",
252
+ size: helpTextSize,
253
+ textWeight: helpTextWeight,
254
+ textColor: helpTextColor,
255
+ dataTestId: `${inputName}FieldMessageHelpText`
256
+ }, helpText), (!showError && !helpText || showError && !helpText && (!error || typeof error !== 'string')) && /*#__PURE__*/React.createElement(Text, {
241
257
  className: "form-field__message-item form-field__message-item_type_message",
242
258
  size: messageTextSize,
243
- textWeight: messageTextWeight,
244
- textColor: messageTextColor
245
- }, message), (!showError && !message || showError && !message && (!error || typeof error !== 'string')) && /*#__PURE__*/React.createElement(Text, {
246
- className: "form-field__message-item form-field__message-item_type_message",
247
- size: messageTextSize
259
+ dataTestId: `${inputName}FieldMessagePlaceholder`
248
260
  }, '\u00A0')), after);
249
261
  }
250
262
  FieldWrapperBase.defaultProps = {
@@ -1297,6 +1309,7 @@ const InputField = /*#__PURE__*/React.memo(function InputField(props) {
1297
1309
  isRevealable,
1298
1310
  name,
1299
1311
  parse,
1312
+ dataTestId,
1300
1313
  iconSize,
1301
1314
  isDisabled,
1302
1315
  iconBorder,
@@ -1361,7 +1374,8 @@ const InputField = /*#__PURE__*/React.memo(function InputField(props) {
1361
1374
  onBlur: input.onBlur,
1362
1375
  onChange: onChangeField,
1363
1376
  onFocus: input.onFocus,
1364
- isDisabled: isDisabled
1377
+ isDisabled: isDisabled,
1378
+ dataTestId: `${input.name}FieldInput`
1365
1379
  }, inputProps)), isRevealable && /*#__PURE__*/React.createElement(Icon, {
1366
1380
  className: "form-field__icon",
1367
1381
  iconFill: iconFill,
@@ -1917,7 +1931,7 @@ const focusOnError = (formElementsList, errors) => {
1917
1931
  }
1918
1932
  }
1919
1933
 
1920
- // the field is covered by the header because header is "sticky",
1934
+ // The field is covered by the header because header is "sticky",
1921
1935
  // that's we scroll manually so that the field falls into the center of the visible area
1922
1936
  if (errorFieldElement) {
1923
1937
  errorFieldElement.scrollIntoView({
@@ -2110,7 +2124,12 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2110
2124
  className,
2111
2125
  config,
2112
2126
  dataTour,
2127
+ dataTestId,
2113
2128
  dataTourButtons,
2129
+ dataTestIdButtons,
2130
+ dataTestIdPrimaryButton,
2131
+ dataTestIdSecondaryButton,
2132
+ dataTestIdTertiaryButton,
2114
2133
  dataTourPrimaryButton,
2115
2134
  dataTourSecondaryButton,
2116
2135
  dataTourTertiaryButton,
@@ -2211,6 +2230,7 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2211
2230
  className: clsx(className, 'form', set && `form_set_${set}`, type && `form_type_${type}`, directionClass, fillClass, shapeClass, elevationClass),
2212
2231
  name: formName,
2213
2232
  "data-tour": dataTour,
2233
+ "data-testId": dataTestId,
2214
2234
  ref: () => onRefFormInstance(form),
2215
2235
  onSubmit: handleSubmit,
2216
2236
  autoComplete: disableFieldsAutoComplete ? 'off' : undefined,
@@ -2260,7 +2280,8 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2260
2280
  padding: buttonPadding,
2261
2281
  gap: buttonGap,
2262
2282
  className: "form__button",
2263
- dataTour: dataTourButtons
2283
+ dataTour: dataTourButtons,
2284
+ dataTestId: dataTestIdButtons
2264
2285
  }, primaryButtonLabel ? /*#__PURE__*/React.createElement(Button, {
2265
2286
  width: "fill",
2266
2287
  className: "form__button-item",
@@ -2271,7 +2292,8 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2271
2292
  labelSize: primaryButtonLabelSize,
2272
2293
  labelTextWeight: primaryButtonLabelTextWeight,
2273
2294
  label: primaryButtonLabel,
2274
- dataTour: dataTourPrimaryButton
2295
+ dataTour: dataTourPrimaryButton,
2296
+ dataTestId: dataTestIdPrimaryButton
2275
2297
  }) : primaryButton, secondaryButtonLabel ? /*#__PURE__*/React.createElement(Button, {
2276
2298
  width: "fill",
2277
2299
  className: "form__button-item",
@@ -2283,7 +2305,8 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2283
2305
  labelTextWeight: secondaryButtonLabelTextWeight,
2284
2306
  label: secondaryButtonLabel,
2285
2307
  onClick: onClickSecondaryButton,
2286
- dataTour: dataTourSecondaryButton
2308
+ dataTour: dataTourSecondaryButton,
2309
+ dataTestId: dataTestIdSecondaryButton
2287
2310
  }) : secondaryButton, tertiaryButtonLabel ? /*#__PURE__*/React.createElement(Button, {
2288
2311
  width: "fill",
2289
2312
  className: "form__button-item",
@@ -2295,7 +2318,8 @@ const FinalForm = /*#__PURE__*/React.forwardRef(function FinalForm(props, ref) {
2295
2318
  labelTextWeight: tertiaryButtonLabelTextWeight,
2296
2319
  label: tertiaryButtonLabel,
2297
2320
  onClick: onClickTertiaryButton,
2298
- dataTour: dataTourTertiaryButton
2321
+ dataTour: dataTourTertiaryButton,
2322
+ dataTestId: dataTestIdTertiaryButton
2299
2323
  }) : tertiaryButton), after);
2300
2324
  },
2301
2325
  subscription: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/forms",
3
- "version": "1.0.53",
3
+ "version": "1.0.55",
4
4
  "description": "Forms fields, inputs, etc.",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -30,14 +30,14 @@
30
30
  "registry": "https://registry.npmjs.org/"
31
31
  },
32
32
  "dependencies": {
33
- "@itcase/common": "^1.1.12",
34
- "@itcase/ui": "^1.0.97",
33
+ "@itcase/common": "^1.1.13",
34
+ "@itcase/ui": "^1.1.0",
35
35
  "axios": "^1.6.7",
36
36
  "clsx": "^2.1.0",
37
37
  "date-fns": "2.0.0-alpha.7",
38
38
  "final-form": "^4.20.10",
39
39
  "final-form-focus": "^1.1.2",
40
- "libphonenumber-js": "^1.10.55",
40
+ "libphonenumber-js": "^1.10.57",
41
41
  "lodash": "^4.17.21",
42
42
  "luxon": "^3.4.4",
43
43
  "postcss": "^8.4.35",
@@ -50,12 +50,12 @@
50
50
  "react-select": "^5.8.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@babel/core": "^7.23.9",
53
+ "@babel/core": "^7.24.0",
54
54
  "@babel/eslint-parser": "^7.23.10",
55
- "@babel/preset-env": "^7.23.9",
55
+ "@babel/preset-env": "^7.24.0",
56
56
  "@babel/preset-react": "^7.23.3",
57
- "@commitlint/cli": "^18.6.1",
58
- "@commitlint/config-conventional": "^18.6.2",
57
+ "@commitlint/cli": "^19.0.3",
58
+ "@commitlint/config-conventional": "^19.0.3",
59
59
  "@rollup/plugin-babel": "^6.0.4",
60
60
  "@rollup/plugin-commonjs": "^25.0.7",
61
61
  "@rollup/plugin-json": "^6.1.0",
@@ -64,7 +64,7 @@
64
64
  "@semantic-release/git": "^10.0.1",
65
65
  "babel-plugin-inline-react-svg": "^2.0.2",
66
66
  "babel-plugin-transform-react-remove-prop-types": "^0.4.24",
67
- "eslint": "8.56.0",
67
+ "eslint": "8.57.0",
68
68
  "eslint-config-prettier": "^9.1.0",
69
69
  "eslint-config-standard": "^17.1.0",
70
70
  "eslint-plugin-import": "^2.29.1",
@@ -75,31 +75,31 @@
75
75
  "eslint-plugin-standard": "^5.0.0",
76
76
  "husky": "^9.0.11",
77
77
  "lint-staged": "^15.2.2",
78
- "npm": "^10.4.0",
78
+ "npm": "^10.5.0",
79
79
  "postcss-aspect-ratio-polyfill": "^2.0.0",
80
80
  "postcss-cli": "^11.0.0",
81
81
  "postcss-combine-duplicated-selectors": "^10.0.3",
82
- "postcss-dark-theme-class": "^1.2.0",
83
- "postcss-discard-duplicates": "^6.0.1",
82
+ "postcss-dark-theme-class": "^1.2.1",
83
+ "postcss-discard-duplicates": "^6.0.2",
84
84
  "postcss-each": "^1.1.0",
85
85
  "postcss-easings": "^4.0.0",
86
86
  "postcss-extend-rule": "^4.0.0",
87
87
  "postcss-flexbugs-fixes": "^5.0.2",
88
88
  "postcss-hexrgba": "^2.1.0",
89
- "postcss-import": "^16.0.0",
89
+ "postcss-import": "^16.0.1",
90
90
  "postcss-import-ext-glob": "^2.1.1",
91
91
  "postcss-mixins": "^9.0.4",
92
92
  "postcss-nested": "^6.0.1",
93
93
  "postcss-nested-ancestors": "^3.0.0",
94
94
  "postcss-normalize": "^10.0.1",
95
95
  "postcss-prepend-imports": "^1.0.1",
96
- "postcss-preset-env": "^9.3.0",
96
+ "postcss-preset-env": "^9.4.0",
97
97
  "postcss-pxtorem": "^6.1.0",
98
98
  "postcss-responsive-type": "github:ITCase/postcss-responsive-type",
99
99
  "postcss-sort-media-queries": "^5.2.0",
100
100
  "prettier": "^3.2.5",
101
- "react-datepicker": "^6.1.0",
102
- "rollup": "^4.10.0",
101
+ "react-datepicker": "^6.2.0",
102
+ "rollup": "^4.12.0",
103
103
  "rollup-plugin-peer-deps-external": "^2.2.4",
104
104
  "semantic-release": "^23.0.2",
105
105
  "stylelint": "^16.2.1",