@hai-dev/ui-kit 1.0.0 → 1.0.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.
Files changed (41) hide show
  1. package/dist/Button-0AB7oP6Y.js +655 -0
  2. package/dist/ButtonBase-Bw_3RZmN.js +5453 -0
  3. package/dist/CircularProgress-BD6BPlN2.js +290 -0
  4. package/dist/{DialogTitle-1A3dJ174.js → DialogTitle-iOQ7wKEt.js} +78 -78
  5. package/dist/assets/button.css +1 -0
  6. package/dist/assets/upload-button.css +1 -1
  7. package/dist/assets/upload-dialog.css +1 -1
  8. package/dist/button.module-BZPPmSAS.js +21 -0
  9. package/dist/components/button/button-content.d.ts +3 -0
  10. package/dist/components/button/button-content.js +17 -0
  11. package/dist/components/button/button.d.ts +3 -0
  12. package/dist/components/button/button.js +65 -0
  13. package/dist/components/button/button.stories.d.ts +7 -0
  14. package/dist/components/button/constants.d.ts +12 -0
  15. package/dist/components/button/constants.js +15 -0
  16. package/dist/components/button/index.d.ts +1 -0
  17. package/dist/components/button/index.js +4 -0
  18. package/dist/components/button/types.d.ts +38 -0
  19. package/dist/components/button/types.js +1 -0
  20. package/dist/components/button/utils/get-button-classnames.d.ts +2 -0
  21. package/dist/components/button/utils/get-button-classnames.js +17 -0
  22. package/dist/components/button/utils/index.d.ts +1 -0
  23. package/dist/components/button/utils/index.js +4 -0
  24. package/dist/components/index.d.ts +1 -0
  25. package/dist/components/index.js +4 -2
  26. package/dist/components/photo-crop-uploader/components/error-upload-dialog/error-upload-dialog.js +10 -9
  27. package/dist/components/photo-crop-uploader/components/upload-button/constants.d.ts +1 -1
  28. package/dist/components/photo-crop-uploader/components/upload-button/constants.js +1 -1
  29. package/dist/components/photo-crop-uploader/components/upload-button/types.d.ts +5 -1
  30. package/dist/components/photo-crop-uploader/components/upload-button/upload-button.js +81 -58
  31. package/dist/components/photo-crop-uploader/components/upload-dialog/upload-dialog.js +354 -87
  32. package/dist/components/photo-crop-uploader/constants.d.ts +1 -1
  33. package/dist/components/photo-crop-uploader/constants.js +1 -1
  34. package/dist/components/photo-crop-uploader/locale.js +4 -4
  35. package/dist/components/photo-crop-uploader/photo-crop-uploader.js +81 -70
  36. package/dist/components/photo-crop-uploader/types.d.ts +8 -1
  37. package/dist/index-B2JRaoNz.js +48 -0
  38. package/dist/index.d.ts +1 -1
  39. package/dist/index.js +15 -13
  40. package/package.json +73 -73
  41. package/dist/Button-BjNjCLw8.js +0 -6428
@@ -1,82 +1,89 @@
1
- import { jsxs as K, Fragment as Q, jsx as s } from "react/jsx-runtime";
1
+ import { jsxs as Y, Fragment as $, jsx as s } from "react/jsx-runtime";
2
2
  import { useState as a, useRef as S } from "react";
3
3
  import "../../index-BiffjjQq.js";
4
- import { c as V } from "../../Button-BjNjCLw8.js";
5
- import { localizedText as W } from "./locale.js";
6
- import { EN_LOCALE as Y } from "../../constants.js";
7
- import { DEFAULT_MIN_DIMENSION as $, DEFAULT_ASPECT_RATIO as oo, DEFAULT_TIMEOUT as to, DEFAULT_FILE_MAX_SIZE as ro } from "./constants.js";
8
- import { UploadDialog as eo } from "./components/upload-dialog/upload-dialog.js";
9
- import { UploadButton as ao } from "./components/upload-button/upload-button.js";
10
- import { ErrorUploadDialog as no } from "./components/error-upload-dialog/error-upload-dialog.js";
11
- import { validatePhotoFile as so } from "./utils/validate-photo-file.js";
12
- import { readPhoto as po } from "./utils/read-photo.js";
13
- import { getPhotoCrop as io } from "./utils/get-photo-crop.js";
14
- import { getCropedPhoto as lo } from "./utils/get-croped-photo.js";
15
- import '../../assets/photo-crop-uploader.css';const co = "_photoCropCanvas_1i4lr_1", ho = {
16
- photoCropCanvas: co
17
- }, vo = (_) => {
4
+ import { c as oo } from "../../index-B2JRaoNz.js";
5
+ import { localizedText as to } from "./locale.js";
6
+ import { EN_LOCALE as ro } from "../../constants.js";
7
+ import { DEFAULT_MIN_DIMENSION as eo, DEFAULT_ASPECT_RATIO as ao, DEFAULT_TIMEOUT as no, DEFAULT_FILE_MAX_SIZE as so } from "./constants.js";
8
+ import { UploadDialog as po } from "./components/upload-dialog/upload-dialog.js";
9
+ import { UploadButton as lo } from "./components/upload-button/upload-button.js";
10
+ import { ErrorUploadDialog as io } from "./components/error-upload-dialog/error-upload-dialog.js";
11
+ import { validatePhotoFile as co } from "./utils/validate-photo-file.js";
12
+ import { readPhoto as ho } from "./utils/read-photo.js";
13
+ import { getPhotoCrop as mo } from "./utils/get-photo-crop.js";
14
+ import { getCropedPhoto as fo } from "./utils/get-croped-photo.js";
15
+ import '../../assets/photo-crop-uploader.css';const uo = "_photoCropCanvas_1i4lr_1", Co = {
16
+ photoCropCanvas: uo
17
+ }, Io = (U) => {
18
18
  const {
19
- buttonClassname: U = "",
19
+ buttonClassname: _ = "",
20
20
  onStartUpload: T = () => {
21
21
  },
22
- onEndUpload: w = () => {
22
+ onEndUpload: v = () => {
23
23
  },
24
- onError: v = () => {
24
+ onError: w = () => {
25
25
  },
26
26
  onStartCrop: x = () => {
27
27
  },
28
28
  onEndCrop: A = () => {
29
29
  },
30
- showErrorPopup: F = !1,
31
- minDimension: n = $,
32
- aspectRatio: l = oo,
33
- locale: e = Y,
34
- timeout: I = to,
35
- fileMaxSize: y = ro,
30
+ onDragOver: F = () => {
31
+ },
32
+ onDragLeave: I = () => {
33
+ },
34
+ onDragDrop: O = () => {
35
+ },
36
+ showErrorPopup: b = !1,
37
+ minDimension: n = eo,
38
+ aspectRatio: i = ao,
39
+ locale: e = ro,
40
+ timeout: y = no,
41
+ fileMaxSize: M = so,
36
42
  allowedExtensions: c,
37
- allowedMimeTypes: M,
38
- circular: O,
39
- width: N,
40
- keepSelection: R,
41
- ...b
42
- } = _, [z, p] = a(!1), [H, h] = a(""), [i, d] = a(), m = S(null), f = S(null), [u, C] = a(!1), [E, P] = a(""), [j, g] = a(!1), D = () => {
43
+ allowedMimeTypes: N,
44
+ circular: R,
45
+ width: z,
46
+ keepSelection: H,
47
+ photoCropUploaderSlots: j,
48
+ ...k
49
+ } = U, [B, p] = a(!1), [X, h] = a(""), [l, d] = a(), m = S(null), f = S(null), [u, C] = a(!1), [E, g] = a(""), [Z, P] = a(!1), D = () => {
43
50
  p(!1);
44
- }, k = () => {
45
- g(!1);
46
- }, B = (o) => {
47
- w(o), h(o), p(!0), P("");
51
+ }, q = () => {
52
+ P(!1);
53
+ }, G = (o) => {
54
+ v(o), h(o), p(!0), g("");
48
55
  }, L = (o) => {
49
- o instanceof Error && (console.warn(o.message), v(o), P(o.message), g(!0), h(""), p(!1));
50
- }, X = async (o) => {
56
+ o instanceof Error && (console.warn(o.message), w(o), g(o.message), P(!0), h(""), p(!1));
57
+ }, J = async (o) => {
51
58
  const r = o.target.files?.[0];
52
59
  if (r)
53
60
  try {
54
- C(!0), T(), so(
61
+ C(!0), T(), co(
55
62
  r,
56
- { maxSize: y, allowedExtensions: c, allowedMimeTypes: M },
63
+ { maxSize: M, allowedExtensions: c, allowedMimeTypes: N },
57
64
  e
58
65
  );
59
- const t = await po(r, n, e, I);
60
- B(t);
66
+ const t = await ho(r, n, e, y);
67
+ G(t);
61
68
  } catch (t) {
62
69
  L(t);
63
70
  } finally {
64
71
  o.target.value = "", C(!1);
65
72
  }
66
- }, Z = (o) => {
67
- const { width: r, height: t } = o.currentTarget, J = io(r, t, n, l);
68
- d(J);
69
- }, q = (o, r) => {
73
+ }, K = (o) => {
74
+ const { width: r, height: t } = o.currentTarget, W = mo(r, t, n, i);
75
+ d(W);
76
+ }, Q = (o, r) => {
70
77
  d(r);
71
- }, G = () => {
78
+ }, V = () => {
72
79
  const o = f.current, r = m.current;
73
- if (o && r && i)
80
+ if (o && r && l)
74
81
  try {
75
82
  x();
76
- const t = lo(
83
+ const t = fo(
77
84
  r,
78
85
  o,
79
- i,
86
+ l,
80
87
  e
81
88
  );
82
89
  A(t), D();
@@ -84,53 +91,57 @@ import '../../assets/photo-crop-uploader.css';const co = "_photoCropCanvas_1i4lr
84
91
  t instanceof Error && (console.warn(t), L(t));
85
92
  }
86
93
  };
87
- return /* @__PURE__ */ K(Q, { children: [
94
+ return /* @__PURE__ */ Y($, { children: [
88
95
  /* @__PURE__ */ s(
89
- ao,
96
+ lo,
90
97
  {
91
- onChange: X,
92
- buttonClassname: U,
98
+ onChange: J,
99
+ buttonClassname: _,
93
100
  disabled: u,
94
101
  buttonDisabled: u,
95
102
  locale: e,
96
- width: N,
103
+ width: z,
97
104
  allowedExtensions: c,
98
- ...b,
99
- children: W[e].upload
105
+ onDragDrop: O,
106
+ onDragLeave: I,
107
+ onDragOver: F,
108
+ button: j?.button,
109
+ ...k,
110
+ children: to[e].upload
100
111
  }
101
112
  ),
102
113
  /* @__PURE__ */ s(
103
- eo,
114
+ po,
104
115
  {
105
- open: z,
106
- photoCrop: i,
107
- photoSource: H,
116
+ open: B,
117
+ photoCrop: l,
118
+ photoSource: X,
108
119
  photoError: E,
109
120
  onCloseDialogHandler: D,
110
- onCropChange: q,
111
- onPhotoCrop: G,
112
- onPhotoLoad: Z,
121
+ onCropChange: Q,
122
+ onPhotoCrop: V,
123
+ onPhotoLoad: K,
113
124
  imageRef: m,
114
125
  minDimension: n,
115
- aspectRatio: l,
126
+ aspectRatio: i,
116
127
  locale: e,
117
- circular: O,
118
- keepSelection: R
128
+ circular: R,
129
+ keepSelection: H
119
130
  }
120
131
  ),
121
132
  /* @__PURE__ */ s(
122
- no,
133
+ io,
123
134
  {
124
- open: F && j,
135
+ open: b && Z,
125
136
  photoError: E,
126
- onCloseErrorDialog: k,
137
+ onCloseErrorDialog: q,
127
138
  locale: e
128
139
  }
129
140
  ),
130
141
  /* @__PURE__ */ s(
131
142
  "canvas",
132
143
  {
133
- className: V(ho.photoCropCanvas),
144
+ className: oo(Co.photoCropCanvas),
134
145
  width: n,
135
146
  height: n,
136
147
  ref: f
@@ -139,5 +150,5 @@ import '../../assets/photo-crop-uploader.css';const co = "_photoCropCanvas_1i4lr
139
150
  ] });
140
151
  };
141
152
  export {
142
- vo as PhotoCropUploader
153
+ Io as PhotoCropUploader
143
154
  };
@@ -1,4 +1,4 @@
1
- import { InputHTMLAttributes } from 'react';
1
+ import { DragEvent, InputHTMLAttributes, ReactNode } from 'react';
2
2
  import { Locale } from '../../types';
3
3
  import { BMP_IMAGE_TYPE, GIF_IMAGE_TYPE, ICO_IMAGE_TYPE, JPEG_IMAGE_TYPE, JPG_IMAGE_TYPE, MICROSOFT_ICO_IMAGE_TYPE, PNG_IMAGE_TYPE, SVG_IMAGE_TYPE, WEBP_IMAGE_TYPE, ICO_IMAGE_EXT, BMP_IMAGE_EXT, GIF_IMAGE_EXT, JPEG_IMAGE_EXT, JPG_IMAGE_EXT, PNG_IMAGE_EXT, SVG_IMAGE_EXT, WEBP_IMAGE_EXT } from './constants';
4
4
  export type PhotoDataUrl = string;
@@ -10,6 +10,9 @@ export type PhotoFileOptions = {
10
10
  allowedExtensions?: PhotoExtension[];
11
11
  allowedMimeTypes?: PhotoMimeType[];
12
12
  };
13
+ export type PhotoCropUploaderSlots = {
14
+ button?: ReactNode;
15
+ };
13
16
  export type PhotoCropUploaderCustomProps = {
14
17
  buttonClassname?: string;
15
18
  onStartUpload?: () => unknown;
@@ -17,6 +20,9 @@ export type PhotoCropUploaderCustomProps = {
17
20
  onError?: (error: Error) => unknown;
18
21
  onStartCrop?: () => unknown;
19
22
  onEndCrop?: (photoData: PhotoDataUrl) => unknown;
23
+ onDragOver?: (event: DragEvent<HTMLDivElement>) => unknown;
24
+ onDragLeave?: (event: DragEvent<HTMLDivElement>) => unknown;
25
+ onDragDrop?: (event: DragEvent<HTMLDivElement>) => unknown;
20
26
  showErrorPopup?: boolean;
21
27
  minDimension?: number;
22
28
  aspectRatio?: number;
@@ -28,6 +34,7 @@ export type PhotoCropUploaderCustomProps = {
28
34
  circular?: boolean;
29
35
  keepSelection?: boolean;
30
36
  width?: number;
37
+ photoCropUploaderSlots?: PhotoCropUploaderSlots;
31
38
  };
32
39
  export type PhotoCropUploaderProps = PhotoCropUploaderCustomProps & InputHTMLAttributes<HTMLInputElement>;
33
40
  export type PhotoCropUploaderLocaleText = Record<Locale, Record<string, string>>;
@@ -0,0 +1,48 @@
1
+ function c(e) {
2
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
3
+ }
4
+ var o = { exports: {} };
5
+ /*!
6
+ Copyright (c) 2018 Jed Watson.
7
+ Licensed under the MIT License (MIT), see
8
+ http://jedwatson.github.io/classnames
9
+ */
10
+ var i;
11
+ function p() {
12
+ return i || (i = 1, (function(e) {
13
+ (function() {
14
+ var u = {}.hasOwnProperty;
15
+ function s() {
16
+ for (var t = "", r = 0; r < arguments.length; r++) {
17
+ var n = arguments[r];
18
+ n && (t = a(t, f(n)));
19
+ }
20
+ return t;
21
+ }
22
+ function f(t) {
23
+ if (typeof t == "string" || typeof t == "number")
24
+ return t;
25
+ if (typeof t != "object")
26
+ return "";
27
+ if (Array.isArray(t))
28
+ return s.apply(null, t);
29
+ if (t.toString !== Object.prototype.toString && !t.toString.toString().includes("[native code]"))
30
+ return t.toString();
31
+ var r = "";
32
+ for (var n in t)
33
+ u.call(t, n) && t[n] && (r = a(r, n));
34
+ return r;
35
+ }
36
+ function a(t, r) {
37
+ return r ? t ? t + " " + r : t + r : t;
38
+ }
39
+ e.exports ? (s.default = s, e.exports = s) : window.classNames = s;
40
+ })();
41
+ })(o)), o.exports;
42
+ }
43
+ var l = p();
44
+ const m = /* @__PURE__ */ c(l);
45
+ export {
46
+ m as c,
47
+ c as g
48
+ };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { PhotoCropUploader } from './components';
1
+ export { PhotoCropUploader, Button } from './components';
2
2
  export type { Locale } from './types';
3
3
  export type { PhotoDataUrl, PhotoFileSize, PhotoExtension, PhotoMimeType, PhotoFileOptions, PhotoCropUploaderProps, } from './components/photo-crop-uploader/types';
4
4
  export { EN_LOCALE, RU_LOCALE, BYTE_TO_KILOBYTE } from './constants';
package/dist/index.js CHANGED
@@ -1,26 +1,28 @@
1
1
  import { BYTE_TO_KILOBYTE as G, EN_LOCALE as I, RU_LOCALE as T } from "./constants.js";
2
- import { BMP_IMAGE_EXT as P, BMP_IMAGE_TYPE as A, GIF_IMAGE_EXT as Y, GIF_IMAGE_TYPE as o, ICO_IMAGE_EXT as O, ICO_IMAGE_TYPE as r, JPEG_IMAGE_EXT as X, JPEG_IMAGE_TYPE as C, JPG_IMAGE_EXT as B, JPG_IMAGE_TYPE as p, MICROSOFT_ICO_IMAGE_TYPE as L, PNG_IMAGE_EXT as e, PNG_IMAGE_TYPE as t, SVG_IMAGE_EXT as J, SVG_IMAGE_TYPE as f, WEBP_IMAGE_EXT as m, WEBP_IMAGE_TYPE as x } from "./components/photo-crop-uploader/constants.js";
2
+ import { BMP_IMAGE_EXT as P, BMP_IMAGE_TYPE as A, GIF_IMAGE_EXT as o, GIF_IMAGE_TYPE as Y, ICO_IMAGE_EXT as r, ICO_IMAGE_TYPE as O, JPEG_IMAGE_EXT as X, JPEG_IMAGE_TYPE as t, JPG_IMAGE_EXT as B, JPG_IMAGE_TYPE as C, MICROSOFT_ICO_IMAGE_TYPE as p, PNG_IMAGE_EXT as e, PNG_IMAGE_TYPE as L, SVG_IMAGE_EXT as f, SVG_IMAGE_TYPE as m, WEBP_IMAGE_EXT as x, WEBP_IMAGE_TYPE as J } from "./components/photo-crop-uploader/constants.js";
3
3
  import { PhotoCropUploader as N } from "./components/photo-crop-uploader/photo-crop-uploader.js";
4
+ import { Button as R } from "./components/button/button.js";
4
5
  export {
5
6
  P as BMP_IMAGE_EXT,
6
7
  A as BMP_IMAGE_TYPE,
7
8
  G as BYTE_TO_KILOBYTE,
9
+ R as Button,
8
10
  I as EN_LOCALE,
9
- Y as GIF_IMAGE_EXT,
10
- o as GIF_IMAGE_TYPE,
11
- O as ICO_IMAGE_EXT,
12
- r as ICO_IMAGE_TYPE,
11
+ o as GIF_IMAGE_EXT,
12
+ Y as GIF_IMAGE_TYPE,
13
+ r as ICO_IMAGE_EXT,
14
+ O as ICO_IMAGE_TYPE,
13
15
  X as JPEG_IMAGE_EXT,
14
- C as JPEG_IMAGE_TYPE,
16
+ t as JPEG_IMAGE_TYPE,
15
17
  B as JPG_IMAGE_EXT,
16
- p as JPG_IMAGE_TYPE,
17
- L as MICROSOFT_ICO_IMAGE_TYPE,
18
+ C as JPG_IMAGE_TYPE,
19
+ p as MICROSOFT_ICO_IMAGE_TYPE,
18
20
  e as PNG_IMAGE_EXT,
19
- t as PNG_IMAGE_TYPE,
21
+ L as PNG_IMAGE_TYPE,
20
22
  N as PhotoCropUploader,
21
23
  T as RU_LOCALE,
22
- J as SVG_IMAGE_EXT,
23
- f as SVG_IMAGE_TYPE,
24
- m as WEBP_IMAGE_EXT,
25
- x as WEBP_IMAGE_TYPE
24
+ f as SVG_IMAGE_EXT,
25
+ m as SVG_IMAGE_TYPE,
26
+ x as WEBP_IMAGE_EXT,
27
+ J as WEBP_IMAGE_TYPE
26
28
  };
package/package.json CHANGED
@@ -1,73 +1,73 @@
1
- {
2
- "name": "@hai-dev/ui-kit",
3
- "private": false,
4
- "version": "1.0.0",
5
- "author": {
6
- "name": "Vladislav Knitrunov",
7
- "email": "kingvlad3008@gmail.com",
8
- "url": "https://gitlab.com/kingvlad3008"
9
- },
10
- "type": "module",
11
- "main": "dist/index.js",
12
- "types": "dist/index.d.ts",
13
- "files": [
14
- "dist"
15
- ],
16
- "scripts": {
17
- "dev": "vite",
18
- "build": "tsc -b && vite build",
19
- "prepublishOnly": "npm run build",
20
- "lint": "eslint .",
21
- "preview": "vite preview",
22
- "storybook": "storybook dev -p 6006",
23
- "build-storybook": "storybook build",
24
- "prepare": "husky"
25
- },
26
- "peerDependencies": {
27
- "@emotion/react": "^11.14.0",
28
- "@emotion/styled": "^11.14.1",
29
- "@mui/material": "^7.3.2",
30
- "@types/node": "^24.5.2",
31
- "classnames": "^2.5.1",
32
- "react": "^19.1.1",
33
- "react-dom": "^19.1.1",
34
- "react-image-crop": "^11.0.10",
35
- "sass": "^1.93.1"
36
- },
37
- "devDependencies": {
38
- "@emotion/react": "^11.14.0",
39
- "@emotion/styled": "^11.14.1",
40
- "@eslint/js": "^9.36.0",
41
- "@mui/material": "^7.3.2",
42
- "@storybook/addon-docs": "9.1.8",
43
- "@storybook/addon-onboarding": "9.1.8",
44
- "@storybook/react-vite": "9.1.8",
45
- "@types/node": "^24.5.2",
46
- "@types/react": "^19.1.13",
47
- "@types/react-dom": "^19.1.9",
48
- "@vitejs/plugin-react": "^5.0.3",
49
- "classnames": "^2.5.1",
50
- "eslint": "^9.36.0",
51
- "eslint-plugin-react-hooks": "^5.2.0",
52
- "eslint-plugin-react-refresh": "^0.4.20",
53
- "eslint-plugin-storybook": "9.1.8",
54
- "glob": "^11.0.3",
55
- "globals": "^16.4.0",
56
- "react": "^19.1.1",
57
- "react-dom": "^19.1.1",
58
- "react-image-crop": "^11.0.10",
59
- "sass": "^1.93.1",
60
- "storybook": "9.1.8",
61
- "typescript": "~5.8.3",
62
- "typescript-eslint": "^8.44.0",
63
- "vite": "^7.1.7",
64
- "vite-plugin-dts": "^4.5.4",
65
- "vite-plugin-lib-inject-css": "^2.2.2",
66
- "@commitlint/cli": "^20.0.0",
67
- "@commitlint/config-conventional": "^20.0.0",
68
- "husky": "^9.1.7"
69
- },
70
- "sideEffects": [
71
- "**/*.css"
72
- ]
73
- }
1
+ {
2
+ "name": "@hai-dev/ui-kit",
3
+ "private": false,
4
+ "version": "1.0.1",
5
+ "author": {
6
+ "name": "Vladislav Knitrunov",
7
+ "email": "kingvlad3008@gmail.com",
8
+ "url": "https://gitlab.com/kingvlad3008"
9
+ },
10
+ "type": "module",
11
+ "main": "dist/index.js",
12
+ "types": "dist/index.d.ts",
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "dev": "vite",
18
+ "build": "tsc -b && vite build",
19
+ "prepublishOnly": "npm run build",
20
+ "lint": "eslint .",
21
+ "preview": "vite preview",
22
+ "storybook": "storybook dev -p 6006",
23
+ "build-storybook": "storybook build",
24
+ "prepare": "husky"
25
+ },
26
+ "peerDependencies": {
27
+ "@emotion/react": "^11.14.0",
28
+ "@emotion/styled": "^11.14.1",
29
+ "@mui/material": "^7.3.2",
30
+ "@types/node": "^24.5.2",
31
+ "classnames": "^2.5.1",
32
+ "react": "^19.1.1",
33
+ "react-dom": "^19.1.1",
34
+ "react-image-crop": "^11.0.10",
35
+ "sass": "^1.93.1"
36
+ },
37
+ "devDependencies": {
38
+ "@emotion/react": "^11.14.0",
39
+ "@emotion/styled": "^11.14.1",
40
+ "@eslint/js": "^9.36.0",
41
+ "@mui/material": "^7.3.2",
42
+ "@storybook/addon-docs": "9.1.8",
43
+ "@storybook/addon-onboarding": "9.1.8",
44
+ "@storybook/react-vite": "9.1.8",
45
+ "@types/node": "^24.5.2",
46
+ "@types/react": "^19.1.13",
47
+ "@types/react-dom": "^19.1.9",
48
+ "@vitejs/plugin-react": "^5.0.3",
49
+ "classnames": "^2.5.1",
50
+ "eslint": "^9.36.0",
51
+ "eslint-plugin-react-hooks": "^5.2.0",
52
+ "eslint-plugin-react-refresh": "^0.4.20",
53
+ "eslint-plugin-storybook": "9.1.8",
54
+ "glob": "^11.0.3",
55
+ "globals": "^16.4.0",
56
+ "react": "^19.1.1",
57
+ "react-dom": "^19.1.1",
58
+ "react-image-crop": "^11.0.10",
59
+ "sass": "^1.93.1",
60
+ "storybook": "9.1.8",
61
+ "typescript": "~5.8.3",
62
+ "typescript-eslint": "^8.44.0",
63
+ "vite": "^7.1.7",
64
+ "vite-plugin-dts": "^4.5.4",
65
+ "vite-plugin-lib-inject-css": "^2.2.2",
66
+ "@commitlint/cli": "^20.0.0",
67
+ "@commitlint/config-conventional": "^20.0.0",
68
+ "husky": "^9.1.7"
69
+ },
70
+ "sideEffects": [
71
+ "**/*.css"
72
+ ]
73
+ }