injast-core 1.0.78

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 (127) hide show
  1. package/LICENSE +15 -0
  2. package/README.md +127 -0
  3. package/dist/components/index.js +3187 -0
  4. package/dist/constants/index.js +138 -0
  5. package/dist/context/index.js +308 -0
  6. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Black.woff +0 -0
  7. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Bold.woff +0 -0
  8. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-DemiBold.woff +0 -0
  9. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-ExtraBlack.woff +0 -0
  10. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-ExtraBold.woff +0 -0
  11. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Heavy.woff +0 -0
  12. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Light.woff +0 -0
  13. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Medium.woff +0 -0
  14. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Regular.woff +0 -0
  15. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-Thin.woff +0 -0
  16. package/dist/fonts/IranYekan/Woff/IRANYekanXFaNum-UltraLight.woff +0 -0
  17. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Black.woff2 +0 -0
  18. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Bold.woff2 +0 -0
  19. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-DemiBold.woff2 +0 -0
  20. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-ExtraBlack.woff2 +0 -0
  21. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-ExtraBold.woff2 +0 -0
  22. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Heavy.woff2 +0 -0
  23. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Light.woff2 +0 -0
  24. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Medium.woff2 +0 -0
  25. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Regular.woff2 +0 -0
  26. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-Thin.woff2 +0 -0
  27. package/dist/fonts/IranYekan/Woff2/IRANYekanXFaNum-UltraLight.woff2 +0 -0
  28. package/dist/fonts/fonts.css +245 -0
  29. package/dist/hooks/index.js +107 -0
  30. package/dist/index.js +3831 -0
  31. package/dist/libs/index.js +142 -0
  32. package/dist/providers/index.js +305 -0
  33. package/dist/types/components/Accordion.d.ts +4 -0
  34. package/dist/types/components/AccordionDetails.d.ts +4 -0
  35. package/dist/types/components/AccordionSummary.d.ts +4 -0
  36. package/dist/types/components/Autocomplete.d.ts +3 -0
  37. package/dist/types/components/Box.d.ts +4 -0
  38. package/dist/types/components/Button.d.ts +9 -0
  39. package/dist/types/components/CardNumberInput.d.ts +13 -0
  40. package/dist/types/components/Checkbox.d.ts +11 -0
  41. package/dist/types/components/CircularProgress.d.ts +4 -0
  42. package/dist/types/components/Container.d.ts +4 -0
  43. package/dist/types/components/CounterBoxInput.d.ts +23 -0
  44. package/dist/types/components/DataGrid.d.ts +57 -0
  45. package/dist/types/components/Dialog.d.ts +4 -0
  46. package/dist/types/components/Divider.d.ts +4 -0
  47. package/dist/types/components/Drawer.d.ts +9 -0
  48. package/dist/types/components/Fab.d.ts +4 -0
  49. package/dist/types/components/FormControl.d.ts +4 -0
  50. package/dist/types/components/FormControlLabel.d.ts +4 -0
  51. package/dist/types/components/Grid.d.ts +4 -0
  52. package/dist/types/components/IconButton.d.ts +4 -0
  53. package/dist/types/components/Image.d.ts +12 -0
  54. package/dist/types/components/InputLabel.d.ts +4 -0
  55. package/dist/types/components/InputPhoneNumber.d.ts +15 -0
  56. package/dist/types/components/IosHiddenOtpInput.d.ts +6 -0
  57. package/dist/types/components/List.d.ts +4 -0
  58. package/dist/types/components/ListItem.d.ts +4 -0
  59. package/dist/types/components/Loading.d.ts +7 -0
  60. package/dist/types/components/LoadingModal.d.ts +6 -0
  61. package/dist/types/components/MenuItem.d.ts +4 -0
  62. package/dist/types/components/MobileDatePicker.d.ts +19 -0
  63. package/dist/types/components/Modal.d.ts +9 -0
  64. package/dist/types/components/MultiSelect.d.ts +14 -0
  65. package/dist/types/components/NumberInput.d.ts +19 -0
  66. package/dist/types/components/OtpInput.d.ts +16 -0
  67. package/dist/types/components/Pagination.d.ts +4 -0
  68. package/dist/types/components/ProgressBar.d.ts +10 -0
  69. package/dist/types/components/Radio.d.ts +4 -0
  70. package/dist/types/components/RadioGroup.d.ts +4 -0
  71. package/dist/types/components/Select.d.ts +4 -0
  72. package/dist/types/components/Skeleton.d.ts +4 -0
  73. package/dist/types/components/Slider.d.ts +4 -0
  74. package/dist/types/components/Step.d.ts +4 -0
  75. package/dist/types/components/StepConnector.d.ts +4 -0
  76. package/dist/types/components/StepContent.d.ts +4 -0
  77. package/dist/types/components/StepLabel.d.ts +4 -0
  78. package/dist/types/components/Stepper.d.ts +4 -0
  79. package/dist/types/components/SvgIcon.d.ts +8 -0
  80. package/dist/types/components/Tab.d.ts +12 -0
  81. package/dist/types/components/TextField.d.ts +9 -0
  82. package/dist/types/components/Toast.d.ts +20 -0
  83. package/dist/types/components/Toggle.d.ts +10 -0
  84. package/dist/types/components/Typography.d.ts +8 -0
  85. package/dist/types/components/WheelDatePicker.d.ts +37 -0
  86. package/dist/types/components/index.d.ts +53 -0
  87. package/dist/types/constants/colors.d.ts +2 -0
  88. package/dist/types/constants/index.d.ts +2 -0
  89. package/dist/types/constants/stepConnectorClasses.d.ts +2 -0
  90. package/dist/types/constants/typography.d.ts +82 -0
  91. package/dist/types/context/MessageHandler.d.ts +15 -0
  92. package/dist/types/context/index.d.ts +1 -0
  93. package/dist/types/hooks/index.d.ts +8 -0
  94. package/dist/types/hooks/useErrorHandler.d.ts +10 -0
  95. package/dist/types/hooks/useMessage.d.ts +2 -0
  96. package/dist/types/hooks/useWebOtpListener.d.ts +1 -0
  97. package/dist/types/index.d.ts +8 -0
  98. package/dist/types/index.js +19 -0
  99. package/dist/types/libs/create-api-request.d.ts +10 -0
  100. package/dist/types/libs/create-logger.d.ts +9 -0
  101. package/dist/types/libs/create-sentry-instrument.d.ts +9 -0
  102. package/dist/types/libs/index.d.ts +10 -0
  103. package/dist/types/providers/SPAThemeProvider.d.ts +11 -0
  104. package/dist/types/providers/ThemeProvider.d.ts +9 -0
  105. package/dist/types/providers/index.d.ts +2 -0
  106. package/dist/types/stories/persian.d.ts +81 -0
  107. package/dist/types/types/axios.d.ts +8 -0
  108. package/dist/types/types/color.d.ts +38 -0
  109. package/dist/types/types/index.d.ts +7 -0
  110. package/dist/types/types/material-react-table-types.d.ts +2 -0
  111. package/dist/types/types/mui-types.d.ts +2 -0
  112. package/dist/types/types/services.d.ts +26 -0
  113. package/dist/types/types/typography.d.ts +62 -0
  114. package/dist/types/types/window.d.ts +135 -0
  115. package/dist/types/utils/checkUser.d.ts +1 -0
  116. package/dist/types/utils/convertRialToToman.d.ts +7 -0
  117. package/dist/types/utils/createQueryParams.d.ts +3 -0
  118. package/dist/types/utils/dateHelpers.d.ts +19 -0
  119. package/dist/types/utils/delay.d.ts +1 -0
  120. package/dist/types/utils/formatPersianNumber.d.ts +1 -0
  121. package/dist/types/utils/getClaims.d.ts +11 -0
  122. package/dist/types/utils/index.d.ts +17 -0
  123. package/dist/types/utils/injastStyled.d.ts +2 -0
  124. package/dist/types/utils/postToParent.d.ts +2 -0
  125. package/dist/types/utils/toLatinDigit.d.ts +1 -0
  126. package/dist/utils/index.js +256 -0
  127. package/package.json +159 -0
@@ -0,0 +1,256 @@
1
+ "use client";
2
+
3
+ // src/utils/injastStyled.ts
4
+ import { styled as muiStyled } from "@mui/material/styles";
5
+
6
+ // src/utils/delay.ts
7
+ function delay(ms) {
8
+ return new Promise((resolve) => setTimeout(resolve, ms));
9
+ }
10
+
11
+ // src/utils/dateHelpers.ts
12
+ import PN from "persian-number";
13
+ import { toJalaali, toGregorian } from "jalaali-js";
14
+ function gregorianToJalali(dateString) {
15
+ const [year, month, day] = dateString.split("-").map(Number);
16
+ const jalaliDate = toJalaali(year, month, day);
17
+ const formattedMonth = String(jalaliDate.jm).padStart(2, "0");
18
+ const formattedDay = String(jalaliDate.jd).padStart(2, "0");
19
+ return `${jalaliDate.jy}/${formattedMonth}/${formattedDay}`;
20
+ }
21
+ function jalaliToGregorian(dateString) {
22
+ const [year, month, day] = dateString.split("/").map(Number);
23
+ const gregorianDate = toGregorian(year, month, day);
24
+ const formattedMonth = String(gregorianDate.gm).padStart(2, "0");
25
+ const formattedDay = String(gregorianDate.gd).padStart(2, "0");
26
+ return `${gregorianDate.gy}-${formattedMonth}-${formattedDay}`;
27
+ }
28
+ var normalizeTimestamp = (timestamp) => {
29
+ const MILLISECOND_TIMESTAMP_LENGTH = 13;
30
+ const isMilliseconds = timestamp.toString().length === MILLISECOND_TIMESTAMP_LENGTH;
31
+ const normalizedTimestamp = isMilliseconds ? timestamp : timestamp * 1e3;
32
+ if (normalizedTimestamp <= 0) return 0;
33
+ return normalizedTimestamp;
34
+ };
35
+ var createDate = (t) => {
36
+ const invalidDate = "invalid time";
37
+ if (typeof t === "string") {
38
+ const d = new Date(t);
39
+ if (!isNaN(d.getTime())) return d;
40
+ else return invalidDate;
41
+ } else if (typeof t === "number") {
42
+ const ts = normalizeTimestamp(t);
43
+ const d = new Date(ts);
44
+ if (!isNaN(d.getTime())) return d;
45
+ else return invalidDate;
46
+ } else return invalidDate;
47
+ };
48
+ var shortDateFormat = (timestamp) => {
49
+ const date = createDate(timestamp);
50
+ return date instanceof Date ? new Intl.DateTimeFormat("fa-IR").format(date) : date;
51
+ };
52
+ var longDateFormat = (timestamp, separator = "-") => {
53
+ const date = createDate(timestamp);
54
+ const dateOptions = {
55
+ year: "numeric",
56
+ month: "2-digit",
57
+ day: "2-digit",
58
+ localeMatcher: "best fit"
59
+ };
60
+ const timeOptions = {
61
+ hour: "2-digit",
62
+ minute: "2-digit",
63
+ second: "2-digit",
64
+ hour12: false,
65
+ // Use 24-hour format
66
+ localeMatcher: "best fit"
67
+ };
68
+ if (date instanceof Date) {
69
+ const formattedDate = new Intl.DateTimeFormat("fa-IR", dateOptions).format(
70
+ date
71
+ );
72
+ const formattedTime = new Intl.DateTimeFormat("fa-IR", timeOptions).format(
73
+ date
74
+ );
75
+ return `${formattedDate} ${separator} ${formattedTime}`;
76
+ } else {
77
+ return date;
78
+ }
79
+ };
80
+ var longFormatInWords = (timestamp, options = {
81
+ dayInWord: true,
82
+ monthInWord: true,
83
+ yearInWord: true,
84
+ showTime: false,
85
+ showSeconds: true,
86
+ separator: "-"
87
+ }) => {
88
+ const date = createDate(timestamp);
89
+ const {
90
+ dayInWord,
91
+ monthInWord,
92
+ yearInWord,
93
+ separator,
94
+ showTime,
95
+ showSeconds
96
+ } = options;
97
+ if (date instanceof Date) {
98
+ const formatter = new Intl.DateTimeFormat("fa-IR-u-nu-latn", {
99
+ day: "numeric",
100
+ month: monthInWord ? "long" : "numeric",
101
+ year: "numeric"
102
+ });
103
+ const [day, , month, , year] = formatter.formatToParts(date);
104
+ const formattedDay = dayInWord ? `${PN.convert(day.value)}` : day.value;
105
+ const formattedYear = yearInWord ? `${PN.convert(year.value)}`.replace("\u06CC\u06A9 \u0647\u0632\u0627\u0631", "\u0647\u0632\u0627\u0631") : year.value;
106
+ let formattedTime = "";
107
+ if (showTime) {
108
+ const timeOptions = {
109
+ hour: "2-digit",
110
+ minute: "2-digit",
111
+ ...showSeconds && { second: "2-digit" },
112
+ hour12: false,
113
+ // Use 24-hour format
114
+ localeMatcher: "best fit"
115
+ };
116
+ const t = new Intl.DateTimeFormat("fa-IR", timeOptions).format(date);
117
+ formattedTime = ` ${separator} ${t}`;
118
+ }
119
+ return `${formattedDay} ${month.value} ${formattedYear}${formattedTime}`;
120
+ } else return date;
121
+ };
122
+ var persianDateFormatter = new Intl.DateTimeFormat("en-US-u-ca-persian", {
123
+ year: "numeric",
124
+ month: "numeric",
125
+ day: "numeric",
126
+ timeZone: "UTC"
127
+ });
128
+ function getPersianYMD(date) {
129
+ const parts = persianDateFormatter.formatToParts(date);
130
+ const year = Number(parts.find((p) => p.type === "year")?.value);
131
+ const month = Number(parts.find((p) => p.type === "month")?.value);
132
+ const day = Number(parts.find((p) => p.type === "day")?.value);
133
+ if (!year || !month || !day) throw new Error("Failed to parse Persian date");
134
+ return { year, month, day };
135
+ }
136
+ function jalaliToDateUTC(jy, jm, jd) {
137
+ const DAY_MS = 24 * 60 * 60 * 1e3;
138
+ const approxYear = jy + 621;
139
+ let lowDay = Math.floor(Date.UTC(approxYear - 2, 0, 1) / DAY_MS);
140
+ let highDay = Math.floor(Date.UTC(approxYear + 2, 11, 31) / DAY_MS);
141
+ while (lowDay <= highDay) {
142
+ const midDay = Math.floor((lowDay + highDay) / 2);
143
+ const midDate = new Date(midDay * DAY_MS);
144
+ const { year, month, day } = getPersianYMD(midDate);
145
+ if (year === jy && month === jm && day === jd) return midDate;
146
+ const isBefore = year < jy || year === jy && month < jm || year === jy && month === jm && day < jd;
147
+ if (isBefore) lowDay = midDay + 1;
148
+ else highDay = midDay - 1;
149
+ }
150
+ throw new Error("Invalid Jalali date");
151
+ }
152
+
153
+ // src/utils/createQueryParams.ts
154
+ import { isEmpty } from "lodash";
155
+ var createQueryParams = (obj) => {
156
+ if (isEmpty(obj)) return "";
157
+ return Object.entries(obj).map(([key, value]) => value && `${key}=${encodeURI(value.toString())}`).filter((i) => i).join("&");
158
+ };
159
+
160
+ // src/utils/convertRialToToman.ts
161
+ function convertRialToToman(input) {
162
+ let num = typeof input === "string" ? String(input) : input;
163
+ if (typeof num === "string") {
164
+ num = parseFloat(num.replace(/,/g, ""));
165
+ }
166
+ if (isNaN(num)) {
167
+ throw new Error(
168
+ "Invalid input: input must be a number or a numeric string."
169
+ );
170
+ }
171
+ return num / 10;
172
+ }
173
+ var convertRialToToman_default = convertRialToToman;
174
+
175
+ // src/utils/getClaims.ts
176
+ function getClaims(JWTToken) {
177
+ const encodedClaims = JWTToken.split(".")[1];
178
+ const decodedClaimsString = atob(encodedClaims);
179
+ const claims = JSON.parse(decodedClaimsString);
180
+ return claims;
181
+ }
182
+
183
+ // src/utils/checkUser.ts
184
+ function checkUser() {
185
+ if (typeof window !== "undefined") {
186
+ const hasToken = !!localStorage.getItem("auth_token");
187
+ if (!hasToken) {
188
+ localStorage.clear();
189
+ window.location.href = "/auth/login";
190
+ }
191
+ }
192
+ }
193
+
194
+ // src/utils/index.ts
195
+ import { faIR } from "@mui/material/locale";
196
+
197
+ // src/utils/formatPersianNumber.ts
198
+ function formatPersianNumber(num) {
199
+ const n = typeof num === "string" ? Number(num.replace(/,/g, "")) : num;
200
+ if (!Number.isFinite(n)) return "";
201
+ const parts = [];
202
+ const trillions = Math.floor(n / 1e12);
203
+ if (trillions) {
204
+ parts.push(`${trillions} \u062A\u0631\u06CC\u0644\u06CC\u0648\u0646`);
205
+ }
206
+ const billions = Math.floor(n % 1e12 / 1e9);
207
+ if (billions) {
208
+ parts.push(`${billions} \u0645\u06CC\u0644\u06CC\u0627\u0631\u062F`);
209
+ }
210
+ const millions = Math.floor(n % 1e9 / 1e6);
211
+ if (millions) {
212
+ parts.push(`${millions} \u0645\u06CC\u0644\u06CC\u0648\u0646`);
213
+ }
214
+ const thousands = Math.floor(n % 1e6 / 1e3);
215
+ if (thousands) {
216
+ if (thousands === 1) {
217
+ parts.push(`\u0647\u0632\u0627\u0631`);
218
+ } else {
219
+ parts.push(`${thousands} \u0647\u0632\u0627\u0631`);
220
+ }
221
+ }
222
+ const units = n % 1e3;
223
+ units && parts.push(`${units}`);
224
+ return parts.join(" \u0648 ");
225
+ }
226
+
227
+ // src/utils/toLatinDigit.ts
228
+ var toLatinDigits = (input) => {
229
+ if (!input) return "";
230
+ const s = String(input);
231
+ return s.replace(/[\u06F0-\u06F9]/g, (d) => String(d.charCodeAt(0) - 1776)).replace(/[\u0660-\u0669]/g, (d) => String(d.charCodeAt(0) - 1632));
232
+ };
233
+
234
+ // src/utils/postToParent.ts
235
+ var postToParent = (message) => {
236
+ window.parent.postMessage(message, "*");
237
+ };
238
+ export {
239
+ checkUser,
240
+ convertRialToToman_default as convertRialToToman,
241
+ faIR as coreFaIR,
242
+ createQueryParams,
243
+ delay,
244
+ formatPersianNumber,
245
+ getClaims,
246
+ getPersianYMD,
247
+ gregorianToJalali,
248
+ jalaliToDateUTC,
249
+ jalaliToGregorian,
250
+ longDateFormat,
251
+ longFormatInWords,
252
+ postToParent,
253
+ shortDateFormat,
254
+ muiStyled as styled,
255
+ toLatinDigits
256
+ };
package/package.json ADDED
@@ -0,0 +1,159 @@
1
+ {
2
+ "name": "injast-core",
3
+ "version": "1.0.78",
4
+ "description": "Reusable Injast React and Material UI components, providers, hooks, utilities, and design tokens.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/types/index.d.ts",
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "scripts": {
15
+ "build": "node esbuild.js && tsc --emitDeclarationOnly",
16
+ "pack:check": "npm pack --dry-run",
17
+ "storybook": "storybook dev -p 6006",
18
+ "build-storybook": "storybook build",
19
+ "test": "pnpm build"
20
+ },
21
+ "exports": {
22
+ ".": {
23
+ "types": "./dist/types/index.d.ts",
24
+ "import": "./dist/index.js"
25
+ },
26
+ "./components": {
27
+ "types": "./dist/types/components/index.d.ts",
28
+ "import": "./dist/components/index.js"
29
+ },
30
+ "./providers": {
31
+ "types": "./dist/types/providers/index.d.ts",
32
+ "import": "./dist/providers/index.js"
33
+ },
34
+ "./hooks": {
35
+ "types": "./dist/types/hooks/index.d.ts",
36
+ "import": "./dist/hooks/index.js"
37
+ },
38
+ "./libs": {
39
+ "types": "./dist/types/libs/index.d.ts",
40
+ "import": "./dist/libs/index.js"
41
+ },
42
+ "./utils": {
43
+ "types": "./dist/types/utils/index.d.ts",
44
+ "import": "./dist/utils/index.js"
45
+ },
46
+ "./context": {
47
+ "types": "./dist/types/context/index.d.ts",
48
+ "import": "./dist/context/index.js"
49
+ },
50
+ "./constants": {
51
+ "types": "./dist/types/constants/index.d.ts",
52
+ "import": "./dist/constants/index.js"
53
+ },
54
+ "./types": {
55
+ "types": "./dist/types/types/index.d.ts",
56
+ "import": "./dist/types/index.js"
57
+ },
58
+ "./fonts.css": "./dist/fonts/fonts.css"
59
+ },
60
+ "typesVersions": {
61
+ "*": {
62
+ "components": [
63
+ "dist/types/components/index.d.ts"
64
+ ],
65
+ "providers": [
66
+ "dist/types/providers/index.d.ts"
67
+ ],
68
+ "hooks": [
69
+ "dist/types/hooks/index.d.ts"
70
+ ],
71
+ "libs": [
72
+ "dist/types/libs/index.d.ts"
73
+ ],
74
+ "utils": [
75
+ "dist/types/utils/index.d.ts"
76
+ ],
77
+ "context": [
78
+ "dist/types/context/index.d.ts"
79
+ ],
80
+ "constants": [
81
+ "dist/types/constants/index.d.ts"
82
+ ],
83
+ "types": [
84
+ "dist/types/types/index.d.ts"
85
+ ],
86
+ "*": [
87
+ "dist/types/index.d.ts"
88
+ ]
89
+ }
90
+ },
91
+ "publishConfig": {
92
+ "registry": "https://registry.npmjs.org/",
93
+ "access": "public"
94
+ },
95
+ "keywords": [
96
+ "injast",
97
+ "react",
98
+ "material-ui",
99
+ "mui",
100
+ "components",
101
+ "rtl",
102
+ "persian",
103
+ "design-system"
104
+ ],
105
+ "author": "",
106
+ "license": "ISC",
107
+ "dependencies": {
108
+ "@emotion/cache": "^11.14.0",
109
+ "@emotion/react": "^11.14.0",
110
+ "@emotion/styled": "^11.14.0",
111
+ "@mui/icons-material": "^6.3.1",
112
+ "@mui/material": "^6.3.1",
113
+ "@mui/system": "^6.3.1",
114
+ "@mui/x-date-pickers": "^7.22.0",
115
+ "@sentry/react": "^9.18.0",
116
+ "@wojtekmaj/react-hooks": "^1.22.0",
117
+ "axios": "^1.12.1",
118
+ "iconsax-react": "^0.0.8",
119
+ "jalaali-js": "^1.2.7",
120
+ "lodash": "^4.17.21",
121
+ "material-react-table": "^3.2.1",
122
+ "persian-number": "^1.6.0",
123
+ "react-date-object": "^2.1.9",
124
+ "react-multi-date-picker": "^4.5.2",
125
+ "stylis": "^4.3.4",
126
+ "stylis-plugin-rtl": "^2.1.1"
127
+ },
128
+ "peerDependencies": {
129
+ "react": "^19.0.0",
130
+ "react-dom": "^19.0.0"
131
+ },
132
+ "devDependencies": {
133
+ "@chromatic-com/storybook": "^5.0.0",
134
+ "@eslint/eslintrc": "^3",
135
+ "@storybook/addon-docs": "^10.2.3",
136
+ "@storybook/addon-onboarding": "^10.2.3",
137
+ "@storybook/react": "^10.2.3",
138
+ "@storybook/react-vite": "^10.2.3",
139
+ "@types/jalaali-js": "^1.1.3",
140
+ "@types/lodash": "^4.17.14",
141
+ "@types/node": "^22.10.7",
142
+ "@types/react": "^19",
143
+ "@types/react-dom": "^19",
144
+ "@types/stylis": "^4.2.7",
145
+ "eslint": "^9",
146
+ "eslint-plugin-storybook": "^10.2.3",
147
+ "react": "^19.0.0",
148
+ "react-dom": "^19.0.0",
149
+ "storybook": "^10.2.3",
150
+ "typescript": "^5.7.3",
151
+ "vite": "^6.0.0",
152
+ "esbuild": "^0.25.9"
153
+ },
154
+ "eslintConfig": {
155
+ "extends": [
156
+ "plugin:storybook/recommended"
157
+ ]
158
+ }
159
+ }