@portnet/ui 0.1.19 → 0.1.21

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.
@@ -8,13 +8,16 @@ exports.default = void 0;
8
8
  require("core-js/modules/web.dom-collections.iterator.js");
9
9
  require("core-js/modules/es.symbol.description.js");
10
10
  var _styles = require("@mui/material/styles");
11
- var _DateTimePicker = require("@mui/x-date-pickers/DateTimePicker");
11
+ var _DatePicker = require("@mui/x-date-pickers/DatePicker");
12
12
  var _formik = require("formik");
13
13
  var _moment = _interopRequireDefault(require("moment"));
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
  var React = _interopRequireWildcard(require("react"));
16
16
  var _apperance = require("../../config/apperance");
17
17
  var _StyledMuiTextField = _interopRequireDefault(require("../common/StyledMuiTextField"));
18
+ var _PuiTextField = _interopRequireDefault(require("./PuiTextField"));
19
+ var _PuiButton = _interopRequireDefault(require("../buttons/PuiButton"));
20
+ var _PuiDialog = _interopRequireDefault(require("../others/PuiDialog"));
18
21
  var _jsxRuntime = require("react/jsx-runtime");
19
22
  const _excluded = ["id", "className", "sx", "label", "name", "required", "value", "minDate", "maxDate", "inputFormat", "format", "disablePast", "disableFuture", "error", "readOnly", "fullWidth", "disabled", "helperText", "onChange", "onBlur"],
20
23
  _excluded2 = ["id", "className", "sx", "label", "name", "required", "value", "minDate", "maxDate", "inputFormat", "format", "disablePast", "disableFuture", "error", "readOnly", "fullWidth", "disabled", "helperText", "onChange", "onBlur"],
@@ -31,22 +34,93 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
31
34
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
32
35
  const StyledDateMuiTextField = (0, _styles.styled)( /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_StyledMuiTextField.default, _objectSpread({
33
36
  ref: ref
34
- }, props))))(() => {
35
- return {
36
- "&.MuiFormControl-root": {
37
- display: "block",
38
- "& .MuiInputAdornment-root .MuiButtonBase-root": {
39
- padding: "6px",
40
- marginRight: "-8px",
41
- "& .MuiSvgIcon-root": {
42
- width: "16px",
43
- height: "16px"
44
- }
37
+ }, props))))(() => ({
38
+ "&.MuiFormControl-root": {
39
+ display: "block",
40
+ "& .MuiInputAdornment-root .MuiButtonBase-root": {
41
+ padding: "6px",
42
+ marginRight: "-8px",
43
+ "& .MuiSvgIcon-root": {
44
+ width: "16px",
45
+ height: "16px"
45
46
  }
46
47
  }
48
+ }
49
+ }));
50
+ const TimePickerDialog = _ref => {
51
+ let {
52
+ open,
53
+ selectedDate,
54
+ onTimeSelected,
55
+ onClose
56
+ } = _ref;
57
+ const defaultTime = (0, _moment.default)(selectedDate).isValid() ? (0, _moment.default)(selectedDate).format("HH:mm") : (0, _moment.default)().format("HH:mm");
58
+ const [selectedTime, setSelectedTime] = React.useState(defaultTime);
59
+ const handleTimeChange = event => {
60
+ setSelectedTime(event.target.value);
47
61
  };
48
- });
49
- const PuiStandardDateTimeField = /*#__PURE__*/React.forwardRef((_ref, ref) => {
62
+ const handleOk = () => {
63
+ onTimeSelected(selectedTime);
64
+ onClose();
65
+ };
66
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PuiDialog.default, {
67
+ open: open,
68
+ onClose: onClose,
69
+ slotProps: {
70
+ backdrop: {
71
+ style: {
72
+ backgroundColor: "transparent",
73
+ boxShadow: "none"
74
+ }
75
+ }
76
+ },
77
+ hideBackdrop: true,
78
+ PaperProps: {
79
+ elevation: 5,
80
+ sx: {
81
+ width: 380,
82
+ maxWidth: "720px!important"
83
+ }
84
+ },
85
+ sx: {
86
+ display: "flex",
87
+ alignItems: "center",
88
+ gap: 2,
89
+ width: 340,
90
+ justifyContent: "center",
91
+ alignSelf: "center"
92
+ },
93
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiTextField.default, {
94
+ id: "time",
95
+ type: "time",
96
+ value: selectedTime,
97
+ onChange: handleTimeChange,
98
+ InputLabelProps: {
99
+ shrink: true
100
+ },
101
+ inputProps: {
102
+ step: 60
103
+ },
104
+ formik: false,
105
+ sx: {
106
+ width: 150
107
+ }
108
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiButton.default, {
109
+ onClick: onClose,
110
+ sx: {
111
+ color: _apperance.palette.primary
112
+ },
113
+ children: "Annuler"
114
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiButton.default, {
115
+ onClick: handleOk,
116
+ sx: {
117
+ color: _apperance.palette.primary
118
+ },
119
+ children: "OK"
120
+ })]
121
+ });
122
+ };
123
+ const PuiStandardDateTimeField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
50
124
  let {
51
125
  id,
52
126
  className,
@@ -57,8 +131,8 @@ const PuiStandardDateTimeField = /*#__PURE__*/React.forwardRef((_ref, ref) => {
57
131
  value,
58
132
  minDate,
59
133
  maxDate,
60
- inputFormat,
61
- format,
134
+ inputFormat = "YYYY-MM-DDTHH:mm:ss.SSSZ",
135
+ format = "YYYY-MM-DDTHH:mm:ss.SSSZ",
62
136
  disablePast,
63
137
  disableFuture,
64
138
  error,
@@ -68,53 +142,71 @@ const PuiStandardDateTimeField = /*#__PURE__*/React.forwardRef((_ref, ref) => {
68
142
  helperText,
69
143
  onChange,
70
144
  onBlur
71
- } = _ref,
72
- rest = _objectWithoutProperties(_ref, _excluded);
73
- const handleChange = value => {
74
- const formattedValue = format ? value.format(format) : value.toISOString();
75
- onChange(formattedValue);
145
+ } = _ref2,
146
+ rest = _objectWithoutProperties(_ref2, _excluded);
147
+ const [dateTime, setDateTime] = React.useState(value || null);
148
+ const minDateObj = minDate ? (0, _moment.default)(minDate, format).toDate() : undefined;
149
+ const maxDateObj = maxDate ? (0, _moment.default)(maxDate, format).toDate() : undefined;
150
+ const [displayedDateTime, setDisplayedDateTime] = React.useState(value || null);
151
+ const [openTimePicker, setOpenTimePicker] = React.useState(false);
152
+ const handleDateChange = date => {
153
+ if (date) {
154
+ setDateTime((0, _moment.default)(date).format(format));
155
+ setOpenTimePicker(true);
156
+ }
76
157
  };
77
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DateTimePicker.DateTimePicker, _objectSpread({
78
- ref: ref,
79
- sx: sx,
80
- ampm: false,
81
- label: label,
82
- inputFormat: inputFormat,
83
- value: value,
84
- onChange: handleChange,
85
- disablePast: disablePast,
86
- disableFuture: disableFuture,
87
- disabled: disabled,
88
- readOnly: readOnly,
89
- viewRenderers: {
90
- hours: null,
91
- minutes: null,
92
- seconds: null
93
- },
94
- PopperProps: {
95
- sx: {
96
- "& .MuiButtonBase-root.Mui-selected, & .MuiButtonBase-root.Mui-selected:focus, & .MuiButtonBase-root.Mui-selected:hover": {
97
- backgroundColor: _apperance.palette.primary
158
+ const handleTimeSelected = time => {
159
+ const newDateTime = (0, _moment.default)(dateTime).format("YYYY-MM-DD") + "T" + time;
160
+ const updatedDateTime = (0, _moment.default)(newDateTime, "YYYY-MM-DDTHH:mm").format(format);
161
+ setDateTime(updatedDateTime);
162
+ setDisplayedDateTime(updatedDateTime);
163
+ onChange(updatedDateTime);
164
+ };
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
166
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DatePicker.DatePicker, _objectSpread({
167
+ ref: ref,
168
+ sx: sx,
169
+ ampm: false,
170
+ label: label,
171
+ inputFormat: "DD/MM/yyyy HH:mm",
172
+ value: displayedDateTime,
173
+ onChange: handleDateChange,
174
+ disablePast: disablePast,
175
+ disableFuture: disableFuture,
176
+ disabled: disabled,
177
+ maxDate: maxDateObj,
178
+ minDate: minDateObj,
179
+ readOnly: readOnly,
180
+ PopperProps: {
181
+ sx: {
182
+ "& .MuiButtonBase-root.Mui-selected, & .MuiButtonBase-root.Mui-selected:focus, & .MuiButtonBase-root.Mui-selected:hover": {
183
+ backgroundColor: _apperance.palette.primary
184
+ }
98
185
  }
99
- }
100
- },
101
- renderInput: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledDateMuiTextField, _objectSpread(_objectSpread({
102
- id: id,
103
- className: className,
104
- name: name,
105
- required: required,
106
- fullWidth: fullWidth,
107
- onBlur: onBlur,
108
- helperText: helperText
109
- }, params), {}, {
110
- error: params.error || error,
111
- inputProps: {
112
- name
113
- }
114
- }))
115
- }, rest));
186
+ },
187
+ renderInput: params => /*#__PURE__*/(0, _jsxRuntime.jsx)(StyledDateMuiTextField, _objectSpread(_objectSpread({}, params), {}, {
188
+ id: id,
189
+ className: className,
190
+ label: label,
191
+ name: name,
192
+ required: required,
193
+ fullWidth: fullWidth,
194
+ onBlur: onBlur,
195
+ helperText: helperText,
196
+ error: error,
197
+ inputProps: _objectSpread(_objectSpread({}, params.inputProps), {}, {
198
+ readOnly: readOnly
199
+ })
200
+ }))
201
+ }, rest)), /*#__PURE__*/(0, _jsxRuntime.jsx)(TimePickerDialog, {
202
+ open: openTimePicker,
203
+ selectedDate: dateTime,
204
+ onTimeSelected: handleTimeSelected,
205
+ onClose: () => setOpenTimePicker(false)
206
+ })]
207
+ });
116
208
  });
117
- const PuiFormikDateTimeField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
209
+ const PuiFormikDateTimeField = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
118
210
  let {
119
211
  id,
120
212
  className,
@@ -136,17 +228,16 @@ const PuiFormikDateTimeField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
136
228
  helperText,
137
229
  onChange,
138
230
  onBlur
139
- } = _ref2,
140
- rest = _objectWithoutProperties(_ref2, _excluded2);
231
+ } = _ref3,
232
+ rest = _objectWithoutProperties(_ref3, _excluded2);
141
233
  const [field, meta] = (0, _formik.useField)(name);
142
234
  const formikContext = (0, _formik.useFormikContext)();
143
235
  const [hasError, setHasError] = React.useState(false);
236
+ const minDateObj = minDate ? (0, _moment.default)(minDate, format).toDate() : undefined;
237
+ const maxDateObj = maxDate ? (0, _moment.default)(maxDate, format).toDate() : undefined;
144
238
  const handleChange = value => {
145
- const formattedValue = format ? value.format(format) : value.toISOString();
146
- formikContext.setFieldValue(name, formattedValue);
147
- if (onChange) {
148
- onChange(formattedValue);
149
- }
239
+ formikContext.setFieldValue(name, value);
240
+ onChange(value);
150
241
  };
151
242
  const handleBlur = event => {
152
243
  onBlur(event);
@@ -171,7 +262,8 @@ const PuiFormikDateTimeField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
171
262
  required: required,
172
263
  value: Boolean(field.value) ? format ? _moment.default.utc(field.value, format) : _moment.default.utc(field.value) : null,
173
264
  format: format,
174
- minDate: minDate,
265
+ minDate: minDateObj,
266
+ maxDate: maxDateObj,
175
267
  inputFormat: inputFormat,
176
268
  disableFuture: disableFuture,
177
269
  disablePast: disablePast,
@@ -184,7 +276,7 @@ const PuiFormikDateTimeField = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
184
276
  onBlur: handleBlur
185
277
  }, rest));
186
278
  });
187
- const PuiDateTimeField = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
279
+ const PuiDateTimeField = /*#__PURE__*/React.forwardRef((_ref4, ref) => {
188
280
  let {
189
281
  formik,
190
282
  id,
@@ -207,8 +299,8 @@ const PuiDateTimeField = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
207
299
  helperText,
208
300
  onChange,
209
301
  onBlur
210
- } = _ref3,
211
- rest = _objectWithoutProperties(_ref3, _excluded3);
302
+ } = _ref4,
303
+ rest = _objectWithoutProperties(_ref4, _excluded3);
212
304
  return /*#__PURE__*/React.createElement(formik ? PuiFormikDateTimeField : PuiStandardDateTimeField, _objectSpread({
213
305
  ref,
214
306
  id,
@@ -21,7 +21,7 @@ var _PuiTableAction = _interopRequireDefault(require("./PuiTableAction"));
21
21
  var _ActionPopover = _interopRequireDefault(require("./ActionPopover"));
22
22
  var _system = require("@mui/system");
23
23
  var _jsxRuntime = require("react/jsx-runtime");
24
- const _excluded = ["id", "className", "sx", "elevate", "rows", "rowCount", "columns", "paginationMode", "page", "pageSize", "checkboxSelection", "loading", "stripped", "actions", "oneActionOnly", "onSelect", "onPageChange", "onPageSizeChange"];
24
+ const _excluded = ["id", "className", "sx", "elevate", "rows", "rowCount", "columns", "paginationMode", "page", "pageSize", "checkboxSelection", "loading", "stripped", "actions", "oneActionOnly", "onSelect", "onPageChange", "onPageSizeChange", "rowDetailPanel"];
25
25
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
26
26
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
27
27
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -294,7 +294,8 @@ const PuiTable = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
294
294
  oneActionOnly,
295
295
  onSelect,
296
296
  onPageChange,
297
- onPageSizeChange
297
+ onPageSizeChange,
298
+ rowDetailPanel
298
299
  } = _ref3,
299
300
  rest = _objectWithoutProperties(_ref3, _excluded);
300
301
  const [appColumns, setAppColumns] = React.useState(columns);
@@ -357,6 +358,15 @@ const PuiTable = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
357
358
  }));
358
359
  // eslint-disable-next-line react-hooks/exhaustive-deps
359
360
  }, [actions, columns]);
361
+ const renderRowDetailPanel = params => {
362
+ const {
363
+ data
364
+ } = params;
365
+ // Render the passed rowDetailPanel component with the row data
366
+ return /*#__PURE__*/React.cloneElement(rowDetailPanel, {
367
+ rowData: data
368
+ });
369
+ };
360
370
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
361
371
  style: {
362
372
  width: '100%'
@@ -398,7 +408,8 @@ const PuiTable = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
398
408
  onPageChange: onPageChange,
399
409
  onPageSizeChange: onPageSizeChange,
400
410
  onSelectionModelChange: onSelect,
401
- autosizeOptions: autosizeOptions
411
+ autosizeOptions: autosizeOptions,
412
+ rowDetailPanel: renderRowDetailPanel
402
413
  }, rest))
403
414
  });
404
415
  });
@@ -421,7 +432,8 @@ PuiTable.propTypes = {
421
432
  onSelect: _propTypes.default.func,
422
433
  onPageChange: _propTypes.default.func,
423
434
  onPageSizeChange: _propTypes.default.func,
424
- onSelectionModelChange: _propTypes.default.func
435
+ onSelectionModelChange: _propTypes.default.func,
436
+ rowDetailPanel: _propTypes.default.element
425
437
  };
426
438
  PuiTable.defaultProps = {
427
439
  oneActionOnly: false,
package/package.json CHANGED
@@ -1,97 +1,99 @@
1
- {
2
- "name": "@portnet/ui",
3
- "version": "0.1.19",
4
- "description": "Portnet UI",
5
- "keywords": [
6
- "react",
7
- "components",
8
- "ui"
9
- ],
10
- "main": "dist/index.js",
11
- "private": false,
12
- "files": [
13
- "dist",
14
- "README.md"
15
- ],
16
- "dependencies": {
17
- "@emotion/react": "^11.10.5",
18
- "@emotion/styled": "^11.10.5",
19
- "@mui/icons-material": "^5.10.16",
20
- "@mui/lab": "^5.0.0-alpha.60",
21
- "@mui/material": "^5.10.16",
22
- "@mui/x-data-grid": "^5.17.26",
23
- "@mui/x-date-pickers": "^5.0.4",
24
- "@testing-library/jest-dom": "^5.16.5",
25
- "@testing-library/react": "^13.4.0",
26
- "@testing-library/user-event": "^13.5.0",
27
- "axios": "^0.27.2",
28
- "formik": "^2.2.9",
29
- "lodash": "^4.17.21",
30
- "moment": "^2.29.4",
31
- "react": "^18.2.0",
32
- "react-dom": "^18.2.0",
33
- "react-scripts": "^5.0.1",
34
- "react-transition-group": "^4.4.5",
35
- "styled-components": "^6.1.3",
36
- "uuid": "^9.0.0",
37
- "web-vitals": "^2.1.4",
38
- "yup": "^0.32.11"
39
- },
40
- "scripts": {
41
- "start": "react-scripts start",
42
- "build": "rimraf dist && cross-env NODE_ENV=production babel src/lib --out-dir dist --copy-files",
43
- "test": "react-scripts test",
44
- "eject": "react-scripts eject",
45
- "storybook": "storybook dev -p 6006 -s public",
46
- "build-storybook": "storybook build -s public"
47
- },
48
- "eslintConfig": {
49
- "extends": [
50
- "react-app",
51
- "react-app/jest"
52
- ],
53
- "overrides": [
54
- {
55
- "files": [
56
- "**/*.stories.*"
57
- ],
58
- "rules": {
59
- "import/no-anonymous-default-export": "off"
60
- }
61
- }
62
- ]
63
- },
64
- "browserslist": {
65
- "production": [
66
- ">0.2%",
67
- "not dead",
68
- "not op_mini all"
69
- ],
70
- "development": [
71
- "last 1 chrome version",
72
- "last 1 firefox version",
73
- "last 1 safari version"
74
- ]
75
- },
76
- "devDependencies": {
77
- "@babel/cli": "^7.19.3",
78
- "@babel/core": "^7.20.5",
79
- "@babel/preset-env": "^7.20.2",
80
- "@babel/preset-react": "^7.18.6",
81
- "@storybook/addon-actions": "^7.6.4",
82
- "@storybook/addon-essentials": "^7.6.4",
83
- "@storybook/addon-interactions": "^7.6.4",
84
- "@storybook/addon-links": "^7.6.4",
85
- "@storybook/node-logger": "^7.6.4",
86
- "@storybook/preset-create-react-app": "^7.6.4",
87
- "@storybook/react": "^7.6.4",
88
- "@storybook/react-webpack5": "^7.6.4",
89
- "@storybook/testing-library": "^0.2.2",
90
- "cross-env": "^7.0.3",
91
- "husky": "^4.3.8",
92
- "prop-types": "^15.8.1",
93
- "rimraf": "^5.0.5",
94
- "storybook": "^7.6.4",
95
- "webpack": "^5.75.0"
96
- }
97
- }
1
+ {
2
+ "name": "@portnet/ui",
3
+ "version": "0.1.21",
4
+ "description": "Portnet UI",
5
+ "keywords": [
6
+ "react",
7
+ "components",
8
+ "ui"
9
+ ],
10
+ "main": "dist/index.js",
11
+ "private": false,
12
+ "files": [
13
+ "dist",
14
+ "README.md"
15
+ ],
16
+ "dependencies": {
17
+ "@emotion/react": "^11.10.5",
18
+ "@emotion/styled": "^11.10.5",
19
+ "@mui/icons-material": "^5.10.16",
20
+ "@mui/lab": "^5.0.0-alpha.60",
21
+ "@mui/material": "^5.10.16",
22
+ "@mui/x-data-grid": "^5.17.26",
23
+ "@mui/x-data-grid-pro": "^5.17.26",
24
+ "@mui/x-date-pickers": "^5.0.4",
25
+ "@testing-library/jest-dom": "^5.16.5",
26
+ "@testing-library/react": "^13.4.0",
27
+ "@testing-library/user-event": "^13.5.0",
28
+ "axios": "^0.27.2",
29
+ "formik": "^2.2.9",
30
+ "lodash": "^4.17.21",
31
+ "moment": "^2.29.4",
32
+ "moment-timezone": "^0.5.45",
33
+ "react": "^18.2.0",
34
+ "react-dom": "^18.2.0",
35
+ "react-scripts": "^5.0.1",
36
+ "react-transition-group": "^4.4.5",
37
+ "styled-components": "^6.1.3",
38
+ "uuid": "^9.0.0",
39
+ "web-vitals": "^2.1.4",
40
+ "yup": "^0.32.11"
41
+ },
42
+ "scripts": {
43
+ "start": "react-scripts start",
44
+ "build": "rimraf dist && cross-env NODE_ENV=production babel src/lib --out-dir dist --copy-files",
45
+ "test": "react-scripts test",
46
+ "eject": "react-scripts eject",
47
+ "storybook": "storybook dev -p 6006 -s public",
48
+ "build-storybook": "storybook build -s public"
49
+ },
50
+ "eslintConfig": {
51
+ "extends": [
52
+ "react-app",
53
+ "react-app/jest"
54
+ ],
55
+ "overrides": [
56
+ {
57
+ "files": [
58
+ "**/*.stories.*"
59
+ ],
60
+ "rules": {
61
+ "import/no-anonymous-default-export": "off"
62
+ }
63
+ }
64
+ ]
65
+ },
66
+ "browserslist": {
67
+ "production": [
68
+ ">0.2%",
69
+ "not dead",
70
+ "not op_mini all"
71
+ ],
72
+ "development": [
73
+ "last 1 chrome version",
74
+ "last 1 firefox version",
75
+ "last 1 safari version"
76
+ ]
77
+ },
78
+ "devDependencies": {
79
+ "@babel/cli": "^7.19.3",
80
+ "@babel/core": "^7.20.5",
81
+ "@babel/preset-env": "^7.20.2",
82
+ "@babel/preset-react": "^7.18.6",
83
+ "@storybook/addon-actions": "^7.6.4",
84
+ "@storybook/addon-essentials": "^7.6.4",
85
+ "@storybook/addon-interactions": "^7.6.4",
86
+ "@storybook/addon-links": "^7.6.4",
87
+ "@storybook/node-logger": "^7.6.4",
88
+ "@storybook/preset-create-react-app": "^7.6.4",
89
+ "@storybook/react": "^7.6.4",
90
+ "@storybook/react-webpack5": "^7.6.4",
91
+ "@storybook/testing-library": "^0.2.2",
92
+ "cross-env": "^7.0.3",
93
+ "husky": "^4.3.8",
94
+ "prop-types": "^15.8.1",
95
+ "rimraf": "^5.0.5",
96
+ "storybook": "^7.6.4",
97
+ "webpack": "^5.75.0"
98
+ }
99
+ }